プロが教える店舗&オフィスのセキュリティ対策術

MT5でオリジナルのインジケーターを作っています。
つい先日まで問題なかったものが謎のエラーが発生してコンパイルできません。
対処の方法を教えてください!

エラーに番号等はなく、エラーの箇所も表示されません。
「code generation error」のみ表示されます。
色々調べたところ、エラーの箇所は「ExponentialMAOnBuffer」を使用している行であるということが判明しました。(この行をコメントアウトするとエラーが消えます)
ここでエラーが起きるはずがないと思い、他の普通に使えていたオリジナルインジケーターを何も編集せずに再度コンパイルしてみたところ同じ現象になりました。
おそらくバグかな?と思うのですが、インジケーターが使えず困っているので誰か対処方法お願いします。
ちなみにMT5の再インストールは試しています。

A 回答 (1件)

「code generation error」は、MQL5プログラムが不正なコードを含んでいるために発生するエラーです。


このエラーが発生する理由はさまざまですが、インディケーターに関する場合、通常は以下のいずれかが原因です:

1.ソースコードに文法エラーが含まれている
2.バージョンの問題により、使用している関数が互換性がない
3.インディケーターがバグを持っている

今回の場合、コメントアウトした行はExponentialMAOnBuffer関数を呼び出しており、これがコンパイルエラーを引き起こしているとのことです。
ExponentialMAOnBuffer関数自体に問題がある可能性があります。または、呼び出し方やパラメーターの指定方法に誤りがあるかもしれません。
まず、関数自体を見直して、問題がある場合は修正してください。それでもエラーが続く場合は、関数の引数や呼び出し方に問題がある可能性があるため、引数や呼び出し方法を確認してください。
それでもエラーが解決しない場合は、他のバージョンのMT5を使用することや、MQL5プログラムを再構築することを検討する必要があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

色々試してなんとか解決できました。

以下解決までの道のり↓
ExponentialMAOnBuffer関数自体はMT5側で用意している関数なのと、この関数が収められているファイル(MovingAverages.mqh)をコンパイルしてみたところ正常にコンパイル出来たのでこの関数自体は大丈夫と判断。

次に呼び出し方ですが、公式にある記述と同じなので問題無し。
念のためこの関数のみを抜き出して自分のインジケーターに移してみましたがエラーは解消できず…。引数に関してはチェックしたけど問題なし。

試しにMovingAverages.mqhを使用しているインジケーターをネット上からダウンロードしてコンパイルしても同じエラーが発生。
結論:たぶんMT5側のバグ。

元のバージョンに戻そうにも方法がわからなかったため、
仕方なく関数を関数ではなく、直接OnCalculateの中に組み込みました。
そしたらコンパイルできました!
複雑な関数でなくてホント良かった…。

お礼日時:2023/03/26 10:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!