(楽天証券の口座で取引する前提で)デイトレ自動売買を実現するには、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) |
|
Phase 2 | 2024-12-16 | 終了 | マクロ再構成 |
|
Phase 3 | 2024-12-31 | 開発中 | 実装 |
|
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 を稼働させて、しばらくデータ収集をする予定です。
参考サイト


0 件のコメント:
コメントを投稿