Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
максим
43
максим 2013.01.29 10:17 
Всем доброго времени суток всем! Пишу, советник и столкнулся с такой ситуацией

Классика

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

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

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

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

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

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

Не получилось может подскажите какие есть шаблоны !!!?
DmitriyN
2316
DmitriyN 2013.01.29 11:08  
xanzel:
Вы бы код условий написали полностью, если он не составляет тайну конечно.
максим
43
максим 2013.01.29 11:27  
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");

 

      }

   }

Дмитрий
1460
Дмитрий 2013.01.29 11:37  
Функцию закрытия ордера вынести за старт, а в теле старт проверить по очереди три условия с паузами в 5-6 сек.
PapaYozh
3768
PapaYozh 2013.01.29 11:45  
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 как объявлена?
максим
43
максим 2013.01.29 11:45  
grell:
Функцию закрытия ордера вынести за старт, а в теле старт проверить по очереди три условия с паузами в 5-6 сек.


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


int ticket;
PapaYozh
3768
PapaYozh 2013.01.29 11:47  
xanzel:


int ticket;
где она объявлена?
максим
43
максим 2013.01.29 11:48  
PapaYozh:
где она объявлена?

до старта 
максим
43
максим 2013.01.29 11:53  

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

 

PapaYozh
3768
PapaYozh 2013.01.29 12:05  
xanzel:

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

if(OrdersTotal()==1)
   Print("ticket=",ticket," lin0=",lin0," lin1=",lin1," lin2=",lin2," lin4=",lin1);
и изучайте записи в журнале.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий