В чем дело?! Условие: 1.2697>=1.2717 && 1.2707<=1.2719 верно!

 
В чем дело?! Условие: 1.2697>=1.2717 && 1.2707<=1.2719 верно!
Используется условие:
if(OpenPrice-CheckPrice*Point>=low_val && OpenPrice-CheckPrice*Point+StartPrice*Point<=Bid)
Для проверки вывожу комментарий:
Comment(OpenPrice-CheckPrice*Point,">=",low_val," && ",OpenPrice-CheckPrice*Point+StartPrice*Point,"<=",Bid);
Комментарий выводится: 1.2697>=1.2717 && 1.2707<=1.2719 и совершается зделка по этому условию.



Почему число 1.2697 больше или равно 1.2717? В чем дело? :(
Билд: 198 и 199.
 
А с нормализацией пробовали?
 
ExpertTrader:
Для проверки вывожу комментарий:
Comment(OpenPrice-CheckPrice*Point,">=",low_val," && ",OpenPrice-CheckPrice*Point+StartPrice*Point,"<=",Bid);
Для проверки чего?
 
komposter писал (а):
А с нормализацией пробовали?

Вы думаете что-то изменится? В комментарии цена может отличатся от реальной? Я знаю точно что параметры OpenPrice, low_val соответствуют действительности, соответствуют ценам на графике, а параметры OpenPrice и CheckPrice - настраиваются.
extern int CheckPrice = 20;
extern int StartPrice = 10;

double OpenPrice = iOpen(NULL,PERIOD_M1,BarShift);

double low_val = Low[ArrayMinimum(Low,BarShift,0)];
Помоему все просто, высчитывается цена, но первое условие 1.2697>=1. 2717 почему-то либо игнорируется.
 
да скорее всего где-то скобки фигурные потерялись (или еще что)
без полного кода ничем тебе никто не поможет
 
nickbilak писал (а):
да скорее всего где-то скобки фигурные потерялись (или еще что)
без полного кода ничем тебе никто не поможет
Да нет, со скобками все нормально.
if(OpenPrice-CheckPrice*Point>=low_val && OpenPrice-CheckPrice*Point+StartPrice*Point<=Bid)
  {
   ticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,0,MAGIC,0,Green);
   if(ticket>0)
     {
      if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
     }
   else Print("Error opening BUY order : ",GetLastError()); 
   return(0); 
  }
В комментарий добавил условие, возвращает 1.



Comment(OpenPrice-CheckPrice*Point>=low_val && OpenPrice-CheckPrice*Point+StartPrice*Point<=Bid,
" ",OpenPrice-CheckPrice*Point,">=",low_val," && ",OpenPrice-CheckPrice*Point+StartPrice*Point,"<=",Bid);
 
Расставте правильно круглые скобки (и не жалейте их).
Иногда бывают чудеса с приоритетом операций ...
 
Ха, во прикол, все верно, вот только откуда цифра 0.8227?
 
Получается при нулевом BarShift минимум равен:
Low[ArrayMinimum(Low,0,0)];
Может из-за этого?
 
Всем спасибо за внимание. Все ясно, все исправил, все работает.
Причина обращения: