🤖 AIでEAを作る基礎 #MQL4 #エラー #デバッグ #ChatGPT #Claude #プロンプト

MQL4エラーをAIで直すデバッグプロンプト集【コピペ用テンプレ付き】

(更新: 2026年1月16日) 読了 約13分

AIにEAを作ってもらったけど、MetaEditorに貼ったらコンパイルエラーが出た。もう一度「直して」と言っても同じエラーが返ってくる……。

この「堂々巡り」、AIでEAを作っている人なら必ず経験します。エラーの伝え方を変えるだけで、ほとんどの場合は一発で解決できます。

この記事では、よくあるMQL4エラーをパターン別に分類し、AIに修正させるためのプロンプトテンプレートをまとめます。このページをブックマークして、困ったときに参照してください。


大前提:エラーの正しい伝え方

プロンプトのテンプレートを紹介する前に、AIにエラーを伝える際の基本ルールを確認します。

ルール1:エラーメッセージをそのままコピペする

「コンパイルエラーが出ました」と日本語で説明するだけでは情報が足りません。MetaEditorのエラーログ(下部の「エラー」タブ)に表示されているメッセージをそのままコピペしてください。

[画像:MetaEditorのエラータブにエラーメッセージが表示されているスクリーンショット]

ルール2:コード全体を一緒に渡す

エラーが出た行だけを抜き出して渡しても、AIは前後の文脈がわからず的外れな修正をすることがあります。コード全体を貼り付けるのが基本です。

ルール3:「直して」だけでなく「なぜ起きたか説明して」と聞く

このエラーを直してください。

よりも、

このエラーが発生した原因を説明した上で、修正したコードを出力してください。

と聞いた方が、AIが原因を正確に把握してから修正するため、再発防止につながります。


パターン1:コンパイルエラー

エラー①:'OrderSend' - wrong parameters count

原因:OrderSend関数の引数の数が間違っている。MT4 Build 600以降のOrderSendは9つの引数が必要です。

よくある間違い:AIがMQL5の書き方でコードを生成してしまう。

デバッグプロンプト

以下のMQL4コードで下記のコンパイルエラーが発生しています。

【エラーメッセージ】
(MetaEditorのエラーログをここにコピペ)

【コード全文】
(コード全体をここに貼付)

【修正の条件】
- MT4 Build 600以降のOrderSend関数の正しい9つの引数を使ってください
- 引数の順番: OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color)
- 修正後のコード全文を出力してください

エラー②:'変数名' - variable already defined

原因:同じ名前の変数を2回宣言している。グローバル変数とローカル変数で同名を使っている場合も起きます。

デバッグプロンプト

以下のMQL4コードで「variable already defined」のコンパイルエラーが出ています。

【エラーメッセージ】
(エラーログをコピペ)

【コード全文】
(コード全体を貼付)

変数の重複宣言を解消してください。
グローバル変数とローカル変数の命名が衝突していないか確認した上で修正し、
修正後のコード全文を出力してください。

エラー③:'関数名' - function is not defined

原因:関数名のタイポ、またはMQL5の関数をMQL4で使おうとしている。

よくある間違いiRSIiRsi(大文字小文字)、MQL5の CopyBuffer をMQL4で使う。

デバッグプロンプト

以下のMQL4コードで「function is not defined」のコンパイルエラーが出ています。

【エラーメッセージ】
(エラーログをコピペ)

【コード全文】
(コード全体を貼付)

以下を確認して修正してください:
1. 関数名のタイポがないか
2. MQL5の関数(CopyBuffer等)を使っていないか。MQL4対応の関数に置き換える
3. MQL4のiRSI()は正しい引数 iRSI(symbol, timeframe, period, applied_price, shift) を使う
修正後のコード全文を出力してください。

