Eliminar SL y TP de la operación abierta

 

Hola a todos!

Tengo problemas al modificar la orden abierta.

Básicamente lo que quiero es eliminar el TakeProfit y el StopLoss  de la orden abierta, para que cierren con una función llamada "CLOSE()" en el momento que indique mi estrategia.

void eliminarSLyTP()
{
if (OrdersTotal()==
1 )
            {
             for(int c=0; c<OrdersTotal(); c++)  //obtener los datos de la última operación abierta.
                {
                 if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
                    {
                     int  os = OrderSelect(c,SELECT_BY_POS,MODE_TRADES);
                     int ticket = OrderTicket();
                     double oop = OrderOpenPrice(),
                            nsl = 0, //nuevo StopLoss.
                            ntp = 0; //nuevo TakeProfit.

                     bool om  = OrderModify(ticket,oop,nsl,ntp,0,clrNONE); //elimina el TakeProfit y StopLoss de la primera operación.
                    }
                }
            }
}

El problema es que imprime "OrderModify error 1" en el Registro del probador de estrategias.


Por el momento no afecta la operativa, sin embargo sé que algo está mal y me gustaría arreglarlo.


Me pueden ayudar?

 
Angel Antonio Martinez Velasquez:

Hola a todos!

Tengo problemas al modificar la orden abierta.

Básicamente lo que quiero es eliminar el TakeProfit y el StopLoss  de la orden abierta, para que cierren con una función llamada "CLOSE()" en el momento que indique mi estrategia.

El problema es que imprime "OrderModify error 1" en el Registro del probador de estrategias.


Por el momento no afecta la operativa, sin embargo sé que algo está mal y me gustaría arreglarlo.


Me pueden ayudar?

Se debe seleccionar la orden, antes de todo
Prueba con esta modificacion, quizas te funcione

void eliminarSLyTP()
  {
   if (OrdersTotal()== 1 )
     {
      for(int c=0; c<OrdersTotal(); c++)  //obtener los datos de la última operación abierta.
        {
         if(!OrderSelect(c,SELECT_BY_POS,MODE_TRADES))continue;
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
           {
            int ticket = OrderTicket();
            double oop = OrderOpenPrice(),
                   nsl = 0, //nuevo StopLoss.
                   ntp = 0; //nuevo TakeProfit.

            bool om  = OrderModify(ticket,oop,nsl,ntp,0,clrNONE); //elimina el TakeProfit y StopLoss de la primera operación.
           }
        }
     }
  }
Saludos!!!
 
Miguel Antonio Rojas Martinez:

Se debe seleccionar la orden, antes de todo
Prueba con esta modificacion, quizas te funcione

Saludos!!!

Muchísimas gracias por el dato!