Probador de Estrategias de MetaTrader 5: errores, fallos, sugerencias de mejora - página 64

 

Parece que al iniciar la prueba (es decir, haciendo clic en "Start" en el Probador de Estrategias), el agente del Probador no está copiando los archivos necesarios (incluyendo la DLL) a su carpeta interna MQL{Libraries. He identificado dos eventos:

Si tengo un archivo "Test.dll" en mi EA, entonces

1) El Probador de Estrategias se queja de que no se encuentra el archivo Test.dll.ex5

2) El agente de pruebas no copia Test.dll en su carpeta interna y, por lo tanto, el Probador de Estrategias se queja de que no se puede encontrar Test.dll

% appdata% \ Roaming \ MetaQuotes \ Tester \ <MT5 ID> \ Agent-127.0.0.1-3000 \ MQL5 \ Libraries \ ~.

 
Rashid Umarov:

No había ninguna prohibición

Hubo un severo bloqueo de IP - el servidor no estaba disponible. Era imposible entrar a través de un anonimizador, porque la contraseña debía ser errónea.

En general, la protección automática estándar contra los usuarios sin escrúpulos.

 
Luis:

Parece que al iniciar la prueba (es decir, haciendo clic en "Start" en el Probador de Estrategias), el agente del Probador no está copiando los archivos necesarios (incluyendo la DLL) a su carpeta interna MQL{Libraries. He identificado dos eventos:

Si tengo un archivo "Test.dll" en mi EA, entonces

1) El Probador de Estrategias se queja de que no se encuentra el archivo Test.dll.ex5

2) El agente de pruebas no copia Test.dll a su carpeta interna y, por lo tanto, el Probador de Estrategias se queja de que no se puede encontrar Test.dll

% appdata% \ Roaming \ MetaQuotes \ Tester \ <MT5 ID> \ Agent-127.0.0.1-3000 \ MQL5 \ Librerías \

¡Tengo el mismo error en Strategy Tester!

2020.02.25 02:03:35.725 Tester archivo ***.dll.ex5 error de apertura [2]

Si se cambia el nombre de la biblioteca (añadiendo la extensión .ex5), se obtiene otro error:

2020.02.25 02:09:32.567 2020.02.18 00:00:00 No se puede llamar a 'Receive_Information', '***.dll' no está cargado

2020.02.25 02:09:32.568 2020.02.18 00:00:00 llamada a función de importación no resuelta



 
Slava:

Reproducido exactamente con el botón de parada pulsado.

Si necesitas hacer una optimización responsable, probablemente sea mejor hacerlo después de reiniciar el Terminal, sin pulsar el botón de Stop.

 
fxsaber:

Si necesita hacer una optimización responsable, probablemente sea mejor hacerlo después de reiniciar el Terminal, sin pulsar el botón de Stop.

Posiblemente. Pero no deberíamos depender de ello.

Este comportamiento (al pulsar el botón de parada) se ha corregido, y la corrección se incluye en la última versión

 
Slava:

Posiblemente. Pero no debemos depender de ello.

Este comportamiento (con el botón de parada) se ha corregido, y la corrección se incluye en la última versión

Entonces hay que buscar de nuevo la razón por la que el pase de optimización no es el mismo que el pase único.

 
fxsaber:

Entonces tenemos que buscar de nuevo la razón por la que el pase de optimización no coincide con el pase único.

¿El experto en pruebas cuenta milisegundos de ticks dando discrepancias?

Con eso detectamos el problema, y luego lo comprobamos con el mismo Asesor Experto

 
Slava:

¿El EA de prueba contando milisegundos de ticks da discrepancias?

El problema se detectó en él, luego fue revisado por el mismo experto

Este EA en 2340 no mostró más discrepancias.


El desajuste del pase se produjo en el EA en vivo. Utilizaré el método que se demostró la última vez.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

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

fxsaber, 2020.02.20 08:57

He comparado las estadísticas de tiempo obtenidas durante la optimización GA. Y el stait del pase único.


