株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

技術メモ:リアルタイムトレード(ライブトレード) その3

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.T7203.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

次回以降も続きをやっていく。

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.