2009.10.27 22:49:11 2009.04.01 03:23 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50975000 sl 1.32780000 tp 1.51157000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 03:23 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 03:15 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50908000 sl 1.32713000 tp 1.51090000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 03:15 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 03:10 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50853000 sl 1.32658000 tp 1.51035000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 03:10 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 03:10 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50843000 sl 1.32648000 tp 1.51025000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 03:10 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 03:10 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50848000 sl 1.32653000 tp 1.51030000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 03:10 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 03:09 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50803000 sl 1.32608000 tp 1.50985000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 03:09 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 02:59 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50668000 sl 1.32472000 tp 1.50850000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 02:59 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50749000 sl 1.32553000 tp 1.50931000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50754000 sl 1.32558000 tp 1.50936000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50759000 sl 1.32563000 tp 1.50941000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50763000 sl 1.32567000 tp 1.50945000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend error 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend()- Ошибка OP_BUY. op 1.50768000 sl 1.32572000 tp 1.50950000 lot 0.11000000 free margin 164043.29600000 err 131
2009.10.27 22:49:11 2009.04.01 02:58 (777) YODJ EURCHF,M1: OrderSend error 131
такая воот ошибка, не могу понять откуда берется….
нормалайз все значения, деньги есть (в приведенном логе видно), вообщем что то я в тупике :)) какие объемы? все выставленно нормально -(
Содержание
- Не полное закрытие ордера.
- Handling OrderSend Error 131 in MetaTrader 4
- OrderSend: Error code 131
- Помогите исправить ошибку OrderModify error 1 и OrderSend error 131!
Не полное закрытие ордера.
![]()
![]()
![]()
Господа, я знаю что значит эта ошибка. я не пойму почему она выскакивает.
Нельзя роботом закрыть часть открытой позиции? При этом оставить отрытой часть не меньше минимального лота?
приведенные вами примеры сводятся к тому, что робот посылает не верный лот, или меньше минимально, или больше максимального или не нормализованный, т.е. с большим количеством знаков после запятой . в моем случае лот нормализован, больше или равен минимальному и меньше лота открытого ордера который хочу частично покрыть.
![]()
сделайте для начала закрытие просто 0,1 лота.
затем проверьте как закрывает просто объем по MODE_MINLOT.
Если получится. то работайте с тем, что надо N*. и ищите ошибку в распринтовке.
![]()
Господа, я знаю что значит эта ошибка. я не пойму почему она выскакивает.
Нельзя роботом закрыть часть открытой позиции? При этом оставить отрытой часть не меньше минимального лота?
приведенные вами примеры сводятся к тому, что робот посылает не верный лот, или меньше минимально, или больше максимального или не нормализованный, т.е. с большим количеством знаков после запятой. в моем случае лот нормализован, больше или равен минимальному и меньше лота открытого ордера который хочу частично покрыть.
![]()
void _OrderCloseByTrend(int _OrderCloseType) <
int _closeType=-1,
i,
_ticket=-1,
_points=0;
double _summ=0.0,
_closePrice=0,
_loss=0.0,
_lots=0.0;
if (_OrderCloseType==OP_BUY) <
_closeType=OP_SELL;
_closePrice=Ask;
> // End of if (_OrderCloseTyp==OP_BUY)
if (_OrderCloseType==OP_SELL) <
_closeType=OP_BUY;
_closePrice=Bid;
> // End of if (_OrderCloseType==OP_SELL)
Alert(«Закрывае прибыльные «+_TypeToStr(_closeType)+» ордера!»);
if (OrdersTotal()>0) <
for (i=OrdersTotal()-1; i>=0; i—) <
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) <
if (OrderType()==_closeType && OrderProfit()>0) <
_summ=_summ+OrderProfit();
while (!OrderClose(OrderTicket(),OrderLots(),_closePrice,0,0)) <
RefreshRates();
if (_closeType==OP_BUY) _closePrice=Bid;
if (_closeType==OP_SELL) _closePrice=Ask;
>// End of while
>// End of if (OrderType()==_closeType && OrderProfit()>0)
>// End of if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
>// End of for
>// End of if (OrdersTotal()>0)
Alert(«Закрывае убыточные «+_TypeToStr(_closeType)+» ордера!»);
while (OrdersTotal()>0 && _summ>0) <
_ticket=-1;
for (i=OrdersTotal()-1; i>=0; i—) < // Ищем самый убыточный ордер
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) <
if(OrderType()==_closeType && OrderProfit() 0)
else <
_lots=OrderLots();
> // End of else
_summ=_summ+OrderProfit();
Alert(«Пытаемся закрыть ордер — «,_ticket,», Объемом — «,_lots);
while (!OrderClose(_ticket,_lots,_closePrice,0,0)) <
RefreshRates();
if (_closeType==OP_BUY) _closePrice=Bid;
if (_closeType==OP_SELL) _closePrice=Ask;
> // End of while
> // End of if (OrderSelect(_ticket, SELECT_BY_TICKET)
>//End of while
return;
>
Источник
OrderSend Error 131 is a very frequent problem that is usually encountered when testing MT4 expert advisors. What causes this error? It is called ERR_INVALID_TRADE_VOLUME in the MetaTrader 4 documentation. It means that your expert advisor (EA) is trying to send an order with invalid trade volume. At the absolute majority of the MT4 brokers, setting some EA to open an order with 0.123 lots volume will generate this error. But sometimes, it is generated when an EA created for mini or micro accounts is used on a standard account. If you stumble upon an OrderSend Error 131 during your strategy testing, you can quickly find the wrong settings of your EA. To do so, find the standard OnInit() (or init() in older versions of MT4) function inside your EA’s code and insert these lines of code there:
The output will be valid for the current chart’s trading symbol and for the trading account type you are currently logged in. The first line will tell you how many units there are in one lot of the current trading symbol (100,000 would mean a lot). Remember that in your expert advisor’s log, this line will be first from the bottom. The second line will tell you the minimum amount of lots you can trade (this is the most usual error; you probably just need to fix the amount of lots your EA trades from 0.1 to 1). The third one will give the step size for the trade volume in lots. The fourth line will tell you the maximum number of lots that your EA can trade.
For example, a Standard trading account at Exness Forex broker generates the following information when the above-mentioned lines of code are executed on a EUR/USD chart:

