Errores, fallos, preguntas - página 2659

 
Igor Makanu:

comprobado mediante la salida a OnTester()

la imagen es la misma que la anterior

aquí está la cuestión de la confianza que si opcionalmente pasa NS a través de GA tester - no es seguro que todos los núcleos de procesador local no trabajará con la misma configuración inicial de los pesos NS - que estropea los resultados de la formación, imho

puedes intentar utilizar alguna función de número de pase como base de generación.

Si hay algunos parámetros de entrada que cambian durante la optimización, su combinación (suma, producto, grado...) puede utilizarse para establecer una base de generación de números pseudoaleatorios. Probablemente (pero no seguro :D ), un efecto secundario sería poder reproducir en una sola pasada el código con números "aleatorios" dentro.

 
Igor Zakharov:

puedes intentar utilizar alguna función del número de pase como base de generación.

Si hay algunos parámetros de entrada, que cambian durante la optimización, su combinación (suma, producto, grado...) puede utilizarse para establecer la base de generación de números pseudoaleatorios. Probablemente (pero no definitivamente :D ), un efecto secundario sería poder reproducir en una sola pasada el código con números "aleatorios" dentro.

Se puede generar/encontrar una matriz de caracteres, relativamente aleatoria, por unos pocos kilobytes (el texto de Pushkin:) ). Todo se reduce a la implementación astuta de la aleatoriedad para satisfacer los requisitos de la tarea, si no se comprueba lo propuesto, recuerdo tales problemas en muchas bibliotecas.

Colegas, por favor, aconsejen, si abro el gráfico ChartOpen(), cómo puedo devolver el foco (actividad, visibilidad) al gráfico desde el que trabaja el Asesor Experto sin cerrarlo.

Y quién sabe por qué Bid, Ask no coincide con el precio del gráfico Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.02.25
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Aleksey Mavrin:

Todo se reduce a tener una implementación propia e inteligente de la aleatorización para cumplir con los requisitos de las tareas

No creo que ese sea el problema... el pseudo-aleatorio en sí mismo funciona bastante bien, el problema está en la base de generación - con entradas constantes (durante la optimización) la base es la misma, por lo que los resultados son siempre cercanos. sugerí cómo maximizar la dispersión de la base de generación

 
Igor Zakharov:

me parece que este no es el problema... el pseudo-aleatorio en sí funciona bien, el problema está en la base de generación de la serie - con entradas constantes (durante la optimización) la base es la misma, por lo que los resultados son siempre cercanos. sugerí cómo maximizar la dispersión de la base de generación

Estoy de acuerdo. Sólo me refería al hecho, si la memoria no me falla, de que a menudo se encuentran (son) las bibliotecas que no funcionan la inicialización, es decir, por ninguna razón la misma base, si no se comprueba y se utiliza, muchos no saben sobre él.

 
Igor Makanu:

imagen como la anterior

solución crusty directamente - establecer el número para srand en las propiedades de EA. o tomar de hash de los parámetros, a continuación, al menos aleatorios será diferente inicialización.
 
TheXpert:
solución crusty directamente - establecer el número para srand en las propiedades de EA. o tomar de hash de los parámetros, a continuación, al menos aleatorios será diferente inicialización.

Ayer se me ocurrió esta solución, que funciona correctamente

input int param1 =  2147483647;
//+------------------------------------------------------------------+
int OnInit()
   {
   srand(param1);
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
void OnTick()
   {

   }
//+------------------------------------------------------------------+
double OnTester()
   {
   return(rand());
   }

mis preguntas son en general sobre la corrección de rand() en teter, ahora he buscado en alglib, utilizaMathRand() una vez en randomreal() , que luego se utilizará a menudo dentro de la biblioteca alglib

 
Igor Makanu:

mis preguntas se refieren en general a la corrección de rand() en el teter

Las preguntas son exactamente sobre la inicialización. Aparentemente, en el probador no se puede inicializar por tiempo para obtener un buen rand().
 
TheXpert:
Aparentemente, para conseguir una buena aleatoriedad en el probador, no se puede inicializar con el tiempo.

eso es exactamente lo que es

escribió ayer que esto contradice la documentaciónhttps://www.mql5.com/ru/forum/1111/page2657#comment_15165819 y el ejemplo MathSrand() de la ayuda dará un resultado diferente al esperado en el probador


UPD: mi problema es un poco más profundo - quiero usar el probador para el aprendizaje profundo y guardar las mejores configuraciones posibles de NS a través del intercambio de agente a agente - he planeado todo en general, pero quería manejar las colisiones a través de la pausa de inicio (o parada) del agente con valor aleatorio.... pero por desgracia no todos los valores aleatorios son aleatorios en los agentes probadores )))

 
En la mayoría de los casos, el probador debe garantizar la reproducibilidad de los resultados. El requisito de que los resultados sean aleatorios sin cambiar los parámetros de entrada y el estado del entorno (todas las funciones relacionadas con el tiempo virtual) es contrario a la tarea y la implementación del probador.
 
Stanislav Korotky:
En la mayoría de los casos, en el probador hay que garantizar la reproducibilidad de los resultados. El requisito de que los resultados sean aleatorios sin cambiar los parámetros de entrada y el estado del entorno (todas las funciones relacionadas con el tiempo virtual) contradice la tarea y la implementación del probador.

está bien lo que escribes, pero necesito separar el orden de acceso de los agentes al guardar en la base de datos

en esencia se necesita un ID de agente local en el probador, no está claro por qué no hay tal funcionalidad