[MQL4] GetLastError() で取得したエラーコードをエラーメッセージに変換する方法
MQL4 の関数の中には、失敗した場合、GetLastError() でエラーコードを取得できるものがあります。
しかし、このエラーコードは Trade Server Return Codes に載ってないものが多く、そのままでは役に立ちません。
そのため、ErrorDescription()
という標準関数が用意されています1。
「載ってないものが多く」と書いたのですが、Runtime Errors の方には 4000番台のエラーも載っていました2。
Trade Server Return Codes は Runtime Errors から若い番号のものを抜粋した表のようです。
OrderModify() 等は 4000番台のエラーも返すのに、リンクされているドキュメントが不十分というのは不親切だなぁ。
ErrorDescription()
の使用方法
まず stdlib.mqh
を include します。
1 | #include <stdlib.mqh> |
あとは以下のように GetLastError()
で取得したエラーコードを与えると、対応したエラーメッセージが返されます。
1 2 3 4 5 6 7 | if (! OrderModify (ticket, price, stoploss, takeprofit, expiration)) { int error = GetLastError (); printf ( "OrderModify error \"%s\"(%d)" , ErrorDescription(error), error); } // 結果 // OrderModify error "invalid ticket"(4108) |
なお、GetLastError()
は2度呼ぶと値が変わってしまうので、上記のように変数で一度受けて使用しましょう。
参考