order_sendの戻り値について

投稿者: | 2022年8月21日

order_sendにより売買して、その戻り値をretcode で確認することがよくあります。その場合に、単にリクエスト完了したかどうかを確認しているのみでしたが、これでは、特にクローズの際に全てのクローズが取得できていないことに気づきました。

result = mt5.order_send(request)
if result.retcode == mt5.TRADE_RETCODE_DONE:

これは、結果の戻り値には、リクエスト完了のみならず、以下の様々な状態の場合がるからでした。
MqlTradeResult.retcode の値:
TRADE_RETCODE_PLACED … 注文が出された
TRADE_RETCODE_DONE … リクエスト完了
TRADE_RETCODE_DONE_PARTIAL … リクエストが一部完了
TRADE_RETCODE_NO_CHANGES … リクエストに変更なし

従い、結果については上記のパターンの場合には、何らかの注文段階に入ったとみなすことになると思いますが、注文がリクエスト完了したか否かについては、history_deals_getによりDealして決済されたものを確認するのが確実です。

私は、よくあるrecodeがリクエスト完了ならば、取引成立と判断して結果を抽出していたのですが、実際には、戻り値の段階で成立していない場合もあり、リクエスト完了だけでは全て確認できていないことに気づきました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA