Cómo formar correctamente los valores de entrada para el NS. - página 29

 
sergeev писал (а) >>

Parafraseando, podemos decir que aquí hay una prueba del hecho de que es posible obtener una clasificación linealmente separable para el mercado.

Yo mismo, después de leer algunos libros inteligentes en el lugar acerca de la imposibilidad de hacer "o exclusivo" por la red lineal, lo percibí como la imposibilidad de utilizar las redes lineales para el mercado (por esa razón lógica que el mercado es mucho más complicado que un simple "o exclusivo" :).

¿Y tal vez no lo sea? ¿Tal vez Yuri tenga razón? Y no hace falta tirarse un montón de libros sobre lo no lineal, sino simplemente golpear todo con planos...

Se puede obtener una clasificación lineal separable para cualquier problema.

PERO tienes que buscar patrones tú mismo y formar entradas basadas en ellos, mientras que un perseptrón no lineal puede encontrar patrones por sí mismo.

Como escribí arriba - si obtienes resultados positivos con un perseptrón lineal, no lo necesitas, las reglas ya han sido encontradas.

 
Bien, entonces la cuestión lineal/no lineal está cerrada.
 

Plantilla de red. Se ejecuta en un hilo separado (CWinThread).

La versión aún no está terminada como se desea. No hay control de interrupción del hilo.

La lógica de las operaciones de archivo está mal implementada.

Un montón de comentarios incorrectos en el código.

15.07.08

Archivos adjuntos:
better1.rar  50 kb
 
Realizada la lectura del flujo de trabajo a través de un temporizador (para no cargar datos innecesarios)
Incorporación de punteros para leer información de un flujo de trabajo (para reducir el número de copias)
Función que traza el error cuadrático medio (para ver cómo la red "viaja" a los mínimos locales)
Se ha añadido un botón para detener los cálculos y guardar los pesos actuales en un archivo.
Añadidos los comentarios normales

16.08.08
Archivos adjuntos:
better1_1.rar  53 kb
_hilo_1.mq4  4 kb
_target_2.mq4  2 kb
 
sergeev писал (а) >>
Realizada la lectura del flujo de trabajo a través de un temporizador (para evitar la sobrecarga de datos).
Incorporación de punteros para leer la información del flujo de trabajo (para reducir el número de copias).
Función que traza el error cuadrático medio (para ver cómo la red "viaja" por los mínimos locales)
Se ha añadido un botón para detener los cálculos y guardar los pesos actuales en un archivo.
Añadidos los comentarios normales

16.08.08

¡Envidiable prolificidad de Sergeyev Alexey !

 
Sart писал (а) >>

¡Una prolificidad envidiable de Alexei Sergeev!

+1 :)

 
1. Realizado un intercambio más o menos normal entre MetaTrader y VC++ a través de las cabeceras.
- CreatePattern - crea un archivo de vectores de entrada y salida, también escribe la información sobre el número de patrones y la dimensionalidad de las salidas/salidas en la cabecera.
- Entonces VC++ lee y crea un array similar en sí mismo. Después del procesamiento de la rejilla crea un archivo con el mismo nombre pero con el tipo .wgh donde registra los pesos de la rejilla, los umbrales y en la cabecera del modelo de la rejilla (número de capas, sus dimensiones)
- Indicador NeuroInd.mq4 (NeuroIndP) - lee el archivo de pesos y construye un modelo análogo en sí mismo y ahora utiliza el mismo algoritmo que CreatePattern para recorrer las barras y dar entradas a esta rejilla. El indicador construye el vector de salida. NeuroIndP - lee lo mismo pero muestra los puntos de entrada.

El script CreatePattern y NeuroInd están "relacionados" por los mismos algoritmos de vectores de entrada pero con la diferencia de que NeuroInd puede tener diferente dimensión del vector de entrada (dependiendo de cómo decidamos procesar la red). Deberíamos intentar universalizar este algoritmo de alguna manera y ponerlo en un archivo separado (por ejemplo, en <InputPatternAlg.mqh>). Así sólo se puede cambiar en este complejo.
-----------
2. He eliminado los CLayers intermedios en la estructura de la clase VC++ (creo que fue un error :) + ahorramos ligeramente memoria + el algoritmo de cálculo de la rejilla coincide con el algoritmo de cálculo en el indicador).
Archivos adjuntos:
 

Cuanto más trabajo con la red, más me doy cuenta de que lo importante no son tanto las entradas como el par de entrada-salida. Los artículos de la primera página de StatBars serán muy "útiles para el aprendizaje" en este sentido. También se ha observado que si la salida es continua en lugar de binaria, la aproximación es más rápida y probablemente mejor. (pocos pares de entrada y salida incoherentes y repetitivos).

Las entradas están básicamente bien. Un cuadrado de guiones (por ejemplo, 5 períodos de 5 valores por período) da entradas únicas no repetitivas.

En cuanto a las salidas...

He probado la salida con la relación (Up-Dn)/(Up+Dn). Se ajusta rápidamente.

El único inconveniente es que la relación no da una idea aproximada del valor absoluto de Up y Dn, lo que sería deseable :) Da igual que sea 10/20 o 50/100.

Si sólo emitimos un simple Up-Dn (para saber la magnitud de la desviación del precio y en qué dirección) y luego lo comprimimos con una arctangente, resulta que se produce la saturación de los valores.

(Debo decir de entrada que estoy usando la arco-tangente y no la compresión lineal, porque no quiero buscar y ligar a los máximos).

Es posible dividir (Up-Dn) por el coeficiente para disminuir el valor de saturación, entonces la saturación se producirá en valores grandes, que ya serán raros y no habrá gran repetibilidad e inconsistencia.

Otra opción es probar con redes separadas sólo para cambiar el Up y el Dn.

Me pregunto si alguien tiene alguna otra salida?

 
sergeev писал (а) >>

Cuanto más trabajo con la red, más me doy cuenta de que lo importante no son tanto las entradas como el par de entrada-salida. Los artículos de la primera página de StatBars serán muy "útiles para el aprendizaje" en este sentido. También se ha observado que si la salida es continua en lugar de binaria, la aproximación es más rápida y probablemente mejor. (pocos pares de entrada y salida incoherentes y repetitivos).

En principio, las entradas están bien. Un cuadrado de guiones (por ejemplo, 5 períodos de 5 valores por período) da entradas únicas no repetitivas.

En cuanto a las salidas...

He probado la relación (Up-Dn)/(Up+Dn) en la salida. Converge rápidamente.

El único inconveniente es que esta relación no da una idea aproximada del valor absoluto de Up y Dn, lo que sería deseable :) Da igual que sea 10/20 o 50/100.

Si sólo emitimos un simple Up-Dn (para saber la magnitud de la desviación del precio y en qué dirección) y luego lo comprimimos con una arctangente, resulta que se produce la saturación de los valores.

(Debo decir de entrada que estoy usando la arco-tangente y no la compresión lineal, porque no quiero buscar y ligar a los máximos).

Es posible dividir (Up-Dn) por el coeficiente para disminuir el valor de saturación, entonces la saturación se producirá en valores grandes, que ya serán raros y no habrá gran repetibilidad e inconsistencia.

Como otra opción, probablemente sea necesario probar por separado las redes sólo para el cambio de Up y para Dn.

Me pregunto si alguien tiene alguna otra salida?

¿Introduce algún tipo de vector de entrada en cada barra y requiere una salida en cada barra?

 
Esta versión de MPS es un poco mejor, pero sigue sin ser lo que se necesita, es decir, lo corto va seguido de lo largo, y viceversa.
Archivos adjuntos:
mps.zip  7 kb
Razón de la queja: