2026-01-23

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

楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめています。

今日の日経平均株価

現在値 53,846.87 +157.98 +0.29% 15:45
前日終値 53,688.89 01/22 高値 54,050.84 12:55
始値 53,898.45 09:00 安値 53,603.68 09:15

※ 右の 15 分足チャートは Yahoo! Finance のデータを yfinance で取得して作成しました。

【関連ニュース】

デイトレ用自作アプリ

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

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

楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。

リアルタイムの取引シミュレーション (7011)

本日の設定
  value
PERIOD_WARMUP 180.00
PERIOD_MA_1 40.00
PERIOD_MA_2 1400.00
PERIOD_SLOPE 5.00
THRESHOLD_SLOPE 0.10
PERIOD_RR 30.00
TURBULENCE 35.00
LOSSCUT_1 -25.00
THRESHOLD_PM_MIN 15.00
THRESHOLD_DDR_MIN 0.20
N_MINUS_MAX 180.00

本日のパラメータを決めるために、実験計画 (DOE) にもとづいた取引シミュレーションを実施して、その結果を蓄積しています。毎回、詳細な解析・考察をしようとすると続かないので、興味がある情報だけをまとめています。


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

本日のリアルタイムの取引シミュレーション (Simulated Trade)
本日のリアルタイムの取引シミュレーション (Simulated Trade) の取引明細(100 株単位)
注文番号 注文日時 銘柄コード 売買 約定単価 約定数量 損益 備考
1 2026-01-23 09:03:53.255362511 7011 買建 4735.0 100
2 2026-01-23 09:08:04.152911425 7011 売埋 4728.0 100 -700.0
3 2026-01-23 09:08:05.161302567 7011 売建 4720.0 100
4 2026-01-23 09:09:15.422426224 7011 買埋 4734.0 100 -1400.0
5 2026-01-23 09:09:16.427311420 7011 買建 4734.0 100
6 2026-01-23 09:10:38.670450687 7011 売埋 4732.0 100 -200.0
7 2026-01-23 09:10:39.663048983 7011 売建 4731.0 100
8 2026-01-23 09:11:02.724727869 7011 買埋 4736.0 100 -500.0
9 2026-01-23 09:11:03.734669209 7011 買建 4735.0 100
10 2026-01-23 09:11:38.877211332 7011 売埋 4728.0 100 -700.0
11 2026-01-23 09:11:39.885648966 7011 売建 4729.0 100
12 2026-01-23 09:14:00.287638903 7011 買埋 4740.0 100 -1100.0
13 2026-01-23 09:14:01.294163704 7011 買建 4740.0 100
14 2026-01-23 09:17:45.109386683 7011 売埋 4758.0 100 1800.0
15 2026-01-23 09:30:55.002491236 7011 売建 4748.0 100
16 2026-01-23 09:31:31.061454535 7011 買埋 4752.0 100 -400.0
17 2026-01-23 09:39:57.522360802 7011 売建 4757.0 100
18 2026-01-23 09:40:49.820747852 7011 買埋 4765.0 100 -800.0
19 2026-01-23 09:40:50.827666521 7011 買建 4766.0 100
20 2026-01-23 09:43:41.423065901 7011 売埋 4760.0 100 -600.0
21 2026-01-23 09:43:42.427032232 7011 売建 4760.0 100
22 2026-01-23 09:46:10.841842651 7011 買埋 4761.0 100 -100.0
23 2026-01-23 09:48:33.257544279 7011 売建 4760.0 100
24 2026-01-23 09:50:25.639108896 7011 買埋 4767.0 100 -700.0
25 2026-01-23 09:50:26.629682779 7011 買建 4767.0 100
26 2026-01-23 09:52:28.037544250 7011 売埋 4760.0 100 -700.0
27 2026-01-23 09:52:29.042325497 7011 売建 4760.0 100
28 2026-01-23 09:54:20.335829496 7011 買埋 4746.0 100 1400.0
29 2026-01-23 10:45:08.843826294 7011 売建 4724.0 100
30 2026-01-23 10:45:37.877856970 7011 買埋 4731.0 100 -700.0
31 2026-01-23 10:45:38.883409977 7011 買建 4731.0 100
32 2026-01-23 10:48:23.338110685 7011 売埋 4728.0 100 -300.0
33 2026-01-23 13:24:09.276726007 7011 買建 4633.0 100
34 2026-01-23 13:39:07.070012569 7011 売埋 4626.0 100 -700.0
35 2026-01-23 13:39:08.077225685 7011 売建 4626.0 100
36 2026-01-23 13:43:46.830888748 7011 買埋 4614.0 100 1200.0
37 2026-01-23 14:16:21.336676121 7011 売建 4600.0 100
38 2026-01-23 14:17:23.515534163 7011 買埋 4609.0 100 -900.0
39 2026-01-23 14:17:24.504151821 7011 買建 4609.0 100
40 2026-01-23 14:23:17.626822948 7011 売埋 4607.0 100 -200.0
41 2026-01-23 14:39:37.591169119 7011 買建 4612.0 100
42 2026-01-23 14:40:19.737272501 7011 売埋 4609.0 100 -300.0
43 2026-01-23 14:46:17.613602877 7011 売建 4608.0 100
44 2026-01-23 14:51:22.594405174 7011 買埋 4610.0 100 -200.0
45 2026-01-23 15:05:07.268674135 7011 売建 4611.0 100
46 2026-01-23 15:07:26.811529398 7011 買埋 4610.0 100 100.0
47 2026-01-23 15:20:19.103327513 7011 売建 4613.0 100
48 2026-01-23 15:24:50.971493006 7011 買埋 4609.0 100 400.0
合計損益 -6300.0

