Squeeze MomentumでPine Script→EA変換を実践する
中級編では、Volatility Gaussian BandsのPine ScriptをAIに丸投げしてEA化しました。
今回は同じ手法をSqueeze Momentum Indicatorで試します。別のインジで実践することで、プロンプトの書き方のコツが定着します。
Squeeze Momentumとは
ボリンジャーバンドとKeltnerチャンネルを組み合わせたインジケーターです。TradingViewで人気のオープンソースインジの一つ。
基本的な考え方:
- BBの幅がKeltnerチャンネルの幅より狭くなった状態を「スクイーズ(圧縮)」と呼ぶ
- スクイーズが解除された瞬間が、ブレイクアウトの起点になりやすい
- ブレイクアウトの方向はモメンタム(ヒストグラム)で判断する
Step 1:AIにロジックを解説させる
「ソースを表示」からPine Scriptを全文コピーして、以下のプロンプトでAIに渡します。
以下はTradingViewのインジケーター「Squeeze Momentum Indicator [LazyBear]」の
Pine Scriptソースコードです。
[ここにPine Scriptの全文を貼る]
このインジケーターのロジックを日本語で解説してください。
特に以下の点を教えてください:
- 何を計算しているか(概要を3行以内で)
- 買いシグナルが出る条件
- 売りシグナルが出る条件
- リペイント(過去のシグナルが書き換わる)の可能性があるか
ここで効いているプロンプトのポイント
ソースコードを全文貼っている。 中級編でも書きましたが、「長いから要点だけ」は逆効果です。AIはコード全体の文脈から関数の役割を理解します。
リペイントの確認を最初に入れている。 これが今回の記事で一番伝えたいことです(後述)。
AIはおおむね以下のような解説を返してきます。
このインジケーターはボリンジャーバンドとKeltnerチャンネルを組み合わせて「スクイーズ状態(低ボラティリティ)」を検出し、その後のブレイクアウトの方向性をモメンタムで示します。
- 買いシグナル:スクイーズ解除後にヒストグラムがゼロ以上かつ上昇中
- 売りシグナル:スクイーズ解除後にヒストグラムがゼロ以下かつ下降中
「ああ、BBが縮んでる状態が解除されたタイミングを狙うのか」——そう理解できれば十分です。
Step 2:MQL4に変換する
ロジックの理解を確認したら、変換を依頼します。
上記のSqueeze Momentumインジケーターのロジックを使って、
MT4で動作するEA(MQL4)を作成してください。
Pine ScriptをMQL4で再実装するアプローチで作成してください。
直接変換ではなく、ロジックを理解してMQL4で書き直してください。
【EA名】SqueezeMomentum_EA
【使用する計算】
- ボリンジャーバンド:MQL4のiBands()で実装
- Keltnerチャンネル:iMA() + iATR()で実装
- モメンタム:線形回帰値で実装
- スクイーズ判定:BBの幅 < Keltnerチャンネルの幅
【エントリー条件】
- 買い:スクイーズ解除(前バーがスクイーズ中→現バーが解除)かつ
モメンタム値がゼロ以上かつ前バーより上昇中
- 売り:スクイーズ解除かつモメンタム値がゼロ以下かつ前バーより下降中
- シグナル判定はshift=1(確定バー)を使用すること
【決済条件】
- 買いポジション:モメンタムがゼロを下回ったら決済
- 売りポジション:モメンタムがゼロを上回ったら決済
- 損切り:50pips(外部変数 StopLoss_Pips)
- 利確:100pips(外部変数 TakeProfit_Pips)
【必須要件】
- BB/Keltner/モメンタムの計算はそれぞれカスタム関数に分離すること
- extern変数でパラメータをMT4の設定画面から変更可能にすること
- マジックナンバー使用(外部変数 MagicNumber = 20001)
- 5桁業者と4桁業者の両方に対応したpips計算
- 全行に日本語コメントを付けること
- コードは省略せず全文を出力すること
プロンプトの重要ポイントを確認
中級編で紹介した5つのコツが、このプロンプトにすべて入っています。
| コツ | このプロンプトでの実践 |
|---|---|
| Pine Script→MQL4変換と明示する | 「Pine ScriptをMQL4で再実装する」と書いている |
| ソースコード全文を貼る | Step 1で全文を渡している |
| カスタム関数に分ける指示 | 「BB/Keltner/モメンタムをそれぞれカスタム関数に分離」 |
| 日本語コメント・エラーハンドリング・pips計算 | 「全行に日本語コメント」「5桁/4桁対応」 |
| 省略させない | 「コードは省略せず全文を出力すること」 |
「再実装」という言葉を使っているのが特に重要です。 Pine ScriptとMQL4は構造が全く違うので、1行ずつの翻訳ではなく「ロジックを理解してMQL4で書き直す」アプローチでないとコンパイルエラーが大量に出ます。
リペイント問題 — EA化で最も危険な罠
ここからがこの記事の独自パートです。
リペイントとは、インジケーターの過去のシグナルが後から書き換わる現象です。
チャート上では綺麗にシグナルが出ているように見えるのに、リアルタイムで使うと全く機能しない——その原因がリペイントです。バックテストでも過去データを参照するため、リペイントするインジのEAは成績が良く見えてしまいます。
リペイントが起きる典型的なパターン
AIに解説を依頼する際、以下のキーワードが出てきたら要注意です。
security()関数 +lookahead=barmerge.lookahead_on— 未来のデータを参照している[0](現在の未確定バー)を条件判定に使用 — バーが確定するまで値が変わり続けるhighest()やlowest()を現在バーで計算 — 確定前のバーを含むと結果が変わる
チェック用プロンプト
Step 1の解説依頼に含めるのがベストですが、忘れた場合は単独で聞けます。
以下のPine Scriptにリペイント(lookahead bias、past repainting)が
発生する可能性があるか確認してください。
リペイントが起きる可能性のある箇所があれば、該当のコード行と理由を教えてください。
[Pine Scriptのソースコード]
⚠️ WARNING
AIの判定を100%信頼しないでください。AIが「リペイントなし」と判定しても、微妙なケースを見落とすことがあります。最終的には、MT4のストラテジーテスターで「始値のみ」モードと「全ティック」モードの結果を比較して、大きな差がないことを確認するのが確実です。
まとめ
Squeeze Momentumで実践しましたが、手順は中級編のVolatility Gaussian Bandsと全く同じです。
- Pine Scriptを全文コピーしてAIに貼る
- ロジックを解説させる(+リペイントチェック)
- 「MQL4で再実装して」と依頼する
この流れは、TradingViewでソースが公開されているあらゆるインジに使えます。
一点だけ追加で覚えておいてほしいのがリペイントの確認です。特にバックテストの成績が異常に良いEAは、リペイントを疑ってください。
関連記事
- AIで自分だけの最強EAをつくろう — EA開発の全体像
- 【初級編】ボリバン+移動平均線でEAを作ってみよう — 日本語で売買条件を書いてAIに渡す方法
- 【中級編】説明できないインジでもEA化できる — Pine Script丸投げの手法とプロンプトのコツ
- Pine Script → MQL4 変換でハマるポイント — 関数の違い早見表
本記事で紹介するEA・手法は教育目的で作成されたものです。実際の取引で利益を保証するものではありません。EAの運用は必ずデモ口座で十分にテストした上で、自己責任で行ってください。FX取引にはリスクが伴います。
次のステップ
まずデモで動作確認 → OKなら本番運用、が安全です。
デモ口座でEAを回す手順関連記事
TradingViewストラテジーテスターの使い方 — AI活用バックテスト
MT4より手軽にバックテストできるTradingViewのストラテジーテスターの使い方を解説。AIにPine Scriptを書かせて結果を確認するまでの手順を紹介。
TradingViewのアラート機能をEAの代わりに使う方法
EAを作らなくてもTradingViewのアラート+Webhookで半自動売買が実現できます。設定手順とEAとの使い分けを具体的に解説。
TradingViewの無料 vs 有料、EA開発に必要なプランはどれ?
EA開発のワークフロー別に、TradingViewの各プランで何ができるかを具体的に解説。アイデア出し・バックテスト・アラート連携など段階ごとに必要なプランを明確化。
複数条件を組み合わせたEAの作り方 — RSI+MACD+移動平均線の実例
単一インジのEAからステップアップ。AND/OR結合の考え方と、RSI・MACD・SMA200を組み合わせた実例プロンプト・バックテスト比較を解説します。
