2025-02-21

自動売買への道 (2025-02-21)

(楽天証券の口座で取引する前提で)デイトレ自動売買を実現するには、Windows / Excel 上で マーケットスピード II RSS(以下、単に RSS と呼びます)を利用することがまずは確実な方法だと考え、Windows / Excel / VBA を使って自動売買のためのマクロを作ってリアルタイムの取引シミュレーションを始めています。

当初、1月中に VBA マクロの初版を完成させ2月には小規模な自動売買を試す、という筋書きでした。しかし、1分足の Parabolic SAR をベースとした売買アルゴリズムは、シミュレーションで大負けこそしないものの、勝率が低いのが悩みでした。小規模といえど、むざむざ負けつづける自動売買を無理して始めなくとも、今月(2月)はじっくりアルゴリズムを改良しようと取り組んできました。

下表が開発進捗で、マゼンタの下線を引いた箇所が今月の主な活動です。表中の Dry Run(リアルタイム・シミュレーション)とは、開発した Excel VBA のマクロを市場の開始に合わせて動かしますが、実際の売買をせずに時価で成行売買が成立すると仮定して実現損益を評価することを指しています。

フェーズ 開 始 状 況 目 的 成  果
Phase 1 2024-12-10 終了 実現可能性
(feasibility)
  • やっつけでコーディング ✓
  • 下記を実証 (PoC) ✓
    • ループ処理による単純シミュレーション
    • リアルタイム・シミュレーション (Dry Run)
Phase 2 2024-12-16 終了 マクロ再構成
  • 単一ワークシート上に機能集約 ✓
  • マクロを再構成 ✓
  • Phase 1 と同じ機能レベルまで実現 ✓
  • ベンチマーク計測を追加 ✓
Phase 3 2024-12-31 開発中 実装
  • 機能を複数ワークシート上に再配置 ✓
  • Dry Run 実施
  • 売買アルゴリズムの改良
  • Python シミュレータで評価
  • RSS による売買を、テスト用マクロで確認
Phase 4 2025-03-?? 未着手 本運用
  • ...

しばらくは、改良した売買アルゴリズムを反映した Excel VBA マクロで Dry Run を実施した結果をまとめていきます。アルゴリズムの詳細は、改良がある程度落ち着いたら、整理してまとめる予定です。

今日の Dry Run (2025-02-21)

評価用の銘柄は、「三菱UFJフィナンシャルG (8306)」に固定しています。この銘柄を評価用に選んだ理由は、出来高が多く(= 板が厚く)、試験運用を始めるときに使えそうな価格帯の株価と判断したからです。

ティックデータと Parabolic SAR

RSS から取得したティックデータと1分足の OHLC データから Excel VBA のマクロが算出した Parabolic SAR(以降 PSAR と呼びます)を、事後に Python の自作シミュレータ・アプリで読み込んでプロットしたものです。

下のプロット(縦軸ラベルが Profit/Loss)は、PSAR のシグナルに従ってトレンド変換したところから、ドテン売買した場合の含み損益のトレンドを示しています。

売買履歴

売買は PSAR のトレンド反転で直ちにドテン売買はせずに建玉を持っていれば返済だけして、一分後以降でエントリするかどうかを条件判断しています。

また、利確・損切条件を設定しているので、次のトレンド反転前に返済する場合があります。しかし、まだまだ最適な条件とは言えないので、備考欄に改善のための情報を付記しています。

なお、period はトレンド反転してから何分経過したかを示しています。例えば period = 1 はトレンド反転から1分後をあらわしています。

なお、売買単位は 100 株で、ナンピンなど一切無しに、この 100 株だけで建玉を売買しています。

VBA マクロが書き込んだ Excel 上の売買履歴のシートを Python で読み込んで HTML のテーブルに変換しました。

