楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめています。
今日の日経平均株価
| 現在値 | 54,110.50 | -230.73 | -0.42% | 15:30 | |
|---|---|---|---|---|---|
| 前日終値 | 54,341.23 | 01/14 | 高値 | 54,153.61 | 15:17 |
| 始値 | 54,039.40 | 09:00 | 安値 | 53,709.87 | 09:58 |
※ 右の 15 分足チャートは Yahoo! Finance のデータを yfinance で取得して作成しました。
【関連ニュース】
- 豊田織機TOB価格、トヨタグループが15%上げ-ディスカウント批判も - Bloomberg [2026-01-14]
- 中国の日本からの輸入、昨年12月は3年ぶり高水準 中国税関統計 | ロイター [2026-01-14]
- KDDI不適切取引で調査委設置 グループ2社が売上高過大計上か|47NEWS [2026-01-14]
- ホンダ、米で「お手頃価格」のガソリン車生産強化-新車値上がりに対応 - Bloomberg [2026-01-15]
- 米11月小売売上高0.6%増、予想上回る 自動車販売が回復 | ロイター [2026-01-15]
- 中国は涙目?「レアアース輸出規制」で“日本勝利”と浮かれる人が繰り返す“15年前の大失敗” [2026-01-15]
- 【米国市況】円一時158円台前半、日米当局者が発言-ハイテク株下落 - Bloomberg [2026-01-15]
- 米国株式市場=続落、ナスダック主導 ハイテク株や銀行株が安い | ロイター [2026-01-15]
- NIL技術を応用しウエハーを平たん化、キヤノン:ウエハー表面の凹凸を5nm以下に - EE Times Japan [2026-01-15]
- TSMC、10~12月の純利益は予想上回る-26年投資計画は最大560億ドル - Bloomberg [2026-01-15]
- 台湾TSMC、第4四半期利益は35%増で過去最高 AI需要で | ロイター [2026-01-15]
- 日経平均は反落、過熱感解消の売り TOPIXは史上最高値 | ロイター [2026-01-15]
デイトレ用自作アプリ
以下は株価・取引に関連する情報の流れを示しています。
楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。
リアルタイムの取引シミュレーション (7011)
| 実験条件 | doe-10g | |
|---|---|---|
| パラメータ | 設定値 | |
| PERIOD_WARMUP | 180 | sec |
| PERIOD_MA_1 | 170 | sec |
| PERIOD_MA_2 | 500 | sec |
| PERIOD_SLOPE | 5 | sec |
| THRESHOLD_SLOPE | 0.05 | - |
| PERIOD_RR | 30 | sec |
| TURBULENCE | 35 | - |
| LOSSCUT_1 | -25 | 円 |
複数銘柄について、実験計画 (DOE) にもとづいた取引シミュレーションの結果を蓄積しており、下記のページに一括してまとめています。
以下は、本日のリアルタイム取引シミュレーション (Simulated Trade) による取引結果です。
| 注文番号 | 注文日時 | 銘柄コード | 売買 | 約定単価 | 約定数量 | 損益 | 備考 |
|---|---|---|---|---|---|---|---|
| 1 | 2026-01-15 09:42:53.318396330 | 7011 | 売建 | 4682.0 | 100 | ||
| 2 | 2026-01-15 09:58:29.377334595 | 7011 | 買埋 | 4663.0 | 100 | 1900.0 | |
| 3 | 2026-01-15 10:15:59.395541430 | 7011 | 買建 | 4702.0 | 100 | ||
| 4 | 2026-01-15 10:31:09.876777172 | 7011 | 売埋 | 4713.0 | 100 | 1100.0 | |
| 5 | 2026-01-15 10:37:51.077204227 | 7011 | 買建 | 4724.0 | 100 | ||
| 6 | 2026-01-15 10:46:51.792890549 | 7011 | 売埋 | 4724.0 | 100 | 0.0 | |
| 7 | 2026-01-15 10:46:52.784665108 | 7011 | 売建 | 4725.0 | 100 | ||
| 8 | 2026-01-15 10:50:11.177681923 | 7011 | 買埋 | 4729.0 | 100 | -400.0 | |
| 9 | 2026-01-15 11:08:53.890610695 | 7011 | 買建 | 4733.0 | 100 | ||
| 10 | 2026-01-15 11:22:06.461112976 | 7011 | 売埋 | 4734.0 | 100 | 100.0 | |
| 11 | 2026-01-15 11:27:13.466159344 | 7011 | 買建 | 4740.0 | 100 | ||
| 12 | 2026-01-15 12:31:50.883138657 | 7011 | 売埋 | 4728.0 | 100 | -1200.0 | |
| 13 | 2026-01-15 12:31:51.886793613 | 7011 | 売建 | 4728.0 | 100 | ||
| 14 | 2026-01-15 12:40:25.417463541 | 7011 | 買埋 | 4735.0 | 100 | -700.0 | |
| 15 | 2026-01-15 12:40:26.424097538 | 7011 | 買建 | 4735.0 | 100 | ||
| 16 | 2026-01-15 12:47:25.664825201 | 7011 | 売埋 | 4732.0 | 100 | -300.0 | |
| 17 | 2026-01-15 12:50:54.179259539 | 7011 | 買建 | 4742.0 | 100 | ||
| 18 | 2026-01-15 13:06:53.820408583 | 7011 | 売埋 | 4760.0 | 100 | 1800.0 | |
| 19 | 2026-01-15 13:06:54.813972950 | 7011 | 売建 | 4760.0 | 100 | ||
| 20 | 2026-01-15 13:11:33.518544197 | 7011 | 買埋 | 4766.0 | 100 | -600.0 | |
| 21 | 2026-01-15 13:22:33.455457211 | 7011 | 買建 | 4772.0 | 100 | ||
| 22 | 2026-01-15 13:29:01.556819677 | 7011 | 売埋 | 4777.0 | 100 | 500.0 | |
| 23 | 2026-01-15 13:29:47.736866713 | 7011 | 買建 | 4782.0 | 100 | ||
| 24 | 2026-01-15 13:48:36.652746439 | 7011 | 売埋 | 4797.0 | 100 | 1500.0 | |
| 25 | 2026-01-15 13:48:37.654939175 | 7011 | 売建 | 4797.0 | 100 | ||
| 26 | 2026-01-15 13:53:02.361118793 | 7011 | 買埋 | 4806.0 | 100 | -900.0 | |
| 27 | 2026-01-15 14:01:34.878509283 | 7011 | 売建 | 4795.0 | 100 | ||
| 28 | 2026-01-15 14:07:52.092715025 | 7011 | 買埋 | 4800.0 | 100 | -500.0 | |
| 29 | 2026-01-15 14:36:42.833604336 | 7011 | 売建 | 4779.0 | 100 | ||
| 30 | 2026-01-15 14:43:20.141898155 | 7011 | 買埋 | 4783.0 | 100 | -400.0 | |
| 31 | 2026-01-15 14:43:21.148057938 | 7011 | 買建 | 4782.0 | 100 | ||
| 32 | 2026-01-15 14:51:31.709104061 | 7011 | 売埋 | 4787.0 | 100 | 500.0 | |
| 33 | 2026-01-15 15:22:36.270450592 | 7011 | 買建 | 4798.0 | 100 | ||
| 34 | 2026-01-15 15:24:50.664952278 | 7011 | 売埋 | 4797.0 | 100 | -100.0 | |
| 合計損益 | 2300.0 | ||||||
本日分の等高線図
収集したティックデータから、DOE を実施し、移動平均線 MA1 と MA2 の周期の組み合わせによる損益の等高線図を確認しました。
トレーリングストップ機能の導入検討
トレーリングストップは、含み損益 (profit) が最大含み益 (profit_max) からどれだけ落ちたら利確するかを決める仕組みです。下記の指標を導入しました。
| 実験条件 | doe-11 | |
|---|---|---|
| パラメータ | 設定値 | |
| PERIOD_WARMUP | 180 | sec |
| PERIOD_MA_1 | 170 | sec |
| PERIOD_MA_2 | 500 | sec |
| PERIOD_SLOPE | 5 | sec |
| THRESHOLD_SLOPE | 0.05 | - |
| PERIOD_RR | 30 | sec |
| TURBULENCE | 35 | - |
| LOSSCUT_1 | -25 | 円 |
| THRESHOLD_PM_MIN | 10 | 円 |
| THRESHOLD_DDR_MIN | 0.25 | - |
- ドローダウン
- \[ \text{drawdown} = profit\_{max} - profit \]
- ドローダウン比率
- \[ \text{dd_ratio} = \frac{profit\_{max} - profit}{profit\_{max}} \]
収益は最も重要なテーマです。しかし、最初から利確に固執しすぎるとシステム全体の開発方向を見失うかもしれないと考えて、利確機能の実装を後回しにしていました。
現在はまだシミュレーションのみですが、リアルタイムでの運用でシステムが安定して動作することを確認できたので、まずは下記の指標の監視を始めました…とするつもりでしたが、コードを整理しているうちに機能を実装、仮の設定値で動くようにしてしまいました。
ということで、以下のまとめは、リアルタイム取引シミュレーションのパラメータに、トレーリングストップ用のパラメータと仮条件を加えた「本日パラメータ(新)」でシミュレーションをした結果になっています。
追加したパラメータについては、週末にあらためて説明をまとめる予定です。
| 注文番号 | 注文日時 | 銘柄コード | 売買 | 約定単価 | 約定数量 | 損益 | 備考 |
|---|---|---|---|---|---|---|---|
| 1 | 2026-01-15 09:42:55 | 7011 | 売建 | 4682.0 | 100 | ||
| 2 | 2026-01-15 09:43:31 | 7011 | 買埋 | 4675.0 | 100 | 700.0 | |
| 3 | 2026-01-15 10:16:01 | 7011 | 買建 | 4702.0 | 100 | ||
| 4 | 2026-01-15 10:24:19 | 7011 | 売埋 | 4709.0 | 100 | 700.0 | |
| 5 | 2026-01-15 10:37:54 | 7011 | 買建 | 4723.0 | 100 | ||
| 6 | 2026-01-15 10:44:17 | 7011 | 売埋 | 4732.0 | 100 | 900.0 | |
| 7 | 2026-01-15 10:46:52 | 7011 | 売建 | 4724.0 | 100 | ||
| 8 | 2026-01-15 10:50:13 | 7011 | 買埋 | 4729.0 | 100 | -500.0 | |
| 9 | 2026-01-15 11:08:55 | 7011 | 買建 | 4733.0 | 100 | ||
| 10 | 2026-01-15 11:19:19 | 7011 | 売埋 | 4741.0 | 100 | 800.0 | |
| 11 | 2026-01-15 11:22:08 | 7011 | 売建 | 4734.0 | 100 | ||
| 12 | 2026-01-15 11:27:14 | 7011 | 買埋 | 4740.0 | 100 | -600.0 | |
| 13 | 2026-01-15 11:27:16 | 7011 | 買建 | 4740.0 | 100 | ||
| 14 | 2026-01-15 11:29:34 | 7011 | 売埋 | 4749.0 | 100 | 900.0 | |
| 15 | 2026-01-15 12:31:52 | 7011 | 売建 | 4728.0 | 100 | ||
| 16 | 2026-01-15 12:40:27 | 7011 | 買埋 | 4735.0 | 100 | -700.0 | |
| 17 | 2026-01-15 12:40:28 | 7011 | 買建 | 4735.0 | 100 | ||
| 18 | 2026-01-15 12:47:27 | 7011 | 売埋 | 4732.0 | 100 | -300.0 | |
| 19 | 2026-01-15 12:50:56 | 7011 | 買建 | 4742.0 | 100 | ||
| 20 | 2026-01-15 12:52:30 | 7011 | 売埋 | 4754.0 | 100 | 1200.0 | |
| 21 | 2026-01-15 13:06:55 | 7011 | 売建 | 4760.0 | 100 | ||
| 22 | 2026-01-15 13:11:35 | 7011 | 買埋 | 4766.0 | 100 | -600.0 | |
| 23 | 2026-01-15 13:22:35 | 7011 | 買建 | 4772.0 | 100 | ||
| 24 | 2026-01-15 13:29:03 | 7011 | 売埋 | 4777.0 | 100 | 500.0 | |
| 25 | 2026-01-15 13:29:49 | 7011 | 買建 | 4782.0 | 100 | ||
| 26 | 2026-01-15 13:30:29 | 7011 | 売埋 | 4790.0 | 100 | 800.0 | |
| 27 | 2026-01-15 13:48:38 | 7011 | 売建 | 4797.0 | 100 | ||
| 28 | 2026-01-15 13:53:04 | 7011 | 買埋 | 4806.0 | 100 | -900.0 | |
| 29 | 2026-01-15 14:01:36 | 7011 | 売建 | 4795.0 | 100 | ||
| 30 | 2026-01-15 14:07:54 | 7011 | 買埋 | 4800.0 | 100 | -500.0 | |
| 31 | 2026-01-15 14:36:44 | 7011 | 売建 | 4779.0 | 100 | ||
| 32 | 2026-01-15 14:43:25 | 7011 | 買埋 | 4782.0 | 100 | -300.0 | |
| 33 | 2026-01-15 15:22:38 | 7011 | 買建 | 4798.0 | 100 | ||
| 34 | 2026-01-15 15:24:51 | 7011 | 売埋 | 4797.0 | 100 | -100.0 | |
| 合計損益 | 2000.0 | ||||||
旧条件での損益は 2,300 円、仮設定での新条件では 2,000 円と、改善になりませんでした。😭
昨日の値動きではプラスになったのに…とボヤいてみても仕方がないので、最良な条件の組み合わせの探索を始めます。
累積損益の時系列トレンド
今日の累積損益の時系列トレンドです(新条件)。
テクニカル指標の時系列トレンド
環境内で管理している、売買シグナルのソースとなるテクニカル指標と含み損益のトレンドをプロットしました。
縦の赤線は、取引明細の時間から入れたもので、売買をしたタイミングになります。
売買ロジックへのインプット
売買ロジックは Maskable PPO 互換のインターフェイスを持った自作のアルゴリズムを備えた疑似モデルです。
なるべくシンプルなロジックで売買判断できることを目指しているため、現在のところ、[0, 1] あるいは [-1, 0, 1] といった離散的なシグナルをインプットするようにしています。
シグナル名を短縮してしまって意味が判りにくいので、それぞれの機能をまとめました。
- クロスS1
- 移動平均 MA1, MA2 のクロスシグナル。デッドクロス、クロス無し、ゴールデンクロスを -1, 0, 1 とした売買用シグナル。
- クロスS2
- クロスS1の 1 秒遅れの反対売買用シグナル。
- クロ強
- MA1 の傾き(絶対値)が THRESHOLD_SLOPE より大きい場合に発生するクロス・シグナルの強さを示すシグナル。
- 乱高下
- Rolling Range の値が TURBULENCE より大きい場合は、株価が乱高下しているとみなしてエントリを抑制するシグナル。
- ロス1
- 含み損益が LOSSCUT_1 を下回った時に発生するロスカット用シグナル。
- 利確1
- 含み益最大値 (Profit Min = PM) が、設定した最低値 THRESHOLD_PM_MIN より大きく、ドローダウン比率 (Draw Down Ratio = DDR) が設定したしきい値 THRESHOLD_DDR_MIN より大きくなったときに利確タイミングのシグナルを発生。
- 建玉
- ポジション SHORT, NONE, LONG を -1, 0, 1 としたシグナル。
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- Gymnasium Documentation
- Stable-Baselines3 Docs - Reliable Reinforcement Learning Implementations
- Maskable PPO — Stable Baselines3 - documentation
- PyTorch documentation
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation








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