チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ23

の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。

loopメソッドの続きから。

               # ロングエントリー
               if judgement[0]:
                   print(datetime.datetime.now())
                   self.order.market(size=lot, side="BUY")
                   pos += 1
                   message = "Long entry. Lot:{}, Price:{}".format(lot,
                                                                   best_ask)
                   self.lineNotify(message)
                   lastPositionPrice = best_ask

judgement[0]が1ならlongします。

                   print(datetime.datetime.now())

現在時刻を標準出力。

                   self.order.market(size=lot, side="BUY")
                   pos += 1

成行注文でlongします。
`lot` は ChannelBreakOutクラス初期化時に設定しています。
注文が成功したらポジションに1加算します。
marketメソッドで例外はキャッチしているので必ず成功します(成功するまで発注します)。

                   message = "Long entry. Lot:{}, Price:{}".format(lot,
                                                                   best_ask)
                   self.lineNotify(message)

メッセージ文面を作ってlineに送信します。

lineNotifyメソッドを見ます。

    def lineNotify(self, message, fileName=None):
       payload = {'message': message}
       headers = {'Authorization': 'Bearer ' + self.line_notify_token}
       if fileName == None:
           try:
               requests.post(self.line_notify_api, data=payload,
                             headers=headers)
           except:
               pass
       else:
           try:
               files = {"imageFile": open(fileName, "rb")}
               requests.post(self.line_notify_api, data=payload,
                             headers=headers, files=files)
           except:
               pass

LINEのNotify APIを利用しています。
参考: https://notify-bot.line.me/doc/ja/
リクエストパラメータはmessageだけ必須なのでそれを作ってPOSTします。

       payload = {'message': message}

メッセージをpayload変数に入れます。

       headers = {'Authorization': 'Bearer ' + self.line_notify_token}

リクエストヘッダでtokenを指定します。
tokenはLINE Notifyで取得できるものです。
参考: https://qiita.com/iitenkida7/items/576a8226ba6584864d95

       if fileName == None:
           try:
               requests.post(self.line_notify_api, data=payload,
                             headers=headers)
           except:
               pass

fileNameが指定されていなければ、メッセージだけをPOSTして終わります。
例外が飛んでも何もしません。

15分経ったので今日はここまで。

↓次


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