Channel Breakout Bot for bitflyer-FX (by Connie-Wild氏)読解メモ3
の続きです。
題材は https://github.com/Connie-Wild/ChannelBreakoutBot です。
trade.pyの続きから。
if __name__ == '__main__':
#logging設定
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
logfile=logging.handlers.TimedRotatingFileHandler(
filename = 'log/trade.log',
when = 'midnight'
)
logging.getLogger('').addHandler(logfile)
logging.info('Wait...')
basicConfigを使うことでログのレベルやフォーマットを指定できます。
TimedRotatingFileHandlerを使うと日ごとにログが分かれます。
知らなかった。無茶便利。
ログはlog/trade.logファイルに吐かれます。
waitと表示して処理を続けます。
#config.jsonの読み込み
f = open('config/config.json', 'r', encoding="utf-8")
config = json.load(f)
configファイルを読み込みます。
configファイルを見てみます。
config/config_default.jsonです。
{
"product_code" : "FX_BTC_JPY",
"key" : "bitflyer_API_key",
"secret" : "bitflyer_API_secret",
"line_notify_token" : "token",
"healthCheck" : true,
"lotSize" : 0.1,
"entryTerm" : 5,
"closeTerm" : 5,
"rangePercent" : 1.6,
"rangePercentTerm" : 5,
"rangeTerm" : null,
"rangeTh" : null,
"waitTerm" : 0,
"waitTh" : 10000,
"candleTerm" : "5T",
"cost" : 0,
"fileName" : "chart.csv",
"showFigure" : true,
"sendFigure" : false,
"showTradeDetail" : true,
"core" : null,
"hyperopt" : 1000,
"mlMode" : "PL",
"useBlackList" : true,
"keepPosition" : false,
"sfdLimit" : true
}
READ_MEに書いてある設定が並んでいます。
稼働させるときはこのファイルをcopyしてconfig.jsonを作り、それを編集します。
これはkeyやsecretをgithubに上げないようにしたり、github上のconfigファイルが変更された際pullしたときに不要なconflictが起こらないようにするための工夫です。
但し、config_default.jsonが更新された際は手動でconfig.jsonに反映してやる必要があります。
trade.pyに戻ります。
#channelBreakOut設定値
channelBreakOut = channel.ChannelBreakOut()
channelBreakOut.lot = config["lotSize"]
channelBreakOut.entryTerm = config["entryTerm"]
channelBreakOut.closeTerm = config["closeTerm"]
channelBreakOut.rangePercent = config["rangePercent"]
channelBreakOut.rangePercentTerm = config["rangePercentTerm"]
channelBreakOut.rangeTerm = config["rangeTerm"]
channelBreakOut.rangeTh = config["rangeTh"]
channelBreakOut.waitTerm = config["waitTerm"]
channelBreakOut.waitTh = config["waitTh"]
channelBreakOut.candleTerm = config["candleTerm"]
channelBreakOut.sfdLimit = config["sfdLimit"]
channelBreakOut.fileName = None
channelBreakOut変数にChannelBreakOutインスタンスを入れ、configの内容を設定していきます。
# 約定履歴ファイルを引き継がない場合は削除
if config["keepPosition"]==False :
try:
os.remove( 'log/orderhistory.csv' )
except:
pass
keepPosition設定がFalseの時はorderhistory.csvを削除します。
orderhistory.csvに約定履歴を保存し、keepPosition=Trueの時はそこから前のポジション情報を算出・取得するものと推察されます。
15分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?