
MT5 MT5 取引サーバーのリターンコード
10025
- 定数名
TRADE_RETCODE_NO_CHANGES- メッセージ
no changes- 意味
- 変更内容がない
MT5エラー10025とは
ポジションや注文の変更リクエストに、現在と同じ値を指定したときのリターンコードです。MT4 のエラー1にあたります。
ログの表示例
CTrade::PositionModify: modify position #123456 USDJPY (sl: 150.000, tp: 151.000) [no changes]
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー10025の主な原因
- 現在と同じ SL・TP で PositionModify() している
- トレーリング処理が値の変化を確認せずに毎回変更を送っている
MT5エラー10025の対処法
- 新しい SL・TP を NormalizeDouble() で丸めてから、現在値と比較する
- 差がポイントの半分より大きいときだけ変更する
コード例(MQL5)
// 値が変わるときだけ SL を変更する(10025・10016・10029 対策)(MQL5)
#include <Trade\Trade.mqh>
CTrade trade;
void TrailBuy(ulong ticket, double trailPips)
{
if(!PositionSelectByTicket(ticket)) return;
double pip = (_Digits == 3 || _Digits == 5) ? _Point * 10 : _Point;
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double newSl = NormalizeDouble(bid - trailPips * pip, _Digits);
double curSl = PositionGetDouble(POSITION_SL);
double tp = PositionGetDouble(POSITION_TP);
long level = MathMax(SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL),
SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL));
if(newSl <= curSl + _Point / 2) return; // 変化なし・不利な方向なら送らない
if(bid - newSl < level * _Point) return; // ストップレベル・フリーズレベルの内側
if(!trade.PositionModify(ticket, newSl, tp))
Print("retcode=", trade.ResultRetcode(), " ", trade.ResultRetcodeDescription());
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












