Стопы для отложенных ордеров

 

Добрый день!

Выставляю отложенный ордер для открытия позиции типа ORDER_TYPE_BUY_STOP.

Подскажите пожалуйста возможно ли и как правильно выставить для данного ордера SL и TP?

Конструкция ниже эффекта не дает, возможно из-за типа ордера...

mrequest.action      =TRADE_ACTION_PENDING;
mrequest.symbol      =_Symbol;
mrequest.volume      =Lot;
mrequest.type        =ORDER_TYPE_BUY_STOP;
mrequest.price       =NormalizeDouble(lprice,digits);
mrequest.sl          =Sl;
mrequest.tp          =Tp;
mrequest.type_filling=ORDER_FILLING_RETURN;
mrequest.type_time   =ORDER_TIME_DAY;
if(!OrderSend(mrequest,mresult))
{
      Print(__FUNCTION__,": ",mresult.comment," код ответа ",mresult.retcode");
} 
 
d.e.al:

Добрый день!

Выставляю отложенный ордер для открытия позиции типа ORDER_TYPE_BUY_STOP.

Подскажите пожалуйста возможно ли и как правильно выставить для данного ордера SL и TP?

Конструкция ниже эффекта не дает, возможно из-за типа ордера...

Проводите модификацию СЛ и ТП после срабатывания отложенного ордера в рыночный.
 
Согласно документации для открытия отложки требуется 11 полей структуры. У Вас только 9.
 
d.e.al:

Добрый день!

Выставляю отложенный ордер для открытия позиции типа ORDER_TYPE_BUY_STOP.

Подскажите пожалуйста возможно ли и как правильно выставить для данного ордера SL и TP?

Конструкция ниже эффекта не дает, возможно из-за типа ордера...

Добрый день!

Сначала проверьте возможно ли устанавливать ордер данного типа 

  long order_mode = long( SymbolInfoInteger( a_symbol, SYMBOL_ORDER_MODE ) );
  
  
  if ( ( SYMBOL_ORDER_STOP & order_mode )!= SYMBOL_ORDER_STOP)
  {
    MessageBox( "Символ " + a_symbol + " не поддерживает buy stop or sell stop режим установки ордеров!", "Ошибка", MB_OK | MB_ICONHAND );
    return( false );
  }
 

ну примерно так

 S -величина стопа отложеных ордера

 

   int BPD()  
  {  double idStop;  int ticket=0;
     idStop=Bid-S*Poin;     
   if(Stop==0) idStop=0;
  ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,
  Ask+S*Poin,Slippage,0,0,"",0,0,CLR_NONE);  
   //    if(ticket>0)   

     return(0);}
 //======================================== 
   int SPD()   
  {  double lot; double idStop; int ticket=0;
     idStop=Ask+S*Poin;     
   if(Stop==0) idStop=0;
      ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,
     Bid-S*Poin,Slippage,0,0,"",0,0,CLR_NONE);  
      // if(ticket>0)   
    return(0);}
 
stenrobot:

ну примерно так

 S -величина стопа отложеных ордера

 

Не могли бы скинуть ссылку на описание функции OrderSend(), которую вы используете, а то не совсем понятно какие параметры передаются.

В документации MQL5 указано, что она принимает только 2 параметра...

bool  OrderSend(
   MqlTradeRequest&  request,      // структура запроса
   MqlTradeResult&   result        // структура ответа
   );


В целом, разобрался по советам AndreiFAN, и Mikalas.

Благодарю.

 
d.e.al:

Не могли бы скинуть ссылку на описание функции OrderSend(), которую вы используете, а то не совсем понятно какие параметры передаются.

В документации MQL5 указано, что она принимает только 2 параметра...

bool  OrderSend(
   MqlTradeRequest&  request,      // структура запроса
   MqlTradeResult&   result        // структура ответа
   );


В целом, разобрался по советам AndreiFAN, и Mikalas.

Благодарю.

Ну так в документации посмотри содержимое структуры MqlTradeRequest и всё будет понятно. Там перечислено всё что необходимо. Для разных операций разное количество полей обязательных к заполнению. А тот код это на mql4.


ps: Я-же ответил, в Вашем примере не все поля структуры заполнены.


Причина обращения: