
MT5 MT5 取引サーバーのリターンコード
10024
- 定数名
TRADE_RETCODE_TOO_MANY_REQUESTS- メッセージ
too many requests- 意味
- リクエストが多すぎる
MT5エラー10024とは
短時間に送った注文や変更のリクエストが多すぎるときのリターンコードです。エラー時の再送ループや、毎ティックのポジション変更が典型的な原因です。
ログの表示例
CTrade::PositionModify: modify position #123456 USDJPY [too many requests]
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー10024の主な原因
- 失敗時に待ち時間なしで再送している
- トレーリングストップを毎ティック更新している
- 同じ口座で多数のEAが同時に動いている
MT5エラー10024の対処法
- 再送するときは Sleep() で間隔をあけ、回数に上限を設ける
- SL変更は一定幅以上動いたときだけ行う
コード例(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に組み込むときは、変数名や設定値を合わせてください。