En el frame-state la ejecución va por ticks que no están en el historial: me he dado cuenta enseguida de que hay un montón de tratos/órdenes, que se ejecutan exactamente en un segundo.

Por ejemplo, un pase único en el historial tiene una entrada en 2019.06.04 02:00:00.206, y un pase de cuadro en 2019.06.04 02:00:00.000(el historial de ticks no tiene ningún tick en ese momento).


Se necesita mucho tiempo para hacer eso...

 
Entorno del experimento:

MT5 build 2342 beta
un EA sin orden de mercado (sólo orden pendiente)
16487771 ticks datos de símbolos personalizados
4 agentes locales de prueba
4 núcleos de CPU físicos, 32g de ram, Windows 7 x64


Método experimental:

Establezca una operación de tranding virtual correspondiente para cada operación de comercio real.

Utilizar las funciones FrameAdd () y FrameNext () para obtener alguna información del proceso de optimización y registrarla en un archivo de texto local (Excel A a T).


Resultado del experimento:

Hay menos de un 20% de posibilidades de que la tarea de optimización se complete a la perfección, con los mismos resultados correctos que una sola prueba.

Pero en la gran mayoría de los casos, todos los resultados devueltos por la tarea de optimización son erróneos.



Durante una prueba única y una prueba de optimización exitosa, todos los resultados de las operaciones reales y virtuales son idénticos.

Durante la prueba de optimización fallida, sólo las operaciones virtuales pueden devolver el resultado correcto de la transacción, mientras que todos los datos devueltos por las operaciones reales, como el número de transacciones y el importe de los beneficios, son erróneos.

(En circunstancias normales, una operación comercial real llamaría a la función OrderSend () correctamente y retroalimentaría la información del estado de la transacción en OnTradeTransaction () y OnTrade ().

B: número de pase de pedido
D: cantidad de garrapatas procesadas
F: suma de todos los precios de venta
H: suma de todos los precios de las ofertas
J: cantidad de pedidos virtuales pendientes
L: cantidad de operaciones virtuales
N: beneficio neto del comercio virtual

P: cantidad de pedidos reales pendientes
R: cantidad de operaciones reales
T: beneficio neto del comercio real


Todos los valores de la columna D a N son correctos (recuadro verde) significa que el procesamiento de datos de garrapatas en la tarea de optimización siempre funciona correctamente.


Valores erróneos en la caja roja:

1. sobre P:
P debe ser exactamente igual a J, ya que tanto el virtual como el real deben contar el número de órdenes pendientes bajo las mismas precondiciones.
Si se cumplen las condiciones previas, introduzca el bloque de código para pendientes, P ++ inmediatamente. A continuación, introduzca OrderSend ().
Los resultados extremadamente anormales de P significan que las instrucciones posteriores a veces saltan correctamente (J) y a veces no saltan correctamente cuando el programa se ejecuta en las mismas condiciones.

2. sobre R:
R se cuenta en OnTradeTransaction ().
La orden en P, si se activa, debe contarse en R.
Todos los ceros R significan que las actividades comerciales reales en el EA en ejecución nunca entraron en OnTradeTransaction ().
¿Quizás esto se deba a que los resultados actuales de la P son sólo errores aleatorios, no pendientes significativos?

3. sobre T:
La ganancia o pérdida en T debe provenir de la posición en R.
Si el contador de posiciones en R es todo cero, ¿de dónde salen los cálculos de pérdidas y ganancias en T?


4. Una nota final:
El valor de P está muy cerca del valor de "Total Trades" devuelto por el probador de estrategias, pero no es exactamente el mismo.
Basándome en mis múltiples pruebas, parece que el valor de "Total Trades" está siempre en la misma secuencia aritmética que el parámetro de optimización de entrada del EA, y tiene el mismo valor de paso.
Es normal que los parámetros de entrada sean secuencias aritméticas, pero ¿el valor de una variable cuyo significado es completamente irrelevante es también una secuencia aritmética similar?

 

Por qué no viene un moderador corriendo y borra el post y lo deja en su lugar:

<DELETED>

Este es un foro en inglés

Publicar en inglés

? ¿Doble moral?