2026-01-14

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

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

今日の日経平均株価

現在値 54,341.23 +792.07 +1.48% 15:30
前日終値 53,549.16 01/13 高値 54,487.32 12:31
始値 53,827.24 09:00 安値 53,792.68 09:00

※ 右の 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-14 09:16:20.757155418 7011 売建 4577.0 100
2 2026-01-14 09:19:24.466943264 7011 買埋 4602.0 100 -2500.0
3 2026-01-14 09:19:43.481167316 7011 買建 4602.0 100
4 2026-01-14 09:29:34.176778793 7011 売埋 4612.0 100 1000.0
5 2026-01-14 09:29:35.183405638 7011 売建 4612.0 100
6 2026-01-14 09:36:19.513462305 7011 買埋 4615.0 100 -300.0
7 2026-01-14 10:02:54.719801664 7011 買建 4633.0 100
8 2026-01-14 10:12:53.466048002 7011 売埋 4638.0 100 500.0
9 2026-01-14 10:21:20.096020460 7011 買建 4638.0 100
10 2026-01-14 10:34:04.435460567 7011 売埋 4641.0 100 300.0
11 2026-01-14 10:34:05.441451550 7011 売建 4641.0 100
12 2026-01-14 10:40:40.833501577 7011 買埋 4644.0 100 -300.0
13 2026-01-14 10:40:41.837982655 7011 買建 4644.0 100
14 2026-01-14 10:46:27.012354136 7011 売埋 4640.0 100 -400.0
15 2026-01-14 11:05:20.148250818 7011 売建 4652.0 100
16 2026-01-14 11:12:24.459593773 7011 買埋 4657.0 100 -500.0
17 2026-01-14 11:15:20.160584211 7011 売建 4648.0 100
18 2026-01-14 11:23:45.631506681 7011 買埋 4647.0 100 100.0
19 2026-01-14 12:30:41.770925522 7011 買建 4668.0 100
20 2026-01-14 12:35:04.714393377 7011 売埋 4649.0 100 -1900.0
21 2026-01-14 12:35:05.710421085 7011 売建 4649.0 100
22 2026-01-14 12:40:07.666376591 7011 買埋 4657.0 100 -800.0
23 2026-01-14 12:47:44.899830580 7011 売建 4658.0 100
24 2026-01-14 12:51:44.580913067 7011 買埋 4662.0 100 -400.0
25 2026-01-14 13:07:00.725727320 7011 買建 4658.0 100
26 2026-01-14 13:13:30.952054739 7011 売埋 4660.0 100 200.0
27 2026-01-14 13:51:23.567097187 7011 売建 4653.0 100
28 2026-01-14 13:56:30.717854261 7011 買埋 4663.0 100 -1000.0
29 2026-01-14 13:56:31.709067345 7011 買建 4663.0 100
30 2026-01-14 14:02:10.456957579 7011 売埋 4660.0 100 -300.0
31 2026-01-14 15:05:30.830638885 7011 売建 4674.0 100
32 2026-01-14 15:09:36.381393909 7011 買埋 4678.0 100 -400.0
合計損益 -6700.0

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

今日の累積損益の時系列トレンドを見ると、残念ながらクロス・シグナルのタイミングがことごとく裏目に出て損失を重ねています(-6,700 円)。

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

こういう結果を見てしまうと、移動平均線 MA1 を単純な移動平均線 (SMA) から指数平滑移動平均線 (EMA) へ変更したくなるのですが、ぐっと堪えてひとまず今日の分の DOE 実施が終了した後、今日の値動きで利益を上げている条件を確認することにします。

なお、EMA を処理するクラスは用意してあるので、機を見て評価をする予定ではあります。

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

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

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

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

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

売買ロジックは 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. 建玉
    • ポジション SHORT, NONE, LONG-1, 0, 1 としたシグナル。
売買ロジックにインプットしているシグナル

本日分の等高線図

収集したティックデータから、DOE を実施し、移動平均線 MA1 と MA2 の周期の組み合わせによる損益の等高線図を確認しました。収益を得られそうな値動きに思えましたが移動平均線のクロスシグナルによる売買ではほとんどの領域では収益を上げられていません。

ちなみに、実験条件の範囲において、収益が最大だった条件は下記の通りです。設定した取引回数の上限 100 回に達してしまっています。

2026-01-14 のベスト条件 [doe-10g]
   PERIOD_MA_1  PERIOD_MA_2  取引回数      損益
0           30          300   100  5900.0

リアルタイムの取引シミュレーションを眺めていると、含み益があるのにズルズルとマイ転するまで建玉を返済しないパターンが多いように感じていましたが、数値化できていません。ひょっとすると、売買判定にバグが潜んでいてこんなことになっているのかもしれません。チェックし直します。

また、最低限のロスカット機能は実装していますが、強制的な利確の方は未実装です。今の段階であれこれ利確機能を加えるのは早いと思っていましたが、キリの良いところで利確する機能を実装する必要があるかもしれません。

参考サイト

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

コメントを投稿