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分経ったので今日はここまで。

↓次


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