自動売買BOTの設定を稼働中に変更できるようにしよう!python3 仮想通貨

皆さんBOTの設定(ロット数とか)ってプログラム内に直接書いてるんですかね??
自動売買BOTってやっぱずっと稼働させると思うんですけど、設定変更したい時にわざわざプログラム止めてプログラム書き直して動かすのはダルくないですか?(笑)
今回は設定を外に出して、稼働中でも設定変更できるようにしていきましょうって感じです!
設定はテキストファイルに書いといて、プログラムからテキストファイル読んで設定を取りに行くだけなのでテキストファイルを変更すれば、自動的に設定が反映されます。
いちいちテキストファイル読むのめんどくさいと思う人もいるかもしれないけど、絶対こっちの方が便利だし、スタイリッシュなプログラムになります。

まず設定を取得するプログラム(今回はbot.py)と同じ階層に設定ファイルを作成します。「bot.conf」というファイルにします。(開発環境はCloud9)

画像1


で、設定ファイルの中身をとりあえずこんな感じにします。

画像2

まず設定ファイルには「セクション」と「キー」と言われる2つの項目が存在します。
簡単にいうと「セクション」が1つのグループで「キー」がそのグループのメンバーみたいなイメージです。

今回は適当に「SETTING」というセクション名にします。なんでもいいんで適当に決めて下さい(笑)
ただこの→[]かっこでくくって下さい。
これはルールです。
次にキーについて説明します。
キーは[SETTING]の下にある「lot」と「price」です。
キーの書き方としては「キー」=「設定内容」という感じ書いて下さい。かっことかはいりません。「=」は必要

今回の設定ファイルでは「lot」を「4000」、「price」を「9000.5」に設定し、この設定をプログラムから取得していきます。

そして、「RESULT」というセクションの「number」というキーにプログラムから設定を書き込みます。

今回も簡単な設定ファイル用のクラスを作成し、そのクラスから設定を取得していきます。クラスの機能としては以下の2つです。
①設定ファイルから設定の読み取り
②設定ファイルへの設定の書き込み

今回動かすサンプルプログラム(bot.py)の中身はこんな感じです。

#!/usr/bin/python3
import clsConfig

#設定ファイルクラスインスタンス
clscon = clsConfig.Config()

#各種セクション
SETTING = 'SETTING'
RESULT = 'RESULT'

#1:設定を取得(デフォルト値を指定しない場合)
Lot = clscon.getConfigValue(SETTING, 'lot')
print('1:' + Lot)

#2:設定を取得(デフォルト値を指定する場合)
Lot = clscon.getConfigValue(SETTING, 'lot', 1000)
print('2:' + Lot)

#3:取得した時は文字列のため、数値に変換
Price = clscon.getConfigValue(SETTING, 'price', 0)
Price = float(Price) + 100
print('3:' + str(Price))

#4:設定の書き込み
if clscon.setConfigValue(RESULT, 'number', 1234):
    print('4:設定を書き込みました')
else:
    print('4:設定の書き込みに失敗しました')

実行結果がこんな感じです。

画像3

1、2ともに「lot」の設定を取得できています。この1と2の違いですが、見てもらったら分かるように引数の数が違います。使用している関数自体は一緒ですが、設定を取得する関数には3つ目の引数にオプションでデフォルト値を設定できるようにしています。もし設定ファイルからの取得に失敗してもデフォルト値の設定をしておけばその値が返ってきます。これで予期しないエラーが発生しても大丈夫!(笑)ちなみに設定ファイルを削除して実行した結果がこちら

画像4

当然エラー出まくりですが、2の処理だけデフォルト値を設定しているのでその値が返ってきています。

次に3についてですが、こちらも正常動作の場合は設定を取得し、さらに+100して表示できています。ここがこの設定取得の注意点なのですが、結果は必ず文字列型で返ってきます。そのため、取得した設定を数値として扱えるようにfloat関数で数値にしています。

最後に4についてですが、実行後、設定ファイルに設定を書き込めています。※もちろん手で書き換えてませんよ(笑)

画像5

プログラムの変数はプログラムを終了し、もう一度起動すると当然初期化されますよね。なのでプログラムを終了しても記憶しておきたいデータとかあれば、終了前に設定ファイルに出力するようにしておき、起動時に取得すればまたそのデータを使用することができます。こんな感じで取得と出力を組み合わせると使用用途が増えると思います。

申し訳ありませんが、クラスの内容は有料とさせて頂きます。

ここから先は

1,051字

¥ 100

この記事が気に入ったらサポートをしてみませんか?