cómo puedo obtener el más alto después de la apertura de orderopenprice. - página 4

 
( OrderType()< OP_BUYLIMIT ) es lo mismo que ( OrderType () == OP_BUY |OrderType() == OP_SELL )
 
Hand:


chicos,

Muchas gracias,

dejame decirte porque quiero usar LastOpenPrice(OP_BUY) y LastOpenPrice(OP_SELL) porque quiero usarlos en algunas condiciones como

if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // por esa razón necesito mantener la última orden abierta para la compra y la última orden abierta para la venta, así que necesito una última orden separada una para la compra y la otra para la venta.

Puedes hacerlo... funcionará... pruébalo.
 
¿O tal vez se refiere al último pedido de COMPRA que ya está cerrado?
 

¿está clara la explicación de la función n.4?

función número 4:

// quiero obtener la orden cerrada antes de la última orden cerrada de compra o venta.

4. función para obtener y mantener el precio de cierre anterior a la última orden cerrada de compra o venta.

 

chicos,

Realmente no funciona

// Used to keep global variables

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090;                    //Identifies short positions
  
 






double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()    // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

if (  ((iOpen("EURUSD",PERIOD_H1,0)-0.0030)>=MarketInfo("EURUSD",MODE_BID))   ) 
  {   BUY("EURUSD",B_EURUSD_LS_0,B_EURUSD_TP_0,B_EURUSD_SL_0,B_EURUSD_TS_0,"if (  ( ((iOpen(EURUSD,PERIOD_H1,0)-0.00...") ;}
if (  ( (LastOpenPrice(OP_BUY)-0.0030)>MarketInfo("EURUSD",MODE_BID) )  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_BUY)-0.0030)>=MarketInfo(" EURUSD",MODE_BID) )  )") ;}
if (  ( ((iOpen("EURUSD",PERIOD_H1,0)+0.0030)<=MarketInfo("EURUSD",MODE_BID)) )  ) 
  {   SELL("EURUSD",S_EURUSD_LS_0,S_EURUSD_TP_0,S_EURUSD_SL_0,S_EURUSD_TS_0,"if (  ((iOpen(EURUSD,PERIOD_H1,0)+0.00...") ;}
if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo(" EURUSD",MODE_BID) )") ;}

Como se puede ver en las imágenes

Empecé a probar el EA desde el 01/03/2011 hasta el 11/04/2011

en la primera hora del 01/03/2011

la posición se abrió , pero nadie de las condiciones anteriores availble . que me dejó realmente loco

 
Hand:

¿está clara la explicación de la función n.4?

función número 4:

// quiero obtener la orden cerrada antes de la última orden cerrada de compra o venta.

4. función para obtener y mantener el precio de cierre anterior a la última orden cerrada de compra o venta.

Precio de cierre ? precio de cierre de la barra anterior a la barra donde se cerró la última orden ? o el precio de cierre de la orden de compra o venta que se cerró antes de la última que se cerró ?
 

la segunda opción:

el precio de cierre de la orden de compra o venta que cerró antes de la última que cerró...

 
Hand:

la segunda opción:

el precio de cierre de la orden de compra o venta que cerró antes de la última que cerró?

Pruebe esto...

Para obtener el último precio de cierre de la última orden que fue una Compra o una Venta y que coincidió con el Símbolo y el número mágico haga esto LastClosePrice(1)

Para obtener el anterior haga esto. . . LastClosePrice ( 2)

double LastClosePrice(int Order)
   { 
 
   double ClosePrice;                         

   for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)            // Only my CLOSED  orders 
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() < OP_BUYLIMIT )
         {
         Order--;
         if (Order == 0)                                            //  determines if we have found the Order we are interested in
            {
            ClosePrice = OrderCloseprice();
            break;
            }
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

NOTA: este código NO FUNCIONARÁ con sus números mágicos como se muestra en su código anterior. . .

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090; 


WHY ? ? ? ?
 

Chicos.

¿Hay alguien puede utilizar el programa teamviewer entonces vamos a acceder togethor y la comprobación de lo que es el verdadero problema.

 
Hand:

chicos,

Realmente no funciona

Como se puede ver en las imágenes

Empecé a probar el EA desde el 01/03/2011 hasta el 11/04/2011

en la primera hora del 01/03/2011

la posición se abrió , pero nadie de las condiciones anteriores availble . que me dejó realmente loco

No es una locura. Es "razonable" que se abra una orden porque:

double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       
      && OrderSymbol() == Symbol()    // and my pair.             
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice); //  <-------  this returns the Order Open Price OR ZERO.

Si la función anterior devuelve CERO, entonces puede ocurrir cualquier escenario como el siguiente

 if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) <--------------- 0+0.0030=0.0030<Bid: TRUE
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

Te sugiero que coloques una lógica "maestra", por encima de esto. Si la función LastOpenPrice(...) devuelve cero....¿cuál es su plan de juego?

Razón de la queja: