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

 

He solucionado el primer problema ( he cometido un error Gracias diostar)

// Debería poner if(OrdersTotal()>0){
if ((lastOpenedOpenPriceBuy()-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 ( ((lastOpenedOpenPriceBuy()-0.0030>MarketInfo(EURUSD,MODE_BID) )" }
}

para el segundo:

si ( ((lastOpenedOpenPriceBuy( )-lastOpenedOpenPriceSell() )>=0.0060) &&( lastClosedClosePrice()<beforelastClosedClosePrice()) )
{ CLOSESHORT("EURUSD") ;}

No sé qué debo hacer:

para tu información la función CLOSESHORT es:

int CLOSESHORT(string symbol_c) {
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
CloseAllPositions(symbol_c,OP_SELL,MagicNumberShort);
return(0);
}


Gracias

 

Ahora estoy confundido.

¿Estás respondiendo sobre la primera función lastOpenedOpenPriceBuy()

Por ahora sólo puedo ocuparme de eso. Entonces, qué arreglos estabas haciendo exactamente. ¿Cómo es el código ahora?

 
diostar:

Ahora estoy confundido.

No eres el único... deja de perder el tiempo.
 
RaptorUK:
No eres el único... deja de perder el tiempo.

Sabes, este hilo es probablemente uno de los más largos. Y después de 6 páginas, confundido. No, sigo diciendo que no es una "pérdida".

(Sólo significa que es el momento de una nueva dirección, una nueva vida, un nuevo comienzo. Para todos).

 
Yo también he pasado tiempo en este hilo, he añadido código y he hecho sugerencias . . cuando se arrastra el caballo al agua, se le da sabor con heno y se le añaden algunas manzanas y aún así el caballo no quiere beber, es hora de darse cuenta de que el caballo no quiere beber... quiere un goteo intravenoso para su ingesta de agua... en ese momento, en lo que a mí respecta, el caballo está por su cuenta.
 
RaptorUK:
Yo también he pasado tiempo en este hilo, he añadido código y he hecho sugerencias . . cuando se arrastra el caballo al agua, se aromatiza con heno y se añaden algunas manzanas y sin embargo el caballo sigue sin querer beber es el momento de darse cuenta de que el caballo no quiere beber . . quiere un goteo intravenoso para su ingesta de agua . . en ese punto en lo que a mí respecta el caballo está por su cuenta.

Ya veo. La recompensa final puede no estar "destinada" a que el caballo se alimente, entonces la recompensa a los que lo intentaron, tiene que ser otra.

Gracias al caballo por eso.

 

Gracias diostar por tu ayuda.

ahora tengo el 85% de corregir los errores. vamos a ver:

1- creamos 4 funciones ( por favor verlas al final de esta pagina)

*lastOpenedOpenPriceBuy()

* lastOpenedOpenPriceSell()

*lastClosedClosePrice()
*beforelastClosedClosePrice()

2- Nos encontramos con el primer problema cuando utilizamos:

if (  ((lastOpenedOpenPriceBuy()-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 (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+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 (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}

Lo corregimos añadiendo :

if(OrdersTotal()>0){
  if (  ((lastOpenedOpenPriceBuy()-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 (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )") ;}
  if (  ((lastOpenedOpenPriceSell()+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 (  ( (lastOpenedOpenPriceSell()+0.0030)<MarketInfo(EURUSD,MODE_BID) )  )") ;}
  }

3- El segundo problema es:

if ( ((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)&&(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))
         &&(lastClosedClosePrice()< beforelastClosedClosePrice()) )  
   {  CLOSESHORT("EURUSD") ;}

si elimino &&(lastClosedClosePrice()< beforelastClosedClosePrice()) . entonces todo irá bien

no hay problema con :

*((lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell())>=0.0060)

*(((lastOpenedOpenPriceBuy()+lastOpenedOpenPriceSell())/2)<MarketInfo("EURUSD",MODE_BID))

el único problema viene con &&(lastClosedClosePrice()< beforelastClosedClosePrice())

Tomemos un ejemplo:

si la orden número 5 se abrió y fue para vender, entonces la orden número 6 se abrió y cerró que la orden fue para comprar, entonces la orden número 7 se abrió y fue para comprar.

El caso será (lastClosedClosePrice()< beforelastClosedClosePrice())

( Orden número 6 < Orden número 4 ) // ya que la orden número 5 aún no se cerró.

¿Qué debo hacer? No sé. He intentado utilizar if(OrdersHistoryTotal( )>0){entoncesinsertar todas las condiciones pero no hay manera }

double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_SELL && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = OrderClosePrice();
      }
   }
   
   return(ret);
  }


double beforelastClosedClosePrice()
  {
   double ret = 0;
   double ret2 = 0;
   datetime time = 0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      if(OrderType()<2 && OrderCloseTime()>time) {
         time = OrderCloseTime();
         ret = ret2;
         ret2 = OrderClosePrice();
      }
   }
   if(ret==0) {
      ret = ret2;
   }
   
   return(ret);
  }
 
double lastOpenedOpenPriceBuy()
  {
   double ret = 0;
   datetime time=0;
   for(int i=0; i<OrdersTotal(); i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY && OrderOpenTime()>time) {
         time = OrderOpenTime();
         ret = OrderOpenPrice();
      }
   }
   
   return(ret);
  }

Esto NO fue sugerido por mí, y "nosotros" no creamos esto. Esto es 100% tuyo.