Открытие ордера в противоположном направлении

 
Подскажите пожалуйста, мне необходимо при закрытии ордера по StopLoss открыть ордер в противоположном направлении с такими же параметрами, но единожды. Т.е. если первый ордер закрылся по SL, то при последующих закрытых ордерах по SL не открывать ордер в противоположном направлении.
 
miron_like:
Подскажите пожалуйста, мне необходимо при закрытии ордера по StopLoss открыть ордер в противоположном направлении с такими же параметрами, но единожды. Т.е. если первый ордер закрылся по SL, то при последующих закрытых ордерах по SL не открывать ордер в противоположном направлении.

Пример, как словить гарантированно на 100% сделку в результате срабатывания Stop loss - код Stop Loss Take Profit - в OnTradeTransaction ловите сделку, которая закрыта в результате срабатывания Stop loss (свойство сделки DEAL_REASON_SL). 

После того, как поймали сделку закрытую в результате срабатывания Stop loss можете уже делать то, что Вам нужно.

 
Vladimir Karputov:

Пример, как словить гарантированно на 100% сделку в результате срабатывания Stop loss - код Stop Loss Take Profit - в OnTradeTransaction ловите сделку, которая закрыта в результате срабатывания Stop loss (свойство сделки DEAL_REASON_SL). 

После того, как поймали сделку закрытую в результате срабатывания Stop loss можете уже делать то, что Вам нужно.


А не подскажите как открыть ордер в противоположном направлении? И только один раз, а не каждый раз при закрытии ордера по SL

 
 long     deal_reason       =-1;
 deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
 if(deal_reason==DEAL_REASON_SL)
               и здесь что мне необходимо...

Я правильно понял?

 
miron_like:

А не подскажите как открыть ордер в противоположном направлении? И только один раз, а не каждый раз при закрытии ордера по SL


Делаете проверку на существование ордера

if(!OrderSelect(ticket))
{
//Устанавливаем ордер
}

Добавлено

Воодще-то, всё немного сложнее, чтобы ответить однозначно нужно видеть код...

 
miron_like:

 long     deal_reason       =-1;
 deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
 if(deal_reason==DEAL_REASON_SL)
               и здесь что мне необходимо...


Я правильно понял?


Да. Правильно.

 
prostotrader:

Делаете проверку на существование ордера


немного не понял, т.е. должно выглядеть так?

long     deal_reason       =-1;
 deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
 if(deal_reason==DEAL_REASON_SL){
  if(!OrderSelect(ticket)){
    //Открываю ордер
  }
 }
 
miron_like:

немного не понял, т.е. должно выглядеть так?


В MQL5 нужно оперировать такими понятиями: открываю позицию, а не открываю ордер. Тогда станет сразу легче.

 
miron_like:

 long     deal_reason       =-1;
 deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
 if(deal_reason==DEAL_REASON_SL)
               и здесь что мне необходимо...

Я правильно понял?

Да, правильно. А пример открытия позиции (именно позиции, а не выставление отложенного ордера) смотрите в том же коде, что я привёл (функции OpenBuy и OpenSell).
 
Vladimir Karputov:

В MQL5 нужно оперировать такими понятиями: открываю позицию, а не открываю ордер. Тогда станет сразу легче.


А так код в полном виде правильно выглядит?

const MqlTradeTransaction trans; 
long     deal_reason       =-1;
deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
if(deal_reason==DEAL_REASON_SL){
  if(!OrderSelect(ticket)){
    //Открываю позицию
  }
}

А как открыть позицию в противоположном направлении с теме же параметрами?

 
if (Total==0 && Opn_B==true){ 
   TP=Bid + SizeTP*Point; 
   SL=Bid - SizeSL*Point;
   Ticket=OrderSend(Symbol(),OP_BUY,Lts,Ask,5,SL,TP,NULL,0,0,clrBlue); 
   if (Ticket > 0)
   {Alert ("Открыт отложенный ордер Buy Stop ",Ticket);}
}

Не могу понять в какое место вставить код:

const MqlTradeTransaction trans; 
long     deal_reason       =-1;
deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
if(deal_reason==DEAL_REASON_SL){
  if(!OrderSelect(Ticket)){
    //И какой здесь код написать по открытию позиции в противоположном направлении с теме же параметрами
  }
}
Причина обращения: