Probador de Estrategias de MetaTrader 5: errores, fallos, sugerencias de mejora

 

El probador de estrategias de MetaTrader 5 está siendo revisado en profundidad por el equipo de MQ. A pesar de que se ha trabajado mucho en los últimos dos años (gracias al equipo de MetaQuotes), este comprobador plantea muchas dudas. Desgraciadamente, los cambios más recientes se centran más en el aspecto visual del comprobador, para que los principiantes puedan trabajar con él más fácilmente, mientras que los mecanismos de su funcionamiento siguen suscitando dudas entre los usuarios más experimentados.

Propongo dedicar este hilo a la crítica constructiva del probador de MetaTrader 5, y convertirlo en un lugar donde se pueda llegar a los desarrolladores.

Todas las afirmaciones/discusiones/críticas/refutaciones deben estar respaldadas por argumentos claros y resultados reproducibles. El debate debe centrarse en los mecanismos de ejecución y fijación de precios. Los deseos sobre el tema de las florituras, los iconos y los caballos esféricos en el vacío (quiero que se carguen todos los núcleos, quiero multihilo para una sola ejecución, etc.) no son bienvenidos, aunque no están prohibidos.

Así que, vamos.


El probador de MetaTrader 5 se salta la ejecución de las órdenes limitadas

1. Dado ticks personalizados como una matriz MqlTisk en un archivo binario (adjunto al post).

2. Los datos personalizados son procesados por un script especial y los carga en el historial de la herramienta. El guión también se adjunta al mensaje.

3) Se lanza un Asesor Experto en el gráfico resultante y realiza las operaciones según su lógica. El Asesor Experto trabaja en el modo de ticks reales.

4. En el momento de las 00:11:05:085, se colocó una orden limitada al precio de 10422,5. El precio actual en el momento de la colocación es 10422,0.

5. En el momento 00:11:06.179 el Último precio se produjo en 10424.0. Según las reglas de fijación de precios de la bolsa, la orden SellLimit debería ejecutarse al precio de 10422,5, pero esto no sucede. La orden de límite parece colgar en el aire, mostrando una completa rendición: ¡los tratos se realizan con otra persona que ofrece un precio peor que el nuestro!

6. Pero los milagros comienzan a desarrollarse. El precio se invierte y baja de 1024,0 a 10419. Es decir, el nivel de venta de la orden límite está penetrando de arriba a abajo. Sin embargo, la orden de límite también queda en el aire.

Lamentablemente, no he encontrado ningún registro que muestre lo que sucede. Existe la sensación de que los registros de los probadores están simplemente desactivados y que printf no funciona. La salida al registro del probador está desactivada:

De todos modos, parece ser otro problema que no existía antes.

A este respecto he grabado un vídeo en el que se ve claramente lo que ocurre (lo más interesante empieza a partir de unos 30 segundos. En la parte superior de la pantalla, la hora actual es exacta al milisegundo):



El vídeo muestra claramente que el rango de la barra penetra en el nivel de la orden limitada, pero no se produce ninguna ejecución.

Hay otras preguntas para el probador. Pero, por ahora, creo que es necesario abordarlo.

Archivos adjuntos:
 

MetaTrader 5 Tester no construye barras correctamente

Este es el símbolo personalizado del post anterior (mismos datos). Lasbarras se dibujan al último precio, que se especifica en la configuración del símbolo.

A la izquierda están las barras dibujadas en el probador. A la derecha, puedes ver las barras iniciales.

Puede ver que los gráficos no coinciden del todo. El de la izquierda tiene algo de mierda.

S.w. Pensaba que estaba construido por Bid, pero mira la lista de ofertas - resulta que esos precios ni siquiera estaban en Bid, ni en Last o Ask. A continuación adjunto la información del acuerdo en forma de texto.

Archivos adjuntos:
deribit_csv.zip  735 kb
 

¿Qué número de compilación está utilizando?

Hora muy extraña en el registro 0000.00.00 00:00:00.000

¿Qué sistema operativo tienes?

¿Se guardan los archivos con extensión de registro en la carpeta de datos del comprobador?

 

1. No has dado el archivo "deribit1.out.bin". En el archivo adjunto "deribit1.out".

2. No diste la configuración de los caracteres personalizados

 
Construyo bares por licitación. La ejecución de los límites por parte de la oferta/solicitud tiene lugar. Todo funciona (2093 para ser exactos, no he comprobado más) correctamente.
 
Vasiliy Sokolov:

Una buena función que estás ignorando

MqlTick tiks[];

if (FileLoad("deribit1.out.bin", ticks))
{
// ....
 
Slava:

1. No has dado el archivo "deribit1.out.bin". En el archivo adjunto "deribit1.out".

2. No diste la configuración del personaje personalizado

Perdóname.

Archivos adjuntos:
 
fxsaber:

Una buena característica que estás ignorando.

Es bueno saberlo.

 
Slava:

¿Qué número de compilación está utilizando?

Hora muy extraña en el registro 0000.00.00 00:00:00.000

¿Qué sistema operativo tienes?

¿Se guardan los archivos con extensión de registro en la carpeta de datos del comprobador?

La construcción es la más reciente. 2136. Siempre uso el más reciente.

Windows 7 SP1

Los registros se guardan. Los registros aparecen en el registro del probador de estrategias. Pero no se muestra nada en el registro del visualizador en el probador de estrategias.


 
Vasiliy Sokolov:

Perdóname.

Gracias. Nos encargaremos de ello.

 

La principal sugerencia es, sin duda, automatizar las pruebas.

Haz una optimización a pie de calle o algo así. Las pruebas deben realizarse en varios periodos e instrumentos.

Y si no quieres hacerlo, entonces deja que la gente que no tiene un título en ingeniería de programación (¿o una licenciatura?) lo haga con herramientas MQL.

Para ello necesitamos la posibilidad de leer y escribir (Get__ \Set__) el inicio y el final del periodo de pruebas, el inicio del periodo de avance y la posibilidad de reiniciar el probador con un nuevo periodo de pruebas.

Además, las instalaciones de procesamiento de fotogramas disponibles no funcionan correctamente. Ya se ha escrito bastante sobre esto aquí.

Otro fallo: Al reiniciar el probador con el periodo de avance activado y los parámetros anteriores, se cuelga. Tenemos que cambiar las instancias, el marco temporal, el instrumento o recompilar el Asesor Experto.

La última versión disponible públicamente sigue siendo la 2085.