Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 361
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Formação, reconversão e sobretreinamento são coisas fundamentalmente diferentes.
Todo este treinamento em cada novo bar é mastigado e mastigado neste fórum e, em geral, dentro da TA.
Na luta contra o supertreinamento (superfitting) eu conheço dois métodos.
1. limpeza do conjunto de preditores a partir de preditores não relacionados com a variável alvo - limpeza a partir do ruído do conjunto de preditores de entrada. Os primeiros 100 posts deste tópico discutiram-no em detalhe.
2. Com a limpeza do conjunto de preditores a partir do ruído, começamos a ajustar o modelo com amostra de treino, depois com amostra de teste e validação, que são amostras aleatórias de um ficheiro. O erro em todos os três conjuntos deve ser aproximadamente o mesmo.
3. Depois pegue um arquivo separado do anterior e execute o modelo nele. Mais uma vez o erro deve ser mais ou menos o mesmo que os anteriores.
4. Se estas verificações forem realizadas regularmente, a pergunta "uma queda de 20% é um sinal para a reciclagem" não será de todo colocada, uma vez que os três primeiros passos resultaram numa queda como parâmetro do modelo e ir além diz que o modelo não está a funcionar e que tudo deve ser recomeçado.
Bem, isto é tudo um caso geral, sim. E em cada caso você precisa trabalhar mais com cada TS em particular, e então o entendimento virá quando ele estiver bem treinado, quando ele estiver requalificado, e quando ele tiver períodos. Por exemplo, a relação compra/venda deve ser aproximadamente a mesma, e a amostra de treino deve conter tendência para cima, para baixo e plana, caso contrário é um empate de sentido único. O principal neste caso é não se "sobretreinar" :)
Além disso, factor sazonal, factor de crise e outras muitas regularidades diferentes que precisam de ser tidas em conta
1. limpeza do conjunto de preditores a partir de preditores irrelevantes para a variável alvo - limpeza do ruído do conjunto de preditores de entrada. Nos primeiros 100 marcos desta linha, esta questão foi discutida em grande detalhe.
Qual foi a solução final - como definir os preditores que não estão relacionados com os comandos de saída?
Como? - Tudo depende das especificidades. Demorei dois dias a resolver um problema simples. Agora a solução parece óbvia)).
Presumo que também existam princípios gerais e universais? Bem, também é interessante saber sobre o seu exemplo particular.
Procura-o no meu blog.
Os princípios, sim, são universais. Mas não há soluções gerais. Excepto para algumas classes de tarefas.
Um resumo das cem páginas anteriores :)
A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.
Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.
Um modelo baseado em preditores inúteis irá falhar, não importa se é gbm, neurônio ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará combinações recorrentes entre elas e se lembrará delas.
É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.
Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados.
Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outros.
A NS pode prever séries não estacionárias? Em caso afirmativo, que tipos de não-estacionariedade?
Na minha opinião, a neurônica é completamente inadequada para trabalhar com preço para prever séries cronológicas não-estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E então alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.
Se vamos usar neurônica, devemos dar-lhe apenas preços processados (não ohlc puro), por exemplo, indicadores.
Obrigado pelo resumo, não me apeteceu ler 100 páginas...)
O processo de seleção manual dos preditores, por exemplo, por combinações de 3 pcs. demorará muito tempo. No MT5 existem 38 indicadores técnicos padrão. Combinações de 3 - número enorme. Além disso, precisamos selecionar períodos, tipos de preços e outros parâmetros de entrada. E se adicionarmos indicadores não-padronizados interessantes, o número de testes irá aumentar ainda mais.
Portanto, devemos procurar uma estimativa automática de indicadores. Encontrei dois métodos comuns nos artigos de Vladimir Perervenko:
1) Remoção de variáveis altamente correlacionadas - é implementado em R.
2) Seleção das variáveis mais importantes - também resolvidas em R.
Eu ainda estou escrevendo diretamente no MT5, pode haver soluções prontas para estas perguntas? Ou um método de transferência de soluções de R para MT5, pelo menos na versão simplificada....?
Se procurarmos a correlação dos indicadores, simplesmente procuramos a diferença entre cada par de indicadores -> resumir para cada barra -> dividir pelo número de barras. (ou de outra forma?)
Com os mais importantes - não completamente resolvidos...
Talvez haja outros métodos para limpar os preditores?
Mas ainda estou a escrever directamente no MT5, talvez já existam soluções prontas para estes problemas? Ou um método de transferência de soluções de R para MT5, pelo menos em uma versão simplificada....?
Escrever tudo de uma só vez em MQL, mas confiar em R não é a melhor opção. É mais fácil desenvolver uma estratégia em R, então usando esta biblioteca https://www.mql5.com/ru/code/17468 para chamar o código R do Expert Advisor e testá-lo no testador.
Muito provavelmente muita coisa será apagada e alterada durante a criação e teste, alterações de pacotes, modelos, etc., é mais fácil de alterar e testar tudo em R propriamente dito.
Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão.
Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,
Um resumo das cem páginas anteriores :)
A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.
Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.
Um modelo treinado em preditores inúteis falhará, seja em gbm, neurônica ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará entre elas combinações repetitivas e se lembrará delas.
É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.
Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados.
Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outro.
Na minha opinião, a neurónica não é adequada para prever séries cronológicas não estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E depois alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.
Se usamos um neurônio, então podemos dar-lhe apenas preços processados (não puro ohlc), por exemplo, indicadores.
O problema não é a neurônica em si ou qualquer outra coisa aplicável aos mercados. O problema é o que é introduzido na ferramenta DM. E é pura loucura usar um preço nú como insumo.
O problema são os preditores, como a CC os chama. Ou seja, o problema é como representar uma série não estacionária como estacionária. Quem estiver mais próximo de resolver este problema é o melhor.
Não é a melhor solução para escrever tudo em MQL, confiando no R ao mesmo tempo. É mais fácil desenvolver a estratégia em R e depois, usando esta biblioteca https://www.mql5.com/ru/code/17468, chamar o código R do Expert Advisor e testá-lo no Strategy Tester.
Muito provavelmente enquanto se cria e testa muitas coisas serão apagadas e alteradas, os pacotes serão substituídos, os modelos serão alterados, etc. É mais fácil alterar e testar tudo no próprio R.
Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão.
Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,
É complicado... Levaria mais tempo do que compreender o algoritmo (como para a correlação K acima) e escrevê-lo. Penso que a função de tentar todas as entradas, calcular a correlação e peneirar as altamente correlacionadas levará um par de horas.
Espero que seja tão fácil de usar outras soluções para peneirar os preditores).
Então, há outras soluções para encontrar preditores desnecessários?