Ошибка 4107

 
Имеем советник со следующим кодом:

stop_up=NormalizeDouble(Ask-sdcur*SDLoser, 4);
tp_up=NormalizeDouble(Ask+sdcur*SDTaker, 4);
Print("Ask=", Ask, " stop_up=", stop_up, " tp_up=", tp_up);
if(OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, stop_up, tp_up, comm, MAGICSBOLL)==-1)
  {
   Print("Облом установки ордера buy ", GetLastError());



При выполнении получаем в логе следующее:

2006.01.02 11:00  sboll EURUSD,M1: Ask=1.1851 stop_up=1.1786 tp_up=1.1894
2006.01.02 11:00  sboll EURUSD,M1: invalid price 1.18514998 for OrderSend function
2006.01.02 11:00  sboll EURUSD,M1: Облом установки ордера buy 4107



Откуда она берет 8 знаков после запятой и как это обойти? Все округлено до 4 знаков, в логе видно. МТ4 билд 195 (Альпари).

 
Вообще-то принтом нельзя выяснить факт нормализации, так как Print выводит информацию с точностью до 4 знаков (о чём в словаре явно написано).
 
Сделал округление через переменную, результат тот же:

pr_up=Ask;
stop_up=NormalizeDouble(pr_up-sdcur*SDLoser, 4);
tp_up=NormalizeDouble(pr_up+sdcur*SDTaker, 4);
Print("pr_up=", pr_up, " stop_up=", stop_up, " tp_up=", tp_up);
if(OrderSend(Symbol(), OP_BUY, Lots, pr_up, 10, stop_up, tp_up, comm, MAGICSBOLL)==-1)
  {
   Print("Облом установки ордера buy ", GetLastError());



06.01.02 11:00  sboll EURUSD,M1: pr_up=1.1851 stop_up=1.1786 tp_up=1.1894
06.01.02 11:00  sboll EURUSD,M1: invalid price 1.18514998 for OrderSend function
06.01.02 11:00  sboll EURUSD,M1: Облом установки ордера buy 4107
 
Вопрос: При тестировании советника ордера,... - http://forum.alpari-idc.ru/showthread.php?p=480396#post480396
 
История была для МТ4, в файле .hst с сайта Альпари. Все, разобрался. Спасибо за помощь.
Причина обращения: