"New Neural" es un proyecto de motor de red neuronal de código abierto para la plataforma MetaTrader 5. - página 12

 
NeuroOpenSource:
Tendría que ser algo para codificar. Todavía estamos esperando al administrador del proyecto para discutir el plan de implementación.

De hecho, la opción es inscribirse en la misma sorsforge y empezar...

Pero probablemente sea mejor esperar a que los Metakwots traigan el ambiente adecuado.

 
Por cierto, no es mala idea pensar en el paralelismo. Sólo que no tengo ni idea de cómo se puede implementar.
 
TheXpert:
Por cierto, no es mala idea pensar en el paralelismo. Sólo que no tengo ni idea de cómo se puede implementar.
¿Hablas de paralelizar la formación de NS? En mi opinión, no hay manera de hacerlo, a menos que el comité de redes lo paralice de alguna manera
 
TheXpert:
Por cierto, es bueno pensar en el paralelismo. Sólo que no tengo ni idea de cómo aplicarlo.

Andrey, he comprobado tu mensaje sobre la recursividad, tienes razón, la recursividad es 1,5 veces más lenta y está limitada en profundidad, por lo que los bucles ganan inequívocamente.


No te preocupes por el paralelismo, hasta que no haya API para el procesador gráfico no vale la pena, las redes neuronales son tareas demasiado sencillas para ponerlas en paralelo entre núcleos (la llamada al hilo tarda cientos de ciclos de reloj).

A menos que MQ nos proporcione una API para redes neuronales al menos, pero eso requiere la formalización de la red universal. Así que primero un proyecto, y luego golpear la puerta me dan una API para la GPU.

 

Hice una imagen explicativa del código en la página 5:

Lasamarillas son celdas de memoria enlazadas (para ser más precisos, son una misma celda de memoria, sólo que se refieren a diferentes objetos de memoria),

los otros, asociaciones de objetos de memoria, rojo siguiente, verde prev, azul lateral.

La dirección de la flecha indica la dirección en la que se pasa el puntero.

La celda cero de la memoria del operador de retardo se utiliza como celda de memoria de salida.


La memoria está enlazada en orden inverso, ya que una entrada sólo tiene una salida (de la que recibe datos) pero no al revés.

Bueno, probablemente está intuitivamente claro que los círculos son las entradas, los cuadrados los pesos, los triángulos el operador de retardo (cero operador de la célula Z la salida de la neurona).

ZZZY El esquema es definitivo y no lo cambiaré más :o)

 

1. Imha, lo más importante es especializarse en el comercio y aquí es importante sistematizar el preprocesamiento de los datos de entrada. Deben introducirse tanto señales discretas (por ejemplo, la superación de un determinado extremo o la variación del precio en un periodo de tiempo que supere algún umbral) como señales continuas (por ejemplo, la distancia entre dos ruedas o la variación del precio en un periodo de tiempo). Por supuesto, NS puede obtener aprendizajes discretos a partir de los continuos, pero entonces entra en el black-boxing y no siempre es necesario. En general, para las entradas necesitamos una clase separada, donde el cálculo del precio-acción será definido por un método virtual y los usuarios pueden seleccionar entre los ya escritos, o escribirlos ellos mismos.

2. el EA estándar es esencialmente el mismo que las señales elementales de acción de precios y el álgebra booleana con ellos (y/o/no). Por lo tanto, la EA estándar también puede ser descrita en forma de NS de una determinada topología y de pesos de ajuste. Tal vez una buena opción - el convertidor automático de EAs estándar en NS (es difícil hacerlo :)), o al menos permitir diseñar el NS utilizando patrones de lógica booleana. Con el fin de dar un punto de partida para la creación de una lógica, desde el punto de vista del comercio, NS, pero no sólo un conjunto de capas con cierta topología.

Y también para añadir elementos de álgebra booleana al NS construido. Por ejemplo, hemos construido un CS y queremos comprobar la influencia de un filtro simple en él, por ejemplo compramos cuando el precio es mayor que МА200 y vendemos - viceversa. Por supuesto, podemos introducir una nueva entrada y volver a entrenar la red, etc. O simplemente podemos añadir este filtro como lógica booleana y comprobar su influencia en el resultado.

