Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Esta parte
if(newbar==Time[0])return(0);
si no, newbar=Time[0];
int ticket, total;
if(Bares<100)
{
Print("barras inferiores a 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit menos de 10");
return(0); // comprobar TakeProfit
}
Es evitar que el ea cierre las órdenes en un momento determinado si no es el primer tick de una nueva barra y si el beneficio no es > 10 pipsHola mladen, he eliminado esa parte de la codificación y aún así mi ea no cierra en el momento deseado.
¿Tienes alguna idea de cuál puede ser la razón? Gracias.
Saludos
Ryan
Hola mladen, he eliminado esa parte de la codificación y todavía mi ea no se cierra en mi tiempo deseado.
¿Tiene alguna idea de cuál puede ser la razón? Gracias.
Saludos
RyanTal y como está escrito, sólo cerrará las órdenes, y sólo si la hora del broker es exactamente las 07:00:00
Tal y como está escrito, sólo cerrará las órdenes, y sólo si la hora del broker es exactamente las 07:00:00
Hola mladen, ¿hay alguna otra manera de evitar esto ya que no parece estar funcionando aquí.
Saludos
Ryan
Hola mladen, ¿hay alguna otra manera de evitar esto ya que no parece estar funcionando aquí.
Saludos
RyanPruebe a utilizar
If (TimeCurrent()>= StringToTime("07:00:00"))
en lugar de
Pruebe a utilizar
If (TimeCurrent()>= StringToTime("07:00:00"))
en lugar deHola mladen, sigue sin funcionar. Me pregunto si podría ser debido a estas líneas de aquí... ¿el OrdersTotal o el OrderSelect podrían estar causando el problema?
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
Saludos
Ryan
Hola mladen, sigue sin funcionar. Me pregunto si puede ser debido a estas líneas... ¿el OrdersTotal o el OrderSelect pueden estar causando el problema?
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
Saludos
RyanNo. Esas líneas son correctas
No. Esas líneas son correctas
Hola mladen, porque he configurado mi ea para tener sólo 1 operación en cualquier momento y me di cuenta de que OrdersTotal establece mi cuenta int i a 0 negativo por 1-1, i>=0; i-- hará que mi i=-1
así que me preguntaba si esto podría ser el error.
else if(total > 1) //para cerrar órdenes basadas en el tiempo... aún no resuelto.
{
if (Hour()==7 && Minute()==30)
{
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (!UseCurrSymbol || OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
pBid=MarketInfo(OrderSymbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue);
}
if (OrderType()==OP_SELL)
{
pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),pAsk,1,Red);
}
}
}
}//
}
return(0);
}
Hola mladen, porque he configurado mi ea para tener sólo 1 operación en cualquier momento y me di cuenta de que OrdersTotal establece mi cuenta int i a 0 negativo por 1-1, i>=0; i-- hará que mi i=-1
por lo que me preguntaba si este podría ser el error.
else if(total > 1) //para cerrar las órdenes en función del tiempo... aún no resuelto.
{
if (Hour()==7 && Minute()==30)
{
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (!UseCurrSymbol || OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
pBid=MarketInfo(OrderSymbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue);
}
if (OrderType()==OP_SELL)
{
pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),pAsk,1,Red);
}
}
}
}//
}
return(0);
}Por favor, sustituye esto : f (Hour()==7 && Minute()==30) por la línea que te he enviado y prueba entonces
OrdersTotal() devolverá 1 si hay una orden abierta. Al usar OrderSelect(), ese 0 (OrdersTotal()-1) seleccionará la orden correcta. Si OrdersTotal() devuelve 0, entonces no hay órdenes abiertas en el conjunto de órdenes activas
Por favor, sustituye esto: f (Hour()==7 && Minute()==30) por la línea que te envié y prueba entonces OrdersTotal() devolverá 1 si hay una orden abierta. Al usar OrderSelect(), ese 0 (OrdersTotal()-1) seleccionará la orden correcta. Si OrdersTotal() devuelve 0, entonces no hay órdenes abiertas en el conjunto de órdenes activas
Hola mladen, lamento decir que acabo de volver a intentarlo y sigue sin funcionar.
¿Hay alguna otra forma de cerrar mi operación basada en un tiempo específico?
Saludos
Ryan
Por favor, sustituya esto: f (Hour()==7 && Minute()==30) por la línea que le envié y pruebe entonces OrdersTotal() devolverá 1 si hay una orden abierta. Al usar OrderSelect(), ese 0 (OrdersTotal()-1) seleccionará la orden correcta. Si OrdersTotal() devuelve 0, entonces no hay órdenes abiertas en el conjunto de órdenes activas
Hola mladen, he conseguido resolver el problema. parece que este liner era el causante del problema.. el código funciona después de haberlo eliminado.
else if(total > 1)
gracias por tu ayuda...
Saludos
Ryan