órdenes abiertas con 10pip de diferencia - página 4

 
    //datetime lastTime  = 0;
    double highest_open_price=0;
    //int      lastTicket = -1; // None open.
    int      highest_Ticket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    //&&  OrderOpenTime()     >=  lastTime
    &&  ?????????()     >=  highest_open_price
    ){
      highest_open_price= ????????();
      highest_Ticket = OrderTicket();
    }

Como he dicho, una simple sustitución

 
GumRai:

Como he dicho - simple sustitución



gracias GumRai: pero mi pregunta adicional es que creo que ?????????() es OrderOpenTime()

ahora como hago para que funcione con mi logica de trading como tu apuntas antes




      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

 Here you give value to Opn_S, but you do nothing with it







   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

Aquí no hay condiciones para abrir una orden y sobreescribes el valor de lastTicket.

Tu código no tiene ninguna lógica, son sólo 3 secciones de código que no tienen ninguna relación entre sí

===========================================================================================================================




HHH

por qué pregunto es que arreglé el resultado como este código ABAJO......resultó a lo que quería pero el problema es que abre múltiples órdenes en una sola línea. ver el RESULTADO PICS arriba

// Orders accounting 
   datetime lastTime  = 0;
    double highest_open_price=0;
    lastTicket = -1; // None open.
    int      highest_Ticket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderOpenTime()     >=  highest_open_price
    ){
      highest_open_price= OrderOpenTime();
      highest_Ticket = OrderTicket();
    }





        
 if(Bid > High[1] && OrderOpenTime()     > highest_open_price)
  {
      Opn_S=true;
     }   
CurrentTime= Time[1];





if(Opn_S==true)               // No opened orders +
        {                                       // criterion for opening Sell
         RefreshRates();                   // Refresh rates     
         lastTicket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",magic,0,Red);
         if(lastTicket>0)
      
           {
            Comment("Opened order Sell ","#",lastTicket);
            return(0);                                 // Exit start()
           }
         if(Fun_Error(GetLastError())==1) // Processing errors
            continue;                             // Retrying
         return(0);                                   // Exit start()
        }
      break;                                    // Exit while
     }
//--------------------------------------------------------------- 9 --------------------------------------
   return(0);                                       // Exit start()
  }


 

No hay lógica ya que tu código son 3 secciones que no se relacionan entre sí.

Sólo puedo concluir que has copiado y pegado secciones de código de otros EAs con la vana esperanza de que funcionen juntos

"Creo que ?????????() es OrderOpenTime()"

Demuestra que no tienes ni idea de lo que hace el bucle y que no lo has escrito tú.

 

GumRai por favor este es todo mi código principalmente abre sólo vender. como usted ha dicho todas estas desconexiones se produjo como resultado de permitir que mi ea para abrir múltiples ordenes y bucle cosa antes es sólo simple lopped mis órdenes como este


{
   int cnt;
   int NumTrades;   // Number of buy and sell trades in this symbol
   
   NumTrades = 0;
   for (cnt = OrdersTotal()-1 ; cnt >=0 ; cnt--)
     {
     if(OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)==true)
      if ( OrderSymbol() != Symbol()) continue;
      if ( OrderMagicNumber() != magic)  continue;
      
      if(OrderType() == OP_BUY )  NumTrades++;
      if(OrderType() == OP_SELL ) NumTrades++;
             
     }
    
  }




then getting my ea to work with my loop by just adding  if(NumTrades==0 && Opn_B==true) // No new orders +

this ensures my ea to open just 1 order on a giving chart but now i want to expand my ea to open more than one order i remove  NumTrades==0 

to let the ea open order unrestricted with my ordersend as little i know now i know we can loop through order for so many reason and when it comes
to the looping for highest order on the chart i dont know that well,but can do it if example is giving. please bear with my little coding knowledge and put me through

below is my ea please assist me 
 
por favor, espero su respuesta
 

No estoy seguro de si ese EA está mal escrito, incompleto o es un EA que funciona con trozos de código eliminados.

Dices que abre principalmente ventas, pues no veo que pueda abrir nunca una compra.

La condición principal para abrir una compra es

if(Opn_B==true)

El único otro lugar en el código que Opn_B aparece en el código es

Opn_B=false

Así que no hay ningún lugar en el que se pueda establecer como verdadero.

Por cierto

   while(true) // Orders closing loop

Un bucle que sólo abre órdenes - gran comentario.

   double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
 
GumRai:

No estoy seguro de si ese EA está mal escrito, incompleto o es un EA que funciona con trozos de código eliminados.

Dices que abre principalmente ventas, pues no veo que pueda abrir nunca una compra.

La condición principal para abrir una compra es

El único otro lugar en el código que Opn_B aparece en el código es

Así que no hay ningún lugar en el que se pueda establecer como verdadero.

Por cierto

Un bucle que sólo abre órdenes - gran comentario.

gracias por revisar mi código y detectar las recomendaciones y correcciones

GumRai: por eso te dije entonces que mucha gente puede no entenderlo pero yo si, y tu eres capaz de entender porque entiendes muy bien el código,

ademas tengo mi razon para hacer que el ea abra solo la venta , mi problema con esta solicitud hizo que mi ea sea áspero pero cuando tenga la solución reorganizare todo de nuevo.

mira el ea quito las condiciones de cierre y tambien las de compra,lo que hace que el ea se vea incompleto

.porque quiero asegurarme de que se cumplan estas condiciones......opening order in

precio de apertura mas alto en el simbolo del grafico actual y abrir 10pip por encima de este si es de compra/abrir 10pips por debajo si es de venta.

Quito las condiciones de cierre porque no quiero que el backtest cierre las operaciones mientras se prueba para asegurarse de que el código es correcto antes de poner otra condición.

una vez que la solucion sea alcanzada organizare mi ea de nuevo con la condicion de cierre apropiada es por eso que le estoy pidiendo que me ayude con este problema aunque su ayuda.




 

Bien, te he dado el código para encontrar la orden con el precio abierto más alto.

Ahora es una simple cuestión de comprobar si el precio está al menos 10 pips por encima de este valor y, si es así, abrir otra orden

 

por favor GumRai: como puedo colocar el bucle en el ea, porque la forma en que lo hice no funcionó en backtest......

como lo hice? use highest_open_price y highest_Ticket para escribir algunas de mis condiciones en el ea pero no me dio el resultado deseado en el backtest

tal vez estoy perdiendo algo?


  double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
 
Sí, te falta mostrar el código. ¿Cómo vamos a saber lo que has hecho o no has hecho?