¿Cómo codificar? - página 335

 
mladen:
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 pips

Hola 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

 
tkuan77:
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

Ryan

Tal y como está escrito, sólo cerrará las órdenes, y sólo si la hora del broker es exactamente las 07:00:00

 
mladen:
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

 
tkuan77:
Hola mladen, ¿hay alguna otra manera de evitar esto ya que no parece estar funcionando aquí.

Saludos

Ryan

Pruebe a utilizar

If (TimeCurrent()>= StringToTime("07:00:00"))

en lugar de

 
mladen:
Pruebe a utilizar

If (TimeCurrent()>= StringToTime("07:00:00"))

en lugar de

Hola 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

 
tkuan77:
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

Ryan

No. Esas líneas son correctas

 
mladen:
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);

}

 
tkuan77:
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

 
mladen:
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

 
mladen:
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