Discussão do artigo "Rede neural: Expert Advisor auto-otimizável"

 

Novo artigo Rede neural: Expert Advisor auto-otimizável foi publicado:

Será que é possível criar um Expert Advisor que, de acordo com os comandos do código, otimize os critérios de abertura e fechamento das posições automaticamente e em intervalos regulares? O que acontecerá se nós implementarmos no EA uma rede neural (um perceptron multi-camada) que, sendo módulo, analise o histórico e avalie a estratégia? É possível dar ao código um comando para uma otimização mensal (semanal, diária ou por hora) de rede neural com um processo subsequente. Assim, é possível criar um Expert Advisor que se auto-otimize.

Após executar o script com os parâmetros dados (NN sem camadas ocultas, 10 neurônios de entrada e 1 de saída), obtemos um grande resultado. O arquivo "ScriptBinDec-infRN.csv" gerado na pasta "Terminal\Common\Files" dá-nos as seguintes informações:

Autor: Jose Miguel Soriano

 

Infelizmente, não foi observada a auto-otimização de nenhuma função-alvo.

 

Talvez seja uma falha de tradução, mas não estou entendendo:

O que você está ensinando à rede neural?

Qual é a entrada e qual é o alvo?

O que exatamente você está otimizando?

É um artigo muito confuso.

Isso mostra a vantagem de usar o Alglig no MT5.

 
<br/ translate="no">
Eu gostaria de ver os resultados do testador e da negociação na demonstração nos artigos dedicados à criação de Expert Advisors. Caso contrário, será novamente um cavalo esférico em um vácuo. Não há um único artigo sobre o uso de redes neurais na negociação. Apenas teorias.
 

Parabéns pelas informações,

Faltou script. 

 

Olá e obrigado, foi ótimo ver esse auto-otimizador da NN,

Como posso usar isso no MT4? Você tem a versão do MT4?

 
Comentários sobre o artigo.
1. As redes neurais não otimizam! As redes neurais (em geral, qualquer modelo de aprendizado de máquina) são treinadas, testadas e podem ser treinadas ainda mais.
2.preparação dos dados. Antes da normalização do conjunto de dados de entrada/saída, ele deve ser dividido em treinamento/teste e, às vezes, em partes válidas nas proporções necessárias. Os parâmetros de normalização são definidos no conjunto de treinamento! Ao resolver problemas de classificação, o particionamento deve ser (preferencialmente) estratificado. E, é claro, levar em conta o desequilíbrio da classe.
O artigo não fornece dados específicos de entrada e saída, mas esta passagem: " A variável "nVelasPredic" permite extrapolar esses valores de indicador para n velas à frente." levanta uma questão muda.
O parágrafo final da seção:"Ou seja, cada linha da matriz "arDatos" da classe CMatrixDouble terá tantas colunas quantos forem os dados de entrada ou valores de indicador usados na estratégia e quantos forem os dados de saída definidos por ela." E quantos dados de saída são definidos? Como você pode imaginar, o problema de regressão é resolvido e o número de saídas = 1.
Em geral, os dados de entrada e saída no sleeper são uma abstração, mas o erro de aprendizado RMSE é dado.
3."Amostragem excessiva de dados de entrada/saída."
"Para evitar as tendências associadas à herança de valores em uma matriz de dados, podemos alterar arbitrariamente (reordenar) a ordem das linhas na matriz. Para fazer isso, aplicamos a função "barajaDatosEntra", que percorre as linhas da matriz CMatrixDouble, define uma nova linha de destino para cada linha, respeitando a posição dos dados de cada coluna e executando o embaralhamento de dados usando o método de bolha " Você está falando de classificação?
Para problemas de classificação, é desejável embaralhar as linhas aleatoriamente (sem ultrapassar); para regressão, isso não é necessário.
4."3.6 Treinamento/otimização de uma rede neural". Deixe-me repetir - uma rede neural não é otimizada ou ajustada - ela é treinada. Atualmente, há vários métodos de treinamento. Cada um com suas próprias vantagens e desvantagens.
"Os testes que fiz não mostraram nenhuma melhoria nos resultados com o aumento do número de épocas de treinamento. "
"Esses algoritmos realizam o ajuste de tal forma que a reiteração dos ciclos de treinamento (variável "ciclosEntrena") quase não tem efeito sobre o erro resultante, ao contrário do algoritmo "back propagation", em que a reiteração pode alterar significativamente a precisão resultante."
Se sua rede neural não responder à alteração do número de épocas de treinamento, ela é uma rede neural com falhas.
"Uma rede de 4 camadas com 35, 45, 10 e 2 neurônios e uma matriz de entrada de 2.000 linhas pode ser otimizada usando a função acima em 4 a 6 minutos (I5, núcleo 4, RAM 8 gb) com um erro da ordem de 2 a 4 centésimos de milésimos (4x10^-5)." - Como você pode ver no artigo, você está falando sobre o erro de aprendizado, o que é sempre muito bom. Mas é o erro de teste, que você obviamente não fez, que é indicativo. Sem ter dados específicos sobre entradas e saídas, o número fornecido por você não diz nada. Além disso, não vi no artigo a mudança dos dados de saída durante o treinamento.
5."3.7 Salvando a rede..."
Para continuar o trabalho, é necessário salvar não apenas a rede em si, mas também os parâmetros de normalização que foram obtidos no conjunto de treinamento. Caso contrário, o trabalho posterior será uma perda de tempo.
"Essa função (respuestaRed()) deve ser capaz de alterar a normalização aplicada aos dados de saída na matriz de treinamento." Como? Os parâmetros de normalização são definidos no estágio de treinamento e não podem ser alterados no estágio de teste ou previsão.
6. "Auto-otimização" Não há otimização nem auto-otimização aqui. Você tem uma rede neural aprendendo periodicamente com novos dados.

Para resumir, posso dizer: como exercício de programação, provavelmente é útil, mas como guia sobre o tópico de criação e uso de uma rede neural, é absolutamente inaceitável. O autor (ou tradutor) deve se ater aos termos e definições estabelecidos nessa área para não enganar os usuários. E acho que a revisão preliminar dos textos antes da publicação é muito desejável. Não estou falando da ausência de gráficos e desenhos que ilustrem o texto. Sem eles, o texto é uma folha de código.

Boa sorte




 

Alexey Volchanskiy:
Хотелось бы в статьях, посвященных созданию советников, увидеть результаты в тестере и торговли на демо. А то опять сферический конь в вакууме. Еще не одной дельной статьи по использованию нейросетей в трейдинге не было. Одни теории.

A afirmação é forte, mas infundada.

No apêndice dos artigos (pelo menos no meu), há códigos de Expert Advisors. Coloque-os em uma demonstração e teste-os. Ou você prefere acreditar nas imagens de outras pessoas? Não seja preguiçoso, experimente.

O objetivo dos artigos é dar a você novas ideias, maneiras e métodos que podem ser aplicados nos Expert Advisors. Mas cabe a você se preparar para um trabalho produtivo. É no mercado que você pode ser atraído por belas imagens.

Boa sorte

 
Obrigado por seu trabalho árduo e muito profundo para mim.
 
Excelente trabalho e artigo super enriquecedor, bem explicado e claro, só posso agradecê-lo por sua contribuição nesse campo.

Saudações.
 
MetaQuotes Software Corp.:

Novo artigo Neural Networks: Intelligent Trading Systems Self-Optimising foi publicado:

Por Jose Miguel Soriano

Obrigado por compartilhar