チャネルブレイクアウト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分経ったので今日はここまで。
↓次
この記事が気に入ったらサポートをしてみませんか?