楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめています。
デイトレ用自作アプリ
以下は株価・取引に関連する情報の流れを示しています。
楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。
やっとスタート地点に立てました!
今週は、Python から Excel VBA の関数を実行して、マーケットスピードⅡ RSS で信用売買の発注をするために、売買テスト用のアプリを用意して動作確認をおこなってきました。
発注機能の確認ができたのでメイン・アプリへの実装作業を進めてきましたが、ようやく終わりました。残念ながら週末で取引がないので、Excel VBA の関数とのやり取りまでの機能確認しかできていません。
下図は、過去のティックデータを使った取引シミュレーション例です。
デイトレ用取引アプリの構成概略
今まで DOE を何回繰り返しても納得できるような条件が得られなかったので、全自動にすることをひとまず諦めて、経験不足で有効なアルゴリズムを組めないエントリを手動操作にして、エグジッドだけを自動にしました。
つまり、ヘタなエントリをしても、ロジックでロスカットを実行してくれるので、損失がむやみに膨らまない設計にしました。
- マーケットスピードⅡ RSS / Excel とのやりとり
- 複数銘柄(20 銘柄程度)のティックデータを取得(4 本足データは使用しない)
- 時刻、株価と出来高のみ
- ティックデータの取得頻度は、マーケットスピードⅡ RSS のデフォルトの更新頻度 2 秒に合わせた頻度
- 収集したティックデータは、銘柄コードをシート名にした新規 Excel ブック (.xlsx) に自動保存
- 信用建玉発注・返済(成行注文)
- Python 側から Excel 側に用意してある VBA 関数を実行して発注、約定確認
- 含み益の情報は Excel から取得せず、アプリ内部で見込み額を算出
- 株価チャート
- トレンド(線の色は、株価トレンド線を除き、未確定)
- 株価トレンド線(灰色、ほとんど見えない)
- 最新株価の点
- 短期 MA1・長期 MA2 の移動平均線
- 移動平均線がクロスしたタイミングの縦線を表示(直近のみ)
- 一般の取引ツールと異なり、当日の取引時間幅に固定したチャート構成
- デイトレは取引時間内の値動きに集中したいので、どうしてもこのようなチャートにしたかった。
- 手動エントリ
- 買 建 と 売 建 ボタンをクリックして手動でエントリ
- クリック可能なボタンの制御は、ナンピンができないロジックになっている。
- 建玉があるときに 返 済 ボタンをクリックすれば手動で返済(エグジット)することも可能
- 自動エグジット
- 移動平均線がクロスしたタイミングで建玉があれば返済
- トレーリングストップによる利確
- ドローダウンとドローダウン比率を設定して運用
- トレーリングストップは、含み損益 \(profit\) が 最大含み益 \(profit_{max}\) からどれだけ落ちたら利確するかを決める仕組みです。
- \[ \text{drawdown} = profit_{max} - profit \]
- \[ \text{drawdown_ratio} = \frac{drawdown}{profit_{max}} \]
- 含み損がしきい値(マイナス側)を超えればロスカット
- 含み損が連続して設定回数を超えればロスカット
2 月から試験運用
初日から不具合で動かない可能性もありますが、無事動いても、まだまだ改善が必要な機能が山積みです。2 月は、株価が低く、出来高があり、売建の建玉が多くある単一の銘柄に絞って、おそるおそる試験運用を始めます。オペレーションになれる必要もあるので、複数銘柄の表示は先延ばしにします。
それに、マーケットスピードⅡの通信が切れた時の復旧対応ができていません。忘れた頃に落ちるので、対応を考える必要があります。ティックデータの収集だけであれば、バックアップ機を稼働させることでリスクをかなり減らせますが、取引中の場合に落ちた場合、復旧をどうするかは検討中です。
歓迎はできませんが取引中に経験してみないと具体的な復旧方法が思いつかないような気がします。
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation



0 件のコメント:
コメントを投稿