Es decir, se trata de combinar la lógica booleana intuitivamente comprensible para una persona y la NS en diferentes etapas del diseño de la ST.

3. Es lógico hacer una oportunidad para arreglar algunas conexiones para que no participen en la formación posterior. Es decir, hay una columna vertebral del sistema que no debe reconstruirse con frecuencia, y hay una parte que se adapta con más frecuencia. El reentrenamiento de todos los pesos es un aumento de la adaptación.

4. no está mal, si la columna vertebral del punto 3 se puede seleccionar automáticamente. Por ejemplo, tenemos una sección de pruebas. Se divide en N partes. El NS se entrena sucesivamente en cada parte, pero de manera que una parte permanece fija (no se reentrena en cada parte).

Es decir, se trata de construir una NS robusta que requiera un mínimo de ajuste al mercado actual.

5. el objetivo del estudio f no serán los éxitos individuales en la predicción (trades), sino una característica de la curva de equidad. Un factor de beneficio, por ejemplo, o uno definido por el usuario.

6. Para todo lo anterior y otras oportunidades es necesaria una interfaz visual para la proyección de NS.

 

Para empezar, podría considerar algún tipo de modelo orientado a objetos de código abierto como http://www.basegroup.ru/library/analysis/neural/fastneuralnet/.

Qué tiene sentido hacer por analogía, cuáles son las desventajas dadas las especificidades del comercio y de MQL5. O un modelo más avanzado de código abierto, para no reinventar la rueda :)

BaseGroup.ru :: NeuralBase - нейросеть за 5 минут
  • basegroup.ru
Библиотека компонентов , предназначена для программной реализации нейронных сетей. В качестве примера, созданы компоненты реализующие две нейросетевые парадигмы: рекуррентную нейронную сеть, в нашем случае – это сеть Хопфилда и многослойную нейронную сеть обучаемую по алгоритму обратного распространения ошибки (back propagation). Основным...
 
Avals:

1. Imha, lo más importante es especializarse en el comercio y aquí es importante sistematizar el preprocesamiento de los datos de entrada. Deben introducirse tanto señales discretas (por ejemplo, la superación de un determinado extremo o la variación del precio en un periodo de tiempo que supere algún umbral) como señales continuas (por ejemplo, la distancia entre 2 ruedas o la variación del precio en un periodo de tiempo). Por supuesto, NS puede obtener aprendizajes discretos a partir de los continuos, pero entonces entra en el black-boxing y no siempre es necesario. En general, para las entradas necesitamos una clase separada, donde se definirá el método virtual para calcular el precio-acción y los usuarios pueden seleccionar de entre los ya escritos, o escribir los suyos propios.

Sí, escribí sobre ello. Sin embargo, lo escribí de una manera diferente. ¿Puede dar un pequeño y sencillo ejemplo de cómo sería una entrada de acción de precios?

Y también añadir elementos de álgebra booleana al NS construido. Por ejemplo, hemos construido un NS y queremos comprobar la influencia de un filtro simple, por ejemplo comprar el comercio sólo cuando el precio es mayor que МА200 y vender viceversa. Por supuesto, podemos introducir una nueva entrada y volver a entrenar la red, etc. O simplemente podemos añadir este filtro en forma de lógica booleana y comprobar su influencia en el resultado.

¿Qué sentido tiene ponerlo en la red? Es fácil y sencillo comprobarlo sin la red...

Es decir, se trata de combinar la lógica booleana intuitiva y comprensible para el ser humano y la NS en diferentes etapas del diseño de la CT.

¿Qué sentido tiene entonces la NS? En mi opinión, la NS debería considerarse en cualquier caso como una caja negra que convierte las entradas en salidas.

3. Es lógico que se haga una oportunidad para fijar algunas conexiones para que no participen en el aprendizaje posterior. Es decir, hay una columna vertebral del sistema que no debe reconstruirse con frecuencia, y hay una parte que se adapta con más frecuencia. Volver a entrenar todos los pesos es aumentar el ajuste.

¿Y en base a qué principio? Bueno la topología puede ser cambiada (jeje :) ). Es posible reducir la cantidad. Pero para entrenar sólo las sinapsis seleccionadas manualmente...

