Expert advisor que cierre ordenes a determinada hora
Publicado: 13 Nov 2009 17:37
Tengo un expert advisor que cierra órdenes abiertas a la hora que yo lo especifique.Me falta que cierre además a esa misma hora, tanto órdenes abiertas como órdenes pendientes.
Ejemplo: que a las 21:15 cierre órdenes abiertas, y también órdenes pendientes.
En el EA que subo se puedo poner la hora de cierre de órdenes abiertas,pero no me cierra las órdenes pendientes que tenga puestas.
Si alguien es tan amable y le añade esa función estaré eternamente agradecido.
Fue obra de nstrader este EA.
Saludos.
#property copyright "Copyright © 2009, NsTrader"
#property link "[email protected]"
extern int Hora = 22;
extern int Minutos = 00;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int THora = TimeHour(TimeCurrent());
int TMin = TimeMinute(TimeCurrent());
Comment(THora,":",TMin);
if(Hora == THora && Minutos == TMin)
{
OClose(false);//true cierra solo las que estén en beneficio / false cierra todas
}
//----
return(0);
}
//+------------------------------------------------------------------+
void OClose(bool profit)
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderType() <= 1 && ((profit && OrderProfit() > 0) || !profit))
{
color c;
double closePrice;
int tradeDirection = 1 - 2 * ( OrderType() % 2 );
if( tradeDirection > 0)
{
c = Blue;
closePrice = MarketInfo(Symbol(),MODE_BID);
}
else
{
c = Violet;
closePrice = MarketInfo(Symbol(),MODE_ASK);
}
OrderClose(OrderTicket(), OrderLots(), closePrice, 3, c);
}
}
}
Ejemplo: que a las 21:15 cierre órdenes abiertas, y también órdenes pendientes.
En el EA que subo se puedo poner la hora de cierre de órdenes abiertas,pero no me cierra las órdenes pendientes que tenga puestas.
Si alguien es tan amable y le añade esa función estaré eternamente agradecido.
Fue obra de nstrader este EA.
Saludos.
#property copyright "Copyright © 2009, NsTrader"
#property link "[email protected]"
extern int Hora = 22;
extern int Minutos = 00;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int THora = TimeHour(TimeCurrent());
int TMin = TimeMinute(TimeCurrent());
Comment(THora,":",TMin);
if(Hora == THora && Minutos == TMin)
{
OClose(false);//true cierra solo las que estén en beneficio / false cierra todas
}
//----
return(0);
}
//+------------------------------------------------------------------+
void OClose(bool profit)
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderType() <= 1 && ((profit && OrderProfit() > 0) || !profit))
{
color c;
double closePrice;
int tradeDirection = 1 - 2 * ( OrderType() % 2 );
if( tradeDirection > 0)
{
c = Blue;
closePrice = MarketInfo(Symbol(),MODE_BID);
}
else
{
c = Violet;
closePrice = MarketInfo(Symbol(),MODE_ASK);
}
OrderClose(OrderTicket(), OrderLots(), closePrice, 3, c);
}
}
}