MT4-Tester VS MT5-Tester - página 2

 
fxsaber:

Overkill (100.000 USD al inicio)

Tienes una extraña noción para describir las condiciones de las pruebas.

Este enfoque de los detalles arroja una gran sombra sobre todas sus conclusiones posteriores.

 
fxsaber:

Esto no funciona ahora en MT4.

Ahora funciona en MT4.

Demuestre y explique técnicamente cómo se consigue.


No pretendo denigrar a MT5. Sólo estoy haciendo una comparación reproducible. Ciertamente el probador de MT5 es inalcanzable en algunos aspectos, pero el tuning de MT4 también es capaz ahora de dar cosas que MT5 no tiene, pero que son realmente demandadas. Hemos visto que una prueba precisa en ticks reales personalizados en MT4 es 100% verdadera. Bueno, y la regulación de todo tipo de ajustes (comisión, sangrías, reglas de activación de órdenes pendientes, etc.) del probador está ahí. En general, hay cosas que aún no están implementadas en MT5.

¿Existen o hay pruebas fehacientes de que las reglas de deslizamiento y activación funcionan exactamente como se indica?

¿Puede demostrar y explicar técnicamente cómo un programa externo puede cambiar las condiciones de activación de órdenes en el motor de pruebas de MT4? ¿No por inyección profunda en ese motor?

 
Renat Fatkhullin:

Tienes una extraña noción de la descripción de las condiciones de la prueba.

Este enfoque de los detalles arroja una gran sombra sobre todas sus conclusiones posteriores.

Si no te he dicho algo, no lo he hecho a propósito. Creo que ya te di todos los datos antes. Pero lo repetiré una vez más.

  • Una exageración total.
  • Empiezas con 100 000 USD.
  • Los rangos están en las capturas de pantalla.
  • No se han establecido condiciones para la ruptura forzada del paso.
  • Ticks reales del EURUSD M1 2017.04.10 - 2017.04.16 (semana).
  • Sólo se habilita un agente local (1 núcleo).

 
¿Hay alguna forma de medir realmente cuántos porcentajes se atribuyen en una prueba de MT5 determinada?
Cifrar los parámetros de prueba (resultados) => Enviar al loopback => Descifrar los parámetros de prueba (resultados)

Si tomamos 50 ms del techo, obtenemos 260 * 2 * 50 / 1000 = 26 seg.
Que no es poco.
Sería interesante conocer las cifras reales.
 

Renat Fatkhullin:
Докажите и объясните технически, как это достигается.

Cómo se consigue técnicamente, no lo sé. Pruébalo - no está listo de inmediato (lo haré después de dormir).

¿Existen o hay pruebas fehacientes de que las normas de deslizamiento y activación son exactamente las indicadas?

¿Puede demostrar y explicar técnicamente cómo un programa externo puede cambiar las condiciones de activación de órdenes en el motor de pruebas de MT4? ¿No por inyección profunda en este motor?

El mero hecho de que el diferencial no se haya fijado durante años sugiere que la inyección es profunda. Esta función de MT4 es muy popular en muchos foros. Lo único que desanima es que no es gratis. Pero la prueba es completa, así que todo el mundo puede probarla. De hecho, he instalado la propia prueba hace unas horas para crear este hilo.

Constructivo será capaz de soportar sólo después de un poco de descanso. En realidad, todo el mundo puede comprobar ya las declaraciones si lo desea.

 
Primeros 20/260 pases
QR      0       03:29:37.031    Tester  0 : passed in 0:37:27.366
HK      0       03:30:36.307    Tester  1 : passed in 0:00:58.406
MM      0       03:30:40.510    Tester  2 : passed in 0:00:04.196
OF      0       03:30:41.731    Tester  3 : passed in 0:00:01.217
IH      0       03:30:42.538    Tester  4 : passed in 0:00:00.811
MQ      0       03:30:44.880    Tester  5 : passed in 0:00:00.764
LK      0       03:30:45.577    Tester  6 : passed in 0:00:00.687
PL      0       03:30:46.255    Tester  7 : passed in 0:00:00.671
MF      0       03:30:46.929    Tester  8 : passed in 0:00:00.671
GO      0       03:30:47.602    Tester  9 : passed in 0:00:00.671
CO      0       04:15:27.776    Tester  10 : passed in 0:44:40.160
ND      0       04:17:28.477    Tester  11 : passed in 0:01:59.450
HM      0       04:17:34.594    Tester  12 : passed in 0:00:06.099
CK      0       04:17:36.172    Tester  13 : passed in 0:00:01.575
QP      0       04:17:37.080    Tester  14 : passed in 0:00:00.905
LN      0       04:17:37.840    Tester  15 : passed in 0:00:00.765
NG      0       04:17:38.555    Tester  16 : passed in 0:00:00.702
ML      0       04:17:39.244    Tester  17 : passed in 0:00:00.687
RJ      0       04:17:39.925    Tester  18 : passed in 0:00:00.670
CS      0       04:17:40.603    Tester  19 : passed in 0:00:00.671

