_LastError 変数
_LastError変数は、MQL4プログラムの実行中に発生した直近のエラーのコードを取得します。取得した値は、 ResetLastError関数によって0(ゼロ)にリセットできます。
直近のエラーのコードを取得するには、GetLastError関数を使用することもできます。
データ型と構成・戻り値
int _LastError;
戻り値は、直近のエラーコード(ランタイムエラーコード)が取得されます。
使用例
_LastError変数によるエラーコードの取得例
OrderSend関数を使って発生したエラーコードを確認しています。使用例での通貨ペアはUSDJPYです。
①は、問題がない注文です。
②は、注文ロット数を最低0.01ロットのところ0.001ロットにしているためエラーが発生します。
③は、取引通貨ペアで “USDJPY” にしないといけないところ “USD/JPY” にしているためエラーが発生します。
コード
// _LastError(システム変数)のエラーコード取得例
#property strict
void OnInit() {
int ticket1 = OrderSend(Symbol(), OP_BUYLIMIT, 0.01, 50, 30, 45, 105, "Buy", 1001, 0, clrNONE); //①エラーコード:0
Print("エラーコード①:", _LastError);
int ticket2 = OrderSend(Symbol(), OP_BUYLIMIT, 0.001, 100, 30, 95, 105, "Buy", 1002, 0, clrNONE); //②エラーコード:131
Print("エラーコード②:", _LastError);
int ticket3 = OrderSend("USD/JPY", OP_BUYLIMIT, 0.01, 100, 30, 95, 105, "Buy", 1003, 0, clrNONE); //③エラーコード:4106
Print("エラーコード③:", _LastError);
}
このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
以下、エキスパートタブに出力されるエラーコードです。
自動売買を許可していない場合は、以下のようになります。
今回出力されたエラーの内容です。その他の取得したコードのエラー内容はこちらで確認ができます。
コード | ID | 説明 |
---|---|---|
0 | ERR_NO_ERROR | No error returned エラーはありません。 |
131 | ERR_INVALID_TRADE_VOLUME | Invalid trade volume 無効な取引量です。 |
4106 | ERR_UNKNOWN_SYMBOL | Unknown symbol 不明な通貨ペア。 |
4109 | ERR_TRADE_NOT_ALLOWED | Trade is not allowed. Enable checkbox “Allow live trading” in the Expert Advisor properties 取引は許可されていません。エキスパートアドバイザーのプロパティで「自動売買を許可する」チェックボックスをチェックする必要があります。 |