способы закрытия сделок в советнике

 
Всем доброго времени суток всем! Пишу, советник и столкнулся с такой ситуацией

Классика

Открывает сделки по условию

Закрывает по другому

Но мне надо чтобы

Открывает сделки по условию (константа)

А закрывает должен, если одно из трех условий случилось

Пробовал через if(условие 1 || условие 2 ….

Не получилось может подскажите какие есть шаблоны !!!?
 
xanzel:
Вы бы код условий написали полностью, если он не составляет тайну конечно.
 
DmitriyN:
Вы бы код условий написали полностью, если он не составляет тайну конечно.


    if(OrdersTotal()==0 && lin0 < -75 )  \\-  условие для открытия

          ticket=OrderSend(simvol,OP_SELL,LotsOptimized(),Bid,0,0,0,"",123,0,cvet2);  \\- открываем

//----

 

     if(OrdersTotal()==1  &&  ( lin0 > -50 || (lin1 > lin2  &&   lin1 < lin4) ||   (lin1 < lin2  &&   lin1 > lin4))) \\- закрываем если одно из 3-х условий верно

       {

          OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);

          OrderClose(ticket, OrderLots(), Ask, 2, Violet);

          PlaySound("Alert.wav");

 

      }

   }

 
Функцию закрытия ордера вынести за старт, а в теле старт проверить по очереди три условия с паузами в 5-6 сек.
 
xanzel:

    if(OrdersTotal()==0 && lin0 < -75 )  \\-  условие для открытия

          ticket=OrderSend(simvol,OP_SELL,LotsOptimized(),Bid,0,0,0,"",123,0,cvet2);  \\- открываем

//----

 

     if(OrdersTotal()==1  &&  ( lin0 > -50 || (lin1 > lin2  &&   lin1 < lin4) ||   (lin1 < lin2  &&   lin1 > lin4))) \\- закрываем если одно из 3-х условий верно

       {

          OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);

          OrderClose(ticket, OrderLots(), Ask, 2, Violet);

          PlaySound("Alert.wav");

 

      }

   }

 

переменная ticket как объявлена?
 
grell:
Функцию закрытия ордера вынести за старт, а в теле старт проверить по очереди три условия с паузами в 5-6 сек.


по отдельности все работает! последние 2 и 3 условия является условие для открытия для других приоритетных сделок! может мешают 
 
PapaYozh:
переменная ticket как объявлена?


int ticket;
 
xanzel:


int ticket;
где она объявлена?
 
PapaYozh:
где она объявлена?

до старта 
 

может скобки не так стоят или еще что     if(OrdersTotal()==1 && ( lin0 > -50 || (lin1 > lin2 && lin1 < lin4) || (lin1 < lin2 && lin1 > lin4))) 

 

 
xanzel:

Поставьте перед проверкой условий этот код:

if(OrdersTotal()==1)
   Print("ticket=",ticket," lin0=",lin0," lin1=",lin1," lin2=",lin2," lin4=",lin1);
и изучайте записи в журнале.
Причина обращения: