Сразу 2 проблемы в 2-х терминалах - страница 5

 
ARray:
Ошибка тут имхо:
'OrderStopLoss() возвращает ненормализованное значение - это нормально?'
У меня по крайней мере было так (пытался ставиться тот же стоплосс, что и был)... то есть это условие работает некорректно:
(OrderStopLoss()!=su) && (OrderStopLoss()!=sd)
попробуй нормальзовать значения вот так:
NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(su,Digits)
 && NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(sd,Digits)






Не работает! :) кривые ручки разработчиков, а еще чемп на носу!!! :)))))
 
И такой не помог!!!
         if(
         (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(su,Digits))
          && 
          (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(sd,Digits))
          )
 
PSmith:


Если скобки не стоят, то первой операцией всегда выполняется &&, которая имеет наивысший приритет (на практике проверено неоднократно).

1. b && b = 1

2. с || с = 1

3. a > 1 = 1/0

4. 1/0 > 1 = 0

5. 0 < d

А поскольку разницы между bool и int практически никакой нет то результат может быть любой. Ставьте скобки и будет вам щастье.

:-)
ну Вы дали!
В доках MQL4 написано, что у операций >,< и т.п. приоритет выше, чем у && или ||.
Не знаю, что Вы там проверяли...

b && b = 1 - разве? По-моему, это зависит от b. Если b=0, то b && b = 0.
 
cloud666:
И такой не помог!!!
         if(
         (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(su,Digits))
          && 
          (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(sd,Digits))
          )

А это точно Ваш ордер, выставленный данным экспертом, по Данному инструменту???

Добавьте проверку еще эту:
OrderMagicNumber()==ExpertMagicNumber && OrderSymbol()==Symbol()
 
ARray:
cloud666:
И такой не помог!!!
         if(
         (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(su,Digits))
          && 
          (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(sd,Digits))
          )



А это точно Ваш ордер, выставленный данным экспертом, по Данному инструменту???

Добавьте проверку еще эту:
OrderMagicNumber()==ExpertMagicNumber && OrderSymbol()==Symbol()


Это так в тестере, а Магическоечисло никогда не юзал!
 
Дело в том,что структура ЕСЛИ(... И ...){..} не выполняется, а работает лишь в случае ЕСЛИ(...){ЕСЛИ(...){..}}
 
Покажите код вместе со строчкой, где Вы выбираете текущий ордер (OrderSelect(...))
 
   if(OrdersTotal()==0)
   {   
      preinit();
      if(U()==1)
      {
         OrderBuy();
         SelectOnlyOrder();
      }
      else if(U()==2)
      {
         OrderSell();
         SelectOnlyOrder();
      }
   

}

int SelectOnlyOrder()
{
   OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
   return(0);
}
 
Выбирается 1 раз!!! только при установке!
 
Как я понял, Вы пытаетесь после продажи или покупки, сразу изменить стоплосс у ордера? А зачем?
Вроде как это может быть причиной ошибки.

И еще: как поведет Ваша система, если ордер на покупку или продажу не выставится по каким-либо причинам, и
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
вернет false;