Промахиваюсь мимо цены

 
Когда тестирую советника, часть ордеров не принимается тестером под предлогом: "invalid price" Error 4107 Но я пытаюсь открывать позиции вот так: OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, Name, magic4, 0, Red); Если бы я перепутал Bid и Ask, то позиции вообще не открывались бы, а так лишь периодически не открываются. У меня в голове не укладывается, почему тестер не принимает ордера! В реале ещё бы понял: задержки на линии итп. А тестер... У кого ещё такие чудеса бывают?
 

Посмотрите, может Ваш случай https://www.mql5.com/ru/forum/124042

Хотя сам кроме увеличения слиппаджа других изменений не заметил)

 

Попробуй нормализовать цену.

 
Кстати, да, почему-то подумал, что она нормализована. Это конечно первое что надо сделать.
 
OnGoing:
Кстати, да, почему-то подумал, что она нормализована. Это конечно первое что надо сделать.

Как правильней нормализовать?

OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),10,0,0,"",16384,0,Green);

или надо руками цифру вставлять?
 
Eugene1:

Как правильней нормализовать?

OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),10,0,0,"",16384,0,Green);

или надо руками цифру вставлять?
Можно оба способа, но лучше первый (Digits), он будет кроссдилинговый)
 
OnGoing:
Можно оба способа, но лучше первый (Digits), он будет кроссдилинговый)
А также кросссимвольный )
 
Eugene1:

OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, Name, magic4, 0, Red);

У меня в голове не укладывается, почему тестер не принимает ордера! В реале ещё бы понял: задержки на линии итп. А тестер... У кого ещё такие чудеса бывают?

есть еще такая вавка: при переходе с 4х знакового на 5ти знаковый счет и обратно "залипает" переменная Dgits и еще хз что. хотя баг давно известный, разработчики его фиксить не хотят. тогда получив на 4х знаке 5тизначную цену - получите ошибку, хотя это будет честный Bid

 
f.t.:

есть еще такая вавка: при переходе с 4х знакового на 5ти знаковый счет и обратно "залипает" переменная Dgits и еще хз что. хотя баг давно известный, разработчики его фиксить не хотят. тогда получив на 4х знаке 5тизначную цену - получите ошибку, хотя это будет честный Bid

Спасибо!

Как его фиксить?

 
Eugene1:

Спасибо!

Как его фиксить?


Смотрите в Документации Предопределённые переменные и также MarketInfo().
 
Eugene1:

Как его фиксить?


Можно попробовать отбрасывать пятый знак (если таковой появляется) следующей конструкцией:

bid = MathFloor(Bid*10000)/10000;
Причина обращения: