前回は 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ファイルは同じディレクトリに格納されている必要があります。↓
ダブルクォーテーションで囲む方法でファイル名を指定したにも関わらず、メインプログラムが保存されているディレクトリにインクルードファイルが格納されていない場合、コンパイルエラーになります。↓
↑の動画では、途中でインクルードファイルのディレクトリを別に移動して再コンパイルしたものです。
呼び出したメインプログラムと異なるディレクトリにインクルードファイルが移動したことによって、コンパイルエラーが発生していますね。
インクルードファイルとライブラリーファイルの違い
インクルードファイルと似たような機能として、ライブラリーファイルというものがMQL5にはあります。
ライブラリーファイルもインクルードファイルと同じく、別ファイルで用意していた関数やクラスを、メインプログラムで一から定義しなおすことなく利用することができる仕組みです。
インクルードファイルとライブラリーファイルの違いは何かというと、まず単純にメインプログラムでの呼び出し方の記述が違うという事、
そしてもう1つの違いは、ライブラリーファイルは他のユーザーにソースコードを明示しない状態で、利用してもらうことが可能
というです。
ライブラリーファイルの呼び出し方・使い方等の詳細について↓の記事にて解説をしていますので、ご覧いただければと思います。
まとめ
今回は include命令 について解説しました。
今回の記事では以下のことを学びました
- include命令は、メインプログラムに組み込むインクルードファイルを指定する為の命令記述である。
- #include命令には、ファイル名を<>で囲む記述形式と、ダブルクォーテーション(“)で囲む記述形式の2パターンがある。
※なお、インクルードファイルを実際に使った具体的なコード記述例については、この先以下の講座記事で確認する事ができますので、参考にしていただければと思います。
・第109回「インジケータの値を簡単に取得できるクラスを作る」
今回は以上になります。
最後までお読みいただきありがとうございました<m(__)m>
コメント