注文番号 時刻 売買 金額 損益 最大益 最大損 備考
1 09:09:02 売建 196,350 建玉, period = 1
1 09:09:57 買埋 196,350 -250 150 -250 損切1, period = 1
2 09:12:02 買建 196,900 建玉, period = 1
2 09:14:09 売埋 196,900 -250 250 -250 損切1, period = 3
3 09:16:02 買建 196,400 急騰・急落1, period = 5
3 09:17:02 売埋 196,400 400 400 -50 返済, period = 5
4 09:21:01 売建 196,550 建玉, period = 4
4 09:23:35 買埋 196,550 350 550 0 利確1, period = 6
5 09:27:01 売建 195,750 急騰・急落1, period = 10
5 09:33:01 買埋 195,750 -150 300 -200 返済, period = 15
6 09:35:01 買建 196,000 建玉, period = 2
6 09:40:22 売埋 196,000 -250 200 -250 損切1, period = 7
7 09:45:01 買建 196,000 建玉, period = 1
7 09:56:01 売埋 196,000 -150 200 -150 返済, period = 11
8 10:03:01 買建 196,250 建玉, period = 1
8 10:09:23 売埋 196,250 -250 100 -250 損切1, period = 7
9 10:11:01 売建 195,850 建玉, period = 1
9 10:22:17 買埋 195,850 550 750 -50 利確1, period = 12
10 10:30:01 買建 195,100 建玉, period = 1
10 10:39:00 売埋 195,100 800 1,050 0 利確1, period = 9
11 10:46:01 売建 195,600 建玉, period = 1
11 11:02:15 買埋 195,600 600 850 -150 利確1, period = 17
12 11:11:01 売建 194,850 建玉, period = 2
12 11:20:01 買埋 194,850 -50 250 -50 返済, period = 10
13 11:21:01 買建 195,050 建玉, period = 1
13 11:29:50 売埋 195,050 100 100 -200 強制(前引け前), period = 9
14 12:36:01 売建 194,900 建玉, period = 3
14 12:55:05 買埋 194,900 550 750 -200 利確1, period = 22
15 12:57:01 買建 194,650 建玉, period = 1
15 12:58:04 売埋 194,650 -250 0 -250 損切1, period = 2
16 13:05:01 売建 194,200 建玉, period = 1
16 13:07:10 買埋 194,200 -250 100 -250 損切1, period = 3
17 13:27:00 売建 194,250 建玉, period = 5
17 13:28:00 買埋 194,250 -50 0 -50 損切2, period = 6
18 13:43:00 買建 194,400 建玉, period = 3
18 13:49:00 売埋 194,400 -150 50 -200 返済, period = 8
19 13:58:00 買建 194,450 建玉, period = 1
19 14:08:00 売埋 194,450 0 150 -100 返済, period = 10
20 14:09:00 売建 194,400 建玉, period = 1
20 14:11:00 買埋 194,400 -150 0 -200 返済, period = 2
21 14:13:00 買建 194,650 建玉, period = 2
21 14:23:00 売埋 194,650 100 150 -50 返済, period = 11
22 14:24:00 売建 194,700 建玉, period = 1
22 14:30:00 買埋 194,700 -50 50 -100 返済, period = 6
23 14:32:00 買建 194,800 建玉, period = 2
23 14:47:00 売埋 194,800 350 500 0 返済, period = 16
24 14:49:00 売建 195,050 建玉, period = 2
24 14:51:51 買埋 195,050 -250 0 -250 損切1, period = 4
25 14:53:00 買建 195,300 建玉, period = 1
25 14:58:00 売埋 195,300 -100 0 -200 返済, period = 5
26 14:59:00 売建 195,150 建玉, period = 1
26 15:07:00 買埋 195,150 -100 150 -100 返済, period = 8
27 15:08:00 買建 195,300 建玉, period = 1
27 15:22:00 売埋 195,300 100 300 -100 返済, period = 14
28 15:23:00 売建 195,300 建玉, period = 1
28 15:24:50 買埋 195,300 50 100 -150 強制(大引け前), period = 2
--- --- --- 実現損益 1,250 --- --- ---

今日の 8306 の株価は、高値 1,971.5 円、安値 1,941.0 円で 30.5 円差でした。この値段差を利益にできた場合を分母にした実現損益の比率をとりあえずの尺度として評価していきたいと思います。

本日の Dry Run の成績

実現損益 1,250 ÷ (30.5 × 100 ) × 100 = 41.0 %

当面の課題は無駄なエントリを減らすことです。単純なドテン売買に比べれば、これでもかなり減らしたつもりですが、まだまだ改善の余地があります。

今日は、開発環境でテストを兼ねて Excel VBA を稼働させましたが、来週からは本番環境で同じ Excel VBA を稼働させて、しばらくデータ収集をする予定です。

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. トップ | 国内市場 | トレーダーズ・ウェブ
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

0 件のコメント:

コメントを投稿