how-to-make-stock-trading-system.dogwood008.com
データコントラクトの確認
下記は Backtraderの公式ドキュメントから引用と翻訳。(閲覧日: 2021年1月25日)
# OK data = ibstore.getdata(dataname='TWTR') # Twitter data = ibstore.getdata(dataname='AAPL-STK-SMART-USD') # コントラクトが1つ見つかる # NG data = ibstore.getdata(dataname='AAPL') # Error -> 複数のコントラクトが見つかってしまう
これを日本市場に置き換えると例えば 7203
トヨタについて、 7203
だけだと東証か名証か複数取引所の候補があるから、(Yahoo!ファイナンス方式にならうと) 7203.T
と 7203.N
というように、取引所まで指定してまう、ということだろう。
自分で ibstore
を作成する時に、この辺も念頭に置いておくのが良さそうだ。
データ通知
データフィードは次の方法で取得できる。
Cerebro.notify_data
(オーバライドしていれば)Cerebro.adddatacb
に追加されたコールバックStrategy.notify_data
(オーバライドしていれば)
次の方法により、 Strategy
の中で、リアルタイムトレード中かの判別が可能。
class IBStrategy(bt.Strategy): def notify_data(self, data, status, *args, **kwargs): if status == data.LIVE: # もしデータがリアルタイムならlive data # ここで何かする pass
このとき、 status
の取り得る値は下記の通り。詳細はドキュメントを参照。
CONNECTED
, DISCONNECTED
, CONNBROKEN
, NOTSUBSCRIBED
, DELAYED
, LIVE
次回以降も続きをやっていく。