この記事でできるようになること
- コンパイルエラーの文をコピーして、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」がどれか分かるからです。新しいチャットで送る場合は、エラー文の下に元のコード全文も貼ってください。
4-3-03.png手順4 コードを貼り替えて再コンパイルする
修正版が返ってきたら、次の手順で丸ごと入れ替えます。
- コードブロックの「コピー」ボタンでコピーする
- MetaEditorのコード部分をクリック → [Ctrl]+[A] → [Delete] で全消しする
- [Ctrl]+[V] で貼り付ける
- [Ctrl]+[S] → [F7]
- 「エラー」タブを確認する
「0 error(s)」になれば完了です。まだエラーが残っていれば、手順2〜4を繰り返します。2〜3往復で直ることがほとんどです。
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にはこのファイルがないので開けない、というエラーになります)CTrade、PositionSelect、PositionGetDouble、SymbolInfoDoubleのような、MQL4にはない名前が「function not defined」になるiMAやiRSIについて「wrong parameters count(渡す値の数が違う)」と言われる
対処: エラー文に加えて、一言添えて送ります。
このコードにはMQL5の書き方が混ざっているようです。MT4用のMQL4だけを使って、完全なコードを省略せずに書き直してください。
4-3-05.png手順6 直しても直らないときは「最初から書き直して」と頼む
3〜4往復してもエラーが消えない、直すたびに別のエラーが増える、という場合は、会話の中で修正が積み重なってコードが崩れています。無理に直し続けるより、まっさらな状態で作り直すほうが早いです。
- ChatGPTで「新しいチャット」を開く
- 第3章で使ったEA作成プロンプト(実例1などの雛形)を、もう一度そのまま送る
- 返ってきたコードを新規ファイルに貼り付けて [F7]
同じプロンプトでも、AIは毎回少しずつ違うコードを書くので、2回目はすんなり通ることがよくあります。「一度で完璧に」を目指す必要はありません。
もし同じ会話の中で頼みたいなら、次の一文でも同じ効果があります。
これまでの修正は忘れて、最初の仕様に従ってEAを最初から書き直してください。MT4用のMQL4で、完全なコードを省略せずに出力してください。
4-3-06.pngつまずきポイント
- エラー行が見当たらない: ツールボックスの「エラー」タブではなく別のタブが表示されています。タブを切り替えるか、[F7] をもう一度押してください。
- ChatGPTが「一部だけ」返してくる: 「修正した完全なコードを省略せずに出力してください」を、もう一度そのまま送ります。
- 直したら別の場所が変わってしまった: 「エラーの修正以外は変えないでください」と一言添えて頼み直します。
- warning しか出ていないのに直そうとしている: warning は動きます。「0 error」なら次の記事に進んで大丈夫です。
- エラー文の意味を知りたい: 「このエラーは何が原因ですか?初心者向けに説明してください」と、エラー文と一緒に聞けば教えてくれます。
次の記事
次は、コンパイルできたEAがMT4のナビゲーターに表示されることを確認して、「EA完成」の状態にします。