¿Qué diablos está pasando? - página 3

 
Сергей Таболин:

Renat, gracias. Pero explícame una oscura, ¿cuál es la diferencia entre 2*2+2*3 en el optimizador y una sola pasada? Al menos, dame una pista de dónde puede haber exactamente una discrepancia.

Te daré una pista.

En su mente, sólo hay 2*2, mientras que en la realidad hay un enorme entorno de mercado y una enorme cantidad de su código. A grandes rasgos, hay al menos tres órdenes de magnitud más de variables y condiciones.

Mientras corras en modo económico, no encontrarás razones. Como jugar al juego del "simple codificador". Una vez que te hayas puesto a programar, aprende a depurar.

Le aconsejo por tercera vez: despréndalo y vea con sus ojos dónde han empezado las discrepancias en las transacciones.

 
Renat Fatkhullin:

Te daré una pista.

Sólo son 2*2 en su mente, mientras que en la realidad hay un enorme entorno de mercado y una gran cantidad de su código. A grandes rasgos, hay al menos tres órdenes de magnitud más de variables y condiciones.

Mientras corras en modo económico, no encontrarás razones. Como jugar al juego del "simple codificador". Una vez que te hayas puesto a programar, aprende a depurar.

Le aconsejo por tercera vez: despréndalo y vea con sus ojos dónde han empezado las discrepancias en las transacciones.

Muy bien, lo desimprimiré. Voy a echar un vistazo. Pero es poco probable que pueda entender la razón de estas discrepancias.

Sobre todo porque he prescrito la apertura, el mantenimiento y el cierre de posiciones en mi propia clase. No he notado ninguna disonancia entre la optimización y el pase único en otros EAs durante mucho tiempo (ya he discutido este tema en mi artículo anterior).

Y por eso he vuelto a abrir esta pregunta.

Para mí, lo entiendo así: el trabajo con las posiciones está afinado y no requiere intervención. Así que el fallo está en otra parte. Pero todos los demás lugares son código de scripts para preparar, crear, entrenar y comprobar la red. Todo está depurado también.

Esto deja la posibilidad de utilizar una variable no inicializada. He comprobado cada una de ellas. Bueno, tal vez me perdí algo. En ese caso, espero una advertencia del compilador.

O bien, otra forma es que el código se compila de tal manera que la variable se inicializa después de ser llamada.

Como comprenderá, sólo puedo adivinar. No tengo medios reales para detectar este error.

 
Сергей Таболин:

Bien, lo descomprimiré. Voy a echar un vistazo. Pero es poco probable que pueda entender la razón de estas discrepancias.

Sobre todo, porque la apertura, el mantenimiento y el cierre de posiciones se han implementado en mi propia clase. No he notado ninguna disonancia entre la optimización y el pase único en otros EAs durante mucho tiempo (ya he discutido este tema en mi artículo anterior).

Y por eso he vuelto a abrir esta pregunta.

Para mí, lo entiendo así: el trabajo con las posiciones se afina y no requiere intervención. Así que el fallo está en otra parte. Pero todos los demás lugares son código de scripts para preparar, crear, entrenar y comprobar la red. Todo está depurado también.

Esto deja la posibilidad de utilizar una variable no inicializada. He comprobado cada una de ellas. Bueno, tal vez me perdí algo. En ese caso, espero una advertencia del compilador.

O bien, otra forma es que el código se compila de tal manera que la variable se inicializa después de ser llamada.

Como comprenderá, sólo puedo adivinar. No tengo medios reales para detectar este error.

En primer lugar, asegúrese de no utilizar las funciones GetTickCount64(), GetTickCount() o GetMicrosecondCount() en la lógica de negociación. Pueden causar una divergencia de resultados en el probador y el optimizador.

 
Geess:

En primer lugar, asegúrese de no utilizar las funciones GetTickCount64(), GetTickCount() o GetMicrosecondCount() en su lógica de negociación. Pueden causar una divergencia de resultados en el probador y el optimizador.

No lo sé.

 
Сергей Таболин:
...

A mi modo de ver, el trabajo de posición está afinado y no requiere intervención. Así que el fallo está en otra parte. Pero todos los demás lugares son código de los scripts para preparar, crear, entrenar y comprobar la red. También está todo afinado.

...

¿No es aquí donde todo salió mal?

 

"casi todos los datos se inicializan en un bucle".

Chicos, no se puede inicializar en un bucle. Hay que leer en el bucle.

 
En realidad, debería haber un error de Stack Overflow.
 
)
 
Artyom Trishkin:

¿No es ahí donde radica el problema?

¿En qué sentido? La red no se entrena sobre la marcha en el EA. Al menos, todavía no).

Se entrena correctamente o no, se sobreentrena o no se entrena, pero la señal es la misma.

Si, por ejemplo, durante la optimización da una señal de compra en la apertura de la barra, entonces debería dar la misma señal durante una sola prueba. Y si no da la misma señal, no está ni ahí ni allá.

Así que de ahí pueden aparecer posiciones "innecesarias" (siempre que los datos de precios sean iguales, espero).

 
Сергей Таболин:

¿En qué sentido? La red no se entrena sobre la marcha en el EA. Al menos, todavía no )).

Está entrenado correctamente o no, está sobreentrenado o infraentrenado, pero la señal es la misma.

Si la red da señal de "compra" en la apertura de la barra cuando se optimiza, entonces debería dar la misma señal al hacer una sola prueba. Y si no da la misma señal, no está ni ahí ni allá.

Entonces, ¿de dónde pueden salir las posiciones "extra" (siempre que los datos de precios sean, espero, los mismos)?

Intenta desactivar la lógica actual y sustituirla por un asistente normal. Verás inmediatamente dónde se ha equivocado el gato, en la lógica o en la ejecución.