Miquel Cirera Mato:
Hola.
Me he encontrado que al hacer un bucle para que me cierre las ordenes no me las cerraba todas.
He tenido que poner el proceso de cierre dentro de otro bucle para que repita todo el proceso 5 veces. De esta forma me las cierra todas. Al principio le puse que lo repitiera 3 veces pero de forma eventual seguía dejandose alguna. Es un proceso que puede estar cerrando 12 o 13 ordenes y a veces falla.
¿A alguien le ha pasado algo similar?
¿Será que tengo algún error en el código?
Muchas gracias.
Hola, puedes probar esto?
for (int xcnt = 0; xcnt < 5; xcnt++) { for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber1) { double ClosePrice = 0; RefreshRates(); if (OrderType() == OP_BUY) { ClosePrice = NormalizeDouble(MarketInfo(OrderSymbol(), MODE_BID), Digits); } else { ClosePrice = NormalizeDouble(MarketInfo(OrderSymbol(), MODE_ASK), Digits); } int result2 = OrderClose(OrderTicket(), OrderLots(), ClosePrice, Slippage, Green); if (result2 < 0) { Print("Error al cerrar la orden: ", ErrorDescription(result2)); } } } else { Print("Error al seleccionar la orden: ", GetLastError()); } } }
Si tienes dos órdenes abiertas y cierras la primera, la segunda ya no estará de segunda sino que pasa a ocupar la primera posición. Es por eso que el bucle for lo debes recorres desde la última orden hacia la primera.
Saludos
Antonio Simon Del Vecchio #:
Si tienes dos órdenes abiertas y cierras la primera, la segunda ya no estará de segunda sino que pasa a ocupar la primera posición. Es por eso que el bucle for lo debes recorres desde la última orden hacia la primera.
Si tienes dos órdenes abiertas y cierras la primera, la segunda ya no estará de segunda sino que pasa a ocupar la primera posición. Es por eso que el bucle for lo debes recorres desde la última orden hacia la primera.
Saludos
Muchas gracias Antonio. Tienes razón, este ha sido un fallo de novato. uff
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
Hola.
Me he encontrado que al hacer un bucle para que me cierre las ordenes no me las cerraba todas.
He tenido que poner el proceso de cierre dentro de otro bucle para que repita todo el proceso 5 veces. De esta forma me las cierra todas. Al principio le puse que lo repitiera 3 veces pero de forma eventual seguía dejandose alguna. Es un proceso que puede estar cerrando 12 o 13 ordenes y a veces falla.
¿A alguien le ha pasado algo similar?
¿Será que tengo algún error en el código?
Muchas gracias.