[Invalid price] или как съехать в дурку

 


if (PriceOpen(Symbol_2,0) > 0 && PriceOpen(Symbol_2,0) < SymbolInfoDouble(Symbol_2,SYMBOL_ASK)
&& SymbolInfoDouble(Symbol_2,SYMBOL_ASK) - PriceOpen(Symbol_2,0) > SymbolInfoInteger(Symbol_2,SYMBOL_TRADE_STOPS_LEVEL)*SymbolInfoDouble(Symbol_2,SYMBOL_POINT)
&& SymbolInfoDouble(Symbol_2,SYMBOL_ASK) - PriceOpen(Symbol_2,0) > SymbolInfoInteger(Symbol_2,SYMBOL_TRADE_FREEZE_LEVEL)*SymbolInfoDouble(Symbol_2,SYMBOL_POINT)
&& tp_buy_2 - PriceOpen(Symbol_2,0) > SymbolInfoInteger(Symbol_2,SYMBOL_TRADE_STOPS_LEVEL)*SymbolInfoDouble(Symbol_2,SYMBOL_POINT)) {     

bool b=m_trade.BuyLimit(Lot_2,PriceOpen(Symbol_2,0),Symbol_2,0,tp_buy_2,ORDER_TIME_GTC,0,OrderComment);
}


Я весь день пытаюсь победить эту ошибку в валидаторе, уже не знаю, что ему еще нужно.

Мужики может есть у кого идея, что ему не нравится?)

 


😂😅

 
Anton Zverev:



Я весь день пытаюсь победить эту ошибку в валидаторе, уже не знаю, что ему еще нужно.

Мужики может есть у кого идея, что ему не нравится?)

Возможно связано с тем, что:

- PriceOpen(Symbol_2,0) может возвращать не нормализованную цену. Цена должна быть округлена до количества знаков после запятой, указанного для инструмента.

Кроме того, возможно, что цена ордера не соответствует требованиям брокера по шагу цены. Поэтому нужно нормализовать цену.

 
Alexandr Saprykin #:

Возможно связано с тем, что:

- PriceOpen(Symbol_2,0) может возвращать не нормализованную цену. Цена должна быть округлена до количества знаков после запятой, указанного для инструмента.

Кроме того, возможно, что цена ордера не соответствует требованиям брокера по шагу цены. Поэтому нужно нормализовать цену.

Цена нормализована, это уже просто как рефлекс))

 
Anton Zverev:



Я весь день пытаюсь победить эту ошибку в валидаторе, уже не знаю, что ему еще нужно.

Мужики может есть у кого идея, что ему не нравится?)

По всем трем сообщениям высока вероятность того, что Buy Limit устанавливается выше текущей цены Ask или вровень с ней. К примеру, на графике М30 для свечи 2022.04.08 23:00 максимум цены отображается 1.30360, в то время как советник пытается установить отложенный ордер по цене 1.30355, что очень близко. При установке ордера нужно распечатать:

  1. Текущую цену Ask.
  2. Запрошенную цену открытия ордера.
  3. Величину Stop Level.
Видя эти данные, можно будет установить точный диагноз.
 
Очередной хранитель граалей не может решить детскую ошибку.Какая ирония 
 
Arch #:
Очередной хранитель граалей не может решить детскую ошибку.Какая ирония 
Из детского тут только ваши высказывания))
 

Из детского тут только ваши высказывания))

Вам же ответили. Необходимо нормализовать цену. Такие ошибки относятся к базовым и должны быть исключены.

Anton Zverev - VarkoTechnologies - Профиль трейдера
Anton Zverev - VarkoTechnologies - Профиль трейдера
  • 2025.08.15
  • www.mql5.com
Профиль трейдера
 
Arkadii Zagorulko #:

Вам же ответили. Необходимо нормализовать цену. Такие ошибки относятся к базовым и должны быть исключены.

Выше писал, что цена нормализована, это по дефолту всегда.

 
Ihor Herasko #:

По всем трем сообщениям высока вероятность того, что Buy Limit устанавливается выше текущей цены Ask или вровень с ней. К примеру, на графике М30 для свечи 2022.04.08 23:00 максимум цены отображается 1.30360, в то время как советник пытается установить отложенный ордер по цене 1.30355, что очень близко. При установке ордера нужно распечатать:

  1. Текущую цену Ask.
  2. Запрошенную цену открытия ордера.
  3. Величину Stop Level.
Видя эти данные, можно будет установить точный диагноз.

Да я не понимаю, как он пытается поставить лимитку выше ask, если я делаю проверку, что цена открытия должна быть точно ниже ask.

PriceOpen(Symbol_2,0) < SymbolInfoDouble(Symbol_2,SYMBOL_ASK)

По поводу вровень, есть тоже проверки на заморозку и стоп левэл.

Посмотрите код который я оставил))

 
Anton Zverev #:
Посмотрите код который я оставил))
PriceOpen() вызывается 6 раз. Всегда ли она возвращает одно и тоже значение?