Parámetros de entrada

Puedes ver que hay frenos salvajes cuando Shift = 1. Por ejemplo, así es como MT4 hace frente al pase cero

2017.05.08 04:47:13.779 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:33.541 (total time 0:00:34.289)

Es decir, más de 60 veces más rápido.


SZ

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

Bichos, errores, preguntas

fxsaber, 2017.04.26 15:08

Por favor, muestre el rango y el paso de los parámetros optimizados en los registros del optimizador.

Y también en los registros del agente tales líneas

NS      0       14:11:00.853    Tester  756 : passed in 0:00:04.789
MJ      0       14:11:03.447    Tester  757 : passed in 0:00:02.574
RM      0       14:11:05.860    Tester  758 : passed in 0:00:02.340

Acompañar con información sobre la ejecución correspondiente - nombre del EA y sus parámetros de entrada.

 
fxsaber:

Se puede ver que el salvaje se frena cuando Shift = 1. Por ejemplo, así es como MT4 hace frente a un pase de cero

No tenía sentido esperar a que terminara la optimización, así que dejé de hacerlo.

La ejecución de un pase único de cero mostró (no esperó a que se completara) que a medida que se ejecutaba el pase, el rendimiento del probador bajaba mucho.

Las funciones de la historia no están involucradas.

 
fxsaber:

Si no lo he dicho bien, es que no lo quería decir. Creo que ya te di todos los detalles antes. Pero lo diré de nuevo.

  • Una exageración total.
  • A partir de 100 000 USD.
  • Los rangos están en las capturas de pantalla.
  • No se han establecido condiciones para la ruptura forzada del paso.
  • Ticks reales del EURUSD M1 2017.04.10 - 2017.04.16 (semana).
  • Sólo un agente local (1 núcleo) habilitado.

Ok, aquí están mis resultados en el mismo (sólo servidor Alpari-MT5-Demo):

  • Windows 10 Pro, Intel Xeon E5-2690 a 2,60 GHz

  • 1 núcleo: 27 mins 55 segs
    2017.05.08 05:13:09.636 Tester          optimization finished, total passes 260
    2017.05.08 05:13:09.647 Statistics      optimization done in 27 minutes 55 seconds
    2017.05.08 05:13:09.647 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • 8 núcleos: 6 minutos 11 segundos
    2017.05.08 04:38:18.663 Tester          optimization finished, total passes 260
    2017.05.08 04:38:18.674 Statistics      optimization done in 6 minutes 11 seconds
    2017.05.08 04:38:18.674 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • 24 núcleos: 3 minutos 33 segundos
    2017.05.08 05:17:40.990 Tester          optimization finished, total passes 260
    2017.05.08 05:17:41.000 Statistics      optimization done in 3 minutes 33 seconds
    2017.05.08 05:17:41.000 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

Está claro que no tiene sentido optimizar en un solo núcleo en MT5 e incluso en 8 núcleos todo va muy rápido. Estoy seguro de que tus 14 minutos en MT4 están hechos en una CPU cercana en potencia por núcleo, por lo que los tiempos pueden ser comparados. Incluso tengo una frecuencia por núcleo de sólo 2,6 Ghz.

¿Por qué no hay una reducción lineal del tiempo? Porque las tareas son desiguales debido al número de oficios. Algunos pases tienen 100 operaciones (el cálculo tarda un segundo), y otros tienen 230.000 operaciones (hasta 50 segundos). Dado que la velocidad de cálculo está totalmente determinada por quién y cómo se distribuyen los pases más largos, la ruta crítica en los paquetes no se reduce mucho.


Sus retrasos se deben puramente a la ineficiente exploración del historial de transacciones en la versión de lanzamiento. Los casos de ralentización son pases con 200.000 o más operaciones.

Todo el ejemplo del Asesor Experto está escrito de manera que sólo hace una cosa - escanea todo el historial de operaciones en cada tick de una manera terriblemente ineficiente. Es decir, 1,8 millones de reexploraciones completas de todo el historial en una sola pasada. Y lo que es más, el código de las selecciones de MT5 no es nativo, sino una muleta en forma de envoltorio estilo MT4, que da aún más gastos.


Como he mostrado antes, hemos reescrito drásticamente el funcionamiento y el muestreo de los grandes historiales comerciales y ahora no hay diferencia en la profundidad del historial.

Adjunto la última compilación 1598 para comprobarlo, donde todo va rápido. Simplemente reemplace los archivos en el directorio de MetaTrader 5.

Aquí está el registro de los pases:

