Проверка в маркете ошибка 131

 

Всё вроде перепробовал, но ошибка 131 в маркете так и лезет

extern double Lot = 0.1;

void OnTick() 
{
   double LotMIN=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double LotMAX=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);

   if(Lot>LotMAX) Lot=LotMAX;
   if(Lot<LotMIN) Lot=LotMIN;

   bool Trade=true;
   if(Lot * MarketInfo(Symbol(),MODE_MARGINREQUIRED) > AccountFreeMargin()) Trade=false;

   if(Trade) OrderSend(........);
}
Что ещё можно добавить к проверке лота??
 
forex2030:

Всё вроде перепробовал, но ошибка 131 в маркете так и лезет

Что ещё можно добавить к проверке лота??

строго говоря, 131 это


:-)

---------------------

строка 

if(Lot * MarketInfo(Symbol(),MODE_MARGINREQUIRED) > AccountFreeMargin()) Trade=false;

и более совреманная OrderCalcMargin()

не учитывают спред. Все их из справки тягают не приходя в сознание

 
Maxim Kuznetsov:

строго говоря, 131 это

Неправильный объём лота вроде всегда был

 
forex2030:

Всё вроде перепробовал, но ошибка 131 в маркете так и лезет

Что ещё можно добавить к проверке лота??
double lot = NormalizeDouble(lot, 2); 
 
Malik Arykov:
на нормализацию лота мкл пофигу - можно подавать 0.1235 - он сам отрежет лишнее, а вот минимальный и максимальный допустимый лот и шаг проверять необходимо MODE_MINLOT MODE_MAXLOTи еще MODE_LOTSTEP
Причина обращения: