チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ2
のつづきです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です
ChannelBreakOutクラスでOrderクラスのメソッドを使っているので、Orderから見ていきます。
メソッドが5つあります。
def limit(self, side, price, size, minute_to_expire=None):
def market(self, side, size, minute_to_expire=None):
def stop(self, side, size, trigger_price, minute_to_expire=None):
def stop_limit(self, side, size, trigger_price, price,
minute_to_expire=None):
def trailing(self, side, size, offset, minute_to_expire=None):
limit, market, stop, stop_limit, trailingです。
それぞれ、指値注文、成行注文、ストップ注文、ストップリミット注文、トレイリング注文を実行します。
pybitflyer経由でbitflylerのAPIを呼んでいます。
指値・成行は子注文を使っています。
例えば指値は、
response = self.api.sendchildorder(product_code=self.product_code,
child_order_type="LIMIT",
side=side,
price=price, size=size,
minute_to_expire=minute_to_expire)
pybitflyerから上記APIを呼んでいます。
成行の場合も利用APIは同じです。
指値注文のコードを見ていきます
def limit(self, side, price, size, minute_to_expire=None):
print("Order: Limit. Side : {}".format(side))
response = {"status": "internalError in order.py"}
try:
response = self.api.sendchildorder(product_code=self.product_code,
child_order_type="LIMIT",
side=side,
price=price, size=size,
minute_to_expire=minute_to_expire)
except:
pass
while "status" in response:
try:
response = self.api.sendchildorder(
product_code=self.product_code, child_order_type="LIMIT",
side=side,
price=price, size=size, minute_to_expire=minute_to_expire)
except:
pass
time.sleep(3)
return response
def limit(self, side, price, size, minute_to_expire=None):
引数をいくつか渡しています。
selfは、class内にあるメソッド(厳密にはインスタンスメソッド)では必ず渡す必要のある値です。
sideは、売るのか買うのかの指定です。SELLかBUYを渡します。
priceは価格。
sizeはトレードのサイズ。例えば0.01とか。
minute_to_expireは注文が自動的にキャンセルされるまでの時間(単位は分)です。
「=None」と書かれているのはデフォルト値で、このメソッドを利用する際にminute_to_expireを特に利用しない場合はNoneが入ります。
Noneは字のごとく空の値です。他のプログラミング言語だとnullやnilで表現されたりします。
print("Order: Limit. Side : {}".format(side))
printは、実行時に文字列を出力します。
この場合、指値注文を売りあるいは買いで出しましたということを出力します。
formatは、文字列.format(x)と記述すると文字列内の中括弧をxに置換して出力してくれます。
参考:
https://note.nkmk.me/python-format-zero-hex/
15分経ったので今日はここまで。
この記事が気に入ったらサポートをしてみませんか?