Discussão do artigo "Redes Neurais de Terceira Geração: Redes Profundas" - página 6

 

Outro teste rápido, desta vez com um conjunto de treinamento de 6.000 barras de setembro de 2014 a fevereiro de 2015. O teste fora da amostra começa em março:

Novamente, temos uma fase lucrativa de cerca de 5 semanas até que o modelo se deteriore.

Acredito que a divisão em dados de teste e treinamento é desnecessária: podemos usar todos os dados para treinamento. A precisão e a matriz de confusão são enganosas porque, na maioria dos casos, o sinal ZZ é idêntico ao sinal da barra anterior, sugerindo erroneamente uma alta precisão. Para o lucro, somente as alterações de sinal são importantes.

 
jcl365:

Agora treinei um novo modelo com previsão da próxima barra e parece que ele realmente funciona. A precisão ainda está na faixa de 74%. Esta é a curva de patrimônio agora:

:

Ela se comporta exatamente como eu esperava: o sistema é lucrativo imediatamente após o treinamento e depois se deteriora lentamente conforme o mercado muda.

Portanto, a próxima etapa é um teste WFO com retreinamento regular do modelo. Para isso, o treinamento deve ser integrado ao script da estratégia.

Essa é a função corrigida para calcular o Sig da próxima barra:

A função "Compute" que é executada a cada 30 minutos pelo script da estratégia:

O script de estratégia, o "EA":

jcl365:

Agora treinei um novo modelo com previsão da próxima barra e parece que ele realmente funciona. A precisão ainda está na faixa de 74%. Esta é a curva de patrimônio agora:

:

Ela se comporta exatamente como eu esperava: o sistema é lucrativo imediatamente após o treinamento e depois se deteriora lentamente conforme o mercado muda.

Portanto, a próxima etapa é um teste WFO com retreinamento regular do modelo. Para isso, o treinamento deve ser integrado ao script da estratégia.

Essa é a função corrigida para calcular o Sig da próxima barra:

A função "Compute" que é executada a cada 30 minutos pelo script da estratégia:

O script de estratégia, o "EA":

Hi

Você moveu a série ZZ uma barra no futuro.

for(i in 1:length(ZZ)-1) { ZZ[i] = ZZ[i+1] }

Você moveu a série dz uma barra no futuro.

 dz <- c(diff(ZZ), NA)

Portanto, você moveu a variável de destino nas duas barras para o futuro.

Isso é equivalente a

dz <- Hmisc::Lag(diff(ZZ), shift=-2)

Essa opção também pode ser usada.


 


Novamente, temos uma fase lucrativa de cerca de 5 semanas até que o modelo se deteriore.

Isso é normal. O modelo pode e deve ser reaprendido periodicamente.

Acredito que a divisão em dados de teste e de treinamento é desnecessária: podemos usar todos os dados para treinamento.

Pode. É importante lembrar alguns pontos importantes:
1. Os conjuntos de treinamento e teste não devem ser cruzados.
2. O conjunto de treinamento deve ser misto

3. Se a proporção de classes estiver desequilibrada , faça o ajuste.

Fico feliz que haja colegas usando o R.

Atenciosamente

Vladimir

 

Você está certo quanto ao deslocamento duplo: O que o sistema de fato prevê é uma diferença ZZ que se baseia no preço médio da próxima barra. O ZZ é calculado a partir dos preços médios, mas no momento do cálculo temos o preço de fechamento, que normalmente está na metade do caminho entre o último e o próximo preço médio. Portanto, o deslocamento adicional prevê cerca de 1,5 barra no futuro e, de fato, obtive resultados muito piores sem o deslocamento adicional.

Agora tenho um script do Zorro que treina novamente a cada quatro semanas e testa as quatro semanas seguintes ao treinamento. A deepnet é bastante rápida, o script precisa de apenas cerca de 10 minutos para uma execução que abrange cerca de 60 ciclos de treinamento/teste. Este é o resultado:

Ele não parece tão bom quanto as primeiras impressões. Há claramente um potencial de melhoria, portanto, as próximas etapas seriam fazer experimentos com diferentes configurações de rede, períodos de tempo e diferentes indicadores.

 
Precisamos pegar não apenas os indicadores , mas também seus parâmetros. O algoritmo genético o ajudará.

O que é o Zorro?


 
Vladimir Perervenko:
Precisamos pegar não apenas os indicadores , mas também seus parâmetros. O algoritmo genético o ajudará.

