前回は MQL5プログラムに共通する全体構造 について解説しました。
改めて前回の内容をおさらいをしておくと、
MQL5のプログラムは概ね、次のような順序で記述・構成される。↓
↓
↓
↓
ということをお伝えしました。
今回は include命令 についてお話ししたいと思います。
include命令とは?
include命令は、メインプログラムに組み込むインクルードファイルを指定する為の命令記述です。
前回も触れましたが、インクルードファイルは関数やクラス、構造体をまとめておくことができるファイルです。
インクルードファイルをinclude命令で指定することによって、メインプログラムで関数やクラスを一から定義しなおすことなく利用することができます。
includeファイルの作り方
インクルードファイルを生成する時は、
を利用します。
では、「MQLウィザード」を起動し、エキスパートアドバイザー(テンプレート)を選択して、EA(自動売買プログラム)を作るためのたたき台となるファイルを生成する方法を紹介しました。
インクルードファイルを生成する時も基本的には同じ手順をたどります。
違うのは、エキスパートアドバイザー(テンプレート)ではなく、インクルード(*mqh) を選択するだけです。↓
Include\の後ろにファイル名を記述して完了を押下すれば、デフォルト格納フォルダであるIncludeフォルダにファイルが格納されます。

インクルードファイルができてしまえば、あとは今までの講座記事で学んだ手順に従って、enum列挙型、構造体、関数、クラスを宣言・定義していけばOKです。↓
あとは、メインプログラムでinclude命令で指定することでファイル内のenum列挙型、構造体、関数、クラス等が利用できるようになります。
include命令の記述方法について
include命令の記述方法には2パターンあります。
記述方法その1 <>で囲む
記述方法その1は、ファイル名を
<>
で囲む方法です。↓
#include <test.mqh>
ファイル名は、拡張子の .mqhも含めて正確に入力してください。
大文字小文字の区別やスペースの入り込みによって、ファイル名が異なってしまっている場合があるので注意しましょう。
この記述をすることによって、コンパイル時、メタエディターはデフォルトのincludeディレクトリを対象に指定されたファイル名を探します。
デフォルトのincludeディレクトリとは、すなわち
MQL5\Imclude内のサブフォルダを含めた領域です。

<>で囲む方法でファイル名を指定したにも関わらず、デフォルトのincludeディレクトリにインクルードファイルが格納されていない場合、当然コンパイルエラーになります。↓
↑の動画では、後述するパターン2のinclude命令記述でインクルードファイル指定をしていたのですが、途中で<>で囲む方法に変えて再コンパイルしたものです。
デフォルトのincludeディレクトリにインクルードファイルが格納されていなかったので、コンパイルエラーが発生しました。
記述方法その2 ダブルクォーテーション(”)で囲む
記述方法その2は、
ダブルクォーテーション(”)
で囲む方法です。
#include "test.mqh"
この記述をすることによって、コンパイル時、メタエディターは呼び出したメインプログラムが保存されているディレクトリを対象に指定されたファイル名を探します。
例えば、testProgram.mq4というファイルからtest.mqhというインクルードファイルをinclude命令によって呼び出そうとしている場合、testProgram.mq4ファイルとtest.mqhファイルは同じディレクトリに格納されている必要があります。↓

ダブルクォーテーションで囲む方法でファイル名を指定したにも関わらず、メインプログラムが保存されているディレクトリにインクルードファイルが格納されていない場合、コンパイルエラーになります。↓
↑の動画では、途中でインクルードファイルのディレクトリを別に移動して再コンパイルしたものです。
呼び出したメインプログラムと異なるディレクトリにインクルードファイルが移動したことによって、コンパイルエラーが発生していますね。
まとめ
今回は include命令 について解説しました。
今回の記事では以下のことを学びました
- include命令は、メインプログラムに組み込むインクルードファイルを指定する為の命令記述である。
- #include命令には、ファイル名を<>で囲む記述形式と、ダブルクォーテーション(“)で囲む記述形式の2パターンがある。
今回は以上になります。
最後までお読みいただきありがとうございました<m(__)m>
【超入門】MQL5 EA講座 第55回「MQL5プログラムの全体構造について」【EAの作り方】←
→【超入門】MQL5 EA講座 第57回「ネッティングとヘッジング」【EAの作り方】
ツイッターでも#include命令に関するつぶやきまとめをまとめたモーメントを用意していますので、
よろしければご利用ください。<m(__)m>
コメント