OK      0       04:45:17.505    History EURUSD,M1: history cache allocated for 484457 bars and contains 473528 bars from 2016.01.04 00:00 to 2017.04.07 23:59
IR      0       04:45:17.540    History EURUSD,M1: history begins from 2016.01.04 00:00
RF      0       04:45:24.469    Tester  0 : passed in 0:00:07.188
KO      0       04:45:26.727    Tester  1 : passed in 0:00:02.188
CQ      0       04:45:27.857    Tester  2 : passed in 0:00:01.109
QJ      0       04:45:28.758    Tester  3 : passed in 0:00:00.890
NL      0       04:45:29.525    Tester  4 : passed in 0:00:00.750
ME      0       04:45:30.237    Tester  5 : passed in 0:00:00.688
LO      0       04:45:30.923    Tester  6 : passed in 0:00:00.671
RP      0       04:45:31.612    Tester  7 : passed in 0:00:00.672
NJ      0       04:45:32.363    Tester  8 : passed in 0:00:00.734
RS      0       04:45:33.065    Tester  9 : passed in 0:00:00.687
MK      0       04:45:42.777    Tester  10 : passed in 0:00:09.703
HP      0       04:45:45.928    Tester  11 : passed in 0:00:03.094
EN      0       04:45:47.354    Tester  12 : passed in 0:00:01.406
HG      0       04:45:48.313    Tester  13 : passed in 0:00:00.953
LL      0       04:45:49.110    Tester  14 : passed in 0:00:00.781
QJ      0       04:45:49.828    Tester  15 : passed in 0:00:00.703
NS      0       04:45:50.523    Tester  16 : passed in 0:00:00.688
MH      0       04:45:51.215    Tester  17 : passed in 0:00:00.672
DF      0       04:45:51.901    Tester  18 : passed in 0:00:00.672
FO      0       04:45:52.646    Tester  19 : passed in 0:00:00.735
NE      0       04:46:04.884    Tester  20 : passed in 0:00:12.219

Un pase de cero con 216k operaciones (parámetros Shift=1, Limit=5) funcionó en 7 segundos.

Archivos adjuntos:
MetaTester64.zip  7571 kb
terminal64.zip  14201 kb
 
Renat Fatkhullin:

Todo el ejemplo del Asesor Experto está escrito de tal manera que sólo hace una cosa - escanea de forma escandalosamente ineficiente todo el historial de operaciones en cada tick. Es decir, 1,8 millones de reexploraciones completas de todo el historial de operaciones en una sola pasada. Y el código de MT5 no es nativo, sino que es una muleta en forma de wrapper al estilo de MT4, lo que da aún más gastos.

Prueba
bool Func1( datetime, datetime ){ return false; };
bool Func2( long ){ return false; };

#define HistorySelect Func1
#define HistorySelectByPosition Func2

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

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

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.08 01:11

Si hay alguna duda de que la ralentización de MT5 es causada por el uso de una librería de terceros, los que estén dispuestos pueden reescribir la lógica simple de MT4 de este EA en MQL5 a su manera y probar la hipótesis.
 
Renat Fatkhullin:

Como he mostrado antes, hemos reescrito drásticamente el funcionamiento y el muestreo de los grandes historiales comerciales y ahora no hay diferencia en la profundidad del historial.

He adjuntado la última build 1598 para comprobarlo, donde todo funciona rápidamente. Simplemente cambie los archivos en el directorio de MetaTrader 5.

El 1598 funciona mucho más rápido que el 1596. Y funciona incluso en lugares donde las funciones de Historia no se utilizan en absoluto. Al parecer, el terminal provocó esas funciones lentas en sus entrañas durante la carrera.


Optimización de MT4

2017.05.08 02:35:33.074 Lucky: optimization started
2017.05.08 02:49:51.431 Lucky: optimization finished in 0:14:18
2017.05.08 02:49:51.436 There were 260 passes done during optimization


Optimización de MT5

2017.05.08 07:40:38.429 Tester  Experts\MT4Orders\Lucky.ex5 on EURUSD,M1 from 2017.04.10 00:00 to 2017.04.16 00:00
2017.05.08 07:40:38.597 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.05.08 07:40:39.600 Tester  EURUSD: preliminary downloading of history ticks completed, 100.38 Kb in 0:01.170 (85.80 Kb/sec)
2017.05.08 07:40:39.600 Tester  EURUSD: ticks data begins from 2016.11.01 00:00
2017.05.08 07:40:39.600 Tester  complete optimization started
2017.05.08 07:40:39.600 Tester  size of initial task batch is 260
2017.05.08 07:40:39.612 Core 1  agent process started
2017.05.08 07:40:39.612 Core 1  connecting to 127.0.0.1:3000
2017.05.08 07:40:41.620 Core 1  connected
2017.05.08 07:40:41.622 Core 1  authorized (agent build 1598)
2017.05.08 07:40:42.771 Core 1  common synchronization completed
2017.05.08 07:40:42.797 Core 1  EURUSD: ticks synchronized already [43 bytes]
2017.05.08 08:04:54.332 Tester  optimization finished, total passes 260
2017.05.08 08:04:54.342 Statistics      optimization done in 24 minutes 16 seconds
2017.05.08 08:04:54.342 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2017.05.08 08:04:54.342 Core 1  connection closed


Ahora MT5 es 1,7 veces más lento que MT4.


ZS No todas las carreras coinciden perfectamente. Así que uno de los tres está definitivamente mintiendo (MT4+TDS, MT5, MT4Orders). Vamos a buscar.