2026-01-15

自動売買への道 (2026-01-15)

楽天証券の口座でデイトレの自動売買に挑戦しようと 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 で取得して作成しました。

【関連ニュース】

デイトレ用自作アプリ

以下は株価・取引に関連する情報の流れを示しています。

株価データ・取引の流れ(Windows 11)

楽天証券では、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) にもとづいた取引シミュレーションの結果を蓄積しており、下記のページに一括してまとめています。

私の株日記: 実験結果まとめ doe-10

以下は、本日のリアルタイム取引シミュレーション (Simulated Trade) による取引結果です。


本日のリアルタイムの取引シミュレーション (Simulated Trade)
本日のリアルタイムの取引シミュレーション (Simulated Trade) の取引明細(100 株単位)
注文番号 注文日時 銘柄コード 売買 約定単価 約定数量 損益 備考
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}} \]

収益は最も重要なテーマです。しかし、最初から利確に固執しすぎるとシステム全体の開発方向を見失うかもしれないと考えて、利確機能の実装を後回しにしていました。

現在はまだシミュレーションのみですが、リアルタイムでの運用でシステムが安定して動作することを確認できたので、まずは下記の指標の監視を始めました…とするつもりでしたが、コードを整理しているうちに機能を実装、仮の設定値で動くようにしてしまいました。

ということで、以下のまとめは、リアルタイム取引シミュレーションのパラメータに、トレーリングストップ用のパラメータと仮条件を加えた「本日パラメータ(新)」でシミュレーションをした結果になっています。

追加したパラメータについては、週末にあらためて説明をまとめる予定です。

本日のリアルタイムの取引シミュレーション (Simulated Trade) の取引明細(100 株単位)[新条件]
注文番号 注文日時 銘柄コード 売買 約定単価 約定数量 損益 備考
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] といった離散的なシグナルをインプットするようにしています。

シグナル名を短縮してしまって意味が判りにくいので、それぞれの機能をまとめました。

  1. クロスS1
    • 移動平均 MA1, MA2 のクロスシグナル。デッドクロス、クロス無し、ゴールデンクロスを -1, 0, 1 とした売買用シグナル。
  2. クロスS2
    • クロスS1の 1 秒遅れの反対売買用シグナル。
  3. クロ強
    • MA1 の傾き(絶対値)が THRESHOLD_SLOPE より大きい場合に発生するクロス・シグナルの強さを示すシグナル。
  4. 乱高下
    • Rolling Range の値が TURBULENCE より大きい場合は、株価が乱高下しているとみなしてエントリを抑制するシグナル。
  5. ロス1
    • 含み損益が LOSSCUT_1 を下回った時に発生するロスカット用シグナル。
  6. 利確1
    • 含み益最大値 (Profit Min = PM) が、設定した最低値 THRESHOLD_PM_MIN より大きく、ドローダウン比率 (Draw Down Ratio = DDR) が設定したしきい値 THRESHOLD_DDR_MIN より大きくなったときに利確タイミングのシグナルを発生。
  7. 建玉
    • ポジション SHORT, NONE, LONG-1, 0, 1 としたシグナル。
売買ロジックにインプットしているシグナル

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS 関数マニュアル
  3. 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
  4. Gymnasium Documentation
  5. Stable-Baselines3 Docs - Reliable Reinforcement Learning Implementations
  6. Maskable PPO — Stable Baselines3 - documentation
  7. PyTorch documentation
  8. PythonでGUIを設計 | Qtの公式Pythonバインディング
  9. Python in Excel alternative: Open. Self-hosted. No limits.
  10. Book - xlwings Documentation
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

0 件のコメント:

コメントを投稿