Resultados completamente diferentes de un mismo experto

 

Estoy muy, muy desconcertado con los resultados que estoy obteniendo del backtester de metatrader. Espero que alguien más haya tenido experiencias similares, y pueda tener una idea de lo que podría estar causando la mía.

Un experto que desarrollé logró excelentes resultados en las pruebas retrospectivas y a través de una amplia gama de variaciones en la optimización y las ejecuciones de optimización walkforward. Luego, de repente, sin que yo haya hecho conscientemente grandes cambios, los resultados se volvieron mediocres/marginales. Luego, hoy de nuevo, los resultados volvieron a ser magníficos.

Ahora tengo informes de backtesting con el mismo experto, las mismas fechas, el mismo archivo de configuración y resultados totalmente diferentes. He hecho todo lo posible para asegurarme de que los datos son los mismos (reconstruyéndolos a partir de los datos históricos descargados ayer, sigo obteniendo resultados muy diferentes hoy a entonces).

Lo único que he encontrado que podría ser diferente es la dispersión. Por lo que puedo entender, MT4 asume que el spread a lo largo de todo un backtesting habrá sido el mismo que el de ahora. Una "característica" bastante extraña del sistema, pero no es la explicación de mis observaciones, ya que con spreads ajustados hoy, los resultados fueron mediocres, mientras que con spreads ligeramente más amplios ayer, los resultados fueron increíblemente buenos.

Después de estas experiencias, me encuentro en una posición en la que no estoy seguro de poder confiar en la información que obtengo del software, y necesito desesperadamente una explicación que pueda utilizar para evitar ser engañado (de una manera u otra) en el futuro.

Aquí están los gráficos de los resultados mediocres y los resultados increíblemente buenos para backtests con el mismo experto, el mismo período (2011/1/1 a 2011/7/26) y la misma configuración. Las operaciones suelen estar abiertas durante horas o más y no se utilizan take profits ni stop losses (todas las entradas y salidas se basan únicamente en los estados de los indicadores). El número de operaciones en las dos ejecuciones es de 211 y 173. Hay pérdidas en el segundo gráfico, pero el factor de beneficio es muy alto.


 
Elroch:


Ahora tengo informes de backtesting con el mismo experto, las mismas fechas, el mismo archivo de configuración y resultados totalmente diferentes. He hecho todo lo posible para asegurarme de que los datos son los mismos (reconstruyéndolos a partir de los datos históricos descargados ayer, sigo obteniendo resultados muy diferentes hoy a entonces).


Descargue sus datos de nuevo, desconecte su Terminal (yo lo hago entrando con un número de cuenta no válido), borre su historial y los datos ya almacenados en el Terminal, importe sus datos, M1 supongo... haga los otros periodos que necesite usando el convertidor de periodos e impórtelos... compruebe que tiene los datos que necesita para el periodo de fechas que quiere ejecutar... ejecute su EA.
 
Gracias, pero más de una vez he construido los datos a partir de 10 años de datos de 1 minuto descargados de la forma que sugieres, he reiniciado el software muchas veces, he guardado el EA exacto y los ajustes y aún así he obtenido resultados completamente diferentes en una ejecución posterior. Todavía estoy desconcertado.
 

Elroch:

Un experto que desarrollé logró excelentes resultados en backtests y en una amplia gama de variaciones en ejecuciones de optimización y optimización walkforward.

Luego, de repente, sin que yo haya hecho conscientemente grandes cambios los resultados se volvieron mediocres/marginales.

Hoy, de nuevo, los resultados han vuelto a ser magníficos.

El probador utiliza el spread ACTUAL. Su EA es muy sensible a los cambios.
 
WHRoeder:
El probador utiliza el spread ACTUAL. Su EA es muy sensible a los cambios.

Como he mencionado que me di cuenta de que, ya que tengo resultados mediocres en la carrera de hoy con una propagación de 1,2 pips, esto no es la explicación.
 

Si tus entradas y salidas se basan realmente sólo en los valores de los indicadores, estás operando con lotes moderados y ganando un buen promedio en pips/operación no quedan muchas opciones:

a) interrumpir el archivo histórico

b) algo como la aleatoriedad incluida

c) depender de alguna variable global (que ha cambiado entre las dos pruebas)

d) algunos ajustes del broker pueden haber cambiado, (poco probable)

¿Por qué no ejecutar la prueba en cada modo de tick? Esto le mostrará la calidad de los datos.

 

¿Los ticks psudo que crea el probador de estrategias son idénticos para cada prueba y los indicadores utilizados por el EA, crean valores para cada tick de la última barra como lo harían cuando se opera en vivo?

 

Gracias por tus interesantes observaciones, zzueg.