4. Estaría bien que se seleccionara automáticamente el nudillo no modificado del paso 3. Por ejemplo, tenemos una sección de pruebas. Se divide en N partes. El NS se entrena sucesivamente en cada parte, pero una parte del NS permanece fija (no se vuelve a entrenar en cada parte).

Sólo hay que comprobar el funcionamiento del pegamento. De todos modos, no puedes librarte del ajuste con tales maquinaciones.

Es decir, se trata de construir NS robustas que requieran un mínimo de adaptación al mercado actual.

5. El objetivo del estudio f no serán los éxitos individuales en la predicción (trades), sino una característica de la curva de equidad. El factor de ganancia, por ejemplo, o uno establecido por el usuario.

No funciona así. No todas las entradas pueden ser transferidas a la estrategia. Al fin y al cabo, el NS está separado del TS, son independientes. Pero se puede hacer a nivel de formación de entradas/salidas de la muestra de entrenamiento.

_________________________________

O entonces hay que fijar los objetivos de forma diferente en general.

 
TheXpert:

Sí, escribí sobre eso. Pero en una línea ligeramente diferente. ¿Puedes darme un pequeño y sencillo ejemplo de cómo sería una entrada de acción de precios?

bool F1(int periodo){

if (High[0]>iHighest(NULL,0,MODE_HIGH,period,1)) return(true); else return(false);

}

doble F2(int ma1P,int ma2P){

return(iMA(...ma1P ...)-iMA(...ma2P....))

}

TheXpert:

¿Qué sentido tiene introducirlo en la red? Es fácil y sencillo comprobarlo sin red...

¿Qué sentido tiene entonces la NS? En mi opinión, la NS debería considerarse en cualquier caso como una caja negra que convierte las entradas en salidas.

Combinar la lógica NS y la convencional. La solución de NS puede resolver sólo una parte de un problema de negociación, por ejemplo el filtrado, y el resultado de su trabajo será la negociación de compra o venta o la no negociación. Pero los puntos de entrada y salida, así como otros filtros pueden estar contenidos en la lógica booleana estándar. ¿Cómo enseñar el NS necesario, si no debe funcionar sin la parte booleana (dar beneficios o predecir cambios de precios)? Es decir, cada paso del entrenamiento NS debe incluir el lanzamiento del algoritmo en la lógica booleana.

TheXpert:

¿Y en base a qué principio? Bueno, puedes cambiar la topología (jeje :) ). Es posible reducir la cantidad. Pero puede entrenar sólo sinapsis elegidas manualmente.

¿Por qué no? :) Por ejemplo, un comité de varias SN, cada una de las cuales resuelve esencialmente problemas diferentes. No es necesario que se entrenen exactamente con las mismas muestras y con la misma periodicidad, ¿verdad? Diferentes tareas requieren diferentes periodos de formación.

Hay, por ejemplo, un NS que es bastante bueno en la identificación de una tendencia/flop. Podemos utilizarlo en varios proyectos y añadirlo a otras NS, por ejemplo. Pero no para volver a entrenarlo cada vez que hay que entrenarlo.

TheXpert:

Sólo hay que comprobar su trabajo en el encolado. De todos modos, no te librarás del encaje con tales maquinaciones.

Creo que es la única manera de que funcione para NS :)

TheXpert:

Al fin y al cabo, la SN está separada de la ST, generalmente son independientes. Pero se puede hacer a nivel de formación de entradas/salidas de la muestra de entrenamiento.

¿Y por qué no se pueden combinar? Entonces, la NS resolverá sólo una parte de los problemas, pero se formará como parte del sistema completo. Y en general, combinar el proceso de optimización de la estrategia y la formación de la SN que forma parte de ella, porque es esencialmente la misma cosa. Es decir, por ejemplo, con cada ejecución del probador el NS se entrena en la muestra de prueba. Por supuesto, esto tiene sentido si el NS no es un probador independiente)) precio, pero sólo una parte de la lógica general del sistema

 

No. No funciona así.

Hablar así es hacer demagogia. Podemos hablar de cosas diferentes sin entendernos y llamarlas más o menos lo mismo.