
MT5 MT5 取引サーバーのリターンコード
10036
- 定数名
TRADE_RETCODE_POSITION_CLOSED- メッセージ
position closed- 意味
- 指定したポジションはすでに決済されている
MT5エラー10036とは
決済や変更をしようとしたポジションが、すでに決済されていたときのリターンコードです。SL・TPでの決済と、EAの決済処理がほぼ同時に起きたときなどに出ます。
ログの表示例
CTrade::PositionClose: close position #123456 sell 0.10 USDJPY [position closed]
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー10036の主な原因
- SL・TPやストップアウトで決済された直後に、EAが同じポジションを決済しようとした
- 保存していた古いチケットでポジションを操作した
MT5エラー10036の対処法
- 操作の直前に PositionSelectByTicket() でポジションが存在するか確認する
- ポジションは毎回ループで探し、古いチケットを使い回さない
コード例(MQL5)
// 自分のポジションをチケットで探して決済する(4753・10036 対策)(MQL5)
#include <Trade\Trade.mqh>
CTrade trade;
input long InpMagic = 12345;
void CloseMyPositions()
{
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i); // 選択も同時に行われる
if(ticket == 0) continue;
if(PositionGetString(POSITION_SYMBOL) != _Symbol) continue;
if(PositionGetInteger(POSITION_MAGIC) != InpMagic) continue;
if(!trade.PositionClose(ticket))
PrintFormat("決済失敗 #%I64u retcode=%u %s", ticket, trade.ResultRetcode(), trade.ResultRetcodeDescription());
}
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












