エラーコードを取得 GetLastError 関数

関数

チェック関数

GetLastError 関数

 この関数は、_LastError(システム変数)で出力されるエラーコードを取得します。
 _LastErrorは、MQL4プログラムの実行中に発生した直近のエラーのコードを取得するものです。

データ型と構成・戻り値

int GetLastError();

 戻り値は、直近のエラーコード(取引サーバーの取得コード 及び ランタイムエラーコード)を返します。

引数 [0]

 引数無し。

使用例

GetLastError関数によるエラーコードの取得例

 OrderSend関数を使って発生したエラーコードを確認しています。使用例での通貨ペアは USDJPYです。
 ①は、問題がない注文です。
 ②は、注文ロット数を最低 0.01ロットのところ 0.001ロットにしているためエラーが発生します。
 ③は、取引通貨ペアで “USDJPY” にしないといけないところ “USD/JPY” にしているためエラーが発生します。

コード

// GetLastError関数のエラーコード取得例
#property strict
void OnInit() {
int ticket1 = OrderSend(Symbol(), OP_BUYLIMIT, 0.01, 50, 30, 45, 105, "Buy", 1001, 0, clrNONE);   //①エラーコード:0
Print("エラーコード①:", GetLastError());

int ticket2 = OrderSend(Symbol(), OP_BUYLIMIT, 0.001, 100, 30, 95, 105, "Buy", 1002, 0, clrNONE); //②エラーコード:131
Print("エラーコード②:", GetLastError());

int ticket3 = OrderSend("USD/JPY", OP_BUYLIMIT, 0.01, 100, 30, 95, 105, "Buy", 1003, 0, clrNONE); //③エラーコード:4106
Print("エラーコード③:", GetLastError());
}

このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

 以下、エキスパートタブに出力されるエラーコードです。


 自動売買を許可していない場合は、以下のようになります。


 今回出力されたエラーの内容です。その他の取得したコードのエラー内容はこちらで確認が出来ます。

コードID説明
0ERR_NO_ERRORNo error returned
エラーはありません。
131ERR_INVALID_TRADE_VOLUMEInvalid trade volume
無効な取引量です。
4106ERR_UNKNOWN_SYMBOLUnknown symbol
不明な通貨ペア。
4109ERR_TRADE_NOT_ALLOWEDTrade is not allowed. Enable checkbox “Allow live trading” in the Expert Advisor properties
取引は許可されていません。エキスパートアドバイザーのプロパティで「自動売買を許可する」チェックボックスをチェックする必要があります。

タイトルとURLをコピーしました