Gracias por los consejos, el código ha estado en curso durante 5 días, he resuelto el problema con no establecer ningún comercio, sólo quiero hacer pequeñas actualizaciones :)
// Ajustar el alfa en función de la volatilidad (ATR)double atr = iATR(_Symbol, PERIOD_CURRENT, period); // Calcular ATRif(atr > 0.0)
alpha = atr * 0.1; // Establecer alfa proporcional a la volatilidadelse
alpha = inputAlpha; // Vuelta al valor de entrada si ATR no está disponible
1. corrección de errores: - En FFT: La llamada recursiva a FFT para matrices pares e impares puede llevar a una recursión infinita si el tamaño de la matriz no es de grado dos. Debemos asegurarnos de que el tamaño de la matriz es de grado dos. Esto no se comprueba en el código actual. - En la función CalculateFractalComponentFFT: utilizamos FFT pero no comprobamos que N sea de grado dos. Además, después de la FFT, sólo utilizamos los primeros N/2 elementos, lo cual es correcto, pero el código de la FFT tiene un error en la indexación al combinar. 2. Mejoras: - En la función ExecuteTrade: la comprobación de posición abierta mediante PositionSelect(_Symbol) no es del todo correcta, porque esta función devuelve true si hay alguna posición en un símbolo, pero no necesariamente que esté abierta en ese momento. Es mejor utilizar un bucle a través de todas las posiciones y comprobar el número mágico y el símbolo. - Además, en ExecuteTrade no comprobamos si ya hay una posición abierta, por lo que podemos abrir múltiples posiciones. Necesitamos limitar la apertura a una sola posición (o usar el número mágico para identificar nuestras posiciones). - En la función OptimiseParameters: el cálculo del movingAverage puede ser reemplazado por la función incorporada iMA. - En la función SimulatePrice: usar MathRand() puede no ser lo mejor para Monte Carlo, es mejor usar la distribución normal.
Según lo que he leído, todas las formas de órdenes de ejecución inmediata requierenque se establezca el campo type_filling.
Trade Request Structure - Data Structures - Constants, Enumerations and Structures - MQL5 Reference - Referencia sobre el lenguaje de comercio algorítmico/automatizado para MetaTrader 5.
Propiedades de la Orden - Constantes Comerciales - Constantes, Enumeraciones y Estructuras - Referencia MQL5 - Referencia sobre el lenguaje de comercio algorítmico/automatizado para MetaTrader 5
Gracias por los consejos, el código ha estado en curso durante 5 días, he resuelto el problema con no establecer ningún comercio, sólo quiero hacer pequeñas actualizaciones :)
Usted necesita hacer una nueva iteración
este código no va a calcular correctamente ATR
https://www.mql5.com/es/docs/indicators/iatr
Valor de Retorno
Devuelve el handle de un indicador técnico especificado
Devuelve el handle que es un código, y no devuelve el valor ATR
2. Mejoras: - En la función ExecuteTrade: la comprobación de posición abierta mediante PositionSelect(_Symbol) no es del todo correcta, porque esta función devuelve true si hay alguna posición en un símbolo, pero no necesariamente que esté abierta en ese momento. Es mejor utilizar un bucle a través de todas las posiciones y comprobar el número mágico y el símbolo. - Además, en ExecuteTrade no comprobamos si ya hay una posición abierta, por lo que podemos abrir múltiples posiciones. Necesitamos limitar la apertura a una sola posición (o usar el número mágico para identificar nuestras posiciones). - En la función OptimiseParameters: el cálculo del movingAverage puede ser reemplazado por la función incorporada iMA. - En la función SimulatePrice: usar MathRand() puede no ser lo mejor para Monte Carlo, es mejor usar la distribución normal.