O que é o Zorro?


Sim, há um livro de Yu/Wang/Lai que descreve um algoritmo genético para pré-seleção de indicadores para treinamento em NN Forex. - Eu uso o Zorro porque os scripts são mais simples e o backtesting é melhor, mas acho que o MT4 também funcionaria com algum esforço. Não posso fornecer um link, pois esse é um site do MT4, mas você pode pesquisar no Google por Zorro trading automaton. A dll R de Bernd Kreuss também funciona com o Zorro.
 

Baixei e instalei tudo e coloquei todos os arquivos nas pastas. Todos os pacotes estão instalados. As pastas estão definidas para meus destinos.

Quando coloco o expert no gráfico EURUSD m30, tudo está bem, mesmo no DebugView, mas assim que coloco o indicador no gráfico, recebo um erro:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Erro em if (z) { :

O resultado da função GetRes em "i_SAE_fun.r" é sempre NA e, portanto, ele não pode converter isso em bool e para de funcionar.

Alguém pode me indicar a direção certa? O que estou perdendo?

Com os melhores cumprimentos,

APoLLo

 
APoLLo_MQL:

Baixei e instalei tudo e coloquei todos os arquivos nas pastas. Todos os pacotes estão instalados. As pastas estão definidas para meus destinos.

Quando coloco o expert no gráfico EURUSD m30, tudo está bem, mesmo no DebugView, mas assim que coloco o indicador no gráfico, recebo um erro:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Erro em if (z) { :

O resultado da função GetRes em "i_SAE_fun.r" é sempre NA e, portanto, ele não pode converter isso em bool e para de funcionar.

Alguém pode me indicar a direção certa? O que estou perdendo?

Atenciosamente,

APoLLo

Olá, APoLLo.

Qual versão do R você tem ?
Esse é um artigo bastante longo e , após a atualização dos pacotes do R , algumas funções param de funcionar.
É melhor usar o Revolution R Open (RRO 8.01)
Para verificar, execute um script no Rstudio.

Se você tiver tempo, também posso verificar onde está o erro.

Atenciosamente/

Vladimir

Revolution R Open
  • www.revolutionanalytics.com
Revolution R Open is our enhanced distribution of the world's most widely used data analysis software. Based on open source R, Revolution R Open is built, tested and distributed by Revolution Analytics and delivers: The latest R language engine from the R Foundation for Statistical Computing High-performance R language engine (multi-threaded...
 
Vladimir Perervenko:

Oi APoLLo.

Qual versão do R você tem ?
Esse é um artigo bastante longo e , após a atualização dos pacotes do R , algumas funções param de funcionar.
É melhor usar o Revolution R Open (RRO 8.01)
Para verificar, execute um script no Rstudio.

Se você tiver tempo, também posso verificar onde está o erro.

Atenciosamente/

Vladimir

Estou usando a versão mais recente do R 3.2.0 64bit junto com a compilação mais recente do MT4. Todos os pacotes do R foram baixados ontem, portanto, também devem ser da versão mais recente.

Se eu iniciar o EA no EURUSD M30, posso até mesmo me conectar a ele com o RGUI e verificar se há "SAE" e "prepr" e obter muitos números de volta.

Para mim, parece que a função GetRes no R está verificando se uma conexão está aberta, recuperando o valor flag1 que não está disponível no servidor (EA).

Talvez essa seja a causa do fato de "Acc", "K" ou "Kmax" nunca terem sido calculados corretamente.


Tenho tempo, portanto, se tiver a chance de dar uma olhada, ficarei muito feliz.

Mais tarde, tentarei usar o Revolution R 8.01 para verificar se isso funciona melhor.

Obrigado por sua ajuda :)

[Excluído]  
Vladimir Perervenko:

MUITO OBRIGADO ao autor pelo artigo. Comecei a me familiarizar com a aplicação de redes neurais no mercado com seu artigo. Eu não estava familiarizado com redes neurais antes e nunca havia usado a linguagem R. Mas agora eu a instalei e estou aprendendo. Parece complicado, mas é interessante!

E sim, por favor, diga-me, não consigo entender como o arquivo SAE.model funciona como uma biblioteca para um Expert Advisor ou como o quê? Ou seja, podemos salvar a estrutura da rede neural do R e depois usá-la como uma biblioteca regular em um Expert Advisor, ou o quê? É tudo muito confuso e complicado (para mim).