TradingViewのインジケーターをAIに伝わる"売買条件"に変換する技術
あなたが本当に作りたいEAは何ですか?
前回の記事で、AIに1回頼むだけで移動平均線+RSIのEAが作れることを体験しました。
でもあなたが本当に作りたいのは「移動平均線+RSIのEA」じゃないですよね。
あなたが普段TradingViewで使ってるあのインジケーター。「この形になったら買い」と感覚でやってるあのトレード。それをEAにしたいはずです。
問題は 「AIにどう伝えるか」 。
この記事では、TradingViewのインジケーターをAIが理解できる「売買条件」に変換する方法を3つのパターンに分けて解説します。
インジケーターを「言語化」するとは
あなたがチャートを見て「ここで買おう」と思った時、頭の中では何が起きていますか?
例えばこんな感じではないでしょうか:
「RSIが下がってきて…このへんで反転しそう…ローソク足も陽線になったし…よし、買い!」
この感覚を、AIは理解できません。AIが理解できるのはこういう表現です:
「RSI(14期間)が30を下回った後、再び30を上回った足の始値で買いエントリー」
つまり**「言語化」**とは、以下の3つを明確にすることです:
- どの数値が(RSI、移動平均線の値、ラインの位置…)
- どうなったら(○○を超えた、クロスした、○○以下になった…)
- 何をする(買い、売り、決済)
「言語化」のコツ: あなたのトレードを、電話越しに初心者に説明するとしたら何と言いますか? チャートが見えない相手に、言葉だけで「今買って」と伝えるには? その説明がそのまま「売買条件」になります。
3つのパターンを見極める
インジケーターの「言語化」には3つのパターンがあります。自分のインジがどれに当たるかで、アプローチが変わります。
| パターン | 対象 | 難易度 |
|---|---|---|
| A: AIが知ってるインジ | RSI, MACD, BB, SMA等 | 簡単 |
| B: 知ってるインジの組み合わせ | 複数条件のフィルター | 普通 |
| C: AIが知らないインジ | TVカスタムインジ | やや難 |
パターンA: AIが知ってるインジ(一番簡単)
RSI、MACD、ボリンジャーバンド、移動平均線、ストキャスティクス、ATR、CCI、一目均衡表…
これらはAI(ChatGPT/Claude)が最初から知っています。「売買条件」を日本語で書くだけでOKです。
例: MACDを使った売買条件の書き方
❌ ダメな例(感覚的すぎる):
「MACDがいい感じにクロスしたら買い」
❌ まだ足りない例(曖昧):
「MACDがクロスしたら買い」
✅ OKな例(AIに伝わる):
「MACD(短期12, 長期26, シグナル9)のメインラインが
シグナルラインを下から上に抜けた(ゴールデンクロス)足の
次の足の始値で買いエントリー。
メインラインがシグナルラインを上から下に抜けた場合は決済。」
⚠️ 「クロスした」だけでは足りません。
- どの足で判定するか(現在の足?確定した足?)
- エントリーはいつ?(クロスした瞬間?次の足の始値?)
- 決済条件は?(反対シグナル?固定pips?)
ここが曖昧だとAIが「解釈」して勝手に決めます。意図と違うEAができる最大の原因です。
パターンAのプロンプトテンプレート
あなたはMQL4のエキスパートです。
以下の売買条件でMT4のEAを作成してください。
## 使用インジケーター
- [インジケーター名](パラメータ: [期間等])
## 買いエントリー条件
- [具体的な条件を日本語で記述]
- [複数条件がある場合は箇条書きで]
## 売りエントリー条件
- [具体的な条件]
## 決済条件
- ストップロス: [○○] pips
- テイクプロフィット: [○○] pips
- [その他の決済条件があれば]
## その他
- 1つの通貨ペアにつき同時に1ポジションまで
- マジックナンバーで自身のポジションを識別
- 日本語コメント付き
パターンB: AIが知ってるインジの「組み合わせ」
個別のインジはAIが知ってるけど、「この2つの条件が同時に揃った時だけ」 というフィルター条件を使いたい場合。
実はこれが一番よくあるケースです。多くのトレーダーは複数のインジを見て総合的に判断していますよね。
例: ボリンジャーバンド + RSI + ローソク足パターン
あなたの頭の中:
「ボリバンの下限にタッチして、RSIも売られすぎで、陽線のピンバーが出たら買い」
これを言語化するとこうなります:
買いエントリー条件(すべて満たした場合):
1. 直前の足の安値がボリンジャーバンド(20期間, 2σ)の
下限バンドを下回った
2. RSI(14期間)が35以下
3. 直前の足が陽線かつ、下ヒゲが実体の2倍以上
(ピンバーの定義)
売りエントリー条件(すべて満たした場合):
1. 直前の足の高値がボリンジャーバンド上限バンドを上回った
2. RSI(14期間)が65以上
3. 直前の足が陰線かつ、上ヒゲが実体の2倍以上
「組み合わせ」を書く時のコツ:
- 条件は 「すべて満たした場合(AND)」 か 「いずれかを満たした場合(OR)」 かを明記する
- 各条件の判定タイミングを揃える(「直前の確定足」で統一するのが安全)
- 条件が3つ以上になると成立しにくくなる。まず2条件で作って、後から追加する方がデバッグしやすい
パターンBのプロンプトテンプレート
あなたはMQL4のエキスパートです。
以下の売買条件でMT4のEAを作成してください。
## 使用インジケーター
- [インジ1](パラメータ: ○○)
- [インジ2](パラメータ: ○○)
- [ローソク足パターン等あれば]
## 買いエントリー条件(すべて満たした場合)
1. [インジ1の条件]
2. [インジ2の条件]
3. [その他の条件]
## 売りエントリー条件(すべて満たした場合)
1. [インジ1の条件]
2. [インジ2の条件]
3. [その他の条件]
## 決済条件
- ストップロス: [○○] pips
- テイクプロフィット: [○○] pips
- [トレーリングストップ等あれば]
## フィルター条件(任意)
- [時間帯制限、トレンドフィルター等あれば]
## その他
- 1つの通貨ペアにつき同時に1ポジションまで
- マジックナンバーで自身のポジションを識別
- 日本語コメント付き
パターンC: AIが知らないインジ(計算ロジックの橋渡し)
TradingViewにはコミュニティが作った何万ものカスタムインジケーターがあります。当然、AIはその大半を知りません。
この場合、あなたが**「橋渡し」**になってAIにインジの計算ロジックを教える必要があります。
⚠️ パターンCの最大の落とし穴:
「このインジの売買シグナルでEAを作って」と一発で頼むこと。
AIが知らないインジの場合、1回のプロンプトで全部やろうとするとほぼ確実に壊れたコードが出てきます。
必ず2段階に分けてください。
2段階アプローチ
ステップ1: インジケーターの「計算ロジック」をMQL4に移植する(まだ売買ロジックは入れない → インジとして正しく描画されることを確認)
ステップ2: そのインジの値を使った「売買条件」を追加する(ステップ1のコードを渡して「このインジの値を使って売買するEAにして」と頼む)
ステップ1: 計算ロジックを伝える3つの方法
| 方法 | 説明 |
|---|---|
| ① インジ説明文を使う | 多くのインジには作者が計算方法を書いています。それをコピーしてAIに渡す |
| ② Pine Scriptのソースを読み解く | TradingViewで「ソースコード」を開き、計算部分をAIに説明させる |
| ③ 数式を直接伝える | 学術論文やブログで計算式が公開されている場合、数式をそのままAIに渡す |
②がおすすめです。 まずAIに「このPine Scriptが何を計算しているか日本語で説明して」と聞き、その説明をもとにMQL4への移植を頼みます。
ステップ1のプロンプトテンプレート(Pine Scriptから移植)
あなたはMQL4とPine Scriptの両方に精通したプログラマーです。
以下のTradingView用Pine Scriptのインジケーターを
MQL4のカスタムインジケーター(.mq4)として移植してください。
【インジケーター名】: [名前]
【元のPine Scriptの計算部分】:
(※コード全体ではなく、計算ロジックの核心部分のみ貼る)
```pine
[Pine Scriptの該当部分をここに貼る]
【MQL4での要件】:
- カスタムインジケーターとして実装(EAではない)
- メインのラインをバッファ0に描画
- [シグナルラインがあれば]バッファ1に描画
- パラメータは外部変数にする
- 日本語コメント付き
まず「インジケーターとして正しく動くコード」だけを 出力してください。売買ロジックはまだ入れないでください。
### ステップ2のプロンプトテンプレート
```text
先ほど作成した[インジケーター名]のMQL4コードを
EAに組み込んでください。
【先ほどのインジコード】:
[ステップ1で生成されたコードを貼る]
【売買条件】:
## 買いエントリー
- [このインジの値がどうなったら買い]
## 売りエントリー
- [このインジの値がどうなったら売り]
## 決済条件
- ストップロス: [○○] pips
- テイクプロフィット: [○○] pips
インジケーターの計算ロジックをEA内に統合し、
OnTick()内で売買判定を行う形にしてください。
実例: 一目均衡表の「雲抜け」をEA化する
パターンBの実例として、一目均衡表の雲抜けを言語化してみましょう。
「雲抜けで買い」だけではAIには伝わりません。
ダメな言語化
❌ 「一目の雲を抜けたら買い」
→ 何が雲を抜ける?ローソク足?転換線?
→ 「抜けた」は終値ベース?ヒゲも含む?
→ 上抜け?下抜け?
良い言語化
✅
使用インジケーター: 一目均衡表(転換線9, 基準線26, 先行スパン52)
買いエントリー条件(すべて満たす):
1. 直前の確定足の終値が、先行スパンA・先行スパンBの
両方を上回っている(雲の上にいる)
2. 2本前の確定足の終値は、先行スパンAまたは先行スパンBの
いずれかを下回っていた(雲の中か下にいた)
3. 転換線が基準線を上回っている
→ つまり「雲を下から上に抜けた足の次でエントリー、
ただし転換線>基準線のフィルター付き」
「一目均衡表」はAIが知っているインジ(パターンA)ですが、雲抜けの条件を正確に伝えるにはパターンBの「複数条件の組み合わせ」テクニックが必要です。知っているインジでも条件が複雑ならパターンBのテンプレートを使いましょう。
よくある失敗と対処法
AIに売買条件を伝える時の「あるある」を先にお伝えしておきます。
失敗1: 「クロス」の定義が曖昧
❌ 「ゴールデンクロスで買い」
→ AIは「現在の足でクロスした瞬間」と解釈することがある。
すると1ティックごとにシグナルが出て大量発注になる。
✅ 「直前の確定足で短期MAが長期MAの下にあり、
現在の確定足で短期MAが長期MAの上にある場合」
→ 確定足ベースにすることで、1シグナル1回だけになる。
失敗2: 決済条件を書き忘れる
❌ 「RSIが30以下で買い」だけ書いて決済条件なし
→ AIが「永遠にポジションを持ち続けるEA」を作る。
もしくはAIが勝手に決済条件を決める。
✅ 決済条件は必ず明記する:
・ストップロス / テイクプロフィット
・反対シグナルで決済
・時間経過で決済(○本後に強制決済)
のいずれか(または組み合わせ)
失敗3: パターンCで一発全部頼む
❌ 「このPine Scriptの内容でEAを作って」とPineコード全文を貼る
→ AIが翻訳ミスしてもどこが間違ってるか分からない。
✅ ステップ1でインジだけ移植 → 動作確認
→ ステップ2で売買ロジック追加
1つずつ確認しながら進める。
失敗4: インジの「値の意味」を理解せずに条件を書く
❌ MACDの値が「正の数→買い、負の数→売り」と思い込む
→ MACDの値はヒストグラムか、メインラインか、
シグナルラインかで意味が全く違う。
✅ まず「このインジの各ラインは何を表してる?」を
AIに聞いてから売買条件を考える。
プロンプト例:
「[インジ名]の各ラインの意味と、
一般的な売買シグナルを教えてください」
言語化チェックリスト
売買条件を書き終えたら、AIに渡す前にこのチェックリストで確認してください。
- どのインジケーターの、どの値(ライン)を使うか明記したか
- パラメータ(期間等)の数値を指定したか
- 「以上/以下」「超える/下回る」を正確に書いたか
- 判定タイミング(確定足?現在の足?)を指定したか
- エントリーのタイミング(シグナル足?次の足の始値?)を指定したか
- 複数条件の場合「すべて満たす(AND)」か「いずれか(OR)」か明記したか
- 決済条件(SL/TP/反対シグナル)を忘れていないか
- 同時ポジション数の上限を指定したか
次のステップ
この記事で学んだこと:
- インジケーターを「言語化」する考え方
- 3つのパターン(A: 既知のインジ、B: 組み合わせ、C: 未知のインジ)
- それぞれのプロンプトテンプレート
- よくある失敗と対処法
次は、実際に具体的なインジケーターでこの「言語化」を実践してみましょう。
おすすめの次の記事
- AIに1回頼むだけでEAが作れる(前回の記事) — まだ見ていない方はこちらから
- RSI条件をEAに落とし込む方法 — パターンAの実践例
- AIでFX自動売買EAを作る入門ガイド — ChatGPT・Claude Codeの使い分け
「まだどんなインジを使うか決めてない」という方は、TradingViewでいろんなインジケーターを試してみてください。無料でも十分な数のインジケーターが使えます。
⚠️ 免責事項: 本記事で紹介する手法は教育目的です。EA化したインジケーターが利益を保証するものではありません。バックテスト結果は過去のデータに基づくものであり、将来の結果を保証するものではありません。EAの運用は必ずデモ口座で十分にテストした上で、自己責任で行ってください。

