#include <ファイル>
「#include」は includeファイルをシステムに組み込ませる時に使います。「#include」はプログラム内のどこにでも配置できますが、通常はソースコードの先頭に配置します。
データ型と構成・戻り値
#include <***.mqh>
「***.mqh」は include ファイルです。「#include」によってファイルの内容がプログラムに組み込まれます。
コンパイルして作成されるEAの ex4ファイルには「#include」によって mqhファイルが組み込まれるのでEAを配布する時は ex4ファイルのみで大丈夫です。別途 mqhファイルを配布する必要はありません。
使用例
ErrorDescription関数によるエラー内容の取得
ErrorDescription関数は includeファイルである stdlib.mqh に定義されている関数になります。このファイルを includeしないとコード中にErrorDescription関数がある場合、コンパイルエラーになります。
例では、OrderSend関数を使って発生したエラー内容をErrorDescription関数を使って確認しています。使用例での通貨ペアは USDJPYです。
①は、問題がない注文です。
②は、注文ロット数を最低 0.01ロットのところ 0.001ロットにしているためエラーが発生します。
③は、取引通貨ペアで “USDJPY” にしないといけないところ “USD/JPY” にしているためエラーが発生します。
④~⑥は、includeファイルである「stderror.mqh」で定義したエラー内容に対するエラーコードを表示させます。しかし、このファイルを#includeしなくてもエラーコードは取得できるようです。
includeファイルの保存先はこちらを参考にしてください。
コード
// #includeによるエラー内容の取得例
#property strict
#include <stdlib.mqh>
//#include <stderror.mqh>
void OnInit() {
int ticket1 = OrderSend(Symbol(), OP_BUYLIMIT, 0.01, 50, 30, 45, 105, "Buy", 1001, 0, clrNONE); //①エラーコード:0
Print("エラー内容①:", ErrorDescription(GetLastError()));
int ticket2 = OrderSend(Symbol(), OP_BUYLIMIT, 0.001, 100, 30, 95, 105, "Buy", 1002, 0, clrNONE); //②エラーコード:131
Print("エラー内容②:", ErrorDescription(GetLastError()));
int ticket3 = OrderSend("USD/JPY", OP_BUYLIMIT, 0.01, 100, 30, 95, 105, "Buy", 1003, 0, clrNONE); //③エラーコード:4106
Print("エラー内容③:", ErrorDescription(GetLastError()));
Print("エラーコード④:", ERR_NO_ERROR); //④エラーコード:0
Print("エラーコード⑤:", ERR_INVALID_TRADE_VOLUME); //⑤エラーコード:131
Print("エラーコード⑥:", ERR_UNKNOWN_SYMBOL); //⑥エラーコード:4106
}
このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
以下、エキスパートタブに出力されるエラーコードです。
今回出力されたエラーの内容です。その他の取得したコードのエラー内容はこちらで確認ができます。
コード | ID | 説明 |
---|---|---|
0 | ERR_NO_ERROR | No error returned エラーはありません。 |
131 | ERR_INVALID_TRADE_VOLUME | Invalid trade volume 無効な取引量です。 |
4106 | ERR_UNKNOWN_SYMBOL | Unknown symbol 不明な通貨ペア。 |