AI EA スクール
0記事中 0記事 読了
カリキュラム 第4章 EAを作る エラーが出たときの直し方
4-3

エラーが出たときの直し方

読み終わるまでの目安 約20分

この記事でできるようになること

  • コンパイルエラーの文をコピーして、ChatGPTに直してもらえる
  • よくあるエラー3種類を見て、何が起きているか見当がつく
  • 直らないときの「最終手段」が分かる

準備するもの

  • エラーが出たEAファイルを開いたMetaEditor
  • そのコードを作ったChatGPTの会話(同じ会話の続きで頼むのがコツです)

手順

手順1 エラーの行を読む

「エラー」タブの赤い行には、「説明」「ファイル」「行」「列」が並んでいます。たとえば次のような形です。

'OrderSend' - wrong parameters count    MyEA_v1.mq4    45    12

これは「MyEA_v1.mq4 の45行目・12文字目にある OrderSend というところで、渡している値の数が違う」という意味です。英語ですが、読める必要はありません。大事なのは、説明と行番号の両方をChatGPTに渡すことです。行番号があると、AIがどこを直せばいいか迷わなくなります。

エラー行をダブルクリックすると、中央のコードの該当行にカーソルが飛びます。要確認 直す必要はありませんが、「ここか」と場所を見ておくと安心です。

ここに画面写真を入れてください「エラー」タブのエラー行と、ダブルクリックで飛んだコードの該当行4-3-01.png

手順2 エラー文をコピーする

エラー行を右クリックして「コピー」を選びます。要確認 複数行のエラーがある場合は、エラー欄をクリックしてから [Ctrl]+[A] で全部選び、右クリック→「コピー」でまとめて送れます。要確認

右クリックでコピーできない場合は、エラー行の説明と行番号を手で書き写してもかまいません。多少写し間違えても、AIは前後から判断してくれます。

エラーが何十行も出ているときは、いちばん上の1〜3行だけでも十分です。1つの原因から連鎖して大量のエラーが出ていることが多く、最初の1つを直すと残りも消えることがよくあります。

ここに画面写真を入れてくださいエラー行を右クリックして「コピー」を選ぶメニュー4-3-02.png

手順3 定型プロンプトでChatGPTに直してもらう

コードを作ってもらった会話の続きに、次のプロンプトを貼って送ります。【エラー内容】の下の「例」の行を消して、手順2でコピーしたエラー行を貼り付けてください。

先ほどのEAをMetaEditorでコンパイルしたところ、以下のエラーが出ました。
修正した完全なコードを、省略せずに出力してください。

【エラー内容】
(MetaEditor下部の「エラー」タブの内容をそのまま貼り付け)
例: 'OrderSend' - wrong parameters count  MyEA.mq4  45  12

「修正した完全なコードを、省略せずに」が肝心です。これを書かないと、直した数行だけが返ってきて、自分でコードのどこかを差し替えることになります。プログラミング未経験者にとって、その作業はいちばんミスが起きやすいところなので、必ず全文で受け取ってください。

同じ会話の続きで送る理由は、AIが「先ほどのEA」がどれか分かるからです。新しいチャットで送る場合は、エラー文の下に元のコード全文も貼ってください。

ここに画面写真を入れてくださいChatGPTにエラー修正プロンプトを送信した画面4-3-03.png

手順4 コードを貼り替えて再コンパイルする

修正版が返ってきたら、次の手順で丸ごと入れ替えます。

  1. コードブロックの「コピー」ボタンでコピーする
  2. MetaEditorのコード部分をクリック → [Ctrl]+[A] → [Delete] で全消しする
  3. [Ctrl]+[V] で貼り付ける
  4. [Ctrl]+[S] → [F7]
  5. 「エラー」タブを確認する

「0 error(s)」になれば完了です。まだエラーが残っていれば、手順2〜4を繰り返します。2〜3往復で直ることがほとんどです。

ここに画面写真を入れてください修正版を貼り替えてコンパイルし、「0 error(s)」になった画面4-3-04.png

手順5 よくあるエラー3選を知っておく

対処はすべて「エラー文をAIに貼る」で同じですが、何が起きているかを知っておくと、次に同じことを繰り返さないヒントになります。なお、エラー文の細かい表記はMetaEditorのバージョンで変わることがあります。要確認

