ダウンロードしたインジケーターが動かない…なぜ?
前回の記事「パラボリックだけで勝てる!伝説の”372手法”とは?」で紹介したMTF_PSar.mq4というインジケーターをダウンロードしてMT4に設定しても、うんともすんとも言わない…なぜなのか?というお問い合わせをいただきました。
質問者がメールに記載していたWEBサイトからMTF_PSar.mq4をダウンロードしてみたのですが、たしかにMT4に設定してもなにも表示されません。
‘return’ – expressions are not allowed on a global scopeというエラーについて
メタエディタ(MetaEditor)で、DLしたMTF_PSar.mq4を開いてみると、案の定以下のようなエラー表示がでます。
‘return’ – expressions are not allowed on a global scope
ざっくり訳すと、「returnという式はグローバルスコープでは使えませんよ」という内容ですね。
上のエラー、ネットで拾ってきた無料インジケーターでたまに見かけます。このエラーですが、実は古いMT4(build600以前)であれば表示されません(正常にコンパイルできる)。
つまり、DLしたMTF_PSar.mq4は、build600より前に作成された(build600以前のMT4に最適化された)インジケーターだったわけですね。実際のところ、MTF_PSar.mq4の制作年月日は、ソースコードによれば2006年となっていました。
MT4のバージョンアップ(build)に合わせて、インジケーターのソースを改編するなどしてくれているインジケーター製作者もいますが、ネットで拾える無料インジケーターの大半はコピーのコピーです。
どこからか適当に拾ってきたものをコピーして掲載、それをまただれかがコピーして掲載…これを繰り返しているわけです。結果的に、非常に古いインジケーターがそのままの状態で提供されていたりするのです。
【2024年5月版】優位性の高いFX商材 Best4
‘return’ – expressions are not allowed on a global scopeエラーを修正する方法
さて、コンパイルエラーが‘return’ – expressions are not allowed on a global scopeだけならば、修正は簡単です。
※ここからはMetaEditorを使える人のみにお伝えする情報となります。
MetaEditorにて問題のインジケーターを開き、コードを一箇所だけ修正すればOK。問題となっている箇所は60行目。
return(0); ←これですね。この return(0); を、57行目と58行目の間に移動させれば完了です。
上図のように…
int init()
{
}
の中に return(0); を入れてあげれば良いのです。
ご覧の通り、‘return’ – expressions are not allowed on a global scopeが消えましたね。
コンパイルが正常にできたところで、MTF_PSar.mq4をMT4のチャート上にドラッグドロップしてあげれば、正しく表示されます。
動かないインジケーターはソースコードを開いてみれば修正できるかもよ!
ネットから無料でダウンロードしたインジケーターが、なぜだか表示されない…そんなときはMetaEditorでそのインジケーターを開いてソースコードをチェックしてみましょう。もしもエラー表示が‘return’ – expressions are not allowed on a global scopeだけならば、誰でも容易に修正できます。
プログラミングがよくわからなくても、一行だけの修正(カット&ペースト)なので、難しい作業ではありません。
この裏技(?)を覚えておけばとても便利ですよ。