This means that 1 lot comprises 100,000 units (a standard size), the minimum trade volume is 0.01 lot (so, you can trade starting from $0.10 per pip in a currency pair), the minimum trade volume step is also 0.01 lot (you can trade 0.33, 0.4 or 1.25 lot volumes, but you cannot send orders with 0.333 lot size), and the maximum volume you can use to open a position is 200 lots.
You can incorporate the MarketInfo() function at a more complex level into your EA, so that it could automatically check the allowed values and auto-correct the EA’s trade parameters. But if you don’t want to code much, you can just use the code above to find out the right values and correct the settings manually.
You can discuss your personal struggles with the OrderSend Error 131 problem on our forum if you are having trouble solving this issue on your own.
If you want to get news of the most recent updates to our guides or anything else related to Forex trading, you can subscribe to our monthly newsletter.
Источник
OrderSend: Error code 131
![]()
![]()
You should backtest the EA with a larger lot size that exceeds the margin limit,
or the broker lot size limit. Then, of course you will get an error,
— because the validation process performs that stage.
So, now you can set a new function to handle it automatically.
![]()
![]()
![]()
![]()
You can use this function to normalize volume:
You have to check if the returned value isn’t zero (it means that your requested volume is less than the minimum allowed volume).
![]()
I am using this code for Money Management, it uses NormalizeDouble for round lots and minimum lot size (0.01):
So I think MQL5 system doesn’t admit less than 0.1 lot, is it true?
![]()
![]()
You can use this function to normalize volume:
You have to check if the returned value isn’t zero (it means that your requested volume is less than the minimum allowed volume).
![]()
Yohana Parmi :
| 131 | Invalid trade volume. |
You should backtest the EA with a larger lot size that exceeds the margin limit,
or the broker lot size limit. Then, of course you will get an error,
— because the validation process performs that stage.
So, now you can set a new function to handle it automatically.
I tried this and doesn’t give that error anymore.
Now it gives a new error code 134, I tried this:
And now error 131 again.
![]()
I tried this and doesn’t give that error anymore.
Now it gives a new error code 134, I tried this:
And now error 131 again.
«If a check shows that there are insufficient funds to perform a trade operation, it is necessary to output an error message to the log instead of calling the OrderSend() function».
Just added that error message and passed the validation. Thanks to all.
Источник
Помогите исправить ошибку OrderModify error 1 и OrderSend error 131!
![]()
Советник по принципу Мартингейла, вход по сигналам индикатора CCI, eurusd, M5. Результат теста не плохой! Но..
После теста советника выдает ошибку: OrderModify error 1 и OrderSend error 131. Лот используется 1.0
Ничего не получается! Помогите наглядно поправить код советника или правильно вписать функцию отправки запроса на модификацию уровней и проверку корректности объема. Спасибо!
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
#property copyright «»
#property link «»
#include
#include
//ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
extern string MM_set = «Money Managment settings» ;
extern double Lot = 0.01 ; // разер лота для начала торгов
extern int lotdecimal = 2 ; // сколько знаков после запятой в лоте рассчитывать 0 — нормальные лоты (1), 1 — минилоты (0.1), 2 — микро (0.01)
extern double ExpoLot = 1.2 ; // на сколько умножать лот при выставлении следующего колена. пример: первый лот 0.1, серия: 0.16, 0.26, 0.43 .
bool DynamicPips = true ;
int DefaultPips= 0 ;
extern int Depth = 12 ;
extern int Grid = 2 ;
extern double slip = 2.0 ; // на сколько может отличаться цена в случае если ДЦ запросит реквоты (в последний момент немного поменяет цену)
extern double TakeProfit = 10.0 ; // по достижении скольких пунктов прибыли закрывать сделку
extern double Drop = 1500 ;
int PipStep= 0 ;
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
extern int MaxTrades = 10 ; // максимально количество одновременно открытых ордеров
extern bool UseEquityStop = FALSE ;
extern double TotalEquityRisk = 20.0 ;
extern int MagicNumber = 2222 ; // волшебное число (помогает советнику отличить свои ставки от чужих)
//extern bool UseTrailingStop = FALSE;
bool UseTimeOut = FALSE ; // использовать таймаут (закрывать сделки если они «висят» слишком долго)
double MaxTradeOpenHours = 48.0 ; // время таймаута сделок в часах (через сколько закрывать зависшие сделки)
extern string CCI_set = «CCI settings» ;
extern int CCI_Period = 21 ;
extern int CCI_Price = 2 ;
extern double CCI_Max = 300 ;
extern double CCI_Min = — 300 ;
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
double PriceTarget, StartEquity, BuyTarget, SellTarget;
double AveragePrice, SellLimit, BuyLimit;
double LastBuyPrice, LastSellPrice, Spread;
bool flag;
string EAName= «CCI Martin» ;
int timeprev = 0 , expiration;
int NumOfTrades = 0 ;
double iLots;
int cnt = 0 , total;
double Stopper = 0.0 ;
bool TradeNow = FALSE , LongTrade = FALSE , ShortTrade = FALSE ;
int ticket,Error;
bool NewOrdersPlaced = FALSE , NeedModifyOrder = False ;
double AccountEquityHighAmt, PrevEquity;
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
int init() <
Spread = MarketInfo ( Symbol (), MODE_SPREAD ) * Point ;
return ( 0 );
>
int deinit() <
return ( 0 );
>
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
int start()
<
double PrevCl;
double CurrCl;
//*защита от резкого движения*//
if (( iCCI ( NULL , 30 , 55 , 0 , 0 )>Drop && ShortTrade)||( iCCI ( NULL , 30 , 55 , 0 , 0 ) Print ( «Closed All due to TimeOut» );
>
if (timeprev == Time [ 0 ]) return ( 0 ); //new bar apear check
timeprev = Time [ 0 ];
if (DynamicPips)
<
double hival= High [ iHighest ( NULL , 0 , MODE_HIGH ,Depth, 1 )]; // calculate highest and lowest price from last bar to 24 bars ago
double loval= Low [ iLowest ( NULL , 0 , MODE_LOW ,Depth, 1 )]; // chart used for symbol and time period
PipStep= NormalizeDouble ((hival-loval)/Grid/ Point , 0 ); // calculate pips for spread between orders
Print ( «PipStep = » ,PipStep);
>
double CurrentPairProfit = CalculateProfit();
if (UseEquityStop)
if (CurrentPairProfit 0.0 && MathAbs (CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh())
<
CloseThisSymbolAll();
Print ( «Closed All due to Stop Out» );
NewOrdersPlaced = FALSE ;
>
total = CountOfOrders(); //calculating open orders function
if (total > 0 && total Print ( «total > 0» );
for ( int i = 0 ; i OrdersTotal (); i++)
if ( OrderSelect ( i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
<
switch ( OrderType ())
<
case OP_BUY :
LongTrade = TRUE ;
ShortTrade = FALSE ;
break ;
case OP_SELL :
LongTrade = FALSE ;
ShortTrade = TRUE ;
break ;
>
break ;
>
LastBuyPrice = FindLastBuyPrice();
LastSellPrice = FindLastSellPrice();
if (LongTrade && LastBuyPrice — Ask >= PipStep * Point ) TradeNow = TRUE ;
if (ShortTrade && Bid — LastSellPrice >= PipStep * Point ) TradeNow = TRUE ;
>
else
<
Print ( «total = 0» );
ShortTrade = FALSE ;
LongTrade = FALSE ;
TradeNow = TRUE ;
StartEquity = AccountEquity ();
>
if (total > 0 )
if (TradeNow)
<
iLots = NormalizeDouble (Lot * MathPow (ExpoLot, total), lotdecimal);
if (ShortTrade)
<
ticket = SendMarketOrder( OP_SELL , iLots, 0 , 0 , MagicNumber, EAName + «-» + NumOfTrades + «-» + PipStep);
>
if (LongTrade)
<
ticket = SendMarketOrder( OP_BUY , iLots, 0 , 0 , MagicNumber, EAName + «-» + NumOfTrades + «-» + PipStep);
>
if (ticket > 0 )
<
TradeNow = FALSE ;
NewOrdersPlaced = TRUE ;
NeedModifyOrder = TRUE ;
>
else
return ( 0 );
>
if (TradeNow && total 1 ) <
Print ( «Open first order» );
ticket = 0 ;
PrevCl = iClose ( Symbol (), 0 , 2 );
CurrCl = iClose ( Symbol (), 0 , 1 );
if (PrevCl > CurrCl)
<
Print ( «Achieved condition SELL» );
if ( iCCI ( Symbol (), Period (), CCI_Period, CCI_Price, 1 ) Print ( «successful check» );
ticket = SendMarketOrder( OP_SELL , Lot, TakeProfit, 0 , MagicNumber, EAName + «-» + total);
>
>
if (PrevCl Print ( «Achieved condition BUY» );
if ( iCCI ( Symbol (), Period (), CCI_Period, CCI_Price, 1 ) >= CCI_Max)
<
Print ( «successful check» );
ticket = SendMarketOrder( OP_BUY , Lot, TakeProfit, 0 , MagicNumber, EAName + «-» + total);
>
>
if (ticket > 0 )
<
TradeNow = FALSE ;
NewOrdersPlaced = TRUE ;
NeedModifyOrder = False ;
>
else
return ( 0 );
>
if (ShortTrade)
<
PriceTarget = AveragePrice — TakeProfit * Point ;
NeedModifyOrder = TRUE ;
>
if (LongTrade)
<
PriceTarget = AveragePrice + TakeProfit * Point ;
NeedModifyOrder = TRUE ;
>
>
if (NewOrdersPlaced)
if (NeedModifyOrder)
<
Print ( «Modify all orders in the market» );
for ( int i1 = 0 ; i1 OrdersTotal (); i1++)
if ( OrderSelect (i1, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
ModifyOrder(PriceTarget);
NewOrdersPlaced = FALSE ;
>
return ( 0 );
>
//ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
int CountOfOrders()
<
int count = 0 ;
for ( int i = 0 ; i OrdersTotal (); i++)
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if (( OrderSymbol () == Symbol ()) && ( OrderMagicNumber () == MagicNumber))
if (( OrderType () == OP_SELL ) || ( OrderType () == OP_BUY ))
count++;
return (count);
>
void CloseThisSymbolAll() <
for ( int trade = OrdersTotal () — 1 ; trade >= 0 ; trade—) <
if (! OrderSelect (trade, SELECT_BY_POS , MODE_TRADES )) Print ( «error!» );
if ( OrderSymbol () == Symbol ()) <
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber) <
if ( OrderType () == OP_BUY ) int ticket1= OrderClose ( OrderTicket (), OrderLots (), Bid , slip, Blue);
if ( OrderType () == OP_SELL ) ticket1= OrderClose ( OrderTicket (), OrderLots (), Ask , slip, Red);
>
Sleep ( 1000 );
>
>
>
//=========================================================================
int SendMarketOrder( int Type, double Lot1, int TP, int SL, int Magic, string Cmnt)
<
double Price, Take, Stop;
int Ticket, Slippage, Color, Err;
bool Delay = False ;
Print ( «SendMarketOrder function» );
while (! IsStopped ())
<
/*if(!IsExpertEnabled())
<
Error = ERR_TRADE_DISABLED;
Print(«EA trading is forbidden!»);
return(-1);
>
Print(«EA trading is allowed»);*/
if (! IsConnected ())
<
Error = ERR_NO_CONNECTION ;
Print ( «Communication is absent!» );
return (- 1 );
>
Print ( «Communication with the server is installed» );
if ( IsTradeContextBusy ())
<
Print ( «The trade stream is occupied!» );
Print ( «waiting 3 sec. » );
Sleep ( 3000 );
Delay = True ;
continue ;
>
Print ( «The trade stream is free» );
if (Delay)
<
Print ( «updating quotes» );
RefreshRates ();
Delay = False ;
>
else
<
Print ( «Delays weren’t» );
>
switch (Type)
<
case OP_BUY :
Print ( «initialize parameters for BUY-order» );
Price = NormalizeDouble ( Ask , Digits );
Take = IIFd(TP == 0 , 0 , NormalizeDouble ( Ask + TP * Point , Digits ));
Stop = IIFd(SL == 0 , 0 , NormalizeDouble ( Ask — SL * Point , Digits ));
Color = Blue;
break ;
case OP_SELL :
Print ( «iinitialize parameters for SELL-order» );
Price = NormalizeDouble ( Bid , Digits );
Take = IIFd(TP == 0 , 0 , NormalizeDouble ( Bid — TP * Point , Digits ));
Stop = IIFd(SL == 0 , 0 , NormalizeDouble ( Bid + SL * Point , Digits ));
Color = Red;
break ;
default :
Print ( «order type doesn’t conform to requirements.» );
return (- 1 );
>
Slippage = MarketInfo ( Symbol (), MODE_SPREAD );
Print ( «Slippage = » ,Slippage);
if ( IsTradeAllowed ())
<
Print ( «Trading is allowed, sending order. » );
Ticket = OrderSend ( Symbol (), Type, Lot1, Price, Slippage, Stop, Take, Cmnt, Magic, 0 , Color);
if (Ticket 0 )
<
Err = GetLastError ();
if (Err == 4 || /* SERVER_BUSY */
//Err == 130 || /* INVALID_STOPS */
Err == 135 || /* PRICE_CHANGED */
Err == 137 || /* BROKER_BUSY */
Err == 138 || /* REQUOTE */
Err == 146 || /* TRADE_CONTEXT_BUSY */
Err == 136 ) /* OFF_QUOTES */
<
Print ( «error» ) ;
Print ( «waitng 3 sec. » );
Sleep ( 3000 );
Delay = True ;
continue ;
>
else
<
Print ( «Critical error» );
Error = Err;
break ;
>
>
break ;
>
else
<
Print ( «EA trading is forbidden or trade stream is occupied!» );
Print ( «waitng 3 sec. » );
Sleep ( 3000 );
Delay = True ;
continue ;
>
>
Print ( «The order has been sent successfully. Тicket = » ,Ticket);
return (Ticket);
>
//==================================================================
double IIFd( bool condition, double ifTrue, double ifFalse)
<
if (condition) return (ifTrue); else return (ifFalse);
>
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
double CalculateProfit()
<
double Profit = 0 ;
for ( int i = 0 ; i OrdersTotal (); i++)
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if (( OrderSymbol () == Symbol ()) && ( OrderMagicNumber () == MagicNumber))
if (( OrderType () == OP_BUY ) || ( OrderType () == OP_SELL ))
Profit += OrderProfit ();
return (Profit);
>
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
double AccountEquityHigh() <
if (CountOfOrders() == 0 ) AccountEquityHighAmt = AccountEquity ();
if (AccountEquityHighAmt else AccountEquityHighAmt = AccountEquity ();
PrevEquity = AccountEquity ();
return (AccountEquityHighAmt);
>
//нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
double FindLastBuyPrice() <
double oldorderopenprice;
int oldticketnumber;
double unused = 0 ;
int ticketnumber = 0 ;
for (cnt = OrdersTotal () — 1 ; cnt >= 0 ; cnt—) <
if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )) Print ( «error!» );
if ( OrderSymbol () != Symbol () || OrderMagicNumber () != MagicNumber) continue ;
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber && OrderType () == OP_BUY ) <
oldticketnumber = OrderTicket ();
if (oldticketnumber > ticketnumber) <
oldorderopenprice = OrderOpenPrice ();
unused = oldorderopenprice;
ticketnumber = oldticketnumber;
>
>
>
return (oldorderopenprice);
>
double FindLastSellPrice() <
double oldorderopenprice;
int oldticketnumber;
double unused = 0 ;
int ticketnumber = 0 ;
for (cnt = OrdersTotal () — 1 ; cnt >= 0 ; cnt—) <
if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )) Print ( «error» );
if ( OrderSymbol () != Symbol () || OrderMagicNumber () != MagicNumber) continue ;
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber && OrderType () == OP_SELL ) <
oldticketnumber = OrderTicket ();
if (oldticketnumber > ticketnumber) <
oldorderopenprice = OrderOpenPrice ();
unused = oldorderopenprice;
ticketnumber = oldticketnumber;
>
>
>
return (oldorderopenprice);
>
//ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
double CalculateAveragePrice()
<
AveragePrice = 0 ;
double Count = 0 ;
for ( int i = 0 ; i OrdersTotal (); i++)
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
if ( OrderType () == OP_BUY || OrderType () == OP_SELL )
<
AveragePrice += OrderOpenPrice () * OrderLots ();
Count += OrderLots ();
>
if (AveragePrice > 0 && Count > 0 )
return ( NormalizeDouble (AveragePrice / Count, Digits ));
else
return ( 0 );
>
bool ModifyOrder( double takeprofit)
<
while (! IsStopped ())
<
Print ( «ModifyOrder function» );
if ( IsTradeContextBusy ())
<
Print ( «The trade stream is occupied!» );
Sleep ( 3000 );
continue ;
>
Print ( «The trade stream is free» );
if (! IsTradeAllowed ())
<
Print ( «EA trading is forbidden or trade stream is occupied!» );
Sleep ( 3000 );
continue ;
>
Print ( «EA trading is allowed, order modify #» , OrderTicket ());
if (! OrderModify ( OrderTicket (), OrderOpenPrice (), 0 , NormalizeDouble (takeprofit, Digits ), 0 , Yellow))
<
Print ( «Unable to modify order» );
int Err = GetLastError ();
Print ( «error» );
break ;
//Sleep(1000);
//continue;
>
else
<
Print ( «Order modification completed successfully» );
break ;
>
>
return ( True );
>
Источник
OrderSend Error 131 is a very frequent problem that is usually encountered when testing MT4 expert advisors. What causes this error? It is called ERR_INVALID_TRADE_VOLUME in the MetaTrader 4 documentation. It means that your expert advisor (EA) is trying to send an order with invalid trade volume. At the absolute majority of the MT4 brokers, setting some EA to open an order with 0.123 lots volume will generate this error. But sometimes, it is generated when an EA created for mini or micro accounts is used on a standard account. If you stumble upon an OrderSend Error 131 during your strategy testing, you can quickly find the wrong settings of your EA. To do so, find the standard OnInit() (or init() in older versions of MT4) function inside your EA’s code and insert these lines of code there:
The output will be valid for the current chart’s trading symbol and for the trading account type you are currently logged in. The first line will tell you how many units there are in one lot of the current trading symbol (100,000 would mean a standard-sized lot). Remember that in your expert advisor’s log, this line will be first from the bottom. The second line will tell you the minimum amount of lots you can trade (this is the most usual error; you probably just need to fix the amount of lots your EA trades from 0.1 to 1). The third one will give the step size for the trade volume in lots. The fourth line will tell you the maximum number of lots that your EA can trade.
For example, a Standard trading account at Exness Forex broker generates the following information when the above-mentioned lines of code are executed on a EUR/USD chart:

This means that 1 lot comprises 100,000 units (a standard size), the minimum trade volume is 0.01 lot (so, you can trade starting from $0.10 per pip in a dollar-based currency pair), the minimum trade volume step is also 0.01 lot (you can trade 0.33, 0.4 or 1.25 lot volumes, but you cannot send orders with 0.333 lot size), and the maximum volume you can use to open a position is 200 lots.
You can incorporate the MarketInfo() function at a more complex level into your EA, so that it could automatically check the allowed values and auto-correct the EA’s trade parameters. But if you don’t want to code much, you can just use the code above to find out the right values and correct the settings manually.
You can discuss your personal struggles with the OrderSend Error 131 problem on our forum if you are having trouble solving this issue on your own.
If you want to get news of the most recent updates to our guides or anything else related to Forex trading, you can subscribe to our monthly newsletter.
Forex trading bears intrinsic risks of loss. You must understand that Forex trading, while potentially profitable, can make you lose your money. Never trade with the money that you cannot afford to lose! Trading with leverage can wipe your account even faster.
CFDs are leveraged products and as such loses may be more than the initial invested capital. Trading in CFDs carry a high level of risk thus may not be appropriate for all investors.
What is MT4 Error 131?
The MT4 error 131 is an invalid volume OrderSend error code. It suggests that your Expert Advisor (EA) sends an order with an inappropriate trade volume to your broker’s server.
This error code may frequently appear during testing an MT4 EA, especially when there is an issue with the volume settings of your trading robot. Otherwise, it may happen due to a coding error of the expert advisor.

The biggest problem with the OrderSend error 131 is it entirely disables your trading bot from executing backtests and fresh orders. It may happen for both paid and open-source EAs, because most of the time, it occurs due to a mismatch of volume calculation methods between the EA and the serving brokers.
So, your trading platform showing an error 131 doesn’t necessarily mean you need to abandon your EA or the broker. If there is a problem with the bot’s programming, you might need a few edits with the coding. Otherwise, you may check the volume settings of your expert advisor and fix the issue by only making a few changes.
In this guide, we explain the possible scenarios of encountering the error 131. Also, we discuss a couple of solutions for getting rid of the invalid volume OrderSend problem from your MT4 platform.
Why does MT4 error 131 happen?
An MT4 error 131 may happen due to the following reasons:
The EA is using an inappropriate volume figure
Most EAs calculate a trading volume based on the risk percentage, which is entirely acceptable and fair. But the problem occurs when the calculated figure comes with more than two digits. For instance, if it is a 0.01 or 0.11 lot, then there is no problem. But if it sends an order with a volume like 0.111 or 0.245, it’ll show the error code 131.
Issues with the volume settings
How your broker recognizes a trading volume may differ depending on your trading account types. Suppose your EA is configured for a micro account, and you’re using it for a standard account. In this case, your broker may read a 0.01 lot as 0.001, considering the figure is less than the minimum order limit. As a result, the order becomes invalid, and the system shows the same OrderSend error.
How to fix MT4 error 131?
Time needed: 5 minutes.
How to fix MT4 Invalid Volume OrderSend errors
- Adjust the volume settings
If your broker fails to define the trading volume correctly, then insert the following codes to reset your volume settings:

MODE_LOTSIZE – It determines the number of units an EA will consider to count as one standard lot. Typically, a standard-size lot equals 100,000 units.
MODE_MINLOT – The minimum amount of trading volume you’ll use for executing an order. If your broker doesn’t accept 0.01 as the minimum lot size, consider replacing the value by 1.
MODE_LOTSTEP – It sets the step size of your trading volume.
MODE_MAXLOT – The maximum trading lot you can use for an order.
- Normalize the volume
Alternatively, you can try normalizing the volume configuration of the EA with the following lines of code:

This setting will keep the normalized volume lesser than the non-normalized value. For example, if the non-normalized volume is 0.1234, then the normalized volume will be 0.12.
Also, you may encounter the MT4 error 131 during backtesting an EA. In that case, simply go offline and then try backtesting again.
Spread bets and CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. 76% of retail investor accounts lose money when trading spread bets and CFDs with this provider. You should consider whether you understand how spread bets and CFDs work, and whether you can afford to take the high risk of losing your money. Professional clients can lose more than they deposit. All trading involves risk.
The value of shares, ETFs and ETCs bought through a share dealing account, a stocks and shares ISA or a SIPP can fall as well as rise, which could mean getting back less than you originally put in. Past performance is no guarantee of future results.
CFD, share dealing and stocks and shares ISA accounts provided by IG Markets Ltd, spread betting provided by IG Index Ltd. IG is a trading name of IG Markets Ltd (a company registered in England and Wales under number 04008957) and IG Index Ltd (a company registered in England and Wales under number 01190902). Registered address at Cannon Bridge House, 25 Dowgate Hill, London EC4R 2YA. Both IG Markets Ltd (Register number 195355) and IG Index Ltd (Register number 114059) are authorised and regulated by the Financial Conduct Authority.
The information on this site is not directed at residents of the United States, Belgium or any particular country outside the UK and is not intended for distribution to, or use by, any person in any country or jurisdiction where such distribution or use would be contrary to local law or regulation.
GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены
в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию
ErrorDescription(), определенную в файле stdlib.mqh.
| Константа | Значение | Описание |
|---|---|---|
| ERR_NO_ERROR | 0 | Нет ошибки |
| ERR_NO_RESULT | 1 | Нет ошибки, но результат неизвестен |
| ERR_COMMON_ERROR | 2 | Общая ошибка |
| ERR_INVALID_TRADE_PARAMETERS | 3 | Неправильные параметры |
| ERR_SERVER_BUSY | 4 | Торговый сервер занят |
| ERR_OLD_VERSION | 5 | Старая версия клиентского терминала |
| ERR_NO_CONNECTION | 6 | Нет связи с торговым сервером |
| ERR_NOT_ENOUGH_RIGHTS | 7 | Недостаточно прав |
| ERR_TOO_FREQUENT_REQUESTS | 8 | Слишком частые запросы |
| ERR_MALFUNCTIONAL_TRADE | 9 | Недопустимая операция нарушающая функционирование сервера |
| ERR_ACCOUNT_DISABLED | 64 | Счет заблокирован |
| ERR_INVALID_ACCOUNT | 65 | Неправильный номер счета |
| ERR_TRADE_TIMEOUT | 128 | Истек срок ожидания совершения сделки |
| ERR_INVALID_PRICE | 129 | Неправильная цена |
| ERR_INVALID_STOPS | 130 | Неправильные стопы |
| ERR_INVALID_TRADE_VOLUME | 131 | Неправильный объем |
| ERR_MARKET_CLOSED | 132 | Рынок закрыт |
| ERR_TRADE_DISABLED | 133 | Торговля запрещена |
| ERR_NOT_ENOUGH_MONEY | 134 | Недостаточно денег для совершения операции |
| ERR_PRICE_CHANGED | 135 | Цена изменилась |
| ERR_OFF_QUOTES | 136 | Нет цен |
| ERR_BROKER_BUSY | 137 | Брокер занят |
| ERR_REQUOTE | 138 | Новые цены |
| ERR_ORDER_LOCKED | 139 | Ордер заблокирован и уже обрабатывается |
| ERR_LONG_POSITIONS_ONLY_ALLOWED | 140 | Разрешена только покупка |
| ERR_TOO_MANY_REQUESTS | 141 | Слишком много запросов |
| ERR_TRADE_MODIFY_DENIED | 145 | Модификация запрещена, так как ордер слишком близок к рынку |
| ERR_TRADE_CONTEXT_BUSY | 146 | Подсистема торговли занята |
| ERR_TRADE_EXPIRATION_DENIED | 147 | Использование даты истечения ордера запрещено брокером |
| ERR_TRADE_TOO_MANY_ORDERS | 148 | Количество открытых и отложенных ордеров достигло предела, установленного брокером. |
| Константа | Значение | Описание |
|---|---|---|
| ERR_NO_MQLERROR | 4000 | Нет ошибки |
| ERR_WRONG_FUNCTION_POINTER | 4001 | Неправильный указатель функции |
| ERR_ARRAY_INDEX_OUT_OF_RANGE | 4002 | Индекс массива — вне диапазона |
| ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK | 4003 | Нет памяти для стека функций |
| ERR_RECURSIVE_STACK_OVERFLOW | 4004 | Переполнение стека после рекурсивного вызова |
| ERR_NOT_ENOUGH_STACK_FOR_PARAMETER | 4005 | На стеке нет памяти для передачи параметров |
| ERR_NO_MEMORY_FOR_PARAMETER_STRING | 4006 | Нет памяти для строкового параметра |
| ERR_NO_MEMORY_FOR_TEMP_STRING | 4007 | Нет памяти для временной строки |
| ERR_NOT_INITIALIZED_STRING | 4008 | Неинициализированная строка |
| ERR_NOT_INITIALIZED_ARRAYSTRING | 4009 | Неинициализированная строка в массиве |
| ERR_NO_MEMORY_FOR_ARRAYSTRING | 4010 | Нет памяти для строкового массива |
| ERR_TOO_LONG_STRING | 4011 | Слишком длинная строка |
| ERR_REMAINDER_FROM_ZERO_DIVIDE | 4012 | Остаток от деления на ноль |
| ERR_ZERO_DIVIDE | 4013 | Деление на ноль |
| ERR_UNKNOWN_COMMAND | 4014 | Неизвестная команда |
| ERR_WRONG_JUMP | 4015 | Неправильный переход |
| ERR_NOT_INITIALIZED_ARRAY | 4016 | Неинициализированный массив |
| ERR_DLL_CALLS_NOT_ALLOWED | 4017 | Вызовы DLL не разрешены |
| ERR_CANNOT_LOAD_LIBRARY | 4018 | Невозможно загрузить библиотеку |
| ERR_CANNOT_CALL_FUNCTION | 4019 | Невозможно вызвать функцию |
| ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED | 4020 | Вызовы внешних библиотечных функций не разрешены |
| ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING | 4021 | Недостаточно памяти для строки, возвращаемой из функции |
| ERR_SYSTEM_BUSY | 4022 | Система занята |
| ERR_INVALID_FUNCTION_PARAMETERS_COUNT | 4050 | Неправильное количество параметров функции |
| ERR_INVALID_FUNCTION_PARAMETER_VALUE | 4051 | Недопустимое значение параметра функции |
| ERR_STRING_FUNCTION_INTERNAL_ERROR | 4052 | Внутренняя ошибка строковой функции |
| ERR_SOME_ARRAY_ERROR | 4053 | Ошибка массива |
| ERR_INCORRECT_SERIES_ARRAY_USING | 4054 | Неправильное использование массива-таймсерии |
| ERR_CUSTOM_INDICATOR_ERROR | 4055 | Ошибка пользовательского индикатора |
| ERR_INCOMPATIBLE_ARRAYS | 4056 | Массивы несовместимы |
| ERR_GLOBAL_VARIABLES_PROCESSING_ERROR | 4057 | Ошибка обработки глобальныех переменных |
| ERR_GLOBAL_VARIABLE_NOT_FOUND | 4058 | Глобальная переменная не обнаружена |
| ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE | 4059 | Функция не разрешена в тестовом режиме |
| ERR_FUNCTION_NOT_CONFIRMED | 4060 | Функция не подтверждена |
| ERR_SEND_MAIL_ERROR | 4061 | Ошибка отправки почты |
| ERR_STRING_PARAMETER_EXPECTED | 4062 | Ожидается параметр типа string |
| ERR_INTEGER_PARAMETER_EXPECTED | 4063 | Ожидается параметр типа integer |
| ERR_DOUBLE_PARAMETER_EXPECTED | 4064 | Ожидается параметр типа double |
| ERR_ARRAY_AS_PARAMETER_EXPECTED | 4065 | В качестве параметра ожидается массив |
| ERR_HISTORY_WILL_UPDATED | 4066 | Запрошенные исторические данные в состоянии обновления |
| ERR_TRADE_ERROR | 4067 | Ошибка при выполнении торговой операции |
| ERR_END_OF_FILE | 4099 | Конец файла |
| ERR_SOME_FILE_ERROR | 4100 | Ошибка при работе с файлом |
| ERR_WRONG_FILE_NAME | 4101 | Неправильное имя файла |
| ERR_TOO_MANY_OPENED_FILES | 4102 | Слишком много открытых файлов |
| ERR_CANNOT_OPEN_FILE | 4103 | Невозможно открыть файл |
| ERR_INCOMPATIBLE_ACCESS_TO_FILE | 4104 | Несовместимый режим доступа к файлу |
| ERR_NO_ORDER_SELECTED | 4105 | Ни один ордер не выбран |
| ERR_UNKNOWN_SYMBOL | 4106 | Неизвестный символ |
| ERR_INVALID_PRICE_PARAM | 4107 | Неправильный параметр цены для торговой функции |
| ERR_INVALID_TICKET | 4108 | Неверный номер тикета |
| ERR_TRADE_NOT_ALLOWED | 4109 | Торговля не разрешена |
| ERR_LONGS_NOT_ALLOWED | 4110 | Длинные позиции не разрешены |
| ERR_SHORTS_NOT_ALLOWED | 4111 | Короткие позиции не разрешены |
| ERR_OBJECT_ALREADY_EXISTS | 4200 | Объект уже существует |
| ERR_UNKNOWN_OBJECT_PROPERTY | 4201 | Запрошено неизвестное свойство объекта |
| ERR_OBJECT_DOES_NOT_EXIST | 4202 | Объект не существует |
| ERR_UNKNOWN_OBJECT_TYPE | 4203 | Неизвестный тип объекта |
| ERR_NO_OBJECT_NAME | 4204 | Нет имени объекта |
| ERR_OBJECT_COORDINATES_ERROR | 4205 | Ошибка координат объекта |
| ERR_NO_SPECIFIED_SUBWINDOW | 4206 | Не найдено указанное подокно |
| ERR_SOME_OBJECT_ERROR | 4207 | Ошибка при работе с объектом |
July 10th, 2008
OrderSend Error 131 is a very popular problem that is usually encountered when testing MT4 expert advisors.
What causes this error? It’s called ERR_INVALID_TRADE_VOLUME
in the MT4 code. That means that your expert advisor is trying to send
an order with invalid trade volume. On the absolute majority
of the MT4 brokers setting some EA to open an order 0.123 lots will
generate this error. But sometimes it’s generated when the EA, created
for mini or micro accounts, is used on the standard account. If you
stumble on OrderSend Error 131 during your testing, you can quickly find
out the wrong settings of your EA — find the standard init() function
inside your EA’s code and insert these lines of code there:
Print(MarketInfo(Symbol(), MODE_LOTSIZE));
Print(MarketInfo(Symbol(), MODE_MINLOT));
Print(MarketInfo(Symbol(), MODE_LOTSTEP));
Print(MarketInfo(Symbol(), MODE_MAXLOT));
The first line will give you the information regarding how many units
one lot holds when you trade in this account (100000 would mean a
standard-sized
lot). Remember, that in your expert advisor’s log this line will
be first starting from down to up, not vice versa. The second line will
tell you the minimum amount of lots you can trade (this is the most
usual error; you’ll probably just need to fix the amount of lots your
EA trades from 0.1 to 1). The third one will give the minimum step
for the trade volume in lots. The fourth line will tell you the maximum
amount of lots that your EA can trade.
For example, demo account at FXOpen generates this info when I insert those lines into the code:
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 10000
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 100000
That means that 1 lot is 100,000 units (a standard size), minimum
trade volume is 0.01 lot (so, one can trade starting from
$10 on 1 position in a
dollar-based
currency pair), minimum
trade volume step is also 0.01 lot (one can trade 0.33, 0.4 or 1.25 lot
volumes, but can’t send orders with 0.333 lot size) and the maximum
volume one can use to open a position is 10,000 lots.
You can incorporate the MarketInfo() function at a more complex level
into your EA, so it could automatically check the allowed values
and correct its settings. But if you don’t want to code much, you can
just use the code above to find out the right values and correct
the settings manually.
Hi Petko,
Thanks for your reply, and for pointing out that the journal shows an error.. I looked up “mt4 ordersend error 131” and found out the following info:
Handling OrderSend Error 131 in MetaTrader 4
OrderSend Error 131 is a very popular problem that is usually encountered when testing MT4 expert advisors. What causes this error? It’s called ERR_INVALID_TRADE_VOLUME in the MT4 code. That means that your expert advisor is trying to send an order with invalid trade volume. On the absolute majority of the MT4 brokers setting some EA to open an order 0.123 lots will generate this error. But sometimes it’s generated when the EA, created for mini or micro accounts, is used on the standard account.
I am using a micro live account, could it be that the EA is programmed with the wrong lot size for the account I have? Or does the .json exported from MT4 file know all that stuff automatically?
Yes, I know my data is very limited.. it has been a huge struggle for me. My understanding is the the best data is the ACTUAL data from your broker, but here in the UK, not many brokers seem to offer MT4 that comes with data longer than a few months when you first install it.
My method to get around this, so far, has been to set up a VPS purely for the purpose of collecting data – I first started collecting it in January 2018, but very frustratingly (and I hold my hand up here for negligence), the VPS must have been rebooted by the hosting provider, possibly for maintenance or similar, some time in June 2018, because after a very busy summer/autumn with my other business, I checked the VPS in Jan 2019 to assess the data it had collected, only to find it had not been doing so since Jun 2018. Hence using the small amount of data I do have, starting in Jan 2019, and looking at the M1 timeframe, as that is obviously the highest count of bars I have for getting the largest data horizon.
I read about people using services like Tickstory, but I just don’t see how it can be as reliable as ACTUAL broker data, do you have any thoughts on that?…
In any case, after looking up the ordersend error 131, I altered the lot size for the strategy to 0.1 lot, and tried again in the MT4 Strategy Tester, and actually got much better results, please see below:
(PS: this isn’t a strategy at all developed for trading, it’s purely for checking that my workflow process is being set up ok)
You can see that it has 410 journal entries… the MT4 Strategy Tester results tab as 440 results, although the times and prices of the trades don’t match up very well at the start of the backtest, but they do at the end… why is that?
Is it because EA Studio is not calibrated to the same timezone as my MT4?
The graph is similar to the graph in EA Studio, although it shows better results than in EA Studio..
I don’t know what much of the report tab means, but I’m guessing that the completely red bar at the top isn’t good?..
Thanks,
Simon
Все приказы на совершение торговых операций отправляются в виде структуры торгового запроса MqlTradeRequest с помощью функции OrderSend(). Результат выполнения этой функции помещается в структуру MqlTradeResult, поле retcode которой содержит код возврата торгового сервера.
|
10004 |
TRADE_RETCODE_REQUOTE |
Реквота |
|
10006 |
TRADE_RETCODE_REJECT |
Запрос отклонен |
|
10007 |
TRADE_RETCODE_CANCEL |
Запрос отменен трейдером |
|
10008 |
TRADE_RETCODE_PLACED |
Ордер размещен |
|
10009 |
TRADE_RETCODE_DONE |
Заявка выполнена |
|
10010 |
TRADE_RETCODE_DONE_PARTIAL |
Заявка выполнена частично |
|
10011 |
TRADE_RETCODE_ERROR |
Ошибка обработки запроса |
|
10012 |
TRADE_RETCODE_TIMEOUT |
Запрос отменен по истечению времени |
|
10013 |
TRADE_RETCODE_INVALID |
Неправильный запрос |
|
10014 |
TRADE_RETCODE_INVALID_VOLUME |
Неправильный объем в запросе |
|
10015 |
TRADE_RETCODE_INVALID_PRICE |
Неправильная цена в запросе |
|
10016 |
TRADE_RETCODE_INVALID_STOPS |
Неправильные стопы в запросе |
|
10017 |
TRADE_RETCODE_TRADE_DISABLED |
Торговля запрещена |
|
10018 |
TRADE_RETCODE_MARKET_CLOSED |
Рынок закрыт |
|
10019 |
TRADE_RETCODE_NO_MONEY |
Нет достаточных денежных средств для выполнения запроса |
|
10020 |
TRADE_RETCODE_PRICE_CHANGED |
Цены изменились |
|
10021 |
TRADE_RETCODE_PRICE_OFF |
Отсутствуют котировки для обработки запроса |
|
10022 |
TRADE_RETCODE_INVALID_EXPIRATION |
Неверная дата истечения ордера в запросе |
|
10023 |
TRADE_RETCODE_ORDER_CHANGED |
Состояние ордера изменилось |
|
10024 |
TRADE_RETCODE_TOO_MANY_REQUESTS |
Слишком частые запросы |
|
10025 |
TRADE_RETCODE_NO_CHANGES |
В запросе нет изменений |
|
10026 |
TRADE_RETCODE_SERVER_DISABLES_AT |
Автотрейдинг запрещен сервером |
|
10027 |
TRADE_RETCODE_CLIENT_DISABLES_AT |
Автотрейдинг запрещен клиентским терминалом |
|
10028 |
TRADE_RETCODE_LOCKED |
Запрос заблокирован для обработки |
|
10029 |
TRADE_RETCODE_FROZEN |
Ордер или позиция заморожены |
|
10030 |
TRADE_RETCODE_INVALID_FILL |
Указан неподдерживаемый тип исполнения ордера по остатку |
|
10031 |
TRADE_RETCODE_CONNECTION |
Нет соединения с торговым сервером |
|
10032 |
TRADE_RETCODE_ONLY_REAL |
Операция разрешена только для реальных счетов |
|
10033 |
TRADE_RETCODE_LIMIT_ORDERS |
Достигнут лимит на количество отложенных ордеров |
|
10034 |
TRADE_RETCODE_LIMIT_VOLUME |
Достигнут лимит на объем ордеров и позиций для данного символа |
|
10035 |
TRADE_RETCODE_INVALID_ORDER |
Неверный или запрещённый тип ордера |
|
10036 |
TRADE_RETCODE_POSITION_CLOSED |
Позиция с указанным POSITION_IDENTIFIER уже закрыта |
|
10038 |
TRADE_RETCODE_INVALID_CLOSE_VOLUME |
Закрываемый объем превышает текущий объем позиции |
|
10039 |
TRADE_RETCODE_CLOSE_ORDER_EXIST |
Для указанной позиции уже есть ордер на закрытие. Может возникнуть при работе в системе хеджинга:
|
|
10040 |
TRADE_RETCODE_LIMIT_POSITIONS |
Количество открытых позиций, которое можно одновременно иметь на счете, может быть ограничено настройками сервера. При достижении лимита в ответ на выставление ордера сервер вернет ошибку TRADE_RETCODE_LIMIT_POSITIONS. Ограничение работает по-разному в зависимости от типа учета позиций на счете:
|
|
10041 |
TRADE_RETCODE_REJECT_CANCEL |
Запрос на активацию отложенного ордера отклонен, а сам ордер отменен |
|
10042 |
TRADE_RETCODE_LONG_ONLY |
Запрос отклонен, так как на символе установлено правило «Разрешены только длинные позиции» (POSITION_TYPE_BUY) |
|
10043 |
TRADE_RETCODE_SHORT_ONLY |
Запрос отклонен, так как на символе установлено правило «Разрешены только короткие позиции» (POSITION_TYPE_SELL) |
|
10044 |
TRADE_RETCODE_CLOSE_ONLY |
Запрос отклонен, так как на символе установлено правило «Разрешено только закрывать существующие позиции« |
Предупреждения компилятора носят информационный характер и не являются сообщениями об ошибках.
|
21 |
Неполная запись даты в строке datetime |
|
22 |
Ошибочные числа в строке datetime для даты, требования: год 1970<=X<=3000 месяц 0<X<=12 день 0<X<= 31/30/28(29)…. |
|
23 |
Ошибочные числа в строке datetime для времени, требования: час 0<=X<24 минута 0<=X<60 |
|
24 |
Некорректный цвет в формате RGB: одна из компонент RGB меньше 0 или больше 255 |
|
25 |
Неизвестный символ эскейп последовательности. Известные: n r t \ » ’ X x |
|
26 |
Слишком большой объем локальных переменных (>512кб) функции, уменьшите их количество |
|
29 |
Перечисление уже определено (дублирование) – члены будут добавлены к первому определению |
|
30 |
Переопределение макроса |
|
31 |
Переменная объявлена, но нигде не используется |
|
32 |
Конструктор должен иметь тип void |
|
33 |
Деструктор должен иметь тип void |
|
34 |
Константа не вмещается в диапазон целых (X>_UI64_MAX || X<_I64_MIN) и будет преобразована в тип double |
|
35 |
Слишком длинный HEX больше 16 значащих символов (обрезаются старшие полубайты) |
|
36 |
Нет ни одного полубайта в HEX строке «0x» |
|
37 |
Нет ни одной функции — нечего будет выполнять |
|
38 |
Используется неинициализированная переменная |
|
41 |
Функция не имеет тела, но и не вызывается |
|
43 |
Возможны потери данных при преобразовании типа. Пример: int x=(double)z; |
|
44 |
Потеря точности(данных) при преобразовании константы. Пример: int x=M_PI |
|
45 |
Несовпадение знаков операндов в операциях сравнения. Пример: (char)c1>(uchar)c2 |
|
46 |
Проблемы с импортом функций – требуется объявление #import либо импорт функций уже закрыт |
|
47 |
Описание слишком большое – лишние символы не будут включены в исполняемый файл |
|
48 |
Количество индикаторных буферов объявлено меньше, чем требуется |
|
49 |
Не указан цвет для отрисовки графической серии в индикаторе |
|
50 |
Нет ни одной графической серии для отображения индикатора |
|
51 |
Не обнаружена функция-обработчик ‘OnStart» в скрипте |
|
52 |
Функция-обработчик ‘OnStart» определена с неверными параметрами |
|
53 |
Функция ‘OnStart’ может быть определена только в скрипте |
|
54 |
Функция ‘OnInit’ определена с неверными параметрами |
|
55 |
Функция ‘OnInit’ не используется в скриптах |
|
56 |
Функция ‘OnDeinit’ определена с неверными параметрами |
|
57 |
Функция ‘OnDeinit’ не используется в скриптах |
|
58 |
Определены две функции ‘OnCalculate’. Будет использована OnCalculate() на одном ценовом массиве |
|
59 |
Обнаружено переполнение при вычислении сложной целочисленной константы |
|
60 |
Возможно, переменная неинициализирована. |
|
61 |
Данное объявление делает недоступным обращение к локальной переменной, объявленной на указанной строке |
|
62 |
Данное объявление делает недоступным обращение к глобальной переменной, объявленной на указанной строке |
|
63 |
Не может быть использовано для статических массивов |
|
64 |
Данное объявление делает недоступным обращение к предопределенной переменной |
|
65 |
Значение выражения всегда true/false |
|
66 |
Использование переменной или выражения типа bool в математических операциях является небезопасным |
|
67 |
Результат применения оператора унарного минуса к беззнаковому типу ulong неопределен |
|
68 |
Версия, указанная в свойстве #property version, недопустима для размещения в разделе Маркет, правильный формат #property version «XXX.YYY» |
|
69 |
Отсутствует выражение для выполнения по условию |
|
70 |
Неверный возвращаемый тип функции или некорректные параметры при объявлении функции-обработчика события |
|
71 |
Требуется явное приведение структур к одному типу |
|
72 |
Данное объявление делает недоступным прямое обращение к члену класса, объявленному на указанной строке. Доступ будет возможен только с помощью операции разрешения контекста :: |
|
73 |
Константа в двоичной записи слишком велика, старшие разряды будут отброшены |
|
74 |
Параметр в методе наследуемого класса отличается модификатором const, дочерняя функция перегрузила функцию родителя |
|
75 |
Отрицательное или слишком большое значения смещения в битовой операции сдвига, результат выполнения неопределён |
|
76 |
Функция должна вернуть значение |
|
77 |
Функция типа void не должна возвращать значение |
|
78 |
Не все варианты выполнения возвращают значение |
|
79 |
Выражения на глобальном уровне не разрешены |
|
80 |
Возможна ошибка в последовательности выполнения операций, используйте скобки для явного указания порядка |
|
81 |
Найдено два вида вызова OnCalCulate(). Вызываться будет вариант с использованием таймсерий OHLC |
|
82 |
Структура не содержит членов, размер будет приравнен 1 байту |
|
83 |
Нет обработки результата выполнения функции |
|
84 |
Индикатор, включаемый как ресурс, скомпилирован в режиме отладки. Это снижает его производительность. Для повышения скорости работы его нужно перекомпилировать |
|
85 |
Слишком большой код символа в строке, должен быть в диапазоне от 0 до 65535 |
|
86 |
Нераспознанный служебный символ в строке |
|
87 |
Не указано свойство индикатора, задающее вывод в главное окно или в отдельное подокно. Будет применено свойство #property indicator_chart_window |
MetaEdtior 5, редактор mql5-программ, выдает сообщения об ошибках программы, обнаруженных встроенным компилятором на стадии компиляции. Список этих ошибок приведен ниже в таблице. Для компиляции исходного кода в исполняемый нажмите F7. Программы с ошибками не могут быть скомпилированы, пока ошибки, указанные компилятором, не будут устранены.
|
100 |
Ошибка чтения файла |
|
101 |
Ошибка открытия *.EX5 файла для записи |
|
103 |
Недостаточно свободной памяти для завершения компиляции |
|
104 |
Нераспознанная компилятором пустая синтаксическая единица |
|
105 |
Некорректное имя файла в #include |
|
106 |
Ошибка доступа к файлу в #include (возможно файл не существует) |
|
108 |
Неподходящее имя для #define |
|
109 |
Неизвестная команда препроцессора (допустимы #include,#define,#property,#import) |
|
110 |
Неизвестный для компилятора символ |
|
111 |
Функция не реализована (описание есть, тела нет) |
|
112 |
Пропущена двойная кавычка («) |
|
113 |
Пропущена открывающая угловая скобка (<) или двойная кавычка («) |
|
114 |
Пропущена одинарная кавычка (‘) |
|
115 |
Пропущена закрывающая угловая скобка «>» |
|
116 |
Не указан тип в объявлении |
|
117 |
Нет оператора возврата return или имеется не во всех ветках выполнения |
|
118 |
Ожидалась открывающая скобка параметров вызова |
|
119 |
Ошибка записи EX5 |
|
120 |
Некорректный доступ к элементу массива |
|
121 |
Функция не имеет тип void и оператор return должен вернуть значение |
|
122 |
Некорректное объявление деструктора |
|
123 |
Отсутствует двоеточие «:» |
|
124 |
Переменная уже объявлена |
|
125 |
Переменная с таким идентификатором уже объявлена |
|
126 |
Имя переменной слишком длинное (>250 символов) |
|
127 |
Структура с таким идентификатором уже определена |
|
128 |
Структура не определена |
|
129 |
Член структуры с таким именем уже определен |
|
130 |
Нет такого члена структуры |
|
131 |
Нарушена парность квадратных скобок |
|
132 |
Ожидается открывающая круглая скобка «(« |
|
133 |
Несбалансированные фигурные скобки ( отсутствует «}» ) |
|
134 |
Сложно для компиляции (слишком большое ветвление, внутренний стек уровней переполнен) |
|
135 |
Ошибка открытия файла на чтение |
|
136 |
Недостаточно памяти для загрузки исходного файла в память |
|
137 |
Ожидается переменная |
|
138 |
Ссылка не может быть инициализирована |
|
140 |
Ожидалось присваивание (возникает при объявлении) |
|
141 |
Ожидается открывающая фигурная скобка «{« |
|
142 |
Параметр может быть только динамическим массивом |
|
143 |
Использование типа «void» недопустимо |
|
144 |
Нет пары для «)» или «]», т.е. отсутствует «(» или «[« |
|
145 |
Нет пары для «(» или «[«, т.е. отсутствует «)» или «]» |
|
146 |
Некорректная размерность массива |
|
147 |
Слишком много параметров (>64) |
|
149 |
Этот токен тут не ожидается |
|
150 |
Недопустимое использование операции (неправильные операнды) |
|
151 |
Выражение типа void недопустимо |
|
152 |
Ожидается оператор |
|
153 |
Неправильное использование break |
|
154 |
Ожидается точка с запятой «;» |
|
155 |
Ожидается запятая «,» |
|
156 |
Тип должен быть определен как класс, а не как структура |
|
157 |
Ожидалось выражение |
|
158 |
В HEX встречается «не HEX символ» или слишком длинное число (количество цифр > 511) |
|
159 |
Строка-константа имеет более 65534 символов |
|
160 |
Определение функции здесь недопустимо |
|
161 |
Неожиданный конец программы |
|
162 |
Форвардная декларация для структур запрещена |
|
163 |
Функция с таким именем уже определена и имеет иной тип возвращаемого значения |
|
164 |
Функция с таким именем уже определена и имеет иной набор параметров |
|
165 |
Функция с таким именем уже определена и реализована |
|
166 |
Перегрузка функции для данного вызова не найдена |
|
167 |
Функция с возвращаемым значением типа void не может возвращать значение |
|
168 |
Функция не определена |
|
170 |
Ожидается значение |
|
171 |
В выражении case допустимы только целочисленные константы |
|
172 |
Значение для case в этом switch уже использовано |
|
173 |
Ожидается целочисленное значение |
|
174 |
В выражении #import ожидается имя файла |
|
175 |
Выражения на глобальном уровне не допустимы |
|
176 |
Пропущена круглая скобка «)» перед «;» |
|
177 |
Слева от знака равенства предполагается переменная |
|
178 |
Результат выражения не используется |
|
179 |
Объявление переменных в case недопустимо |
|
180 |
Неявное преобразование из строки в число |
|
181 |
Неявное преобразование числа в строку |
|
182 |
Неоднозначный вызов перегруженной функции (подходят несколько перегрузок) |
|
183 |
Недопустимый else без соответствующего if |
|
184 |
Недопустимый case или default без соответствующего switch |
|
185 |
Недопустимое использование эллипсиса |
|
186 |
Инициализирующая последовательность имеет большее количество элементов чем инициализируемая переменная |
|
187 |
Ожидается константа для case |
|
188 |
Требуется константное выражение |
|
189 |
Константная переменная не может быть изменена |
|
190 |
Ожидается закрывающая скобка или запятая (объявление члена массива) |
|
191 |
Идентификатор перечисления уже используется |
|
192 |
Перечисление не может иметь модификаторов доступа (const, extern, static) |
|
193 |
Член перечисления уже объявлен с другим значением |
|
194 |
Существует переменная, определенная с таким же именем |
|
195 |
Существует структура, определенная с таким же именем |
|
196 |
Ожидается имя члена перечисления |
|
197 |
Ожидается целочисленное выражение |
|
198 |
Деление на ноль в константном выражении |
|
199 |
Неверное количество параметров в функции |
|
200 |
Параметром по ссылке должна быть переменная |
|
201 |
Ожидается переменная такого же типа для передачи по ссылке |
|
202 |
Константная переменная не может быть передана по неконстантной ссылке |
|
203 |
Требуется целочисленная положительная константа |
|
204 |
Ошибка доступа к защищенному члену класса |
|
205 |
Импорт уже определен по другому пути |
|
208 |
Исполняемый файл не создан |
|
209 |
Для индикатора не найдена точка входа ‘OnCalculate’ |
|
210 |
Оператор continue может быть использован только внутри цикла |
|
211 |
Ошибка доступа к private(закрытому) члену класса |
|
213 |
Метод структуры или класса не объявлен |
|
214 |
Ошибка доступа к private(закрытому) методу класса |
|
216 |
Копирование структур с объектами недопустимо |
|
218 |
Выход индекса за границы массива |
|
219 |
Недопустима инициализация массивов в объявлении структуры или класса |
|
220 |
Конструктор класса не может иметь параметров |
|
221 |
Деструктор класса не может иметь параметров |
|
222 |
Метод класса или структуры с таким именем и параметрами уже объявлен |
|
223 |
Ожидается операнд |
|
224 |
Метод класса или структуры с таким именем есть, но с другими параметрами (объявление!=реализация) |
|
225 |
Импортируемая функция не описана |
|
226 |
Функция ZeroMemory() не применима для классов с защищенными членами или наследованием |
|
227 |
Неоднозначный вызов перегруженной функции (точное совпадение параметров для нескольких перегрузок) |
|
228 |
Ожидается имя переменной |
|
229 |
Ссылку нельзя объявить в этом месте |
|
230 |
Уже используется в качестве имени перечисления |
|
232 |
Ожидается класс или структура |
|
235 |
Нельзя вызывать delete для удаления массива |
|
236 |
Ожидается оператор ‘ while ‘ |
|
237 |
В delete должен быть указатель |
|
238 |
default для этого switch уже есть |
|
239 |
Синтаксическая ошибка |
|
240 |
Escape-последовательность может встретиться только в строках ( начинается с ‘’ ) |
|
241 |
Требуется массив – квадратная скобка ‘[‘ не относится к массиву либо в качестве параметра-массива подают не массив |
|
242 |
Не может быть инициализировано посредством инициализирующей последовательности |
|
243 |
Импорт не определен |
|
244 |
Ошибка оптимизатора на синтаксическом дереве |
|
245 |
Объявлено слишком много структур (упростите программу) |
|
246 |
Преобразование параметра недопустимо |
|
247 |
Некорректное использование оператора delete |
|
248 |
Нельзя объявить указатель на ссылку |
|
249 |
Нельзя объявить ссылку на ссылку |
|
250 |
Нельзя объявить указатель на указатель |
|
251 |
Недопустимо объявление структуры в списке параметров |
|
252 |
Недопустимая операция приведения типов |
|
253 |
Указатель можно объявить только для класса или структуры |
|
256 |
Необъявленный идентификатор |
|
257 |
Ошибка оптимизатора исполняемого кода |
|
258 |
Ошибка генерации исполняемого кода |
|
260 |
Недопустимое выражение для оператора switch |
|
261 |
Переполнение пула строковых констант, упростите программу |
|
262 |
Невозможно преобразовать к перечислению |
|
263 |
Нельзя использовать virtual для данных (членов класса или структуры) |
|
264 |
Нельзя вызвать защищенный метод класса |
|
265 |
Переопределяемая виртуальная функция возвращает другой тип |
|
266 |
Класс нельзя наследовать от структуры |
|
267 |
Структуру нельзя наследовать от класса |
|
268 |
Конструктор не может быть виртуальным (спецификатор virtual недопустим) |
|
269 |
Структура не может иметь виртуальных методов |
|
270 |
Функция должна иметь тело |
|
271 |
Перегрузка системных функций (функций терминала) запрещена |
|
272 |
Спецификатор const недопустим для функций, не являющихся членом класса или структуры |
|
274 |
Нельзя менять члены класса в константном методе |
|
276 |
Неподходящая инициализирующая последовательность |
|
277 |
Пропущено значение по умолчанию для параметра (специфика объявления параметров по умолчанию) |
|
278 |
Переопределение параметра по умолчанию (в объявлении и реализации разные значения) |
|
279 |
Нельзя вызвать неконстантный метод для константного объекта |
|
280 |
Для доступа к членам требуется объект (поставлена точка для не класса/структуры) |
|
281 |
Имя уже объявленной структуры нельзя использовать при объявлении |
|
284 |
Неразрешенное преобразование (при закрытом наследовании) |
|
285 |
Структуры и массивы не могут быть использованы в качестве input-переменных |
|
286 |
Спецификатор const недопустим для конструктора/деструктора |
|
287 |
Неправильное строковое выражение для типа datetime |
|
288 |
Неизвестное свойство (#property) |
|
289 |
Некорректное значение для свойства |
|
290 |
Некорректный индекс для свойства в #property |
|
291 |
Пропущен параметр вызова – < func(x,) > |
|
293 |
Объект должен быть передан по ссылке |
|
294 |
Массив должен быть передан по ссылке |
|
295 |
Функция была декларирована как экспортируемая |
|
296 |
Функция не была декларирована как экспортируемая |
|
297 |
Экспортировать импортируемую функцию нельзя |
|
298 |
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) |
|
299 |
Должен быть класс |
|
300 |
Секция #import не закрыта |
|
302 |
Несоответствие типов |
|
303 |
extern-переменная уже инициализирована |
|
304 |
Не найдено ни одной экспортируемой функции или стандартной точки входа |
|
305 |
Явный вызов конструктора запрещен |
|
306 |
Метод был объявлен константным |
|
307 |
Метод не был объявлен константным |
|
308 |
Некорректный размер ресурсного файла |
|
309 |
Некорректное имя ресурса |
|
310 |
Ошибка открытия файла ресурса |
|
311 |
Ошибка чтения файла ресурса |
|
312 |
Неизвестный тип ресурса |
|
313 |
Некорректный путь к файлу ресурса |
|
314 |
Указанное имя ресурса уже используется |
|
315 |
Ожидались параметры макроса |
|
316 |
После имени макроса должен быть пробел |
|
317 |
Ошибка в описании параметров макроса |
|
318 |
Неверное число параметров при использовании макроса |
|
319 |
Превышение максимального количества(16) параметров для макроса |
|
320 |
Макрос слишком сложный, требуется упрощение |
|
321 |
Параметром EnumToString() может быть только перечисление |
|
322 |
Имя ресурса слишком длинное |
|
323 |
Неподдерживаемый формат изображения (допустим только BMP-формат с глубиной цвета 24 или 32 бита) |
|
324 |
Объявление массива внутри оператора запрещено |
|
325 |
Функцию можно определить только на глобальном уровне |
|
326 |
Данное объявление недопустимо для текущей области видимости (области определения) |
|
327 |
Инициализация статичных переменных значениями локальных недопустима |
|
328 |
Недопустимое объявление массива объектов, не имеющих конструктора по умолчанию |
|
329 |
Список инициализации разрешен только для конструкторов |
|
330 |
Отсутствует определение функции после списка инициализации |
|
331 |
Список инициализации пуст |
|
332 |
Инициализация массива в конструкторе запрещена |
|
333 |
В списке инициализации запрещено инициализировать члены родительского класса |
|
334 |
Ожидалось выражение целого типа |
|
335 |
Требуемый объем памяти для массива превышает максимально допустимое значение |
|
336 |
Требуемый объем памяти для структуры превышает максимально допустимое значение |
|
337 |
Требуемый объем памяти для переменных, объявленных на глобальном уровне, превышает максимально допустимое значение |
|
338 |
Требуемый объем памяти для локальных переменных превышает максимально допустимое значение |
|
339 |
Конструктор не определен |
|
340 |
Недопустимое имя для файла иконки |
|
341 |
Не удалось открыть файла иконки по указанному пути |
|
342 |
Файл иконки некорректен и не соответствует формату ICO |
|
343 |
Повторная инициализация члена в конструкторе класса/структуры с помощью списка инициализации |
|
344 |
Инициализация статических членов в списке инициализации конструктора не допускается |
|
345 |
Инициализация нестатического члена класса/структуры на глобальном уровне запрещена |
|
346 |
Имя метода класса/структуры совпадает с ранее объявленным именем члена |
|
347 |
Имя члена класса/структуры совпадает с ранее объявленным именем метода |
|
348 |
Виртуальная функция не может быть объявлена как static |
|
349 |
Модификатор const недопустим для статической функции |
|
350 |
Конструктор или деструктор не могут быть статическими |
|
351 |
Нельзя обращаться к нестатическому члену/методу класса или структуры из статической функции |
|
352 |
После ключевого слова operator ожидается перегружаемая операция (+,-,[],++,— и т.д.) |
|
353 |
Не все операции можно перегружать в MQL5 |
|
354 |
Определение не соответствует объявлению |
|
355 |
Указано неверное количество параметров для оператора |
|
356 |
Не обнаружено ни одной функции-обработчика события |
|
357 |
Методы не могут быть экспортируемыми |
|
358 |
Нельзя приводить указатель на константный объект к указателю на неконстантный объект |
|
359 |
Шаблоны классов пока не поддерживаются |
|
360 |
Перегрузка шаблонов функций пока не поддерживается |
|
361 |
Невозможно применить шаблон функции |
|
362 |
Неоднозначный параметр в шаблоне функции (подходят несколько типов параметра) |
|
363 |
Невозможно определить к какому типу параметра приводить аргумент шаблона функции |
|
364 |
Неверное количество параметров в шаблоне функции |
|
365 |
Шаблон функции не может быть виртуальным |
|
366 |
Шаблоны функций не могут быть экспортированы |
|
367 |
Нельзя импортировать шаблоны функций |
|
368 |
Структуры, содержащие объекты, недопустимы |
|
369 |
Массивы строк и структуры, содержащие объекты, недопустимы |
|
370 |
Статический член класса/структуры должен быть явно инициализирован |
|
371 |
Ограничение компилятора: строка не может содержать более 65 535 символов |
|
372 |
Несогласованные #ifdef/#endif |
|
373 |
Результатом выполнения функции не может быть объект класса, так как отсутствует конструктор копирования |
|
374 |
Нельзя использовать нестатические члены и/или методы при инициализации статической переменной |
|
375 |
OnTesterInit() нельзя использовать без объявления обработчика OnTesterDeinit() |
|
376 |
Имя локальной переменной совпадает с именем одного из параметров функции |
|
377 |
Нельзя использовать макросы __FUNCSIG__ и __FUNCTION__ вне тела функции |
|
378 |
Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из DLL, которые возвращают структуру или указатель в качестве результата |
|
379 |
Ошибка при использовании шаблона |
|
380 |
Не используется |
|
381 |
Недопустимый синтаксис при объявлении чисто виртуальной функции, разрешено «=NULL» или «=0» |
|
382 |
Только виртуальные функции могут быть объявлены со спецификатором чисто виртуальной функции («=NULL» или «=0») |
|
383 |
Нельзя создать экземпляр абстрактного класса |
|
384 |
Для динамического приведения с помощью оператора dynamic_cast типом назначения должен быть указатель на пользовательский тип |
|
385 |
Ожидается тип «указатель на функцию» |
|
386 |
Указатели на методы не поддерживаются |
|
387 |
Ошибка – невозможно определить тип указателя на функцию |
|
388 |
Приведение типа недоступно из-за закрытого наследования |
|
389 |
Переменная с модификатором const должна быть проинициализирована при объявлении |
|
393 |
В интерфейсе могут быть объявлены только методы с публичным доступом |
|
394 |
Недопустимое вложение интерфейса в другой интерфейс |
|
395 |
Интерфейс может наследоваться только от другого интерфейса |
|
396 |
Ожидается интерфейс |
|
397 |
Интерфейсы поддерживают только публичное наследование |
|
398 |
Интерфейс не может содержать члены |
|
399 |
Нельзя создавать объекты интерфейса напрямую, только через наследование |
GetLastError() – функция, возвращающая код последней ошибки, которая хранится в предопределенной переменной _LastError. Значение этой переменной можно сбросить в ноль функцией ResetLastError().
|
ERR_SUCCESS |
0 |
Операция выполнена успешно |
|
ERR_INTERNAL_ERROR |
4001 |
Неожиданная внутренняя ошибка |
|
ERR_WRONG_INTERNAL_PARAMETER |
4002 |
Ошибочный параметр при внутреннем вызове функции клиентского терминала |
|
ERR_INVALID_PARAMETER |
4003 |
Ошибочный параметр при вызове системной функции |
|
ERR_NOT_ENOUGH_MEMORY |
4004 |
Недостаточно памяти для выполнения системной функции |
|
ERR_STRUCT_WITHOBJECTS_ORCLASS |
4005 |
Структура содержит объекты строк и/или динамических массивов и/или структуры с такими объектами и/или классы |
|
ERR_INVALID_ARRAY |
4006 |
Массив неподходящего типа, неподходящего размера или испорченный объект динамического массива |
|
ERR_ARRAY_RESIZE_ERROR |
4007 |
Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива |
|
ERR_STRING_RESIZE_ERROR |
4008 |
Недостаточно памяти для перераспределения строки |
|
ERR_NOTINITIALIZED_STRING |
4009 |
Неинициализированная строка |
|
ERR_INVALID_DATETIME |
4010 |
Неправильное значение даты и/или времени |
|
ERR_ARRAY_BAD_SIZE |
4011 |
Запрашиваемый размер массива превышает 2 гигабайта |
|
ERR_INVALID_POINTER |
4012 |
Ошибочный указатель |
|
ERR_INVALID_POINTER_TYPE |
4013 |
Ошибочный тип указателя |
|
ERR_FUNCTION_NOT_ALLOWED |
4014 |
Системная функция не разрешена для вызова |
|
ERR_RESOURCE_NAME_DUPLICATED |
4015 |
Совпадении имени динамического и статического ресурсов |
|
ERR_RESOURCE_NOT_FOUND |
4016 |
Ресурс с таким именем в EX5 не найден |
|
ERR_RESOURCE_UNSUPPOTED_TYPE |
4017 |
Неподдерживаемый тип ресурса или размер более 16 MB |
|
ERR_RESOURCE_NAME_IS_TOO_LONG |
4018 |
Имя ресурса превышает 63 символа |
|
ERR_MATH_OVERFLOW |
4019 |
При вычислении математической функции произошло переполнение |
|
Графики |
||
|
ERR_CHART_WRONG_ID |
4101 |
Ошибочный идентификатор графика |
|
ERR_CHART_NO_REPLY |
4102 |
График не отвечает |
|
ERR_CHART_NOT_FOUND |
4103 |
График не найден |
|
ERR_CHART_NO_EXPERT |
4104 |
У графика нет эксперта, который мог бы обработать событие |
|
ERR_CHART_CANNOT_OPEN |
4105 |
Ошибка открытия графика |
|
ERR_CHART_CANNOT_CHANGE |
4106 |
Ошибка при изменении для графика символа и периода |
|
ERR_CHART_WRONG_PARAMETER |
4107 |
Ошибочное значение параметра для функции по работе с графиком |
|
ERR_CHART_CANNOT_CREATE_TIMER |
4108 |
Ошибка при создании таймера |
|
ERR_CHART_WRONG_PROPERTY |
4109 |
Ошибочный идентификатор свойства графика |
|
ERR_CHART_SCREENSHOT_FAILED |
4110 |
Ошибка при создании скриншота |
|
ERR_CHART_NAVIGATE_FAILED |
4111 |
Ошибка навигации по графику |
|
ERR_CHART_TEMPLATE_FAILED |
4112 |
Ошибка при применении шаблона |
|
ERR_CHART_WINDOW_NOT_FOUND |
4113 |
Подокно, содержащее указанный индикатор, не найдено |
|
ERR_CHART_INDICATOR_CANNOT_ADD |
4114 |
Ошибка при добавлении индикатора на график |
|
ERR_CHART_INDICATOR_CANNOT_DEL |
4115 |
Ошибка при удалении индикатора с графика |
|
ERR_CHART_INDICATOR_NOT_FOUND |
4116 |
Индикатор не найден на указанном графике |
|
Графические объекты |
||
|
ERR_OBJECT_ERROR |
4201 |
Ошибка при работе с графическим объектом |
|
ERR_OBJECT_NOT_FOUND |
4202 |
Графический объект не найден |
|
ERR_OBJECT_WRONG_PROPERTY |
4203 |
Ошибочный идентификатор свойства графического объекта |
|
ERR_OBJECT_GETDATE_FAILED |
4204 |
Невозможно получить дату, соответствующую значению |
|
ERR_OBJECT_GETVALUE_FAILED |
4205 |
Невозможно получить значение, соответствующее дате |
|
MarketInfo |
||
|
ERR_MARKET_UNKNOWN_SYMBOL |
4301 |
Неизвестный символ |
|
ERR_MARKET_NOT_SELECTED |
4302 |
Символ не выбран в MarketWatch |
|
ERR_MARKET_WRONG_PROPERTY |
4303 |
Ошибочный идентификатор свойства символа |
|
ERR_MARKET_LASTTIME_UNKNOWN |
4304 |
Время последнего тика неизвестно (тиков не было) |
|
ERR_MARKET_SELECT_ERROR |
4305 |
Ошибка добавления или удаления символа в MarketWatch |
|
Доступ к истории |
||
|
ERR_HISTORY_NOT_FOUND |
4401 |
Запрашиваемая история не найдена |
|
ERR_HISTORY_WRONG_PROPERTY |
4402 |
Ошибочный идентификатор свойства истории |
|
ERR_HISTORY_TIMEOUT |
4403 |
Превышен таймаут при запросе истории |
|
ERR_HISTORY_BARS_LIMIT |
4404 |
Количество запрашиваемых баров ограничено настройками терминала |
|
ERR_HISTORY_LOAD_ERRORS |
4405 |
Множество ошибок при загрузке истории |
|
ERR_HISTORY_SMALL_BUFFER |
4407 |
Принимающий массив слишком мал чтобы вместить все запрошенные данные |
|
Global_Variables |
||
|
ERR_GLOBALVARIABLE_NOT_FOUND |
4501 |
Глобальная переменная клиентского терминала не найдена |
|
ERR_GLOBALVARIABLE_EXISTS |
4502 |
Глобальная переменная клиентского терминала с таким именем уже существует |
|
ERR_GLOBALVARIABLE_NOT_MODIFIED |
4503 |
Не было модификаций глобальных переменных |
|
ERR_GLOBALVARIABLE_CANNOTREAD |
4504 |
Не удалось открыть и прочитать файл со значениями глобальных переменных |
|
ERR_GLOBALVARIABLE_CANNOTWRITE |
4505 |
Не удалось записать файл со значениями глобальных переменных |
|
ERR_MAIL_SEND_FAILED |
4510 |
Не удалось отправить письмо |
|
ERR_PLAY_SOUND_FAILED |
4511 |
Не удалось воспроизвести звук |
|
ERR_MQL5_WRONG_PROPERTY |
4512 |
Ошибочный идентификатор свойства программы |
|
ERR_TERMINAL_WRONG_PROPERTY |
4513 |
Ошибочный идентификатор свойства терминала |
|
ERR_FTP_SEND_FAILED |
4514 |
Не удалось отправить файл по ftp |
|
ERR_NOTIFICATION_SEND_FAILED |
4515 |
Не удалось отправить уведомление |
|
ERR_NOTIFICATION_WRONG_PARAMETER |
4516 |
Неверный параметр для отправки уведомления – в функцию SendNotification() передали пустую строку или NULL |
|
ERR_NOTIFICATION_WRONG_SETTINGS |
4517 |
Неверные настройки уведомлений в терминале (не указан ID или не выставлено разрешение) |
|
ERR_NOTIFICATION_TOO_FREQUENT |
4518 |
Слишком частая отправка уведомлений |
|
ERR_FTP_NOSERVER |
4519 |
Не указан FTP сервер |
|
ERR_FTP_NOLOGIN |
4520 |
Не указан FTP логин |
|
ERR_FTP_FILE_ERROR |
4521 |
Не найден файл в директории MQL5Files для отправки на FTP сервер |
|
ERR_FTP_CONNECT_FAILED |
4522 |
Ошибка при подключении к FTP серверу |
|
ERR_FTP_CHANGEDIR |
4523 |
На FTP сервере не найдена директория для выгрузки файла |
|
ERR_FTP_CLOSED |
4524 |
Подключение к FTP серверу закрыто |
|
Буферы пользовательских индикаторов |
||
|
ERR_BUFFERS_NO_MEMORY |
4601 |
Недостаточно памяти для распределения индикаторных буферов |
|
ERR_BUFFERS_WRONG_INDEX |
4602 |
Ошибочный индекс своего индикаторного буфера |
|
Свойства пользовательских индикаторов |
||
|
ERR_CUSTOM_WRONG_PROPERTY |
4603 |
Ошибочный идентификатор свойства пользовательского индикатора |
|
Account |
||
|
ERR_ACCOUNT_WRONG_PROPERTY |
4701 |
Ошибочный идентификатор свойства счета |
|
ERR_TRADE_WRONG_PROPERTY |
4751 |
Ошибочный идентификатор свойства торговли |
|
ERR_TRADE_DISABLED |
4752 |
Торговля для эксперта запрещена |
|
ERR_TRADE_POSITION_NOT_FOUND |
4753 |
Позиция не найдена |
|
ERR_TRADE_ORDER_NOT_FOUND |
4754 |
Ордер не найден |
|
ERR_TRADE_DEAL_NOT_FOUND |
4755 |
Сделка не найдена |
|
ERR_TRADE_SEND_FAILED |
4756 |
Не удалось отправить торговый запрос |
|
ERR_TRADE_CALC_FAILED |
4758 |
Не удалось вычислить значение прибыли или маржи |
|
Индикаторы |
||
|
ERR_INDICATOR_UNKNOWN_SYMBOL |
4801 |
Неизвестный символ |
|
ERR_INDICATOR_CANNOT_CREATE |
4802 |
Индикатор не может быть создан |
|
ERR_INDICATOR_NO_MEMORY |
4803 |
Недостаточно памяти для добавления индикатора |
|
ERR_INDICATOR_CANNOT_APPLY |
4804 |
Индикатор не может быть применен к другому индикатору |
|
ERR_INDICATOR_CANNOT_ADD |
4805 |
Ошибка при добавлении индикатора |
|
ERR_INDICATOR_DATA_NOT_FOUND |
4806 |
Запрошенные данные не найдены |
|
ERR_INDICATOR_WRONG_HANDLE |
4807 |
Ошибочный хэндл индикатора |
|
ERR_INDICATOR_WRONG_PARAMETERS |
4808 |
Неправильное количество параметров при создании индикатора |
|
ERR_INDICATOR_PARAMETERS_MISSING |
4809 |
Отсутствуют параметры при создании индикатора |
|
ERR_INDICATOR_CUSTOM_NAME |
4810 |
Первым параметром в массиве должно быть имя пользовательского индикатора |
|
ERR_INDICATOR_PARAMETER_TYPE |
4811 |
Неправильный тип параметра в массиве при создании индикатора |
|
ERR_INDICATOR_WRONG_INDEX |
4812 |
Ошибочный индекс запрашиваемого индикаторного буфера |
|
Стакан цен |
||
|
ERR_BOOKS_CANNOT_ADD |
4901 |
Стакан цен не может быть добавлен |
|
ERR_BOOKS_CANNOT_DELETE |
4902 |
Стакан цен не может быть удален |
|
ERR_BOOKS_CANNOT_GET |
4903 |
Данные стакана цен не могут быть получены |
|
ERR_BOOKS_CANNOT_SUBSCRIBE |
4904 |
Ошибка при подписке на получение новых данных стакана цен |
|
Файловые операции |
||
|
ERR_TOO_MANY_FILES |
5001 |
Не может быть открыто одновременно более 64 файлов |
|
ERR_WRONG_FILENAME |
5002 |
Недопустимое имя файла |
|
ERR_TOO_LONG_FILENAME |
5003 |
Слишком длинное имя файла |
|
ERR_CANNOT_OPEN_FILE |
5004 |
Ошибка открытия файла |
|
ERR_FILE_CACHEBUFFER_ERROR |
5005 |
Недостаточно памяти для кеша чтения |
|
ERR_CANNOT_DELETE_FILE |
5006 |
Ошибка удаления файла |
|
ERR_INVALID_FILEHANDLE |
5007 |
Файл с таким хэндлом уже был закрыт, либо не открывался вообще |
|
ERR_WRONG_FILEHANDLE |
5008 |
Ошибочный хэндл файла |
|
ERR_FILE_NOTTOWRITE |
5009 |
Файл должен быть открыт для записи |
|
ERR_FILE_NOTTOREAD |
5010 |
Файл должен быть открыт для чтения |
|
ERR_FILE_NOTBIN |
5011 |
Файл должен быть открыт как бинарный |
|
ERR_FILE_NOTTXT |
5012 |
Файл должен быть открыт как текстовый |
|
ERR_FILE_NOTTXTORCSV |
5013 |
Файл должен быть открыт как текстовый или CSV |
|
ERR_FILE_NOTCSV |
5014 |
Файл должен быть открыт как CSV |
|
ERR_FILE_READERROR |
5015 |
Ошибка чтения файла |
|
ERR_FILE_BINSTRINGSIZE |
5016 |
Должен быть указан размер строки, так как файл открыт как бинарный |
|
ERR_INCOMPATIBLE_FILE |
5017 |
Для строковых массивов должен быть текстовый файл, для остальных – бинарный |
|
ERR_FILE_IS_DIRECTORY |
5018 |
Это не файл, а директория |
|
ERR_FILE_NOT_EXIST |
5019 |
Файл не существует |
|
ERR_FILE_CANNOT_REWRITE |
5020 |
Файл не может быть переписан |
|
ERR_WRONG_DIRECTORYNAME |
5021 |
Ошибочное имя директории |
|
ERR_DIRECTORY_NOT_EXIST |
5022 |
Директория не существует |
|
ERR_FILE_ISNOT_DIRECTORY |
5023 |
Это файл, а не директория |
|
ERR_CANNOT_DELETE_DIRECTORY |
5024 |
Директория не может быть удалена |
|
ERR_CANNOT_CLEAN_DIRECTORY |
5025 |
Не удалось очистить директорию (возможно, один или несколько файлов заблокированы и операция удаления не удалась) |
|
ERR_FILE_WRITEERROR |
5026 |
Не удалось записать ресурс в файл |
|
ERR_FILE_ENDOFFILE |
5027 |
Не удалось прочитать следующую порцию данных из CSV-файла (FileReadString, FileReadNumber, FileReadDatetime, FileReadBool), так как достигнут конец файла |
|
Преобразование строк |
||
|
ERR_NO_STRING_DATE |
5030 |
В строке нет даты |
|
ERR_WRONG_STRING_DATE |
5031 |
В строке ошибочная дата |
|
ERR_WRONG_STRING_TIME |
5032 |
В строке ошибочное время |
|
ERR_STRING_TIME_ERROR |
5033 |
Ошибка преобразования строки в дату |
|
ERR_STRING_OUT_OF_MEMORY |
5034 |
Недостаточно памяти для строки |
|
ERR_STRING_SMALL_LEN |
5035 |
Длина строки меньше, чем ожидалось |
|
ERR_STRING_TOO_BIGNUMBER |
5036 |
Слишком большое число, больше, чем ULONG_MAX |
|
ERR_WRONG_FORMATSTRING |
5037 |
Ошибочная форматная строка |
|
ERR_TOO_MANY_FORMATTERS |
5038 |
Форматных спецификаторов больше, чем параметров |
|
ERR_TOO_MANY_PARAMETERS |
5039 |
Параметров больше, чем форматных спецификаторов |
|
ERR_WRONG_STRING_PARAMETER |
5040 |
Испорченный параметр типа string |
|
ERR_STRINGPOS_OUTOFRANGE |
5041 |
Позиция за пределами строки |
|
ERR_STRING_ZEROADDED |
5042 |
К концу строки добавлен 0, бесполезная операция |
|
ERR_STRING_UNKNOWNTYPE |
5043 |
Неизвестный тип данных при конвертации в строку |
|
ERR_WRONG_STRING_OBJECT |
5044 |
Испорченный объект строки |
|
Работа с массивами |
||
|
ERR_INCOMPATIBLE_ARRAYS |
5050 |
Копирование несовместимых массивов. Строковый массив может быть скопирован только в строковый, а числовой массив – в числовой |
|
ERR_SMALL_ASSERIES_ARRAY |
5051 |
Приемный массив объявлен как AS_SERIES, и он недостаточного размера |
|
ERR_SMALL_ARRAY |
5052 |
Слишком маленький массив, стартовая позиция за пределами массива |
|
ERR_ZEROSIZE_ARRAY |
5053 |
Массив нулевой длины |
|
ERR_NUMBER_ARRAYS_ONLY |
5054 |
Должен быть числовой массив |
|
ERR_ONEDIM_ARRAYS_ONLY |
5055 |
Должен быть одномерный массив |
|
ERR_SERIES_ARRAY |
5056 |
Таймсерия не может быть использована |
|
ERR_DOUBLE_ARRAY_ONLY |
5057 |
Должен быть массив типа double |
|
ERR_FLOAT_ARRAY_ONLY |
5058 |
Должен быть массив типа float |
|
ERR_LONG_ARRAY_ONLY |
5059 |
Должен быть массив типа long |
|
ERR_INT_ARRAY_ONLY |
5060 |
Должен быть массив типа int |
|
ERR_SHORT_ARRAY_ONLY |
5061 |
Должен быть массив типа short |
|
ERR_CHAR_ARRAY_ONLY |
5062 |
Должен быть массив типа char |
|
ERR_STRING_ARRAY_ONLY |
5063 |
Должен быть массив типа string |
|
Работа с OpenCL |
||
|
ERR_OPENCL_NOT_SUPPORTED |
5100 |
Функции OpenCL на данном компьютере не поддерживаются |
|
ERR_OPENCL_INTERNAL |
5101 |
Внутренняя ошибка при выполнении OpenCL |
|
ERR_OPENCL_INVALID_HANDLE |
5102 |
Неправильный хэндл OpenCL |
|
ERR_OPENCL_CONTEXT_CREATE |
5103 |
Ошибка при создании контекста OpenCL |
|
ERR_OPENCL_QUEUE_CREATE |
5104 |
Ошибка создания очереди выполнения в OpenCL |
|
ERR_OPENCL_PROGRAM_CREATE |
5105 |
Ошибка при компиляции программы OpenCL |
|
ERR_OPENCL_TOO_LONG_KERNEL_NAME |
5106 |
Слишком длинное имя точки входа (кернел OpenCL) |
|
ERR_OPENCL_KERNEL_CREATE |
5107 |
Ошибка создания кернел — точки входа OpenCL |
|
ERR_OPENCL_SET_KERNEL_PARAMETER |
5108 |
Ошибка при установке параметров для кернел OpenCL (точки входа в программу OpenCL) |
|
ERR_OPENCL_EXECUTE |
5109 |
Ошибка выполнения программы OpenCL |
|
ERR_OPENCL_WRONG_BUFFER_SIZE |
5110 |
Неверный размер буфера OpenCL |
|
ERR_OPENCL_WRONG_BUFFER_OFFSET |
5111 |
Неверное смещение в буфере OpenCL |
|
ERR_OPENCL_BUFFER_CREATE |
5112 |
Ошибка создания буфера OpenCL |
|
ERR_OPENCL_TOO_MANY_OBJECTS |
5113 |
Превышено максимальное число OpenCL объектов |
|
ERR_OPENCL_SELECTDEVICE |
5114 |
Ошибка выбора OpenCL устройства |
|
Работа с WebRequest |
||
|
ERR_WEBREQUEST_INVALID_ADDRESS |
5200 |
URL не прошел проверку |
|
ERR_WEBREQUEST_CONNECT_FAILED |
5201 |
Не удалось подключиться к указанному URL |
|
ERR_WEBREQUEST_TIMEOUT |
5202 |
Превышен таймаут получения данных |
|
ERR_WEBREQUEST_REQUEST_FAILED |
5203 |
Ошибка в результате выполнения HTTP запроса |
|
Пользовательские символы |
||
|
ERR_NOT_CUSTOM_SYMBOL |
5300 |
Должен быть указан пользовательский символ |
|
ERR_CUSTOM_SYMBOL_WRONG_NAME |
5301 |
Некорректное имя пользовательского символа. В имени символа можно использовать только латинские буквы без знаков препинания, пробелов и спецсимволов (допускаются «.», «_», «&» и «#»). Не рекомендуется использовать символы <, >, :, «, /,, |, ?, *. |
|
ERR_CUSTOM_SYMBOL_NAME_LONG |
5302 |
Слишком длинное имя для пользовательского символа. Длина имени символа не должна превышать 32 знака с учётом завершающего 0 |
|
ERR_CUSTOM_SYMBOL_PATH_LONG |
5303 |
Слишком длинный путь для пользовательского символа. Длина пути не более 128 знаков с учётом «Custom\», имени символа, разделителей групп и завершающего 0 |
|
ERR_CUSTOM_SYMBOL_EXIST |
5304 |
Пользовательский символ с таким именем уже существует |
|
ERR_CUSTOM_SYMBOL_ERROR |
5305 |
Ошибка при создании, удалении или изменении пользовательского символа |
|
ERR_CUSTOM_SYMBOL_SELECTED |
5306 |
Попытка удалить пользовательский символ, выбранный в обзоре рынка (Market Watch) |
|
ERR_CUSTOM_SYMBOL_PROPERTY_WRONG |
5307 |
Неправильное свойство пользовательского символа |
|
ERR_CUSTOM_SYMBOL_PARAMETER_ERROR |
5308 |
Ошибочный параметр при установке свойства пользовательского символа |
|
ERR_CUSTOM_SYMBOL_PARAMETER_LONG |
5309 |
Слишком длинный строковый параметр при установке свойства пользовательского символа |
|
ERR_CUSTOM_TICKS_WRONG_ORDER |
5310 |
Не упорядоченный по времени массив тиков |
|
Пользовательские ошибки |
||
|
ERR_USER_ERROR_FIRST |
65536 |
С этого кода начинаются ошибки, задаваемые пользователем |