MT4のEAで、ある程度処理を作りこんでいくとEAのソースコードが長くなって読みづらくなります。
そこで、共通で使うような関数はインクルードファイルにソースコードを移動してしまい、別ファイル(mqh)ファイルとして管理することで、EA側のソースコードを整理するという方法について記載します。
mqhファイルを作成する
まずは、EAと別管理とするためのmqhファイルを作成します。
メタエディタのファイル→「新規作成」をクリックします。

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

ファイル名等を決めて、「完了」ボタンをクリックします。

ソースファイルが開かれるので、ここに関数を移動していきます。

以上でインクルード(mqh)ファイルの作成は完了です。
ファイルの作成先
ファイルは、こんな感じで「MQL4\Include」フォルダに作成されます。

関数を移動する
次に、先ほど作成した「common.mqh」ファイルに関数を移動していく作業を行います。移動の仕方は簡単で、そのまま関数を移動するだけです。
以下赤枠のようにメインのEA側の関数を切り取ります。(EA側からは削除します)

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

他にも、移動する関数があれば同じ要領で移動してください。
ソースコードの追加とコンパイル
次に、メインのEA側の上部に以下のソースコードを追加します。
※common.mqhファイルを参照しますよという事を宣言します
#include <common.mqh>
mqhファイルをフォルダ管理する場合・・・カレントがIncludeフォルダ直下なので、<フォルダ名称\common.mqh>みたいな感じで宣言も可能です
ソースコードを追加した後、コンパイルします。(メインのEA側でコンパイル)

以上でソースコードの追加とコンパイルは完了です。
さいごに
以上で、関数をインクルードファイルに移動してソースを整理する説明を終わります。
mqhファイルに関数単位でまとめてしまえば、別のEAを作った際も、common.mqhを参照する1文さえ書いてしまえば前のEAで使っていた自作関数を使いたい放題なのでとても便利です。
あと、補足情報ですがEAを実際に動作させる場合common.mqhファイルは不要です。コンパイル時にメインのEAのソースとcommon.mqhを合体させて「.ex4ファイル」化しているんですね。EAを動かすのに必要なファイルが複数ファイルにならないので、実環境への展開漏れとかも考慮せず、今まで通りで問題無いです。
※ オススメ記事(EAが使える国内FX業者の一覧)
コメント