楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめています。
今日の日経平均株価
| 現在値 | 49,507.21 | +505.71 | +1.03% | 15:30 | |
|---|---|---|---|---|---|
| 前日終値 | 49,001.50 | 12/18 | 高値 | 49,766.96 | 12:31 |
| 始値 | 49,387.71 | 09:00 | 安値 | 49.257.15 | 09:01 |
※ 右の 15 分足チャートは Yahoo! Finance のデータを yfinance で取得して作成しました。
【関連ニュース】
- オラクルの38兆円リース契約、次のAI「爆弾」 - Bloomberg [2025-12-18]
- 米新規失業保険申請件数、1.3万件減の22万4000件 前週の急増から反転 | ロイター [2025-12-18]
- 米コアCPIは予想外に鈍化、4年ぶり低い伸び-政府閉鎖で算出には制約 - Bloomberg [2025-12-18]
- 米11月CPI、前年比2.7%上昇 セールで伸び鈍化も関税懸念残る | ロイター [2025-12-19]
- フジクラ社長、AIブームで光ケーブル需要に強気-新たな設備投資も - Bloomberg [2025-12-19]
- 米国株式市場=反発、CPI受け利下げ期待 ハイテクが高い | ロイター [2025-12-19]
- 穴だらけの米CPI、信頼性に疑念-エコノミスト「どこかおかしい」 - Bloomberg [2025-12-19]
- 米ナイキ、9─11月決算が予想上回る 利益率低下で株価下落 | ロイター [2025-12-19]
- 全国コアCPI、11月は+3%で伸び横ばい エネルギー上昇も食品鈍化 | ロイター [2025-12-19]
- ミシガン州、オラクルとOpenAIの大型データセンターへの電力供給承認 - Bloomberg [2025-12-19]
- ドコモSMTBネット銀行に改名、ドコモと三井住友信託の比率50%に再編 - Bloomberg [2025-12-19]
- 日銀が0.75%への利上げ決定、30年ぶり高水準に-金融正常化を継続 - Bloomberg [2025-12-19]
- 日銀が利上げ決定、政策金利は30年ぶり高水準に 賃上げ継続を確認 | ロイター [2025-12-19]
- 日経平均は反発、日銀が利上げ決定し「出尽くし」も | ロイター [2025-12-19]
- 日銀総裁、中立金利下限に「まだ距離」-適切なタイミングで利上げ判断 - Bloomberg [2025-12-19]
- 日銀総裁、中立金利の推計値下限まで「少し距離ある」 利上げ継続姿勢 | ロイター [2025-12-19]
デイトレ用自作アプリ
以下は株価に関連する情報の流れを示しています。
楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。
取引シミュレーション
強化学習モデルのチューニング作業の優先順位を下げ、テクニカル指標のシグナルでの取引シミュレーションをしています。
制約条件
現在シミュレーションで設定している制約は下記のとおりです。
- 売買条件
- ポジションを解消してから次の売買をする(ナンピン禁止)。
- 取引回数
- 上限を 100 回に制限
- 約定条件
- スリッページなし
売買判断のための指標
現在利用している指標は下記のとおりです。
- 2つの移動平均 MA1 と MA2
- クロス・シグナルで売買
- PERIOD_MA_1 = TBD
- PERIOD_MA_2 = TBD
- 移動範囲 Moving Range, MR
- ボラティリティを判定する指標、しきい値以下の時はフラグを立ててエントリしない。
- PERIOD_MR = 30
- THRESHOLD_MR = 7
- ロスカット
- しきい値以下になったらフラグを立てて建玉を返済、損切り。
- (現在、無効に設定)
- 利確
- 含み益と含み益最大値との比較で建玉を返済、利確する簡単なロジックを導入。
- (現在、無効に設定)
取引シミュレーションと実験
下記に、毎日確認をしている実験条件の概略をまとめました。
| データ | 約 1 秒間隔で取得した株価と出来高のティックデータ(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 回に設定。 | |||||||||||
| 最適条件判定方法 |
|
||||||||||||
いままでの実験から、収益を数式でモデル化できなかったので、やむなく、パフォーマンス(平均収益)を毎日確認してベストの条件を選ぶという手間がかかる方法を続けています。
実験条件別の収益トレンド
前営業日までを集計した平均収益でトップ 5 の条件は色を変えてプロットしています。一方、平均収益がマイナスになっている条件は黒の実線、その他は薄墨色でプロットしています。
なお、母数が少ないうちは平均収益の変動が大きいので、キリが良い 2025-09-01 からの平均収益をチャートにしています。
| PERIOD_MA_1 | PERIOD_MA_2 | total | |
|---|---|---|---|
| 47 | 75 | 540 | 15.20 |
| 90 | 60 | 780 | 14.46 |
| 49 | 105 | 540 | 14.05 |
| 57 | 60 | 600 | 13.82 |
| 46 | 60 | 540 | 13.17 |
メジアンでも収益を確認してみた
平均収益は母数を乗じれば総収益になります。運良く最初からベストな条件を採用していれば問題がないのですが、ベストな条件は不動ではありません。それに、もし過去に極めて収益が高い日があれば、平均収益はその値にひっぱられます。そうすると、直近のパフォーマンスがそれほど良くなくともベスト条件にランキングされ続けることもありえます。
対象銘柄 7011 の場合、トレンドをプロットした 2025-09-01 以降の期間で、平均収益トップ 5 はどれもマイナス圏に沈むことなく概ね良好なトレンドを保っていますが、それでもトレンドの起伏には差があります。
そこで、メジアン(中央値)でも収益を確認しました。
平均収益の時と同じように、当日のメジアンを算出するには起点の 2025-08-19 から当日までのデータのメジアンを算出しています。
メジアンで集計した収益のランキングも、平均収益と同様に作成しました(トップ 10 まで)。
| PERIOD_MA_1 | PERIOD_MA_2 | total | |
|---|---|---|---|
| 90 | 60 | 780 | 8.00 |
| 68 | 60 | 660 | 7.00 |
| 117 | 135 | 900 | 7.00 |
| 44 | 30 | 540 | 6.00 |
| 29 | 135 | 420 | 6.00 |
| 46 | 60 | 540 | 6.00 |
| 30 | 150 | 420 | 5.00 |
| 56 | 45 | 600 | 5.00 |
| 42 | 165 | 480 | 5.00 |
| 59 | 90 | 600 | 5.00 |
平均収益のランキングと比較すると、平均収益で 2 位の条件がメジアン収益では 1 位になっています。一方、平均収益で 1 位だった条件は、メジアン収益のトップ 10 には入っていません。
いろいろ考え方があると思いますが、「収益トレンドを見てベスト条件を採用する」という前提で条件を決めるとすれば、平均収益、メジアン収益どちらにもトップグループに入っている条件であれば、より安定して高い収益を期待できる条件だろうと評価できます。
そういうわけで、今回はメジアン収益トップの条件を事後シミュレーションする条件に採用しました。
等高線図 (Contour Map)
過去のティックデータを補完した等高線図を参考に作成しています。実験点は ・、平均収益トップ 5 の条件は 🟢、平均収益がマイナスになった条件があれば ✖ で表示しています。
本日の取引シミュレーション
| パラメータ | 設定値 | |
|---|---|---|
| PERIOD_MA_1 | 60 | sec |
| PERIOD_MA_2 | 780 | sec |
| PERIOD_MR | 30 | sec |
| THRESHOLD_MR | 7 | 円 |
前営業日までの集計からベスト条件(今回はメジアン収益のトップ)を適用して、本日取得したティックデータで取引シミュレーションを実施しました。
リアルタイム売買用アプリで、ティックデータを読み込ませてシミュレーションしたチャートと取引結果を掲載しています。
取引明細(100 株売買)
| 注文番号 | 注文日時 | 銘柄コード | 売買 | 約定単価 | 約定数量 | 損益 | 備考 |
|---|---|---|---|---|---|---|---|
| 1 | 2025-12-19 09:01:22 | 7011 | 買建 | 3850 | 100 | ||
| 2 | 2025-12-19 09:14:18 | 7011 | 売埋 | 3879 | 100 | 2900.0 | |
| 3 | 2025-12-19 10:10:50 | 7011 | 買建 | 3920 | 100 | ||
| 4 | 2025-12-19 10:17:40 | 7011 | 売埋 | 3907 | 100 | -1300.0 | |
| 合計損益 | 1600.0 | ||||||
今日はマイナスにはなりませんでしたが微益です。そろそろ損切りロジックを考えた方がよいのかもしれません。
参考サイト
- マーケットスピード 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 件のコメント:
コメントを投稿