[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 166
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Señores profesionales, ¡necesito su ayuda de nuevo!
A continuación se muestra un fragmento de código encargado de cerrar las operaciones, pero la cuestión es que cuando no se ejecutan las órdenes pendientes no las borra, no consigo averiguar por qué. Pero cuando necesito cerrar una orden pendiente que ya ha sido ejecutada, todo va correctamente y si la orden no ha sido ejecutada entonces se queda colgada hasta que se ejecuta...
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();
orderticket = OrderTicket();
if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0) {
if (H1_BUY_5 == 0 || H1_BUY_1 == 0) {
OrderClose(orderticket, lots, Bid, 5, Yellow);
if (OrdersTotal() == 1) OrderDelete(orderticket, Brown);
}
}
Esta es la condición que selecciona sólo las órdenes de compra,
if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
por lo que no hay manera de eliminar la orden pendiente
Probablemente porque primero se calcula el lote y luego
Gracias, he cambiado el cálculo del lote, pero sigue sin funcionar.
¿Cómo no funciona, qué dice en los registros?
Comprueba qué valores toma np, aquí
No hay mensajes de error en el cuaderno de bitácora. ¿Puedes mirar el código completo de EA? Debería cerrar 1/3 del lote si el stoploss ya se ha movido al punto de equilibrio por el arrastre.
Oooooooo que desordenado está todo. En general, todo está mal, es más fácil tirarlo y escribir uno nuevo. Los parámetros se definen de forma incorrecta, las funciones se llaman de forma incorrecta, un montón de cálculos innecesarios. Es bueno para un tutorial sobre cómo no escribir código.
En definitiva, todo está mal, es más fácil tirarlo y escribir uno nuevo. Los parámetros se definen de forma incorrecta, las funciones se llaman de forma incorrecta, un montón de cálculos innecesarios. Será bueno para un tutorial sobre cómo no escribir código.
...Debería cerrar 1/3 del lote si se dispara un stop loss ya movido al punto de equilibrio por el arrastre.
Veo todo esto y pienso: ¿por qué asumir estas tareas si no estás seguro de lo básico? Este tipo de autoaprendizaje hace más bien que mal. La chispa del pensamiento se ahoga en un montón de errores.
Probablemente, la intención es más perjudicial que buena.
¡Por favor, aconséjennos, señores!
Imagínese la situación: se activa una parada, debido a la activación de la condición N-ésima. Pero después de un par de velas, la condición N-ésima ha caído. Con la ayuda de qué función se puede volver a abrir el trato después de que la condición N-ésima caiga. Es decir, hay que determinar que se activó un stop hace un número de barras, y como la condición N-ésima ha caído, ¡repite la operación!