Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 681

 
Estou começando um tópico sobre o uso do Python no treinamento no fórum onde eu moro. Descreverá tudo o que um trader pode precisar para desenvolver um MTS. Não haverá estratégias prontas. A tarefa é encontrar um "algoritmo" para criar MTS rentável. E não importa que métodos serão usados. O principal é que eles devem ser úteis. O link estará na minha notícia.
 
Grigoriy Chaunin:
Tudo é simples com redes neurais em MT. Há uma biblioteca da Microsoft CNTK. É implementado para Python, C# e C++. Toda a análise e treinamento da rede é feita em Python, enquanto C++ é usado para escrever uma DLL que carrega a rede treinada e realiza cálculos usando-a. Na minha opinião, esta é a melhor opção. A segunda opção, a ligação do Python ao MT. Eu escrevi uma biblioteca simples para isto. Biblioteca. Ligamo-lo e podemos usar tudo o que está disponível em Python. E há muitas coisas disponíveis. Estou me perguntando se eu deveria começar a escrever sobre aprendizado por máquina no meu blog.
Poderia explicar uma coisa, após a inicialização de um script, ele fica na memória? Ou seja, os módulos carregados pelo script python também devem ficar na memória, certo?
 
Sim. O código MQL é suposto chamar as funções do script Python em cada tick.
 
Maxim Dmitrievsky:

seria interessante ler sobre estratégias e pensamentos/experiências pessoais... para mim pessoalmente

porque a maioria das coisas que eles escrevem aqui são apenas tretas sobre passar por um monte de bibliotecas e o que é melhor para escrever... é uma epidemia, e tudo vai para o lixo.

Embora a idéia básica tenha sido expressa pelo fxsaber há muito tempo - com a mesma abordagem o assunto pode muito bem ser fechado, pois está errado desde o início.

Eu concordo.

O tema transformou-se num completo disparate sem exemplos concretos ou teoria.

Vamos remediar a situação.

Para começar - Aconselho a todos a ler como definir um tamanho de amostra para previsão (ver arquivo anexo).

Arquivos anexados:
 
Alexander_K2:

Eu concordo.

O tema transformou-se em completo lixo, sem exemplos concretos ou teoria.

Vamos resolver a situação.

Para começar - Aconselho a todos a ler como determinar o tamanho da amostra para a previsão (ver arquivo anexo).

Obrigado Alexander, talvez você consiga algo útil com isso, eu vou ler.

 
Alexander_K2:

Eu concordo.

O tema transformou-se em completo lixo, sem exemplos concretos ou teoria.

Vamos resolver a situação.

Para começar - Sugiro que todos leiam como determinar o tamanho da amostra para a previsão (ver arquivo anexo).

Um artigo maravilhoso na sua essência. Os resultados descritos no artigo são muito insuficientes. É a falta desse trabalho que dá uma base para florescer no ramo do "lixo dentro, lixo fora".


Mas o artigo é apresentado na tradição condicional um la soveticus - teoria perfeita na inutilidade prática: não há código.

 

Neste momento, existe um modelo estável. Ainda precisa de trabalhar nisso, mas ocupado com outras tarefas.

Input = preço + 13, 26 yema;

Pré-processamento, saída = sigmóide (max, min, close), delta (open-close), derivada (max, min, close), logaritmo da derivada (max, min, close), detrend (close-eme13, close-eme26), yema(13, 26), yema derivado(13, 26); Converter conjunto de dados em séries temporais de conjuntos de dados (1 vela + 5 última). Total 16 x 6 = 96 parâmetros.

Arquitetura:
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');
Optimizer=Nadam;
Perda=Centralização transversal categórica;

Os sinais BouncedMA saem de uma vela à frente (acima no ramo);

Estimativas: perda ~0,7-0,8; precisão ~0,55;
Mas estas estimativas não falam sobre a qualidade dos sinais do modelo. São inferiores, devido ao facto de os sinais serem de treino = 1.0, 0.95, 0.0, -0.95, -1.0, E a previsão da classe de compra/venda flutua ~abs(0.45, 0.7).
Além disso, de um conjunto de dados de 5000 linhas, o treinamento é executado em 0,8 partes, o que significa que o modelo nem sequer vê os últimos dados de cotação (~1000 linhas). A previsão é feita nos últimos 100 castiçais.

Pronose

modelo

perdaac

Como você pode ver, o treinamento pode ser interrompido em ~45 épocas.

prever

Código, Indicador.

 
Vizard_:

)))

Aprender com reforço = aprender sem um professor. Um algoritmo muito ganancioso.

Um Maximka pedrado entra num casino. Na frente dele está uma pilha de máquinas de "bandido de um braço". Ele começa a jogar com cada um e grava os resultados.

Acontece que uma das máquinas é melhor e o alegre Maxim começa a brincar apenas com ela. Mas a sua felicidade não durou muito...

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


sim, bandidos que eu já passei :) podem tornar o epsilon ganancioso e periodicamente correr de um para outro

 
 

É um posto muito bom. Obrigado, nunca pensei nisso.

É assim...

I ) Pegamos num neurónio, fazemo-lo trocar ao vivo, e ao mesmo tempo pegamos na sua configuração. O dealer enlouquece com seus lucros, o dealer começa a mover o preço contra ele, mas ele está de alguma forma pronto para isso e ainda negocia lucrativamente, o dealer copia negócios para o Interbank e isso leva à loucura os robôs de negociação de câmbio, eles começam a ir devagar e o mercado global vai à ruína. O agente interage com o meio ambiente. Está a negociar com reforço. Acho que numa segunda-feira recente alguns google estavam a testar os seus novos robôs comerciais com reforços, isto encaixa perfeitamente.

II ) Pegamos num neurónio, fazemo-lo negociar sobre a história. Encontre os pesos ideais e a configuração do neurônio que lhe permite negociar perfeitamente na história. O reforço não funciona, é aprender sem um professor. E o mais provável é que alimente demais e falhe.


Em resumo, o plano é ter cem cêntimos de contas ao vivo, cada uma com um neurónio durante alguns dias. A genética recolhe os resultados dos neurónios e recolhe a sua nova configuração, gerando novos robôs a cada dois dias e depois aguardando os resultados para voltar a criar novos.