Fractal Break Out-Stuck - página 3

 

He cambiado los parámetros en ambas funciones OrderModify y OrderSelect sin éxito...

El flujo parece lógico y he comprobado dos veces todos los parámetros.


Esto está sucediendo durante el backtest, pero no debería importar.

 
//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;
    if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;
    double SL=OrderStopLoss();
    bool   result;
    int    error;
    //Different OrderTypes
    if(OrderType()==OP_BUY)
       {
        if(BreakEven > 0) 
          {
           if(Bid - OrderOpenPrice() >= Point * BreakEven * mypoint)  //make input for BreakEven    StopLoss)
              {                                                                   //and don't forget mypoint !!!
               if(OrderStopLoss() < OrderOpenPrice()) 
                 {
                  SL = OrderOpenPrice()+Point;
                 }
              }
          }
       }
    if(OrderType()==OP_SELL)              
       {
         //For you to do
          
              
               
                
               
                  
                   
             
             
       }
    if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);}       
   }

Haz que la codificación sea fácil de leer

ver la diferencia con su propia escritura esto es más easie contar {{{{{{{{{{{{{{{ }}}}}}}}}}}}}}

 
ZacharyRC:

Sigo teniendo dificultades. He llevado a cabo errores para averiguar el motivo.


El diario ha informado:

1) Error 4051=Parámetro incorrecto

2) Ticket inválido para modificar el pedido

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


   if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
   if(OrderType()==OP_BUY)
      {
      if(Move.BE && StopLoss > 0) 
         {
         if(Bid - OrderOpenPrice() >= Point * StopLoss)
            {
            if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
               {
               OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
               Print("Cant Modify Order"+GetLastError(),i);
               }
            } 
         }
      }
   else
      {
      if(Move.BE && StopLoss > 0) 
         {
         if(OrderOpenPrice() - Ask >= Point * StopLoss)
            {
            if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
               {
               OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
               Print("Cant Modify Order"+GetLastError(),i);
               }
            }
         }
      }
   }

Para una compra ¿cómo puede el SL estar por encima del precio de apertura? OrderOpenPrice() + Point * MoveStopTo

 
deVries:

para BUY Es posible tener OrderStopLoss() por encima de OrderOpenPrice() después de que la modificación haya tenido éxito y la operación esté en beneficios
LOL . . oops <sonrisa roja>
 
RaptorUK:
LOL . . oops <sonrisa de cara roja>


cuidado con la vergüenza borrar mi post
 
ZacharyRC:

Todavía tengo dificultades. He llevado a cabo errores para averiguar el motivo.


El diario ha informado:

1) Error 4051=Parámetro incorrecto

2) Ticket inválido para modificar el pedido

OK, tal vez sus mensajes de error son espurios...

 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);


               OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
               Print("Cant Modify Order"+GetLastError(),i);

¿Por qué llamas a GetLastError() si OrderSelect() funciona? si te muestra un error no será debido a OrderSelect()

El mismo caso para el OrderModify(), si el modify funciona todavía estás llamando a GetLastError(), ¿por qué? sólo llámalo si la función falla...

            if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
               {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red))
                  Print("Cant Modify Order, error# " + GetLastError()," index ", i);
 
deVries:

cuidado con la vergüenza borrar mi post
No, soy humano, también cometo errores, no me importa que la gente lo sepa :-)
 

AHHH Me encanta. Ambos puntos tienen mucho sentido.


{{{{}}}}} ¡También es mucho más fácil!

Los errores sólo deben ser llamados si la función falla.


Gracias a los dos, espero que vuestros fines de semana hayan sido estupendos.

 
RaptorUK:

Para una compra, ¿cómo puede el SL estar por encima del precio de apertura? OrderOpenPrice() + Point * MoveStopTo


El SL está por debajo de la orden.



¿Está seguro de que no se refiere a la sección de venta?

 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 
RaptorUK:
LOL . . oops <sonrisa de la cara roja>

Ha sido un error por mi parte.