Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 680
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Sobre o tópico de como transferir a neurônica do R para o mql:
Eu fi-lo com o pacote nnet. Veja emhttps://cran.r-project.org/web/packages/nnet/index.html(Fonte do pacote: nnet_7.3-12.tar.gz). Existe uma pasta src / nnet.c no arquivo.
Precisamos da função fpass, primeiras linhas antes desteError = 0.0 (este é o início do cálculo de erro para backprop, sem necessidade de predição simples)
Este é o código que podemos usar no nosso EA -
este código só funcionará com o parâmetro de modelo saltar = FALSO
Se não for assim, ou se for usado um softmax - procure diferenças na função fpass()
pesos (array nnet_weights) devem ser copiados do próprio R após o treinamento
Outro pequeno artigo introdutório sobre reforço, enquanto o ponto é
Seria interessante organizar uma pequena sessão de trabalho em equipe e brainstorming no mql e compartilhar a experiência.
https://proglib.io/p/trade-learning/
Na minha opinião, a aprendizagem de reforço geralmente dá um modelo com um sobrefit muito grande, e a validação cruzada não vai salvar neste caso. Deve haver alguns mecanismos especiais dentro do próprio modelo contra o sobreajustamento.
Para aqueles que não estão familiarizados com este assunto, brevemente: em vez da avaliação habitual do modelo (precisão, r2, logloss, etc.), é criada uma função especial de aptidão com a sua própria lógica de avaliação do modelo. Essa função de adequação pode, por exemplo, calcular o lucro de um modelo ao negociar, ou o sharperatio. E os parâmetros do modelo são selecionados por algoritmo genético.
É interessante, esse otimizador em MT4 e MT5 também trabalha com o princípio da aprendizagem com reforço - em cada barra (ou mesmo tick) o Expert Advisor recebe valores correntes do preço e indicadores, toma algumas decisões, e a estimativa final da EA é calculada como o resultado da negociação. Os parâmetros do Expert Advisor são selecionados pela genética para aumentar a estimativa.
A julgar pelos Expert Advisors disponíveis gratuitamente para o MT5, podemos ver claramente que este método de aprendizagem causa muitos perdedores. Mas às vezes os bons EAs também são bons.
Na minha opinião, a aprendizagem de reforço geralmente dá um modelo com uma saliência muito grande, e a validação cruzada não vai salvar neste caso. Deve haver alguns mecanismos especiais dentro do próprio modelo contra o sobreajustamento.
Para aqueles que não estão familiarizados com este assunto, brevemente: em vez da avaliação habitual do modelo (precisão, r2, logloss, etc.), é criada uma função especial de aptidão com a sua própria lógica de avaliação do modelo. Essa função de adequação pode, por exemplo, calcular o lucro de um modelo ao negociar, ou o sharperatio. E os parâmetros do modelo são selecionados por um algoritmo genético.
O interessante é que o optimizador em MT4 e MT5 também funciona com base no princípio de aprendizagem com reforço - em cada barra (ou mesmo tick) o Expert Advisor recebe os valores actuais dos preços e indicadores, toma algumas decisões, e a estimativa final do Expert Advisor é o resultado da negociação. Os parâmetros do Expert Advisor são selecionados por Genética para aumentar a estimativa.
A julgar pelos Expert Advisors disponíveis gratuitamente para o MT5, podemos ver claramente que este método de aprendizagem causa uma grande "perda". Mas às vezes os bons EAs também são bons.
É uma boa analogia com o otimizador, o meu bot anterior era sobre isso, mas é muito simples.
Mas em geral não é, RL se não se opõe à genética, enfatiza suas vantagens, por exemplo, a possibilidade de trabalhar em processos não estacionários. Em particular, é possível utilizar funções de aptidão física não gananciosas, graças às quais o modelo está constantemente a aprender à medida que corre e a fazer passos aleatórios. E como otimizador usamos o recheio NS (não genética).
É um pouco mais complicado lá, mas ainda não acabei de ler o livro.
Portanto, sua afirmação sobre genética, otimizador e RL está incorreta.
*um momento de emoção e filosofia e todas essas coisas*
Imagina um dia claro e ensolarado. Você está sentado na grama ao lado de um lago, uma brisa quente da primavera está soprando, deixando ondulações na água, o som de patos pode ser ouvido em algum lugar próximo. Raramente os peixes nadavam debaixo de água, às vezes tocando a superfície com suas barbatanas e fazendo círculos na água. A vizinha estava a colher água e o neto atirava pedras para a água, perseguindo rãs de um lado para o outro. Do outro lado do lago, um homem lava o seu carro.
O preço é como as ondas na água de toda a agitação, mas também durante uma tempestade. Podemos seguir as ondas e tentar adivinhar quando a água subirá ou descerá em determinado ponto, mas se não seguirmos o ambiente, estaremos errados a maior parte do tempo.
O valor dos preços futuros não depende de movimentos de preços passados, mas dos processos globais que causaram movimentos de preços passados e que causarão novos movimentos.
Você precisa monitorar não apenas as ondas na água, mas também o vento, a trajetória dos peixes, o balde do vizinho, etc., então a natureza das ondas na água será clara e previsível.
Assim, se você tiver informações sobre todos os processos globais que afetam o preço, você pode aprender a prever e qualquer modelo simples do século anterior o fará.
O problema é que normalmente existe apenas um gráfico de preços e isso não é suficiente.
Aqui como ligar RL e NN
e um vídeo, há a parte 2 mais.
É isso, não vou mais fazer spam, quem estiver interessado vai ler.
Tudo é simples com redes neurais em MT. Existe uma biblioteca CNTK da Microsoft. É 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 a pensar se devo começar a escrever sobre a aprendizagem da máquina no meu blog.
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 ideia básica tenha sido expressa pelo fxsaber há muito tempo - com a mesma abordagem o assunto pode muito bem ser encerrado, porque originalmente está errado.