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

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

response = {"status": "internalError in order.py"}
try:
    response = self.api.sendchildorder(product_code=self.product_code,
                                       child_order_type="MARKET",
                                       side=side,
                                       size=size,
                                       minute_to_expire=minute_to_expire)
except:
    pass

responseに前もって辞書オブジェクトを入れておきます。
その上で、self.api.sendchildorderでpybitflyer経由でbitflyer APIを参照します。
引数は下記です。
product_code(bitflyerの通貨種別。FXとか現物とか)
child_order_type(注文種別。成行とか指値とか。ここは成行注文なので "MARKET")
side(売りか買いか)
size(注文量)
minute_to_expire(注文が何分で自動キャンセルされるか)
try~exceptは例外処理です。
self.api.sendchildorderが例外を飛ばした時の処理です。
俗にいうエラー処理です。
ここではexceptの時にpassしているので、例外時に特に処理はしません。
なので例外時にはresponseの中身は冒頭で設定したままの辞書オブジェクトになります。

while "status" in response:
   try:
       response = self.api.sendchildorder(
           product_code=self.product_code, child_order_type="MARKET",
           side=side,
           size=size, minute_to_expire=minute_to_expire)
   except:
       pass
   time.sleep(3)
return response

冒頭のwhile文はresponseにstatusキーが入っている限りloopすることを表現しています。
pythonでは「キー in 辞書オブジェクト」の記述で、キーが辞書オブジェクトに含まれているか判定できます。

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

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