MT5(MQL5) Python用MetaTrader関数のlast_error
概要
プログラム実行中に発生した直近のエラーを取得します。MetaTrader 5ライブラリ関数の実行に失敗した場合にエラーコードを取得できます。
呼び出し
last_error()
戻り値
最後のエラーコード(int)と説明(str)をタプルとして返します。取得される値はGetLastError()に似ていますが、独自のエラーコードのみに適用されます。
定数 | 値 | 説明 |
---|---|---|
RES_S_OK | 1 | 一般的な成功 |
RES_E_FAIL | -1 | 一般的な失敗 |
RES_E_INVALID_PARAMS | -2 | 無効な引数/パラメータ |
RES_E_NO_MEMORY | -3 | メモリ条件なし |
RES_E_NOT_FOUND | -4 | 履歴なし |
RES_E_INVALID_VERSION | -5 | 無効なバージョン |
RES_E_AUTH_FAILED | -6 | 許可が失敗 |
RES_E_UNSUPPORTED | -7 | サポートされていないメソッド |
RES_E_AUTO_TRADING_DISABLED | -8 | 自動売買が無効 |
RES_E_INTERNAL_FAIL | -10000 | 内部IPCの一般的なエラー |
RES_E_INTERNAL_FAIL_SEND | -10001 | 内部IPC送信の失敗 |
RES_E_INTERNAL_FAIL_RECEIVE | -10002 | 内部IPC受信の失敗 |
RES_E_INTERNAL_FAIL_INIT | -10003 | 内部IPC初期化の失敗 |
RES_E_INTERNAL_FAIL_CONNECT | -10003 | 内部IPCのipcなし |
RES_E_INTERNAL_FAIL_TIMEOUT | -10005 | 内部タイムアウト |
サンプルコード
エラーを取得して出力します。要素それぞれの型も調べます。
import MetaTrader5 as mt5
mt5.initialize()
last_error = mt5.last_error()
print('# そのまま出力する')
print(last_error, '# last_error')
print('\n')
print('# 型(type)を調べる')
print(type(last_error), '# type(last_error)')
print('\n')
print('# タプルから要素を一つずつ取り出す')
for item in last_error:
print(item, '# item value')
print(type(item), '# type(item)')
print('\n')
print('# 誤ったパスワードで取引口座ログインを実行してlast_error()がどのようになるか確認してみる')
print("# mt5.login(58091308, 'fakepassword')")
authorized = mt5.login(58091308, 'fakepassword')
print('ログイン結果: ', authorized, '# Falseは口座接続失敗')
print('# last_error()を取得する')
print("# last_error = mt5.last_error()")
last_error = mt5.last_error()
print('# そのまま出力する')
print(last_error, '# last_error')
print('\n')
mt5.shutdown()
結果
実行に成功していた場合は1(=成功)が返されます。
取引口座へのログインパスワードを意図的に間違えてlast_error()の結果を確認すると、結果は-2(Terminal: Invalid params)が返りました。
# そのまま出力する
(1, 'Success') # last_error
# 型(type)を調べる
<class 'tuple'> # type(last_error)
# タプルから要素を一つずつ取り出す
1 # item value
<class 'int'> # type(item)
Success # item value
<class 'str'> # type(item)
# 誤ったパスワードで取引口座ログインを実行してlast_error()がどのようになるか確認してみる
# mt5.login(58091308, 'fakepassword')
ログイン結果: False # Falseは口座接続失敗
# last_error()を取得する
# last_error = mt5.last_error()
# そのまま出力する
(-2, 'Terminal: Invalid params') # last_error
【参考】MQL5公式ページ
コメント / Comments