Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 681

 
Estoy iniciando un tema sobre el uso de Python en la formación en el foro donde vivo. Describe todo lo que un comerciante puede necesitar para desarrollar un MTS. No habrá estrategias preparadas. La tarea consiste en encontrar un "algoritmo" para crear MTS rentables. Y no importa qué métodos se utilicen. Lo principal es que sean útiles. El enlace aparecerá en mi feed de noticias.
 
Grigoriy Chaunin:
Todo es sencillo con las redes neuronales en MT. Existe una biblioteca de Microsoft CNTK. Está implementado para Python, C# y C++. Todo el análisis y el entrenamiento de la red se realiza en Python, mientras que C++ se utiliza para escribir una DLL que carga la red entrenada y realiza cálculos con ella. En mi opinión, esta es la mejor opción. La segunda opción, la conexión de Python con MT. He escrito una biblioteca sencilla para esto. Biblioteca. Lo conectamos y podemos utilizar todo lo disponible en Python. Y hay muchas cosas disponibles. Me pregunto si debería empezar a escribir sobre el aprendizaje automático en mi blog.
¿Podría explicar una cosa, después de la inicialización de un script se cuelga en la memoria? Es decir, los módulos cargados por el script de python también deberían colgar en memoria, ¿no?
 
Sí, el código MQL debe llamar a las funciones de script de Python en cada tick.
 
Maxim Dmitrievsky:

sería interesante leer sobre estrategias y pensamientos/experiencias personales... para mí personalmente

porque la mayoría de las cosas que se escriben aquí son tonterías sobre la revisión de un montón de bibliotecas y sobre lo que es mejor escribir... es una epidemia, y todo se desperdicia.

Aunque la idea básica fue expresada por fxsaber hace mucho tiempo - con el mismo enfoque el tema bien podría cerrarse, porque es erróneo desde el principio

Estoy de acuerdo.

El tema se ha convertido en una completa basura sin ejemplos concretos ni teoría.

Pongamos remedio a la situación.

Para empezar, aconsejo a todo el mundo que lea cómo definir el tamaño de la muestra para las previsiones (véase el archivo adjunto).

Archivos adjuntos:
 
Alexander_K2:

Estoy de acuerdo.

El tema se ha convertido en una completa basura sin ejemplos concretos ni teoría.

Vamos a arreglar la situación.

Para empezar, aconsejo a todo el mundo que lea cómo determinar el tamaño de la muestra para las previsiones (véase el archivo adjunto).

Gracias Alejandro, quizás saques algo útil, lo leeré

 
Alexander_K2:

Estoy de acuerdo.

El tema se ha convertido en una completa basura sin ejemplos concretos ni teoría.

Vamos a arreglar la situación.

Para empezar, sugiero que todo el mundo lea cómo determinar el tamaño de la muestra para las previsiones (véase el archivo adjunto).

Un artículo maravilloso en su esencia. Los resultados expuestos en el artículo son muy deficientes. La falta de este tipo de trabajo es lo que da la base para prosperar en la rama "basura adentro, basura afuera".


Pero el artículo se presenta en la tradición condicional a la soveticus - bella teoría sin utilidad práctica: no hay código.

 

Por el momento, existe un modelo estable. Todavía hay que trabajar en él, pero está ocupado con otras tareas.

Entrada = precio + 13, 26 yema;

Preprocesamiento, salida = sigmoide (máx., mín., cierre), delta (apertura-cierre), derivada (máx., mín., cierre), logaritmo de la derivada (máx., mín., cierre), detrend (cierre-eme13, cierre-eme26), yema(13, 26), derivada yema(13, 26); Convertir el conjunto de datos en series temporales (1 vela + 5 último). Total 16 x 6 = 96 parámetros.

Arquitectura:
BatchNormalization(96);
GRU(96, L2, Dropout=0.5, 'elu');
GRU(64, L2, Dropout=0.5, 'elu');
BatchNormalization(64, Dropout=0.3);
Dense(32, Dropout=0.3, 'elu');
Dense(16, 'elu');
Dense(8, 'elu');
Dense(3, 'softmax');
Optimizador=Nadam;
Pérdida=Entropía cruzada categórica;

BouncedMA señala la salida de una vela por delante (arriba en la rama);

Estimaciones: pérdida ~0,7-0,8; precisión ~0,55;
Pero estas estimaciones del modelo no hablan de la calidad de sus señales. Son más bajos, debido a que las señales son de formación = 1,0, 0,95, 0,0, -0,95, -1,0, Y la previsión de la clase de compra/venta fluctúa ~abs(0,45, 0,7).
Además, de un conjunto de datos de 5000 líneas, el entrenamiento se realiza en 0,8 partes, lo que significa que el modelo ni siquiera ve los últimos datos de cotización (~1000 líneas). La predicción se hace sobre las últimas 100 velas.

Pronosis

modelo

pérdidaacc

Como se puede ver, el entrenamiento se puede detener en ~45 épocas.

predecir

Código, Indicador.

 
Vizard_:

)))

Aprendizaje con refuerzo = aprendizaje sin profesor. Un algoritmo muy codicioso.

Una Maximka drogada entra en un casino. Frente a él hay una pila de máquinas de "bandidos mancos". Comienza a jugar con cada uno de ellos y registra los resultados.

Resulta que una de las máquinas es mejor y la alegre Maxim empieza a jugar sólo con ella. Pero su felicidad no duró mucho...

http://www.machinelearning.ru/wiki/index.php?title=Reinforcement_learning


sí, los bandidos ya pasé :) puede hacer epsilon codicioso y periódicamente correr de uno a otro

 
 

Este es un muy buen post. Gracias, nunca lo había pensado.

Es así...

I ) Tomamos una neurona, la hacemos comerciar en vivo, y al mismo tiempo recogemos su configuración. El distribuidor se vuelve loco con sus beneficios, el distribuidor empieza a mover el precio en su contra, pero de alguna manera está preparado para ello y sigue operando de forma rentable, el distribuidor copia las operaciones al Interbank y eso vuelve locos a los robots de negociación de la bolsa, empiezan a ir despacio y el mercado global se va al traste y a la ruina. El agente interactúa con el entorno. Es el comercio con el refuerzo. Creo que un lunes reciente algún google estaba probando sus nuevos robots de trading con refuerzos, esto encaja perfectamente.

II ) Tomamos una neurona, la hacemos operar en la historia. Encuentre los pesos y la configuración ideales de la neurona que le permitan operar perfectamente en la historia. El refuerzo no funciona, es el aprendizaje sin maestro. Y lo más probable es que se sobrealimente y falle.


En resumen, el plan es tener un centenar de cuentas reales, cada una con una neurona durante un par de días. La genética recoge los resultados de las neuronas y recoge su nueva configuración, generando nuevos robots cada dos días y esperando los resultados para volver a crear otros nuevos.