楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS(以下、単に RSS と呼びます)を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめています。
デイトレ用自作アプリ
以下は株価・取引に関連する情報の流れを示しています。
株価データ・取引の流れ(Windows 11)
楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、RSS を介して取引をする構成を取っています。
改善しながら運用中
発注条件概略
| 銘柄数 | 3 |
|---|---|
| 信用区分 | 一般信用(いちにち) |
| 注文数量 | 100 株 |
| 価格区分 | 成行 |
| 制 約 | ナンピン禁止 (GUI) |
本アプリは、短周期の移動平均線 MA1 と売買高加重平均価格 VWAP のクロス・シグナルで売買判断をします。
同時に 3 銘柄をスクロールバー無しに表示できる設計なので、一般信用売建銘柄(いちにち)の売建可能数量が多いものから 3 銘柄を選定して運用を始めています。
アプリの株価の移動平均線 MA1 と 売買高加重平均価格 VWAP のトレンド [2026-02-27]
デイトレ用取引アプリの構成概略 ─ Kabuto 0.4.3
現在のアプリは、エントリ:手動、エグジット:自動(+手動)の構成になっています。
- マーケットスピードⅡ RSS / Excel とのやりとり
- 複数銘柄(20 銘柄程度)のティックデータを収集
- 4 本足データは収集していません。
- 素人考えかもしれませんが、ティックデータを取得できるのに、デイトレで四本足データでローソク足チャートを作るはもったいないと考えています。
- アプリが取得する情報は、(原則)時刻、株価と出来高のみ
- ティックデータの取得頻度は、マーケットスピードⅡ RSS のデフォルトの更新頻度の 2 秒
- 収集したティックデータは、銘柄コードをシート名にした新規 Excel ブック (.xlsx) に自動保存
- 発注の約定確認は、Python と Excel VBA とで最低限のやり取りをしています。
- 信用建玉発注・返済(成行注文)
- 取引対象の銘柄は、ティックデータを収集する銘柄の中から選択
- 取引対象の銘柄数に上限なし。ただし、スクロールなしに一画面で値動きを見られるのは 3 銘柄まで。
- Excel 側に、RSS の VBA 関数で発注・約定確認をするユーザー VBA 関数を実装
- Python 側からVBA 関数を実行。
- 含み益の情報は Excel から取得せず、アプリ内部で見込み額を算出
- RSS と本アプリの xlwings が同一の Excel シートへアクセスするため、一定頻度で COM の衝突が発生します。
- 衝突による例外発生時にリトライ回数を設定してはいますが、Excel とのやり取りを必要最低限に抑えようとしています。
- 現在のところ、建玉発注時の建玉価格や返済価格の情報すらアプリ側で取得していません。機を見て約定価格を取得するように改善する予定です。
- 株価チャート
- 株価トレンド
- 最新株価の点
- 短周期移動平均線 MA1 と 売買高加重平均価格 VWAP のトレンド線
- MA1 と VWAP の乖離トレンド(切り替えて表示)
- MA1 - VWAP 乖離のトレンド線
- MA1 と VWAP がクロスしたタイミングの縦線
- 直近のゴールデン・クロスとデッド・クロスを色を変えて表示
- 一般の取引ツールと異なり、当日の取引時間幅に固定したチャート
- デイトレは取引時間内の値動きに集中したいので、どうしてもこのようなチャートにしたかった。
- 手動エントリ
- 買 建 と 売 建 ボタンをクリックして手動でエントリ
- クリック可能なボタンの制御は、ナンピンができないロジックになっている。
- 寄り付き後、設定期間(デフォルトは 300 step = 600 秒)は売買ボタンをロックして売買禁止。
- 建玉があるときに 返 済 ボタンをクリックすれば手動で返済(エグジット)することも可能
- 自動エグジット
- 移動平均線がクロスしたタイミングで建玉があれば返済
- ただし、ゴールデンクロス時に買建、デッドクロス時に売建の建玉を持っている場合は返済しない。
- トレーリングストップによる利確
- ドローダウンとドローダウン比率を設定して運用
- トレーリングストップは、含み損益 \(profit\) が 最大含み益 \(profit_{max}\) からどれだけ落ちたら利確するかを決める仕組みです。
-
\[ \text{drawdown} = profit_{max} - profit \]
-
\[ \text{drawdown_ratio} = \frac{drawdown}{profit_{max}} \]
- 含み損がしきい値(マイナス側)を超えればロスカット
- 含み損が連続して設定回数を超えればロスカット
エントリが最大の課題
今のところ、クロス・シグナルに翻弄されて無駄なエントリを重ねて損失を積み上げてしまうケースがとても多いです。このような状況で、損失覚悟でボラティリティも株価も高い銘柄に手を出す気にはとてもなれません。
トレンドにつながるクロス・シグナルを決め打ちしてエントリできる完璧なやり方を見出すことは無理かもしれませんが、ある程度は目安にできる何かを探し出すために、しばらくは小さな取引を続けようと思います。そんな目安があればエントリも自動化できるんですけどね、そう簡単には見つからないでしょう。😮💨
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation



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