メタクオーツ社のMQL5ブログにあるサンプルコードの動かし方

MT5

MT5でプログラミングを初めて行う人が、「MT5 プログラミング」と検索すると、メタクオーツ社のMT5ブログに辿り着くかと思います。

第二回のページに、ごくごく簡単な書い注文・売り注文のサンプルコードが載っています。

第二回 プログラムで取引をしよう!:https://metaquotes.co.jp/2019/03/25/blog02/

しかし、これをコピペしてもこのままでは動きません!後学のために問題が出てきた点や変えるべき箇所を記します。

問題が出てきた箇所

私が実際にハマった点を記していきます。

MT5上で実行しようとしてもファイルが見つからない

コンパイルを忘れていませんか?MetaEditor上でコンパイルしましょう。

それでも出てこない場合、ファイルが変な場所に入ってしまっている可能性があります。

EXPERT_MAGICが定義されていない

EXPERT_MAGICには適当な一意の番号が入っている想定ですが、この値は定義されていないため、このままだとコンパイルエラーになります。とりあえず適当な数字(例:12345)に置き換えればコンパイルエラーは無くなります。

wrong type, loading of faildエラーが発生する

ストラテジーテスターテスターで実行すると”wrong type, loading of <ファイル名> failed”というエラーが出ることがあります。

この場合、エキスパートアドバイザとしてファイルを作成しているかと思いますが、エキスパートアドバイザのコードにはOnStartイベントを入れることができないため、このエラーが発生しています。

コードを、エキスパートアドバイザとしてではなく、スクリプトとして作成してください(MT5のナビゲータペイン上で、スクリプトの中に入るようにする)。スクリプトとして実行すると、このエラーは発生しないはずです。

Unsupportd filling typeエラーが発生する

このエラーが出た場合、request変数のtype_fillingが設定されていない or 不適切かと思います。

OANDA FXを使用している場合は、OrderSend関数を呼ぶ前にtype_fillingにORDER_FILLING_IOCをセットしましょう(恐らく、他のFX業者も同じ)。

正常終了したが注文が出されていない

MT5のツールバーにある「自動売買」がOFFになっていると実際の注文は行われません。これをONにして実行すると注文が出されると思います。

なお、そのまま注文が成立してしまうと当然ながら損益が動くので、デバッグ中やテスト中は「自動売買」をOFFにしておきましょう。また、実際の自動売買を行う場合も、慣れるまでは注文量(volume)を小さくしておき、なおかつマーケットが荒れているときもの自動売買は避ける方が無難です。

終わりに

一儲けしようとFXを始める人は結構居ると思いますが、多くの人はFX業者が提供するWeb画面やスマホアプリを使っており、メタクオーツ社のツール(MT4/MT5)を使っている人は多くないと思います。その中でも、MetaQuotes Language (MQL)で自動化を実際に行う人は少なく、さらにMQL4ではなくMQL5を扱った日本語の情報は限られています。

初見だと謎のエラーに悩まされますが、MT5はなかなか面白いプラットフォームだというのが率直な印象です。学習していきましょう。

タイトルとURLをコピーしました