「OBにタッチしたら矢印出して」だけでAIにサインツール作らせたら勝率71.4%
FX
最近ずっとAIにサインツール作らせる遊びをやってる。
何が面白いって、自分でMQL4書くと普通に半日くらいかかるやつが、AIに投げると数十分で動くところまでいくこと。仕様の言語化さえちゃんとできれば、もうコード書く必要ないんじゃないかってレベルで楽になってきてる。
で、今回のお題は SMC(スマートマネーコンセプト)のオーダーブロック。
Xでもよく流れてくるし、自分も興味あったので試しにAIに作らせてみた。
結論から言うと、勝率71.4%、PF1.50、期待値+7.14pipsっていう数字が出た。
ただしサンプル14回。これ、地味に重要なポイントなので最後にちゃんと書く。
---
手法のアイデア
オーダーブロック(以下OB)の考え方をざっくり言うと、「機関投資家がデカい注文を出した跡が残ってるローソク」みたいなやつ。
強い上昇の直前にある最後の陰線とか、強い下落の直前にある最後の陽線が、後で価格が戻ってきたときに支えになる、っていう発想。
今回作りたかったのはこんな感じ。
- インパルス(強い動き)を検出する
- その1本前の逆色ローソクをOBとして記録
- そのゾーンに価格が戻ってきたら矢印を出す
- 1回タッチしたらゾーン消す(使い切り)
シンプル。これだけ。
AIに仕様書を作らせる
まずはAIにヒアリングしてもらった。最初に投げたのはこれ。
> SMCを使ったサインツールを作りたい
> まずはヒアリングしながら言語化してほしい
AIから順番に質問が飛んでくる。プラットフォームは?MT4。SMCの中で何をメインにする?OB。サインの出し方は?矢印。
ここまでは早かった。問題は次。
> Q: OBの「形成条件」はどう定義しますか?
これ、ちゃんと言語化できてないと詰まるところで、自分でも「あー、なんとなくはわかってるけど厳密にどう書くんだ?」ってなった。結局「OB形成後の最初の反射ローソク(一般的な定義)」って答えたけど、ここはAIの方が詳しかった。
最終的に未決定の項目として3つ残った。
1. インパルスの強さの閾値
2. OBをさかのぼる本数
3. 「タッチ」の定義(実体?ヒゲ?)
ここで自分の答えがこれ。
> 直近20本の平均値幅+2倍
> 直近3個まで
> 実体
これでAIが仕様書をまとめてくれた。
ロジックフロー、パラメーター一覧、デフォルト値まで全部表になってて、もうそのままコードにできる状態。
正直この仕様書、自分で書こうとしたら絶対サボってた。
「だいたいこんな感じで」とか書いて後でバグらせるパターン。AIに整理させると逃げ場がないから良い。
AIに丸投げしてコードを作らせる
仕様確定したのでそのまま「コード書いて」って投げた。
数分後にMQL4のソースが出てきた。動いた。
…動いたけど、入れた瞬間に 過去のサインに対するアラートが大量に鳴り出した。
チャートに貼り付けた瞬間、Alert窓が30個くらい一気に開く。これ昔も同じバグやったわ、と思いながら投げ直す。
> 入れた瞬間アラートが大量に出るのを改善して
> あと文字化けしているから直してほしい(英語でいいです)
返ってきた修正がこれ。
過去足をスキャンしてる間はアラート関数の先頭で即リターンするフラグを追加。リアルタイム足の処理に切り替わった瞬間からだけ通常動作する。コードで言うと `g_isInitialScan` っていうbool変数1個追加して、ヒストリカル処理ループの前後で true / false にしてるだけ。シンプル。
あと文字化けはパネルじゃなくてアラート本体の方だったんだけど、AIはパネルの日本語まで全部英語に置換してた。「まぁいいや」ってなって流した。これがAIあるある。1個直してって言うと周辺もまとめて触ってくる。
## 決済ロジック忘れてた
ここで自分が完全に忘れてたことに気づいた。
決済ロジックがない。
エントリーの矢印は出るけど、いつ手仕舞いするのか何も定義してなかった。バックテストもできない。最初の仕様ヒアリングの時点でAIも聞いてくれなかったし、自分も聞かれなかったから気にしなかった。両者の怠慢。
追加でヒアリングしてもらう。
> Q: 決済ロジックはどのイメージですか?
ここは即答で「反対方向のOBにタッチしたら決済、+TP/SLも併用」。BUYポジション持ってる時にBearish OBに実体がタッチしたら決済、SELLポジション持ってる時にBullish OBに実体がタッチしたら決済。あとは保険でTP/SLも置いとく。
このロジック自体はめちゃくちゃSMCっぽくて、自分でも気に入った。OBが効くっていう前提に立つなら、反対側のOBは利益確定にも損切りにも使える節点になるはず、っていう発想。
AIに実装させて、決済マーカー(★)もチャートに出るようにして、ようやくバックテストが回せる状態になった。
バックテスト結果
ここまでで動くものができたので、500バックテスト回した結果がこれ。
数字だけ見ると割と良い。勝率71.4%、PF1.50、期待値+7.14pips。100pipsプラスで、最大ドローダウン70pips。平均保有時間89分なのでデイトレ寄り。
PF1.50は地味に悪くない。一般的に1.3超えてれば実運用検討OKって言われてるラインなので、それは越えてる。期待値も1トレードあたり+7pipsあれば、回数こなせば普通にプラスになる。
ただし。
サンプル14回。少ない。
これは正直に書いておく。500バー分の検証期間で14回しかエントリーが出てない時点で、この勝率は「たまたま運が良かっただけ」の可能性が普通にある。
今回の気づき
①仕様書をAIに作らせる工程は絶対サボらないほうがいい。
自分で適当に書いてコードに行くと、決済ロジック忘れるみたいな致命的な抜けが出る。最初のヒアリングで「エントリーは?決済は?無効化は?」を全部潰しておくと後がラク。
②AIは「1個直して」と言うと周辺もまとめて直してくる。
アラート文字化け直してって言ったらパネルの日本語まで英語化されてた。これは諦めて受け入れるか、修正範囲を明示するか、どっちかしかない。
③バックテストの数字は鵜呑みにできない。
勝率71.4%って数字を見て「お、いけるやん」って思った瞬間に、サンプル数を確認する癖をつけないと轢かれる。今回のこれも、自分で実弾入れる前にもっと長い期間でテストし直す予定。
---
完成したインジケーターは、別記事で配布する予定。興味ある人は使ってみてください。
---
ちなみに、この連載でやってる「AIにサインツール作らせる流れ」、全部テンプレ化して販売してます。
**プロ級FXサインツール量産AIシステム**
→ 仕様書を作るプロンプト、コード生成のプロンプト、よくあるバグの直し方まで全部入りのやつ。毎週この連載で作ったプロンプト集も追加されていきます。