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?
[Eliminado]  

¿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.

[Eliminado]  

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ó ?
[Eliminado]  

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 ? ? ? ?
[Eliminado]  

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?