その1 未定義の関数(function not defined)

'CountPositions' - function not defined    MyEA_v1.mq4    52    15

AIがコードの中で CountPositions という関数(部品)を呼び出しているのに、その部品の中身をどこにも書いていない、という状態です。長いコードを出すときに、AIが後半の部品を書き忘れたり、省略したりすると起こります。変数(値の入れ物)の名前が見つからない場合は、次のような文になります。

'pipValue' - undeclared identifier    MyEA_v1.mq4    30    18

対処: エラー文を貼れば、足りない部品を書き足してくれます。「省略せずに」を強めに書いておくと再発しにくくなります。

その2 セミコロン抜け(semicolon expected)

';' - semicolon expected    MyEA_v1.mq4    38    1

MQL4では、1つの命令の終わりに必ず ;(セミコロン)を付けるルールがあります。これが1つ抜けているだけで、その行以降にまとめて大量のエラーが出ることがあります。

エラーの行番号は「抜けた行の次の行」を指すことが多い、という癖があります。AIに任せれば正しく直してくれるので、自分で探す必要はありません。

対処: エラー文を貼る。大量に出ていたら、いちばん上の行だけ貼れば十分です。

その3 MQL5の文法が混ざる

can't open "C:\...\MQL4\Include\Trade\Trade.mqh" include file    MyEA_v1.mq4    6    11
'iMA' - wrong parameters count    MyEA_v1.mq4    40    22
'PositionSelect' - function not defined    MyEA_v1.mq4    61    8

MT5用の言語「MQL5」は、MQL4とよく似ていて、AIが混ぜてしまうことがあります。MQL5の部品が混ざっているサインは次のとおりです。

  • #include <Trade\Trade.mqh> という行がある(MT4にはこのファイルがないので開けない、というエラーになります)
  • CTradePositionSelectPositionGetDoubleSymbolInfoDouble のような、MQL4にはない名前が「function not defined」になる
  • iMAiRSI について「wrong parameters count(渡す値の数が違う)」と言われる

対処: エラー文に加えて、一言添えて送ります。

このコードにはMQL5の書き方が混ざっているようです。MT4用のMQL4だけを使って、完全なコードを省略せずに書き直してください。
ここに画面写真を入れてくださいMQL5混入時の「エラー」タブの例(include file と wrong parameters count が並んだ状態)4-3-05.png

手順6 直しても直らないときは「最初から書き直して」と頼む

3〜4往復してもエラーが消えない、直すたびに別のエラーが増える、という場合は、会話の中で修正が積み重なってコードが崩れています。無理に直し続けるより、まっさらな状態で作り直すほうが早いです。

  1. ChatGPTで「新しいチャット」を開く
  2. 第3章で使ったEA作成プロンプト(実例1などの雛形)を、もう一度そのまま送る
  3. 返ってきたコードを新規ファイルに貼り付けて [F7]

同じプロンプトでも、AIは毎回少しずつ違うコードを書くので、2回目はすんなり通ることがよくあります。「一度で完璧に」を目指す必要はありません。

もし同じ会話の中で頼みたいなら、次の一文でも同じ効果があります。

これまでの修正は忘れて、最初の仕様に従ってEAを最初から書き直してください。MT4用のMQL4で、完全なコードを省略せずに出力してください。
ここに画面写真を入れてください新しいチャットで作成プロンプトを再送した画面4-3-06.png

つまずきポイント

  • エラー行が見当たらない: ツールボックスの「エラー」タブではなく別のタブが表示されています。タブを切り替えるか、[F7] をもう一度押してください。
  • ChatGPTが「一部だけ」返してくる: 「修正した完全なコードを省略せずに出力してください」を、もう一度そのまま送ります。
  • 直したら別の場所が変わってしまった: 「エラーの修正以外は変えないでください」と一言添えて頼み直します。
  • warning しか出ていないのに直そうとしている: warning は動きます。「0 error」なら次の記事に進んで大丈夫です。
  • エラー文の意味を知りたい: 「このエラーは何が原因ですか?初心者向けに説明してください」と、エラー文と一緒に聞けば教えてくれます。

次の記事

次は、コンパイルできたEAがMT4のナビゲーターに表示されることを確認して、「EA完成」の状態にします。