エラー④:型の不一致エラー(cannot convert / illegal use of type

原因:整数型(int)と浮動小数点型(double)の混在、またはdatetime型の扱いの間違い。

デバッグプロンプト

以下のMQL4コードで型の不一致エラーが出ています。

【エラーメッセージ】
(エラーログをコピペ)

【コード全文】
(コード全体を貼付)

MQL4の型システムに従って修正してください。
- 価格や指標の値はdouble型
- ポジション数・ループカウンタはint型
- 時間はdatetime型
型キャストが必要な箇所には (int)、(double) 等を追加し、
修正後のコード全文を出力してください。

パターン2:コンパイルは通るが動かない

コンパイルが成功してEAをチャートに設置しても、一度も取引しない場合があります。

[画像:MT4でEAをチャートに設置した後、エキスパートタブに何もログが出ていないスクリーンショット]

ケース①:EAが全く取引しない

まず以下のチェックリストを確認してください。

✅ TIP EAが動かない時の確認リスト

  • MT4上部ツールバーの「自動売買」ボタンが有効(緑色)になっているか
  • EAのプロパティ画面で「自動売買を許可する」にチェックが入っているか
  • 口座の証拠金が最小ロット分の証拠金を満たしているか
  • デモ口座の場合、接続が切れていないか

チェックリストをクリアしても動かない場合は、AIにデバッグ用のPrint文を追加してもらいます。

デバッグプロンプト

以下のEAをUSD/JPYの1時間足に設置しましたが、一度も取引しません。
MT4の「エキスパート」タブのログには何も出ていません。

【コード全文】
(コード全体を貼付)

以下を実行してください:
1. 取引しない原因として考えられる点を列挙してください
2. OnTick()関数の冒頭に「ティックが来ているか確認するPrint文」を追加してください
3. シグナル判定の条件ごとにPrint文を追加し、どこで条件が止まっているか
   MT4のエキスパートログで確認できるようにしてください
4. 修正後のコード全文を出力してください

このコードを実装してEAを再起動すると、エキスパートタブに条件の評価結果が流れるようになります。どこで条件が満たされていないかが一目でわかります。


ケース②:エントリーはするが決済しない

デバッグプロンプト

以下のEAはエントリーはしますが、一度もポジションを決済しません。

【コード全文】
(コード全体を貼付)

以下を確認して修正してください:
1. 決済ロジックが正しく実装されているか
2. OrderClose()関数の引数が正しいか(ticket, lots, price, slippage)
3. 決済条件の判定にClose[0](未確定バー)を使っていないか。Close[1]に変更する
4. 既存のオープンポジションを正しく検索できているか(OrderSelect, OrderType確認)
修正後のコード全文を出力してください。

ケース③:ランタイムエラー(OrderSend error番号)

EAがエントリーしようとしてエラーになる場合、MT4のエキスパートタブに OrderSend error 130 などが表示されます。

[画像:MT4エキスパートタブに「OrderSend error 130」が表示されているスクリーンショット]

よくあるエラー番号と原因:

エラー番号原因対処
130無効なストップレベル(SL/TPが近すぎる)SL/TPをブローカーの最小距離以上に設定
131無効なロット数(最小ロット未満等)最小ロット(0.01)以上で設定
132市場が閉まっている週末・祝日のチェックを追加
134証拠金不足ロット数を下げる or 入金
138価格が古い(Requote)RefreshRates()を追加

デバッグプロンプト

以下のEAでOrderSend error 130が発生しています。

【エラーメッセージ(エキスパートタブ)】
(エラーログをコピペ)

【コード全文】
(コード全体を貼付)

error 130は「無効なストップレベル」です。
以下を修正してください:
1. SL/TPの設定方法を確認し、ブローカーの最小ストップレベルに対応させる
2. MarketInfo(Symbol(), MODE_STOPLEVEL)でブローカーの最小距離を取得し、
   それ以上の距離でSL/TPを設定するように修正する
3. SL/TPが0の場合(設定なし)はそのまま発注できるようにする
修正後のコード全文を出力してください。

パターン3:ロジックが意図と違う

コンパイルも通り、取引もするが「なんか違う動きをしている」ケースです。

買いと売りが逆になっている

デバッグプロンプト

以下のEAの売買ロジックを日本語で1ステップずつ説明してください。

【私が実現したいロジック】
(やりたいことを日本語で書く)

【コード全文】
(コード全体を貼付)

説明した後、私の意図と異なる箇所を特定し、
修正したコード全文を出力してください。

常にエントリーする / 全くエントリーしない

デバッグプロンプト

以下のEAについて、シグナル判定の条件を確認してください。

【コード全文】
(コード全体を貼付)

問題:EAが(常にエントリーする / 全くエントリーしない)状態です。

以下を確認して修正してください:
1. 条件の論理演算子(&&, ||)が正しいか
2. Close[0](未確定バー)を判定に使っていないか。Close[1]に変更する
3. 同じバーで複数回シグナルが発生する「バー内の重複エントリー」が起きていないか
4. 既にポジションを持っている時にエントリーしないチェックが入っているか
修正後のコード全文を出力してください。

パターン4:AIが堂々巡りする時の脱出法

「修正して」を何度繰り返しても同じエラーが返ってくる状態は、AIが現在のアプローチに固執していることが多いです。

脱出法①:「別のアプローチで書き直して」

同じ修正を繰り返していて解決しません。
これまでのアプローチを捨てて、別の方法でこの機能を実装してください。

【実現したいこと】
(やりたいことをシンプルに書く)

【避けたい実装方法】
(今まで試してうまくいかなかった方法)

脱出法②:コードが複雑になりすぎた時

このコードが複雑になりすぎています。
以下の機能だけを持つ最小限のEAをゼロから書き直してください。

【必須機能】
1. (機能1)
2. (機能2)
3. (機能3)

余分な機能は省いて、できるだけシンプルなコードにしてください。

脱出法③:AIを切り替える

ChatGPTで解決しないならClaude、Claudeで解決しないならChatGPTに同じ質問をしてみてください。同じ問題でも異なるアプローチで回答することが多く、どちらかで突破できます。

脱出法④:MQL4公式リファレンスを渡す

以下のMQL4公式ドキュメントのURLを参照した上で、
OrderSend関数の正しい使い方でコードを修正してください。

https://docs.mql4.com/trading/ordersend

【コード全文】
(コード全体を貼付)

💡 INFO AIの学習データには古いMQL4情報が混在していることがあります。公式ドキュメントのURLを直接渡すと、最新の仕様に基づいた回答になりやすいです。


コピペで使える万能デバッグプロンプトテンプレート

① コンパイルエラー用

以下のMQL4コードでコンパイルエラーが発生しています。

【エラーメッセージ(MetaEditorのエラータブより)】
(ここにエラーログをコピペ)

【コード全文】
(ここにコード全体を貼付)

エラーの原因を説明した上で、修正したコード全文を出力してください。
コードは省略せず全文を出力してください。

② 動作不良用

以下のMQL4コードはコンパイルは通りますが、意図した動作をしていません。

【症状】
(例:エントリーしない / 決済しない / エラー番号がログに出る等)

【MT4のエキスパートタブのログ】
(ログの内容をコピペ)

【コード全文】
(コード全体を貼付)

原因を特定してデバッグ用のPrint文を追加し、
修正したコード全文を出力してください。

③ ロジック確認用

以下のMQL4コードの売買ロジックを、日本語で1ステップずつ説明してください。

【私が実現したいロジック】
(やりたいことを日本語で書く)

【コード全文】
(コード全体を貼付)

説明後、私の意図と異なる箇所を特定し、修正したコード全文を出力してください。

まとめ:エラーは「AIへの伝え方」で解決する

  • AIが出したコードにエラーが出るのは当然のこと。恥ずかしくない
  • エラーメッセージをそのままコピペしてコード全体と一緒に渡す
  • 「直して」ではなく「原因を説明してから修正して」と指示する
  • 堂々巡りになったらアプローチを変えるか、別のAIに切り替える

このページをブックマークして、困ったときにテンプレートをコピペして使ってください。ほとんどのエラーはこれで解決できます。


関連記事


本記事で紹介するEA・手法は教育目的で作成されたものです。実際の取引で利益を保証するものではありません。EAの運用は必ずデモ口座で十分にテストした上で、自己責任で行ってください。FX取引にはリスクが伴います。

次のステップ

まずデモで動作確認 → OKなら本番運用、が安全です。

デモ口座でEAを回す手順
共有:

関連記事

if (signal && riskOk) { executeEA(); }

for (const tf of [M5, M15, H1]) {

  score += checkTrend(tf);

}

return score >= threshold;

🤖 AIでEAを作る基礎

【完全初心者向け】TradingViewの使い方入門 ― まずは裁量トレードを体験しよう

トレード未経験者向けにTradingViewの基本操作を画像付きで解説。チャートの見方、移動平均線の設定、ペーパートレードのやり方まで、ゼロから始める手順をまとめました。

#TradingView #初心者 #移動平均線

if (signal && riskOk) { executeEA(); }

for (const tf of [M5, M15, H1]) {

  score += checkTrend(tf);

}

return score >= threshold;

🤖 AIでEAを作る基礎

裁量手法をAIに伝えるための「言語化シート」— 穴埋めでプロンプト完成

裁量トレードの経験をAIが理解できる条件文に変換するための穴埋めシートを提供。シートを埋めるだけでMT4のEAを作るプロンプトが完成します。

#言語化 #プロンプト #裁量手法
#MQL4 #エラー #デバッグ #ChatGPT #Claude #プロンプト
目次を表示