Ошибка Invalid Price при торговле USDRUB_TOM - страница 2

 

И вот что еще интересно, нет значка ошибки в тестере

 

 
стандартная нормализация не пройдет
 
Alexander Bereznyak:
стандартная нормализация не пройдет
А она у меня и так не стандартная.
 
Sergey Zhilinskiy:

И вот что еще интересно, нет значка ошибки в тестере

 

Сколько у символа разрядов после запятой?
 
Karputov Vladimir:
Сколько у символа разрядов после запятой?
Четыре
 
Sergey Zhilinskiy:
Четыре

   Print("Digits() ",Digits(),", SYMBOL_POINT ",SymbolInfoDouble(Symbol(),SYMBOL_POINT));

Что вернет этот код?

 
Karputov Vladimir:
Что вернет этот код?
 
Sergey Zhilinskiy:
Я изменил код. И.... Вы бы не могли копировать текст из вкладки "Эксперты" и вставлять в сообщение в виде кода?
 
Sergey Zhilinskiy:

Тестирую советник в терминале брокера "Открытие". Инструменты USDRUB_TOM, USDRUB_TOD и т.д.

Код открытия сделки:

 Функция нормализации цены:

double ND(double x){
   double tickSize=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   return(MathRound(x/tickSize)*tickSize);
}

 Изредка сделки открываются, а в основном Invalid Price... Может кто подскажет в чем может быть дело?

Sergey Zhilinskiy:


https://c.mql5.com/3/98/Screenshot_8.png

А теперь давайте посчитаем как будет нормализована цена...

Текущая цена 65.8412 разделим на 0.0025 и округлим до целого, получим 26336, затем умножим на 0.0025 и получим 65.84, что не соответствует действительности.


NormalizeDouble(цена, SymbolInfoInteger(_Symbol, SYMBOL_DIGITS))