EAのソースを整理する方法

記事内に商品プロモーションを含む場合があります
スポンサーリンク

はじめに

ここでは、MT4のEAソースコードが長くなって読みづらくなってしまった方に向けて、EAのソースコードを整理する方法について解説しています。

これを使うとかなりソースコードが整理されてソースコード全体を見やすくなるので是非試してみてください。

概要

MT4のEAで、ある程度処理を作りこんでいくとEAのソースコードが長くなって読みづらくなります。

そこで、長くなってしまう(何度も使ったり他のEAにも共通で使える)関数は、別ファイル(mqh)として管理することで、メインのEA側のソースコードを整理するという方法やmqhファイルの基本について記載します。

EA-BANKでEAを出品する際にも、このインクルードフォルダを使ったファイルの設置等も必要になってくるので是非覚えていきましょう。

mqhファイルを作成する

まずは、mqhファイルを作成していきましょう。作成の仕方は至って簡単です。
※既に誰かが作ったmqhファイルがある場合は、mqh作成のフェーズはいりません

メタエディタのファイル→「新規作成」をクリックします。

次に、インクルードを選択し、「次へ」ボタンをクリックします。

ファイル名等を決めて、「完了」ボタンをクリックします。
※今回はcommon.mqhファイルとしておきます

すると、以下のようにソースファイルが開かれます。

以上でインクルード(mqh)ファイルの作成は完了です。ここに関数を移動していく感じになります。

スポンサーリンク

mqhファイルを設置する

前の章でmqhファイルを作成した場合は、こんな感じで「MQL4\Include」フォルダに作成されています。

誰かが作成したmqhファイルや、EA-BANKのauth.mqhファイルも基本的にはここ『Include』フォルダに入れる感じですね。
※この「MQL4\Include」フォルダでは無い所にmqhファイルを入れても後々動かないので正確に設置しましょう

関数を移動する

次に、先ほど作成した「common.mqh」ファイルに関数を移動していく作業を行います。移動の仕方は簡単で、そのまま関数を移動するだけです。

以下赤枠のようにメインのEA側の関数を切り取ります。(メインのEA側からは削除する感じです)

「common.mqh」ファイルにそのまま貼り付けます。

他にも、移動する関数があれば同じ要領で移動してください。

これで、メインEAのソースコードのボリュームが減りましたね!

スポンサーリンク

ソースコードの追加とコンパイル

さて、メインのEAとmqhでソースコードを分けましたが、このままでは当然コンパイルはうまくいきません。

簡単に表すと、現状はこんな感じです。

次にやることは上記のような別れたソースコードを、リンクさせてあげましょう。

簡単ですがイメージ的にはこんな感じにしてあげる必要があります。

やり方は、メインのEA側の上部に1行だけ以下のソースコードを追加するだけです。
※common.mqhファイルを参照しますよという事を宣言します

#include <common.mqh>

『#include <ファイル名称>』という形にするので、ファイル名称(common.mqh)の所は自分で作ったファイル名称や用意したファイル名称に置き換えてください。

【中級者以上向け】
mqhファイルをフォルダ管理する場合・・・カレントがIncludeフォルダ直下なので、<フォルダ名称\common.mqh>みたいな感じで宣言も可能です。
※初心者の方はフォルダ階層をいじるとうまく動かないと思うので無視してください


ソースコードを追加した後、コンパイルします。(メインのEA側でコンパイル)

※こんな感じに、common.mqhが表示されればちゃんと参照できている証拠です

以上でソースコードの追加とコンパイルは完了です。

ソースコード移動前と移動後の整合性について確認したい場合は、mqhにソースコード移動前と移動後で同期間でバックテストを1回ずつ行い、同じ結果が出ればOKという形でチェックできますね。

さいごに

以上で、関数をインクルードファイルに移動してソースを整理する説明を終わります。

mqhファイルに関数単位でまとめてしまえば、別のEAを作った際も、common.mqhを参照する1文さえ書いてしまえば前のEAで使っていた自作関数を使いたい放題なのでとても便利です。

あと、補足情報ですがEAを実際に動作させる場合common.mqhファイルは不要です。コンパイル時にメインのEAのソースとcommon.mqhを合体させて「.ex4ファイル」化しているんですね。EAを動かすのに必要なファイルが複数ファイルにならないので、実環境への展開漏れとかも考慮せず、今まで通りで問題無いです。



※ オススメ記事(EAが使える国内FX業者の一覧)

コメント