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 | 説明 |
---|---|---|
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 取引は許可されていません。エキスパートアドバイザーのプロパティで「自動売買を許可する」チェックボックスをチェックする必要があります。 |