¿Cómo puedo establecer el TP menos de 5 pips? - página 4

 
¿Es correcto? Sólo cerrará las órdenes de los últimos 100 minutos
if(Bid>CloseforBuy)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



if(Ask<CloseforSell)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }
 
ats:
¿Es correcto? Sólo se cerrarán las órdenes de los últimos 100 minutos

Casi, TimeCurrent() da un datetime que representa la hora del servidor del último tick...

Nota: tipo datetime (entero que representa la cantidad de segundos transcurridos desde la medianoche del 1 de enero de 1970).

Por lo tanto, es necesario comprobar que . . .

TimeCurrent()-OrderOpenTime() <=

100 minutos . . . o (100 * 60) segundos

 

¡Muchas gracias por su ayuda!

¡Feliz comercio!

 

¡Hola!

He intentado modificar el EA pero no funciona correctamente. ¿Tienes alguna idea de dónde está el error?

Gracias

extern double TPforBuys=1;
extern double TPforSells=1;
extern double TimeForEA=120;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


double TPbuy = TPforBuys / 10000;
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60)  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



double TPsell = TPforSells / 10000;
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }


return(0);
}
 

Intenta cambiar a esto y ver si esto "funciona correctamente" ...

TimeCurrent()- OrderOpenTime() >= (TimeForEA * 60) // time to close
 

¡Eso es correcto! El EA sólo cierra las órdenes que no tienen más de 2 horas de antigüedad. ¡El problema es que no cierra correctamente todas las órdenes después de 1 pip! ¡Pero no se donde esta el error!

Gracias

 
ats:

¡Eso es correcto! El EA sólo cierra las órdenes que no tienen más de 2 horas de antigüedad. ¡El problema es que no cierra correctamente todas las órdenes después de 1 pip! Pero no sé dónde está el error.

Gracias

Así que funciona como quieres, ¿estoy en lo cierto? Coz no tengo ni idea de lo que quieres decir con "trabajar correctamente" y soy bastante perezoso y así no leer 4 páginas de respuestas y códigos.

Así que en realidad, no sé exactamente por qué te di esa respuesta :)

 
onewithzachy:

Así que, en realidad, no sé exactamente por qué te he dado esa respuesta :)

Es agradable ver la honestidad en Internet para un cambio :-)
 
onewithzachy:

Así que funciona como quieres, ¿estoy en lo cierto? Coz no tengo ni idea de lo que quieres decir con "trabajar correctamente" y estoy bastante perezoso y así no leer 4 páginas de respuestas y códigos.

Así que en realidad, no sé exactamente por qué te di esa respuesta :)

¡No hay problema! Gracias.
 

Cuando haces esto...

double TPB=OrderOpenPrice()+ TPbuy;

. . . qué orden está utilizando el precio de apertura de? OrderOpenPrice() Nota: " Laorden debe ser seleccionada primero por la funciónOrderSelect() ".