(a) parece inviable que un archivo histórico corrupto pueda explicar la secuencia de resultados de backtesting con el mismo EA: es decir, resultados mediocres, resultados magníficos, resultados mediocres y resultados magníficos similares durante un periodo desde el viernes de la semana pasada, durante el cual he realizado nuevas instalaciones de metatrader, he reconstruido todos los datos a partir de datos de 1 minuto supuestamente de alta calidad descargados, etc.

(b) el problema con cualquier explicación debida a efectos aleatorios (incluidos los datos malos) es que es muy difícil ver por qué debería hacer que las operaciones sean enormemente mejores de forma consistente.

(c) Durante un par de días, pensé que podría haber sido algún cambio accidental en mi código. Pero hoy cuando obtuve los resultados increíblemente buenos, inmediatamente guardé una copia del experto (fuente y ex4) y el archivo de configuración. Pero el mismo experto y la misma configuración dieron resultados mediocres en una ejecución posterior.

(d) Sí, no estoy seguro de que haya mucho del broker que sea relevante más allá del spread. Estos son todos los backtests en lugar de comercio en vivo, por supuesto, y los datos fueron construidos en su mayoría de 10 años descargados de datos de 1 minuto.

(e) Con el experto entrando y saliendo de las posiciones en la apertura de la barra y sin usar paradas u objetivos de beneficios en absoluto (en la versión en estudio, de todos modos), mi entendimiento es que los únicos valores que pueden influir en los resultados son la apertura, el máximo, el mínimo y el cierre de las barras de los gráficos de 5 minutos y superiores (en realidad sucede que incluso el cierre es irrelevante: hay varias variantes del mismo indicador que se utiliza, y estos pasan a utilizar (H+L)/2 como el punto de datos, mientras que la entrada y la salida se producen en la apertura de una barra, por lo que los datos de apertura y el spread también importan. El hecho de que una operación se abra o se cierre depende de los valores de los indicadores de las barras anteriores, no de la barra actual.

...pero en aras de la minuciosidad, hice una ejecución con "todos los ticks". Los resultados fueron prácticamente idénticos al anterior, con una pequeña diferencia que se explica porque la última operación se cerró en la última barra de 1 minuto en lugar de la última barra de 5 minutos.


SDC, no puedo estar seguro de que todos los garrapatos generados sean iguales, pero ten en cuenta los puntos que hice en respuesta a zzueg en (e) más arriba.
 

No me refiero a que los resultados cambien en cada modo de tick, estoy interesado en la cantidad de errores de gráficos desajustados reportados.

Las brechas en el historial son muy poco probables ya que no explicarían tal diferencia con una estrategia basada en indicadores.

Tuve problemas similares sólo con datos corruptos, desde que mi terminal está siempre fuera de línea nunca experimenté nada como eso.

Con las variables globales me refería a si tienes algo como GlobalVariableGet() en tu código, estas variables no están limitadas al entorno de prueba.

Por último sólo para haber preguntado a todos: ¿algún error en el registro?

@SDC, sí pseudo ticks se generan de forma idéntica para cada ejecución. Desde mi experiencia camino de la precisión del 90%, pero todavía siempre el mismo.

 

Gracias de nuevo por sus observaciones. Ahora estoy en la interesante situación de tener dos instalaciones de metatrader dando los dos conjuntos extremadamente diferentes de los resultados (incluso cuando copio la EA y la configuración directamente de uno a otro y ejecutar probador de la estrategia en ambos. Esto apuntaría a los datos, pero todavía es muy difícil ver cómo podría explicarlo debido a las razones discutidas. Me pregunto cuál es la mejor manera de ver qué diferencias puede haber.

Acabo de comprobar los registros de las dos ejecuciones en las instalaciones separadas de metatrader y no hay errores en ninguna de ellas.

No hay nada como GlobalVariableGet() en mi código. El EA utiliza 5 copias de un solo indicador personalizado en 4 marcos de tiempo diferentes con uno que tiene un parámetro diferente a los demás.

 

He encontrado lo que puede ser una prueba crucial, pero no entiendo muy bien su significado.

En la instalación que estaba dando resultados mediocres, cerré la conexión con el broker de dinero real y volví a conectarme con el broker de práctica en el mismo broker. Después de hacer esto (y nada más) el probador de estrategia dio resultados espectaculares similares a la otra copia de metatrader (que se ejecuta en la misma práctica broker a/c). Por cierto el broker es Oanda.

No estoy seguro de cómo el cliente de metatrader maneja los datos del historial cuando cambia entre diferentes a/c's pero el hecho de que todos los datos antiguos provengan de los mismos datos descargados de 1 minuto en lugar de los del broker hace que sea muy difícil para mí dar sentido a lo que está sucediendo aquí (las operaciones al comienzo del año son mucho mejores en la ejecución del backtest con una conexión a la a/c de práctica que cuando hay una conexión a la a/c real).

Razón de la queja: