Discusión sobre el artículo "Crear Criterios Personalizados de Optimización de Expert Advisors" - página 2
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
¿Estás diciendo que el código es del tipo
if (saldo < 3000) ExpertRemove();
¿no funciona?
Sí que funciona. Ya lo he entendido. interrumpe la optimización pero sigue mostrando los resultados, por eso pensaba que no funcionaba.
Karlson:
Pero eso no es lo que he dicho. Que esa interrupción (funcionaba antes al menos) hacía que al final se fuera la genética.
Eso es cierto.
Pero si restableces los resultados de OnTester() a cero o haces como arriba (asignar el valor negativo -777), entonces la genética puede comportarse realmente de forma impredecible, porque la selección se realiza en los resultados sólo por el valor de retorno de OnTester().
Había tal cosa en MT4:
Seguramente se puede hacer con la ayuda de herramientas MQL5, ya que los desarrolladores han eliminado por completo tales funciones.
Por supuesto, todo se puede copiar a Excel, pero me gustaría aprovechar las ventajas de la nueva plataforma.
Hemos resuelto las limitaciones - podemos hacerlo con ExpertRemove().
¿Qué pasa con la omisión de resultados inútiles en el informe?
¿Qué pasa con la omisión de resultados inútiles en el informe?
No puedes hacerlo en el informe estándar, y no es necesario (estoy en contra). Crea tu propio informe.
Ahora puedes generar un informe en la fase de optimización(https://www.mql5.com/es/docs/optimization_frames) en el formato que necesites.
Y pronto (hoo-hoo) será posible gestionar la genética por tu cuenta.
Excelente.
De mi trabajo anterior en el área de Redes Neuronales y Algoritmos Genéticos prediciendo futuros me di cuenta de la importancia de una curva de equidad razonablemente recta.
y escribí algunas rutinas para tenerlo en cuenta. Realmente es una medida de la "robustez" de un sistema predictivo.
Hallazgos haciendo trabajos prácticos.
El módulo de rectitud es un buen comienzo, pero incompleto. Es posible obtener una calificación muy buena con un beneficio nulo. Así que el beneficio tiene que entrar en la ecuación. Añadir simplemente algún tipo de medida del beneficio total
no funciona. Usted podría obtener una línea muy recta con un buen valor por tener algunas victorias al principio, algunos drawdowns en el medio y algunas mejores ganancias al final. Esto produciría una línea recta nivelada con buen ajuste y mostraría algún beneficio. Pero eso no es realmente lo que estamos buscando.
Realmente queremos una línea de regresión que suba hacia arriba con un buen ajuste. Por lo tanto, para que la idea de utilizar una línea de regresión con la menor desviación posible el coeficiente para la pendiente ascendente tiene que ser incorporado en la ecuación. Eso es lo que
queremos ver. Una recta de regresión con pendiente ascendente y buen ajuste. Intentaré incorporarlo. Agradeceré cualquier sugerencia o ayuda :-)
Estoy probando el código CSTS.
Encuentro este resultado un poco extraño:
Resultado Profit #Trades Frofit factor DrawDown Expected Payoff Factor de recuperación
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
He aquí otro ejemplo
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
Desde todos los puntos de vista los valores de la segunda línea es mejor!!! Pero la puntuación es menor
Lo único que puedo deducir es que hay una penalización en muchas operaciones. Yo lo tendría al revés
Y como último punto. Parece que hay exactamente una persona interesada en este tema. Yo.
Más sobre esto. Cometí un error en mi código y el resultado fue que las órdenes pendientes no se borraron. También dio lugar a sólo 5 orden colocada para el período de prueba de más de 12 meses. Con un buen beneficio.
Esto realmente aumentó el resultado de optimización a más de 100. Claramente el valor de la "ganancia media" era extremadamente alto resultando en esta puntuación extrema. Técnicamente es correcto, pero no tiene sentido
en el contexto del backtesting. ¿Cuán probable es que tendencias largas como esa sean representativas? Así que pensé que el número de operaciones tiene que ser incorporado en la ecuación de alguna manera.
Con algo de prueba y error cambiando el código llegué a un método que produce resultados que encuentro útiles.
cambios:
// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;
work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);
tssf = tssf * work;
if( tssf < 1 ) tssf = 0;
if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;
return(tssf);
El método original es probablemente bueno para juzgar un sistema en funcionamiento, pero básicamente inútil para basar los parámetros de una ejecución backtest
Bueno, aquí estoy de nuevo, el lobo solitario en este universo :-)
He estado probando la rectitud Custom Criteria tratando de obtener la pendiente de la línea recta calculada en la ecuación. Tal y como está te puede dar una puntuación muy alta en un beneficio muy débil. Sólo añadiendo el beneficio final
En un intento de añadir la pendiente real en la ecuación he cambiado el código lilke se ve a continuación.
No es una solución perfecta, pero está más cerca de lo que quiero ver. Utilizando el resultado junto con el balance o el beneficio funciona bien para mí con este código
Bueno, aquí estoy de nuevo, el lobo solitario en este universo :-)
He estado probando la rectitud Custom Criteria tratando de obtener la pendiente de la línea recta calculada en la ecuación. Tal y como está te puede dar una puntuación muy alta en un beneficio muy débil. Sólo añadiendo el beneficio final
En un intento de añadir la pendiente real en la ecuación he cambiado el código lilke se ve a continuación.
No es una solución perfecta, pero está más cerca de lo que quiero ver. Usando el resultado junto con el balance o el beneficio funciona bien para mí con este código
Por ejemplo, para los algoritmos genéticos, debe tener un buen algoritmo de fitness, y por supuesto crear un criterio personalizado alineado con esta aptitud.
No estoy seguro de calcular la pendiente de la curva de equilibrio es la mejor manera, ya que tenemos varias otras maneras, de todos modos contar conmigo para explorar y debatir estas ideas.