2025-12-27

自動売買への道 (2025-12-27)

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

デイトレ用自作アプリ

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

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

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

デイトレ用自作アプリ

しばらく強化学習のアルゴリズム開発に専念していたため、デイトレ用アプリの開発が滞ってしまっていました。年内に一定の成果を出したかったので、一旦、強化学習の方の優先順位を下げて、移動平均のクロスシグナルでそこそこ動作するシンプルなアルゴリズムの開発に取り組み始めました。それと並行してデイトレ用の GUI アプリの開発も再開しました。

詳細は、別の機会にまとめることにしますが、強化学習の前に取り組んでいた Parabolic SAR を利用したシステムで実装できていた機能、リアルタイムでのシャドー・トレーディングができるようになったので、アプリのスクリーンショットを掲載しました。

内部構成が変わってしまったので、以前に実装できていた機能レベルに追いつくのに予想以上に時間がかかってしまいました。

現在のデイトレ用 GUI アプリ(Windows 11)

一度に扱える銘柄数の上限に制約を付けていませんが、実行環境として最初のターゲットにしている Intel N150 搭載の PC では、スクリーンショットのように、同時に 3 銘柄の取引を扱えれば上出来だと考えています。

取引シミュレーション

強化学習モデルのチューニング作業の優先順位を下げ、テクニカル指標のシグナルでの取引シミュレーションをしています。

制約条件

現在シミュレーションで設定している制約は下記のとおりです。

  • 売買条件
    • ポジションを解消してから次の売買をする(ナンピン禁止)。
  • 取引回数
    • 上限を 100 回に制限
  • 約定条件
    • スリッページなし

売買判断のための指標

現在利用している指標は下記のとおりです。

  • 2つの移動平均 MA1MA2
    • クロス・シグナルで売買
    • PERIOD_MA_1 = TBD
    • PERIOD_MA_2 = TBD
  • 移動範囲 Moving Range, MR
    • ボラティリティを判定する指標、しきい値以下の時はフラグを立ててエントリしない。
    • PERIOD_MR = 30
    • THRESHOLD_MR = 7
  • ロスカット
    • しきい値以下になったらフラグを立てて建玉を返済、損切り。
    • (現在、無効に設定)
  • 利確
    • 含み益と含み益最大値との比較で建玉を返済、利確する簡単なロジックを導入。
    • (現在、無効に設定)

取引シミュレーションと実験

下記に、毎日確認をしている実験条件の概略をまとめました。

実験条件 (doe-8) と最適条件判定方法
データ 約 1 秒間隔で取得した株価と出来高のティックデータ(1 日分)
対象銘柄 7011 呼び値が 1 円で出来高が多い、東証プライムの銘柄を選定
対象期間 2025-08-19 以降、前営業日まで
実験因子 実験水準
PERIOD_MA_1 sec 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190
PERIOD_MA_2 sec 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100
PERIOD_MR sec 30 ボラティリティを測定する指標として移動範囲を採用。
しきい値より低ければ、売買エントリを禁止。現時点では、しきい値を高めに設定。
THRESHOLD_MR 7
実験計画 完全実施要因計画 (Full Factorial Design)
評価特性 説  明
損  益
[total]
収集したティックデータ(1 日分)で、2 つの移動平均のクロス・シグナルに従った(ただしエントリを制限する「しきい値」あり)売買シミュレーションを実施した損益。
取引回数
[trade]
【参考値】
システム側でナンピン売買を禁止し、取引回数の上限を 100 回に設定。
最適条件
判定方法
  1. 引け後に、当日分ティックデータの取引シミュレーションを実験条件に沿って実施。
  2. 各実験条件に対して、蓄積した日付分の損益の平均(平均損益)および中央値(メジアン損益)を算出。
  3. 原則として平均損益が最も高い条件を、翌日の取引条件に採用する。

実験条件別の平均損益トレンド

前営業日までを集計した平均損益でトップ 5 の条件は色を変えてプロットしています。一方、平均損益がマイナスになっている条件は黒の実線、その他は薄墨色でプロットしています。

なお、母数が少ないうちは変動が大きいので、キリが良い 2025-09-01 からの平均損益をチャートにしています。

※ 益はプラス、損はマイナスです、念の為。😁

実験条件別の平均損益トレンド(データは前営業日まで)
平均損益トップ 5 の条件
  PERIOD_MA_1 PERIOD_MA_2 取引回数 平均損益 2025-12-26
88 60 550 20.764045 14.505618 -17.000000
89 70 550 18.629213 13.359551 -13.000000
90 80 550 16.696629 13.235955 -7.000000
215 140 900 10.449438 12.516854 0.000000
230 120 950 10.831461 12.325843 0.000000

実験条件別のメジアン損益トレンド

平均損益の時と同じように、当日のメジアンを算出するには起点の 2025-08-19 から当日までのデータのメジアンを算出しています。

実験条件別のメジアン損益トレンド(データは前営業日まで)

メジアンで集計した損益のランキングも、平均損益と同様に作成しました。

メジアン損益トップ 10 の条件
  PERIOD_MA_1 PERIOD_MA_2 取引回数 メジアン損益 2025-12-26
157 70 750 14.000000 8.000000 -13.000000
62 140 450 14.000000 7.000000 0.000000
69 40 500 22.000000 6.000000 -6.000000
51 30 450 28.000000 6.000000 -5.000000
123 70 650 16.000000 6.000000 -13.000000
139 60 700 16.000000 6.000000 -17.000000
106 70 600 15.000000 6.000000 -13.000000
207 60 900 16.000000 6.000000 -17.000000
88 60 550 18.000000 5.000000 -17.000000
81 160 500 12.000000 5.000000 0.000000

等高線図 (Contour Map)

過去のティックデータを補完した等高線図を参考に作成しています。実験点は 平均損益トップ 5 の条件は 🟢(ただし、トップ 5 を大きく、他を小さくしています)、平均損益がマイナスになった条件があれば で表示しています。

実験条件範囲の等高線図(データは前営業日まで)

次回使用する条件(パラメータ)

次回使用する条件は、平均損益でトップの条件を採用します(下記)。

次回のパラメータ
パラメータ 設定値
PERIOD_MA_1 60 sec
PERIOD_MA_2 550 sec
PERIOD_MR 30 sec
THRESHOLD_MR 7

週末に最新の結果をまとめていますが、一応、毎日同じように確認しています。この条件は、現在の DOE (doe-8) でウィンドウチェックをするようになってからは変動していません。

参考サイト

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

コメントを投稿