2025-12-15

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

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

今日の日経平均株価

現在値 50,168.11 -668.44 -1.32% 15:30
前日終値 50,836.55 12/12 高値 50,432.10 09:00
始値 50,352.09 09:00 安値 49,965.68 12.42

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

【関連ニュース】

デイトレ用自作アプリ

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

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

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

取引シミュレーション

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

制約条件

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

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

売買判断のための指標

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

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

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

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

実験条件 (doe-6) と最適条件判定方法
データ 約 1 秒間隔で取得した株価と出来高のティックデータ
対象銘柄 7011 呼び値が 1 円で出来高が多い、東証プライムの銘柄を選定
対象期間 2025-08-19 以降、前営業日まで
実験因子 実験水準 説  明
PERIOD_MA_1 sec 30 45 60 75 90 105 120 135 150 165 180 周期が異なる 2 つの移動平均 MA1 と MA2 のクロス・シグナルを売買ポイントとする。
PERIOD_MA_2 sec 300 360 420 480 540 600 660 720 780 840 900
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 trade total
47 75 540 14.1 15.19
90 60 780 14.3 14.85
57 60 600 15.9 14.00
75 165 660 7.8 13.99
116 120 900 8.3 13.57

等高線図 (Contour Map)

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

本日の取引シミュレーション

本日のパラメータ
パラメータ 設定値
PERIOD_MA_1 75 sec
PERIOD_MA_2 540 sec
PERIOD_MR 30 sec
THRESHOLD_MR 7

前営業日までの集計からベスト条件を適用して、本日取得したティックデータで取引シミュレーションを実施しました。

強化学習で使用する環境クラスをそのまま利用しています。そのため、環境内部で扱っている観測値をトレンドにしてまとめています。

なお、パラメータ PERIOD_MRTHRESHOLD_MR については、取引回数が少なめになるようにという意図的な理由で固定しています。

取引明細

                  注文日時 銘柄コード  売買    約定単価  約定数量    損益
0  2025-12-15 09:05:07  7011  買建  4060.0     1   NaN
1  2025-12-15 09:06:19  7011  売埋  4046.0     1 -14.0
2  2025-12-15 09:06:20  7011  売建  4050.0     1   NaN
3  2025-12-15 09:08:12  7011  買埋  4073.0     1 -23.0
4  2025-12-15 09:08:13  7011  買建  4073.0     1   NaN
5  2025-12-15 09:20:37  7011  売埋  4092.0     1  19.0
取引回数 : 6 回, 一株当りの損益 : -18.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 件のコメント:

コメントを投稿