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

 
Sergey Chalyshev:

Los parámetros en la línea de resultados de la optimización son correctos, coinciden con los parámetros en el registro del probador, pero el Asesor Experto se ejecuta para una prueba con parámetros completamente diferentes.

Desbloqueo los parámetros de entrada desde el propio Asesor Experto. Han coincidido.

 
fxsaber:

Es que los datos del símbolo original coinciden perfectamente con el personalizado. Pero el personalizado pasa sin errores, y el original no.

Aparentemente, no entendí el punto. El script sólo escribe el csv. ¿Cómo se hace una prueba con ellos?

 
Andrey Khatimlianskii:

Aparentemente, no entendí el punto. El script sólo escribe csvs. ¿Cómo se realiza la prueba en ellos?

El script crea un símbolo personalizado y el símbolo original (importado en el lado del servidor) a partir de estos csvs.

Es decir, los dos símbolos tienen un historial de cotización idéntico, tanto por barras como por ticks.

 
fxsaber:

El script crea un símbolo personalizado y el símbolo original(importado en el lado del servidor) a partir de estos csvs.

Es decir, los dos símbolos tienen un historial de cotizaciones idéntico, tanto en barras como en ticks.

Esto debería haberse mencionado.

No conozco los mecanismos del servidor MT5 para trabajar con el historial.

 
El asesor en el modo de marco terminó en la terminación anormal, después de lo cual el archivo mqd de 1 GB se negó a ser leído. Cuando cerré el Terminal, el mqd creció a 2GB. Es decir, la terminal no hizo FileClose para mqd.
 

Durante la genética, el número de pase de FrameNext no coincide con el número de pase del archivo opt.

Por ejemplo, FrameNext devuelve 10041014291 y opt devuelve 2465.

¿A qué se deben las diferencias? ¿Cómo hago coincidir uno con el otro?

En la tabla GUI en lugar del número de pase algunos dos números. Pero en cuanto vuelvo a abrir el archivo opt después de la optimización, los números de pase se convierten en valores vacíos.


Por favor, aclárelo para GA.


Aprendí a reproducir el desajuste entre GA y GA simple. Los GA guardados pasan por las estadísticas de los cuadros. Pero no puedo identificar entre 10K pases el que me interesa. Porque Pass in FrameNext y Pass in opt son valores diferentes.

 
fxsaber:

Durante la genética, el número de pase de FrameNext no coincide con el número de pase del archivo opt.

Por ejemplo, FrameNext devuelve 10041014291 y opt devuelve 2465.

¿A qué se deben las diferencias? ¿Cómo hago coincidir uno con el otro?

En la tabla GUI en lugar del número de pase algunos dos números. Pero en cuanto vuelvo a abrir el archivo opt después de la optimización, los números de pase se convierten en valores vacíos.


Por favor, aclárelo para GA.


Aprendió a reproducir el desajuste entre GA y GA simple. Los GA guardados pasan por las estadísticas de los cuadros. Pero no puedo identificar entre 10K pases el que me interesa. Porque Pass in FrameNext y Pass in opt son valores diferentes.

2 números - número de generación, número individual.

Si está vacío, el resultado se carga desde el archivo opt (es decir, el resultado de la optimización genética anterior)

Hay dos tipos de genética

1. El espacio de los parámetros está limitado a un número de 64 bits. En este caso, el cálculo de la composición de los parámetros por número de genotipo se reduce a un conjunto de simples operaciones aritméticas.

2. el espacio de los parámetros está limitado por un número máximo de 64 bits desde abajo, 1024 bits desde arriba. Una transformación más compleja del genotipo en un conjunto de parámetros. Parece ser su caso de desajuste numérico, ya que las tramas sólo contienen los 64 bits más bajos del número de pase.

En cuanto se añade un nuevo parámetro a la optimización o se modifica el punto de partida de un parámetro existente, toda la numeración cambia. Por lo tanto, no hay que guiarse por el número de pase, sino por la composición de los parámetros

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Операция инкремента и декремента применяются только к переменным, к константам не применяются. Префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении. Могут возникнуть вычислительные проблемы при переносе вышеуказанного выражения из одной среды программирования в...
 
Slava:

2 números - número de generación, número individual.

Si está vacío, el resultado se carga desde el archivo opt (es decir, el resultado de la optimización genética anterior)

Hay dos tipos de genética

1. El espacio de los parámetros está limitado a un número de 64 bits. En este caso, el cálculo de la composición de los parámetros por número de genotipo se reduce a un conjunto de simples operaciones aritméticas.

2. el espacio de los parámetros está limitado por un número máximo de 64 bits desde abajo, 1024 bits desde arriba. Una transformación más compleja del genotipo en un conjunto de parámetros. Parece ser su caso de desajuste numérico, ya que las tramas sólo contienen un número de paso máximo de 64 bits.

En cuanto se añade un nuevo parámetro a la optimización o se cambia el punto de partida de un parámetro existente, toda la numeración cambia. Así que no te guíes por el número de pase, sólo por la composición de los parámetros

Gracias. ¿Cómo se hace coincidir FrameNext_Pass y opt-Pass entonces?

 
fxsaber:

Aprendió a reproducir el desajuste entre GA y single. Guardado el GA pasa por las estadísticas de los marcos. Pero no puedo identificar el que me interesa de los 10K pases. Porque Pass in FrameNext y Pass in opt son valores diferentes.

He encontrado la razón de la discrepancia.


Compara la pila obtenida a través del marco durante la optimización del AG. Y la pila de una sola pasada.


En el frame-state la ejecución se basa en ticks que no están presentes en el historial: me he dado cuenta enseguida de que hay muchas operaciones/ó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, pero un pase de cuadro es 2019.06.04 02:00:00.000(el historial de ticks no tiene ningún tick en ese momento).


La optimización GA va en una historia de ticks diferente a la de una sola pasada. Y esta historia no es siempre diferente. Por ejemplo, cuando hago GA en un intervalo más pequeño, está bien allí.


La sospecha de ZZY de usar un temporizador desaparece. No hay temporizador en el EA.

 
fxsaber:

He encontrado la razón de la discrepancia.


Comparación de las estadísticas fotograma a fotograma durante la optimización GA. Y la pila de una sola pasada.


En el estado del marco la ejecución se basa en ticks, que no están en el historial: inmediatamente me di cuenta de que hay un montón de ofertas/ó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, pero un pase de cuadro es 2019.06.04 02:00:00.000(el historial de ticks no tiene ningún tick en ese momento).


La optimización GA va en una historia de ticks diferente a la de una sola pasada. Y esta historia no es siempre diferente. Por ejemplo, cuando hago GA en un intervalo más pequeño, está bien allí.


La sospecha de ZZY de usar un temporizador desaparece. No hay temporizador en el EA.

¿Pruebas/optimización en garrapatas reales?

¿Los agentes son propios o de la nube?

Si las pruebas se realizan en un símbolo personalizado, entonces los agentes de la nube están fuera de la mesa. Así que los agentes son internos y puedes sacar sus registros y ver en los registros cómo se sincronizó el historial