🎉

自動売買システムの構成と板シミュレーター

2021/08/09に公開約1,500字

kabuステーションAPIを使った自動売買システムの構成と、集めた気配情報の過去データを使って板の動きをシミュレーションするツールについて書いてみます。

kabuステーションAPI

auカブコム証券が提供している、銘柄や気配情報の取得や発注ができるAPIです。
REST APIとPUSH APIの2つがあり、自動売買をする場合はPUSHで気配などをリアルタイムで取得しながら、RESTで発注したり、注文約定結果や残高を確認したりします。
GitHubにPythonなどのサンプルコードが公開されているので、簡単に試すことができます。

気配だけでなく歩み値も同時に取れたら、もっと柔軟にアルゴ開発できるのですが、こちらは今後対応予定とのことです。

自動売買システムの構成

PUSHで取得したデータをDBに保存しつつ、分析や発注をしたいので、以下のような構成にしました。

  1. PUSH APIを使いkabuステーションから気配情報などをリアルタイムで取得。
  2. 1で取得したデータをUbuntu上のRedisに配信。ここではRdisのPub/Sub機能を使っています。
  3. FlaskでRedisのチャネルにSubscribeしてデータを受け、
  4. MySQLに保存します。
  5. 一方、2で配信したデータは、1とは別プロセスのFlaskでSubscribeしていて、ここで分析などをして、
  6. 発注処理や注文約定残高の確認をします。ここのFlaskではデータのやり取りが頻繁に発生するので、asyncioを多用してできるだけ遅延が少なくなるように工夫しています。

板シミュレーター

裁量で取引をしていて思うのは、気配の数量が何株増減したのかわかればいいのになあということです。
普段はkabuステーションか松井のネットストックハイスピードを使ってますが、数量が変化したとき色は変わりますが、増えたのか減ったのかは表示されないですよね。
アルゲンタムコードのBRiSKは増えたか減ったかはわかりますが、何株増減したかはわかりません。
自分で数量記憶しろって話ですが、最良気配近くのは覚えられるとしても、ミリ秒単位で変化し続ける20本の気配を記憶するのは自分にはまだ無理そうです。(うまい人は記憶してるんですかね?)
これが板シミュレーター作った理由です。

https://youtu.be/c0DFr2Mztz8

増減は表示後フェードアウトするようにしました。あと、値段の列をダブルクリックすると仲値が中心に来るようになってます。
買と売の列の色表示はなぜか表示されるときとされないときがあります。データの更新に処理が追い付いてないんですかね。BRiSKでも表示されないときありますよね。似たような理由なのかな。比較するのもおこがましいですが。。

こういうのは処理速度が肝心なので、本当はQtでデスクトップアプリとして作ろうと思ったのですが、作ったはいいけど実際使わない可能性(あるある)もあるので、まずはブラウザで動くのを作りました。
役立ちそうなら、Qtで作り直そうと思ってます。

Discussion

ログインするとコメントできます