楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。テクニカル指標にもとづいて妥当な取引条件を決めるために、実験計画を立てて取引シミュレーションを実施しています。
どんな値動きに対しても適用できるような理想的な条件の組み合わせが存在するとは考えていません。それでも、そこそこ良い条件領域があることを期待しています。そういった領域が見つかれば、そこをベースとして動的に条件を動かすための指針を探ることができます。
実験は網羅的、継続的に納得がいくまで実施したいので、膨大に出てくる結果をまとめるための専用ページを用意しました。
実験計画 doe-13
実験の目的
含み損益 (profit) が最大含み益 (profit_max) からどれだけ落ちたら利確するかを決めるトレーリングストップの条件出し。
実験条件概略
下記にパラメータおよび実験条件の概略をまとめました。
実験条件表 (doe-13)
| データ | 約 1 秒間隔で取得した株価と出来高のティックデータ(1 日分) | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 対象期間 | 2025-08-19 以降、当営業日まで | |||||||||
| 実験因子 | 実験水準 | |||||||||
| PERIOD_WARMUP | sec | 180 | 寄り付き後、エントリを禁止する期間 | |||||||
| PERIOD_MA_1 | sec | TBD | 2 つの移動平均線、短周期の MA1 と、長周期の MA2 のクロス・シグナルを売買エントリのトリガーに使用。 暫定的に対象銘柄の POR 条件を使用。 |
|||||||
| PERIOD_MA_2 | sec | TBD | ||||||||
| PERIOD_SLOPE | sec | 5 | MA1 の最新点を含む直前 PERIOD_SLOPE 秒のデータから単回帰直線の傾きを算出。 傾きが THRESHOLD_SLOPE より大きければエントリを許可。 |
|||||||
| THRESHOLD_SLOPE | - | 0.5 | ||||||||
| PERIOD_RR | sec | 30 | 主に寄り付き直後の方向感のない大きな値動きに対してエントリを抑制する目的で、値動きの激しさをあらわす指標 Rolling Range (RR) を導入。設定したしきい値 TURBULENCE より大きければエントリを禁止。 | |||||||
| TURBULENCE | - | 35 | ||||||||
| LOSSCUT_1 | 円/株 | -25 | 単純ロスカットをするためのしきい値。 | |||||||
| THRESHOLD_PM_MIN | 円/株 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | THRESHOLD_PM_MIN は「含み益最大値」の最低値。これを超えればドローダウンによる利確機能が有効になる。ドローダウン比率が THRESHOLD_DDR_MIN を超えれば利確をする。 |
| THRESHOLD_DDR_MIN | - | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | |
| N_MINUS_MAX | 回 | TBD | 含み損益が連続でマイナスになるのを許容できる最大回数。 | |||||||
| 実験計画 | PERIOD_MA_1 と PERIOD_MA_2 の完全実施要因計画 (Full Factorial Design) | |||||||||
| 評価特性 | 説 明 | |||||||||
| 損 益 [total] | 円/株 | 収集したティックデータ(1 日分)で売買シミュレーションを実施した損益。 | ||||||||
| 取引回数 [trade] | 回 | 取引回数の上限を 100 回に設定。【参考値】 | ||||||||
| 最適条件 判定方法 |
|
|||||||||
実験結果
| PERIOD_MA_1 | 60 | 90 | 100 | |
|---|---|---|---|---|
| PERIOD_MA_2 | 450 | 550 | 300 | |
| 実験名 | 日付 | 銘柄コード | ||
| doe-13a | 2026-01-16 | 7011 | 7203 | 8306 |
内部処理を変更したため実験のやり直し。PERIOD_MA_1、PERIOD_MA_2 は、2026-01-19 のリアルタイム・シミュレーションで使用した設定値に更新。
| PERIOD_MA_1 | 60 | 100 | 30 | |
|---|---|---|---|---|
| PERIOD_MA_2 | 450 | 450 | 350 | |
| 実験名 | 日付 | 銘柄コード | ||
| doe-13b | 2026-01-16 | 7011 | 7203 | 8306 |
| doe-13b | 2026-01-19 | 7011 | 7203 | 8306 |
PERIOD_MA_1、PERIOD_MA_2 を、2026-01-20 のリアルタイム・シミュレーションで使用した設定値に更新。
| PERIOD_MA_1 | 50 | 80 | 50 | |
|---|---|---|---|---|
| PERIOD_MA_2 | 800 | 300 | 500 | |
| 実験名 | 日付 | 銘柄コード | ||
| doe-13c | 2026-01-19 | 7011 | 7203 | 8306 |
| doe-13c | 2026-01-20 | 7011 | 7203 | 8306 |
PERIOD_MA_1、PERIOD_MA_2 を、2026-01-21 のリアルタイム・シミュレーションで使用した設定値に更新。
| PERIOD_MA_1 | 40 | 140 | 130 | |
|---|---|---|---|---|
| PERIOD_MA_2 | 1400 | 900 | 900 | |
| 実験名 | 日付 | 銘柄コード | ||
| doe-13e | 2026-01-20 | 7011 | 7203 | 8306 |
PERIOD_MA_1、PERIOD_MA_2 を、2026-01-22 のリアルタイム・シミュレーションで使用した設定値に更新。
| PERIOD_MA_1 | 40 | 140 | 50 | |
|---|---|---|---|---|
| PERIOD_MA_2 | 1400 | 1200 | 1000 | |
| 実験名 | 日付 | 銘柄コード | ||
| doe-13g | 2026-01-22 | 7011 | 7203 | 8306 |
参考サイト
- マーケットスピード 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 件のコメント:
コメントを投稿