エラーコード定数(ERR_○○)
エラーコード定数(ERR_○○)は、プログラム実行時のエラー内容を知るための定数です。
例えば、注文が通らなかった場合、ERR_INVALID_TRADE_VOLUMEなどのエラー定数が使用されます。
エラーコードは、システムが自動的に_LastError変数に格納するものなので、プログラムに記述する必要はありませんが、デバッグするときに非常に便利なので、覚えておくと良いでしょう。
エラーコード定数は、以下の関数で使います。
- GetLastError関数:最近のエラーコードを返す関数
- ErrorDescription関数:エラーコードの内容を返す関数
エラーコード定数(ERR_○○)
定数 | 数値 | 説明 |
ERR_NO_ERROR | 0 | エラーはありません No error returned |
ERR_NO_RESULT | 1 | エラーはありませんが、結果が不明です No error returned, but the result is unknown |
ERR_COMMON_ERROR | 2 | 一般的なエラー Common error |
ERR_INVALID_TRADE_PARAMETERS | 3 | 無効な取引パラメータ Invalid trade parameters |
ERR_SERVER_BUSY | 4 | トレードサーバーがビジー状態です Trade server is busy |
ERR_OLD_VERSION | 5 | クライアントターミナルのバージョンが古い Old version of the client terminal |
ERR_NO_CONNECTION | 6 | トレードサーバーに接続していません No connection with trade server |
ERR_NOT_ENOUGH_RIGHTS | 7 | 権限が十分ではありません Not enough rights |
ERR_TOO_FREQUENT_REQUESTS | 8 | 要求が頻繁過ぎます Too frequent requests |
ERR_MALFUNCTIONAL_TRADE | 9 | 異常な取引操作です Malfunctional trade operation |
ERR_ACCOUNT_DISABLED | 64 | 許可されていないアカウントです Account disabled |
ERR_INVALID_ACCOUNT | 65 | 無効なアカウントです Invalid account |
ERR_TRADE_TIMEOUT | 128 | トレードタイムアウト Trade timeout |
ERR_INVALID_PRICE | 129 | 無効な価格です Invalid price |
ERR_INVALID_STOPS | 130 | 無効なストップ設定です Invalid stops |
ERR_INVALID_TRADE_VOLUME | 131 | 無効なトレード量(lot数)です Invalid trade volume |
ERR_MARKET_CLOSED | 132 | 市場が閉じています Market is closed |
ERR_TRADE_DISABLED | 133 | トレード無効設定になっています Trade is disabled |
ERR_NOT_ENOUGH_MONEY | 134 | 証拠金が不足しています Not enough money |
ERR_PRICE_CHANGED | 135 | 価格が変更されました Price changed |
ERR_OFF_QUOTES | 136 | レートが提示されていません Off quotes |
ERR_BROKER_BUSY | 137 | ブローカーがビジー状態です Broker is busy |
ERR_REQUOTE | 138 | レート再提示 Requote |
ERR_ORDER_LOCKED | 139 | 注文がロックされています Order is locked |
ERR_LONG_POSITIONS_ONLY_ALLOWED | 140 | ロングエントリーのみ許可されています Buy orders only allowed |
ERR_TOO_MANY_REQUESTS | 141 | 要求が多過ぎます Too many requests |
ERR_TRADE_MODIFY_DENIED | 145 | 変更注文が市場提示価格に近すぎる為、拒否されました。 Modification denied because order is too close to market |
ERR_TRADE_CONTEXT_BUSY | 146 | トレードコンテキストがビジーです Trade context is busy |
ERR_TRADE_EXPIRATION_DENIED | 147 | 有効期限設定はブローカーによって拒否されました Expirations are denied by broker |
ERR_TRADE_TOO_MANY_ORDERS | 148 | 保留中の注文量がブローカーによって設定された上限に達しています The amount of open and pending orders has reached the limit set by the broker |
ERR_TRADE_HEDGE_PROHIBITED | 149 | 両建ては無効になっています An attempt to open an order opposite to the existing one when hedging is disabled |
ERR_TRADE_PROHIBITED_BY_FIFO | 150 | FIFOルールに違反したポジション決済をしようとしています An attempt to close an order contravening the FIFO rule |
ERR_NO_MQLERROR | 4000 | エラーはありません No error returned |
ERR_WRONG_FUNCTION_POINTER | 4001 | 不正な関数ポインタ Wrong function pointer |
ERR_ARRAY_INDEX_OUT_OF_RANGE | 4002 | 配列インデックスの範囲外指定。 Array index is out of range. |
ERR_NO_MEMORY_FOR_CALL_STACK | 4003 | 関数呼び出しの為のスタックメモリがありません No memory for function call stack |
ERR_RECURSIVE_STACK_OVERFLOW | 4004 | スタックオーバーフロー Recursive stack overflow |
ERR_NOT_ENOUGH_STACK_FOR_PARAM | 4005 | 引数の為のスタックが不十分 Not enough stack for parameter |
ERR_NO_MEMORY_FOR_PARAM_STRING | 4006 | 文字列引数の為のメモリ不足 No memory for parameter string |
ERR_NO_MEMORY_FOR_TEMP_STRING | 4007 | 文字列の為のメモリ不足 No memory for temp string |
ERR_NOT_INITIALIZED_STRING | 4008 | 文字列は初期化されません Not initialized string |
ERR_NOT_INITIALIZED_ARRAYSTRING | 4009 | 配列文字列は初期化されません Not initialized string in array |
ERR_NO_MEMORY_FOR_ARRAYSTRING | 4010 | 配列文字列の為のメモリ不足 No memory for array string |
ERR_TOO_LONG_STRING | 4011 | 文字列が長過ぎです Too long string |
ERR_REMAINDER_FROM_ZERO_DIVIDE | 4012 | ゼロ除算(余剰)をしています Remainder from zero divide |
ERR_ZERO_DIVIDE | 4013 | ゼロ除算をしています Zero divide |
ERR_UNKNOWN_COMMAND | 4014 | 不明なコマンド Unknown command |
ERR_WRONG_JUMP | 4015 | 不正なジャンプ Wrong jump (never generated error). |
ERR_NOT_INITIALIZED_ARRAY | 4016 | 配列は初期化されません Not initialized array |
ERR_DLL_CALLS_NOT_ALLOWED | 4017 | DLL呼び出しが許可されていません。許可するには、EAプロパティのチェックボックスで設定します DLL calls are not allowed |
ERR_CANNOT_LOAD_LIBRARY | 4018 | ライブラリをロードできません Cannot load library |
ERR_CANNOT_CALL_FUNCTION | 4019 | 関数を呼び出せません Cannot call function |
ERR_EXTERNAL_CALLS_NOT_ALLOWED | 4020 | 外部関数の呼び出しが許可されていません。許可するには、EAプロパティのチェックボックスで設定します Expert function calls are not allowed |
ERR_NO_MEMORY_FOR_RETURNED_STR | 4021 | 関数の文字列型の戻り値の為のメモリが足りません Not enough memory for temp string returned from function |
ERR_SYSTEM_BUSY | 4022 | システムビジー System is busy (never generated error) |
ERR_DLLFUNC_CRITICALERROR | 4023 | DLL呼び出しの致命的なエラー DLL-function call critical error |
ERR_INTERNAL_ERROR | 4024 | 内部エラー Internal error |
ERR_OUT_OF_MEMORY | 4025 | メモリ不足 Out of memory |
ERR_INVALID_POINTER | 4026 | 無効なポインタ Invalid pointer |
ERR_FORMAT_TOO_MANY_FORMATTERS | 4027 | フォーマット関数で引数が多過ぎます Too many formatters in the format function |
ERR_FORMAT_TOO_MANY_PARAMETERS | 4028 | パラメータカウントが上限を超えています Parameters count exceeds formatters count |
ERR_ARRAY_INVALID | 4029 | 無効な配列 Invalid array |
ERR_CHART_NOREPLY | 4030 | チャートから返信がありません No reply from chart |
ERR_INVALID_FUNCTION_PARAMSCNT | 4050 | 無効な関数の引数数 Invalid function parameters count |
ERR_INVALID_FUNCTION_PARAMVALUE | 4051 | 無効な関数の引数値 Invalid function parameter value |
ERR_STRING_FUNCTION_INTERNAL | 4052 | 文字列関数の内部エラー String function internal error |
ERR_SOME_ARRAY_ERROR | 4053 | 配列エラー Some array error |
ERR_INCORRECT_SERIESARRAY_USING | 4054 | 不正な時系列配列使用 Incorrect series array using |
ERR_CUSTOM_INDICATOR_ERROR | 4055 | カスタムインジケータエラー Custom indicator error |
ERR_INCOMPATIBLE_ARRAYS | 4056 | 互換性の無い配列 Arrays are incompatible |
ERR_GLOBAL_VARIABLES_PROCESSING | 4057 | グローバル変数処理エラー Global variables processing error |
ERR_GLOBAL_VARIABLE_NOT_FOUND | 4058 | グローバル変数が見つかりません Global variable not found |
ERR_FUNC_NOT_ALLOWED_IN_TESTING | 4059 | 関数がテストモードで許可されていません Function is not allowed in testing mode |
ERR_FUNCTION_NOT_CONFIRMED | 4060 | 関数が呼び出し許可されていません Function is not allowed for call |
ERR_SEND_MAIL_ERROR | 4061 | メール送信エラー Send mail error |
ERR_STRING_PARAMETER_EXPECTED | 4062 | 文字列引数が必要 String parameter expected |
ERR_INTEGER_PARAMETER_EXPECTED | 4063 | 整数引数が必要 Integer parameter expected |
ERR_DOUBLE_PARAMETER_EXPECTED | 4064 | double引数が必要 Double parameter expected |
ERR_ARRAY_AS_PARAMETER_EXPECTED | 4065 | 配列引数が必要 Array as parameter expected |
ERR_HISTORY_WILL_UPDATED | 4066 | 要求したヒストリーデータが更新中 Requested history data is in updating state |
ERR_TRADE_ERROR | 4067 | 内部トレードエラー Internal trade error |
ERR_RESOURCE_NOT_FOUND | 4068 | リソースが見つかりません Resource not found |
ERR_RESOURCE_NOT_SUPPORTED | 4069 | リソースがサポートされていません Resource not supported |
ERR_RESOURCE_DUPLICATED | 4070 | リソースが重複しています Duplicate resource |
ERR_INDICATOR_CANNOT_INIT | 4071 | カスタムインジケータを初期化できません Custom indicator cannot initialize |
ERR_INDICATOR_CANNOT_LOAD | 4072 | カスタムインジータをロードできません Cannot load custom indicator |
ERR_NO_HISTORY_DATA | 4073 | ヒストリーデータがありません No history data |
ERR_NO_MEMORY_FOR_HISTORY | 4074 | ヒストリーデータの為のメモリがありません No memory for history data |
ERR_NO_MEMORY_FOR_INDICATOR | 4075 | インジケータ計算の為のメモリがありません Not enough memory for indicator calculation |
ERR_END_OF_FILE | 4099 | ファイルの終わり End of file |
ERR_SOME_FILE_ERROR | 4100 | ファイルエラー Some file error |
ERR_WRONG_FILE_NAME | 4101 | 不正なファイル名 Wrong file name |
ERR_TOO_MANY_OPENED_FILES | 4102 | ファイルを開き過ぎています Too many opened files |
ERR_CANNOT_OPEN_FILE | 4103 | ファイルが開けません Cannot open file |
ERR_INCOMPATIBLE_FILEACCESS | 4104 | 互換性の無いファイルアクセス Incompatible access to a file |
ERR_NO_ORDER_SELECTED | 4105 | オーダー選択されていません No order selected |
ERR_UNKNOWN_SYMBOL | 4106 | 不明なシンボル Unknown symbol |
ERR_INVALID_PRICE_PARAM | 4107 | 無効な価格 Invalid price |
ERR_INVALID_TICKET | 4108 | 無効なチケット Invalid ticket |
ERR_TRADE_NOT_ALLOWED | 4109 | トレードが許可されていません。許可するには、EAプロパティのチェックボックスで設定します Trade is not allowed. Enable checkbox “Allow live trading” in the Expert Advisor properties |
ERR_LONGS_NOT_ALLOWED | 4110 | 買い注文は許可されていません。許可するには、EAプロパティで設定します Longs are not allowed. Check the Expert Advisor properties |
ERR_SHORTS_NOT_ALLOWED | 4111 | 売り注文は許可されていません。許可するには、EAプロパティで設定します Shorts are not allowed. Check the Expert Advisor properties |
ERR_TRADE_EXPERT_DISABLED_BY_SERVER | 4112 | EA・スクリプトによる自動売買はトレードサーバーで許可されていません Automated trading by Expert Advisors/Scripts disabled by trade server |
ERR_OBJECT_ALREADY_EXISTS | 4200 | オブジェクトが既に存在しています Object already exists |
ERR_UNKNOWN_OBJECT_PROPERTY | 4201 | 不明なオブジェクトプロパティ Unknown object property |
ERR_OBJECT_DOES_NOT_EXIST | 4202 | オブジェクトが存在していません Object does not exist |
ERR_UNKNOWN_OBJECT_TYPE | 4203 | 不明なオブジェクトタイプ Unknown object type |
ERR_NO_OBJECT_NAME | 4204 | オブジェクト名がありません No object name |
ERR_OBJECT_COORDINATES_ERROR | 4205 | オブジェクト調整エラー Object coordinates error |
ERR_NO_SPECIFIED_SUBWINDOW | 4206 | サブウインドウを指定出来ません No specified subwindow |
ERR_SOME_OBJECT_ERROR | 4207 | グラフィカルオブジェクトエラー Graphical object error |
ERR_CHART_PROP_INVALID | 4210 | 不正なチャートプロパティ Unknown chart property |
ERR_CHART_NOT_FOUND | 4211 | チャートが見つかりません Chart not found |
ERR_CHARTWINDOW_NOT_FOUND | 4212 | チャートサブウインドウが見つかりません Chart subwindow not found |
ERR_CHARTINDICATOR_NOT_FOUND | 4213 | チャートインジケータが見つかりません Chart indicator not found |
ERR_SYMBOL_SELECT | 4220 | シンボル選択エラー Symbol select error |
ERR_NOTIFICATION_ERROR | 4250 | 通知エラー Notification error |
ERR_NOTIFICATION_PARAMETER | 4251 | 通知パラメータエラー Notification parameter error |
ERR_NOTIFICATION_SETTINGS | 4252 | 通知無効 Notifications disabled |
ERR_NOTIFICATION_TOO_FREQUENT | 4253 | 通知を頻繁に送り過ぎ Notification send too frequent |
ERR_FTP_NOSERVER | 4260 | FTPサーバーが指定されていません FTP server is not specified |
ERR_FTP_NOLOGIN | 4261 | FTPログインが指定されていません |
ERR_FTP_CONNECT_FAILED | 4262 | FTP接続に失敗しました FTP login is not specified |
ERR_FTP_CLOSED | 4263 | FTP接続が閉じられました FTP connection closed |
ERR_FTP_CHANGEDIR | 4264 | サーバー上でFTPパスが見つかりません FTP path not found on server |
ERR_FTP_FILE_ERROR | 4265 | FTPサーバーで送信するディレクトリ(MQL4\Files)にファイルがありません File not found in the MQL4\Files directory to send on FTP server |
ERR_FTP_ERROR | 4266 | FTPデータ送信中のエラー Common error during FTP data transmission |
ERR_FILE_TOO_MANY_OPENED | 5001 | ファイルを開き過ぎ Too many opened files |
ERR_FILE_WRONG_FILENAME | 5002 | 不正なファイル名 Wrong file name |
ERR_FILE_TOO_LONG_FILENAME | 5003 | ファイル名が長すぎます Too long file name |
ERR_FILE_CANNOT_OPEN | 5004 | ファイルを開けません Cannot open file |
ERR_FILE_BUFFER_ALLOCATION_ERROR | 5005 | テキストファイルのバッファ割り当てエラー Text file buffer allocation error |
ERR_FILE_CANNOT_DELETE | 5006 | ファイルを削除できません Cannot delete file |
ERR_FILE_INVALID_HANDLE | 5007 | 無効なファイルハンドル(ファイルがオープン・クローズされていない) Invalid file handle (file closed or was not opened) |
ERR_FILE_WRONG_HANDLE | 5008 | 不正なファイルハンドル(ハンドルインデックスがハンドルテーブル外) Wrong file handle (handle index is out of handle table) |
ERR_FILE_NOT_TOWRITE | 5009 | FILE_WRITEフラグ付きでオープンする必要があります File must be opened with FILE_WRITE flag |
ERR_FILE_NOT_TOREAD | 5010 | FILE_READフラグ付きでオープンする必要があります File must be opened with FILE_READ flag |
ERR_FILE_NOT_BIN | 5011 | FILE_BINフラグ付きでオープンする必要があります File must be opened with FILE_BIN flag |
ERR_FILE_NOT_TXT | 5012 | FILE_TXTフラグ付きでオープンする必要があります File must be opened with FILE_TXT flag |
ERR_FILE_NOT_TXTORCSV | 5013 | FILE_TXT又はFILE_CSVフラグ付きでオープンする必要があります File must be opened with FILE_TXT or FILE_CSV flag |
ERR_FILE_NOT_CSV | 5014 | FILE_CSVフラグ付きでオープンする必要があります File must be opened with FILE_CSV flag |
ERR_FILE_READ_ERROR | 5015 | ファイル読み込みエラー File read error |
ERR_FILE_WRITE_ERROR | 5016 | ファイル書き込みエラー File write error |
ERR_FILE_BIN_STRINGSIZE | 5017 | バイナリファイルの為に文字列サイズを指定する必要があります String size must be specified for binary file |
ERR_FILE_INCOMPATIBLE | 5018 | 互換性の無いファイル(.txt:文字列ファイル, .bin:他ファイル) Incompatible file (for string arrays-TXT, for others-BIN) |
ERR_FILE_IS_DIRECTORY | 5019 | ファイルではありません。ディレクトリです。 File is directory not file |
ERR_FILE_NOT_EXIST | 5020 | ファイルが存在しません File does not exist |
ERR_FILE_CANNOT_REWRITE | 5021 | ファイルを書き換える事は出来ません File cannot be rewritten |
ERR_FILE_WRONG_DIRECTORYNAME | 5022 | 不正なディレクトリ名 Wrong directory name |
ERR_FILE_DIRECTORY_NOT_EXIST | 5023 | ディレクトリが存在しません Directory does not exist |
ERR_FILE_NOT_DIRECTORY | 5024 | 指定されたファイルはディレクトリではありません Specified file is not directory |
ERR_FILE_CANNOT_DELETE_DIRECTORY | 5025 | ディレクトリを削除する事は出来ません Cannot delete directory |
ERR_FILE_CANNOT_CLEAN_DIRECTORY | 5026 | ディレクトリ内のデータを削除する事は出来ません Cannot clean directory |
ERR_FILE_ARRAYRESIZE_ERROR | 5027 | 配列サイズ変更エラー Array resize error |
ERR_FILE_STRINGRESIZE_ERROR | 5028 | 文字列サイズ変更エラー String resize error |
ERR_FILE_STRUCT_WITH_OBJECTS | 5029 | 構造体に文字列または動的配列が含まれています Structure contains strings or dynamic arrays |
ERR_WEBREQUEST_INVALID_ADDRESS | 5200 | 無効なURL Invalid URL |
ERR_WEBREQUEST_CONNECT_FAILED | 5201 | 指定されたURLへの接続に失敗しました Failed to connect to specified URL |
ERR_WEBREQUEST_TIMEOUT | 5202 | タイムアウト Timeout exceeded |
ERR_WEBREQUEST_REQUEST_FAILED | 5203 | HTTPリクエスト失敗 HTTP request failed |
ERR_USER_ERROR_FIRST | 65536 | ユーザー定義エラーは、このコードから始まります User defined errors start with this code |
エラーコード定数(ERR_○○)の使い方
エラーが起こったとき、システムが自動的に_LastError変数に、適切なエラーコード定数を格納します。
_LastError変数の値を取得するために、GetLastError関数を使います。
GetLastError関数を使うことで、エラーコードの番号を知ることができます。
エラーコードの番号を知ることができれば、エラーの内容をErrorDescription関数を使って表示させることができるので、デバッグするときにとても役立ちます。
例えば、以下のように使用します。
#property strict
//ライブラリをインクルード
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| スクリプトスタート
//+------------------------------------------------------------------+
void OnStart()
{
int ea_ticket_res;
// エラーになるようにLot:0で発注
ea_ticket_res = OrderSend( // オーダー送信
Symbol(), // 通貨ペア
OP_BUY, // オーダータイプ[OP_BUY / OP_SELL]
0.00000, // ロット[0.01単位]
Ask, // オーダープライスレート
20, // スリップ上限 (int)[分解能 0.1pips]
0, // ストップレート
0, // リミットレート
"エラーテスト", // オーダーコメント
999, // マジックナンバー(管理用)
0, // オーダーリミット時間
clrRed // オーダーアイコンカラー
);
//オーダーエラー
if ( ea_ticket_res == -1 ) {
int error_code;
string error_detail;
// エラーコード取得
error_code = GetLastError();
// エラー内容取得
error_detail = ErrorDescription(error_code);
if ( error_code != ERR_NO_ERROR ) {
printf( "エラーコード:%d 内容:%s" , error_code , error_detail);
}
}
}
上記のプログラムを実行することで、以下のような結果を得ることができます。
「エラーコード: 4051 詳細:invalid function parameter value」