昨日、リアルタイムで Excel ファイルから読み込む処理を改良したので、今日はバックアップ用の Windows PC で取引時間を通しで動作確認をしていました。

本番環境で動かしていたリアルタイムの取引シミュレーションの方は、売買タイミングがうまく合わす残念な結果になってしまいましたが、評価バージョンの方はタイミングが異なるせいなのか、結果が少々違っていました(下図)。負荷試験も兼ねて、銘柄数を 3 つに増やしています。

本日の取引シミュレーションの結果(評価バージョン)

来週から、この評価バージョンを本番環境で動かしてみる予定です。

累積損益の時系列トレンド

今日の累積損益の時系列トレンドです。

累積損益の時系列トレンド

テクニカル指標の時系列トレンド

環境内で管理している、売買シグナルのソースとなるテクニカル指標と含み損益のトレンドをプロットしました。

縦の赤線は、取引明細の時間から入れたもので、売買をしたタイミングになります。

移動平均系テクニカル指標の時系列トレンドと含み損益

 

売買ロジックへのインプット

売買ロジックは 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. ロス2
    • 含み損益が N_MINUS_MAX 回より多く連続して負になったらロスカットするシグナル。
  7. 利確1
    • 含み益最大値 (Profit Min = PM) が、設定した最低値 THRESHOLD_PM_MIN より大きく、ドローダウン比率 (Draw Down Ratio = DDR) が設定したしきい値 THRESHOLD_DDR_MIN より大きくなったときに利確タイミングのシグナルを発生。
  8. 建玉
    • ポジション SHORT, NONE, LONG-1, 0, 1 としたシグナル。
売買ロジックにインプットしているシグナル

悩ましい…

毎日、複数銘柄のティックデータを収集していますが、キオクシアホールディングス (285A) もその一つです。パラメータの最適化ができていないのですが、仮決めのパラメータでも取引シミュレーションで良い成績を残す日があります。毎日、ある程度安定して収益を得られれば良いのですが、そうもいかないことが悩ましいです。

[参考]285A の累積損益の時系列トレンド

もっとスマートな取引アルゴリズムを開発したいのですが、強化学習モデルはまだまだハードルが高いです。昨年、強化学習モデルでそこそこのパフォーマンスすら出せなくて、一旦は諦めたのですが、アプローチを変えてすこしずつ取り組んでいます。

参考サイト

  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 件のコメント:

コメントを投稿