チャネルブレイクアウトbotコード(by スナフキン氏)読解メモ8
の続きです。
題材コードは https://sshuhei.com/entry/channelbreakout/ です。
pubnubThread = threading.Thread(target=pubnub.start)
pubnubThread.start()
threadingは並列処理のための実装です。
pubnubで価格を取得しながら取引するための処理です。
targetにthreadで実行したいメソッドを渡します。
pubnub.startは、pubnubでの受信開始メソッドです。
ドキュメント( https://www.pubnub.com/docs/python/api-reference-configuration#init )によると、`You must call start() to initiate the PubNub Client API in Python V4.` とのこと。
なぜpubnubで価格を取得するかというと、restAPIで取得するよりも早く情報を得ることができるからです。
早く情報を得られれば遅い人やbotよりも有利な注文ができます。
また、restAPIの頻度制限を回避するという目的もあります。
public API (bitflyer lightningの取引インターフェイスから利用されているAPI)のsignalr接続が最も速いという話もありましたが、最近のTLを追っていると今は正式APIで遜色ないスピードが出ているようです。
loopメソッドに戻ります。
# pubnubが回り始めるまで待つ.
time.sleep(20)
pubnub通信が開始されるのを待ちます。
sleepに渡している数字の単位は秒です。
小数を渡すこともできます。
pos = 0
pl = []
pl.append(0)
lastPositionPrice = 0
lot = self.lot
originalLot = self.lot
waitTerm = 0
変数たちを定義しています。
後で使われるはずなのでその時に意味を読解します。
try:
candleStick = self.getCandlestick(50, "60")
except:
print("Unknown error happend when you requested candleStick")
candleStickなる変数をgetCandlestickメソッドで生成しています。
def getCandlestick(self, number, period):
"""
number:ローソク足の数.period:ローソク足の期間(文字列で秒数を指定,
Ex:1分足なら"60").cryptowatchはときどきおかしなデータ(price=0)が含まれるのでそれを除く.
"""
引数としてnumber, periodを渡しています。
コメントにあるように、
numberはローソク足の数、
periodはローソク足の期間を意味しています。
どうやらこのメソッドはローソク足情報を生成するようです。
15分経ったので今日はここまで。
↓つづき
この記事が気に入ったらサポートをしてみませんか?