Discussão do artigo "Construa Expert Advisors Auto-Otimizáveis em MQL5" - página 2

 

Obrigado por seu valioso compromisso, especialmente pela oportunidade de abrir nossas mentes para novos horizontes - o que é o mais importante, eu acho.

Tenho perguntas práticas e talvez ingênuas

  • como colocar um número mágico e um comentário para rastrear o EA?
  • como modificar o LotSize (melhor ainda, como implementar um gerenciamento de dinheiro)?

Obrigado

Divirta-se

 
Gamuchirai Zororo Ndawana #:
Gosto muito de sua abordagem proativa. Você está certo, há várias exceções que podem ser levantadas quando se tenta buscar dados históricos. Por exemplo, se você tentar alterar os períodos de tempo no meio de uma sessão de negociação, o problema "-nan" poderá ser observado mais uma vez.


Houve uma troca inerente entre manter a mensagem fácil de acompanhar e corrigir todos os erros que observei. Se eu optasse pela segunda opção, o código poderia ter sido necessariamente mais complexo e não tão fácil de acompanhar como é. Portanto, decidi manter a mensagem fácil de acompanhar. Portanto, decidi mantê-lo fácil de seguir, com a intenção de que você pudesse estendê-lo rapidamente.

Sua solução parece muito promissora, como ela está se saindo?

Olá, mais uma vez tive que criar minha conta novamente para fazer login. De qualquer forma,
Tentei executar o LinearRegressionEA e o considero um conceito interessante. Negocio principalmente CFDs de OURO e gostei do indicador WPR neste exemplo.
Às vezes, obtenho preços de previsão incorretos que estão muito fora do intervalo com um fator 100, mas às vezes corretos!
Se alguém resolver esse problema, eu agradeceria muito. A depuração do código de regressão linear não é minha especialidade.

Não vi se você escreveu algo sobre o período preferido para negociação, eu o defini como 30 minutos.

Nesse cenário,
se ainda não houver uma negociação
e o EA executar a função'analyse_indicators()',
isso será feito uma vez por barra, portanto, no meu caso, uma vez a cada 30 minutos.
Isso significa que, se os indicadores não se alinharem para uma decisão de negociação, isso não será tentado novamente até a próxima barra, no meu caso, 30 minutos depois.
Na minha opinião, esse intervalo é muito grande para estabelecer a negociação inicial.
Por isso, adicionei uma tarefa de timer que executa a etapa de análise a cada 10 segundos até que os indicadores estejam a favor de uma negociação.
Estabeleço a ordem de compra ou venda e, em seguida, retorno ao processamento regular por barra da função manage_position() .
 
Giulio Braga gerenciamento de dinheiro)?

Obrigado

Divirta-se

Olá, Giulio.

Para configurar um número mágico e um comentário personalizado, basta estender o código chamando a função apropriada.

Acho que a PositionOpen pode ser o que você está procurando. Você pode verificar a documentação neste link.

Se isso não atender às suas necessidades, tente este tutorial do YouTube usando este link.

Se nenhum desses recursos puder ajudá-lo, tenho um canal onde publico artigos mais úteis como esses. Você pode encontrá-lo usando este link.

Documentation on MQL5: Standard Library / Trade Classes / CTrade / PositionOpen
Documentation on MQL5: Standard Library / Trade Classes / CTrade / PositionOpen
  • www.mql5.com
Opens a position with the specified parameters. Parameters symbol [in]  Name of trade instrument, by which it is intended to open position...
 
Gunnar Forsgren #:
Olá, mais uma vez tive que criar minha conta novamente para fazer o login. De qualquer forma,
Tentei executar o LinearRegressionEA e o considero um conceito interessante. Negocio principalmente CFDs de OURO e estabeleci um gosto pelo indicador WPR neste exemplo.
Às vezes, recebo preços de previsão incorretos que estão muito fora do intervalo com um fator 100, mas às vezes corretos!
Se alguém resolver esse problema, eu agradeceria muito. A depuração do código de regressão linear não é minha especialidade.

Não vi se você escreveu algo sobre o período preferido para negociação, eu o defini como 30 minutos.

Nesse cenário,
se ainda não houver uma negociação
e o EA executar a função'analyse_indicators()',
isso será feito uma vez por barra, portanto, no meu caso, uma vez a cada 30 minutos.
Isso significa que, se os indicadores não se alinharem para uma decisão de negociação, isso não será tentado novamente até a próxima barra, no meu caso, 30 minutos depois.
Na minha opinião, esse intervalo é muito grande para estabelecer a negociação inicial.
Por isso, adicionei uma tarefa de timer que executa a etapa de análise a cada 10 segundos até que os indicadores estejam a favor de uma negociação.
Estabeleço a ordem de compra ou venda e, em seguida, retorno ao processamento regular por barra da função manage_position() .
É bom receber seu retorno, Gunnar.

Lamento saber que você estava tendo dificuldades para fazer login. Espero que já tenha resolvido isso.

Você está correto, as previsões fornecidas pelo nosso modelo atual podem, às vezes, estar fora da faixa aceitável por uma ampla margem, mas não há nenhum bug no código.

Deixe-me explicar por que podemos esperar que isso aconteça.

Estamos usando uma implementação simples do algoritmo Gradient Descent para otimizar os coeficientes do nosso modelo. Infelizmente, o Gradient Descent pode ser sensível às posições iniciais de nossos coeficientes. Para remediar isso, foi desenvolvido o algoritmo Stochastic Gradient Descent (SGD). O SGD realiza otimizações alterando os coeficientes iniciais a cada vez para maximizar a probabilidade de encontrar coeficientes ideais. Para simplificar, mantivemos nossos coeficientes fixos e isso pode fazer com que o modelo fique preso em estados desanimadores. Este vídeo do YouTube pode ser útil, use este link.

Sim, você está certo, eu pedi intencionalmente que os cálculos fossem realizados em cada candle. Isso foi feito para acelerar os backtests. Para desativar esse recurso, basta excluir a verificação da condição "if(timestamp != current_time)".

Além disso, há maneiras de construir nosso modelo de modo que ele se personalize de acordo com os dados que temos em mãos.
134 - What are Optimizers in deep learning? (Keras & TensorFlow)
134 - What are Optimizers in deep learning? (Keras & TensorFlow)
  • 2020.06.18
  • www.youtube.com
microscopy, python, image processing
 

Oi, é incrível! Obrigado!

Eu recebo essas linhas:

2024.06.08 07:00:42.212 Core 01 2024.05.01 00:00:00   Validation mae: 
2024.06.08 07:00:42.212 Core 01 2024.05.01 00:00:00   [inf,0.006448762386408615,0.006380585312229991,0.006373808727022462,0.006373131478053022,0.006373063757231861,0.006373056987294832,0.006373056310301126,0.006373056241302974,0.00637305623338131,0.00637305623026851,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.006373056230211261,0.0

Como posso corrigir isso?

Alguém também tem esse problema?

 
Javier Santiago Gaston De Iriarte Cabrera #:

Oi, é incrível! Obrigado!

Eu recebo essas linhas:

Como posso corrigir isso?

Alguém também tem esse problema?

Javier, você poderia carregar mais da saída do terminal?

Como o que você compartilhou parece normal, eu esperaria uma saída como essa.

No entanto, o problema que estou observando na sua saída é o "0.0" no final. Obter um erro de 0,0 implica que o modelo é perfeito, o que não é realisticamente possível.


 

Oi Gamuchirai,

(Espero que essa seja a forma aceita de dizer olá).

Tenho lido seus artigos com grande interesse, pois estou muito interessado em identificar oportunidades para melhorar meu código muito ingênuo. Estou apenas fazendo a transição da MQL4 para a MQL5 e não tenho formação em matemática.

Ao executar seu código baixado no backtest, notei que as únicas negociações realizadas são todas posições de VENDA - veja o anexo.

O comentário que mostra o preço previsto sempre aparece como 0,0000nnnnnnnnnn, o que parece estar incorreto.

Como sou iniciante, não consigo identificar onde está o erro aparente, portanto, espero que você possa responder com uma correção, pois espero implementar a análise de regressão em meus futuros EAs.

Obrigado por sua consideração e por sua maneira adorável de ensinar pelo exemplo.


Atenciosamente,
Bryan

Arquivos anexados:
Regression.JPG  213 kb
 
Giulio Braga o gerenciamento de dinheiro )?

Como modificar o LotSize (ou, melhor ainda, como implementar o gerenciamento de dinheiro)?

Tenha um bom dia

Cara, eu não tinha pensado em usar os comentários para rastrear posições, mas é um algoritmo tão simples que não pode falhar, gostei, obrigado pela sugestão. Caso contrário, os números mágicos estão bem cobertos na API MQL5, basta pressionar F1 em seu IDE e, em seguida, pesquisar, ou procurar on-line ou em fóruns, pois estão bem cobertos.

Money Caso contrário, os números mágicos estão bem cobertos na API MQL5, basta pressionar F1 no seu IDE e, em seguida, pesquisar, ou procurar on-line ou em fóruns, pois está bem coberto. O gerenciamento de dinheiro já foi abordado em nossa série de artigos.

 
Javier Santiago Gaston De Iriarte Cabrera # :

Olá, isso é ótimo!

Eu vi essas linhas.

Como resolver esse problema?

Alguém também encontrou esse problema?

Olá Javier, você sabe que estamos em uma jornada de aprendizado contínuo em nossa comunidade. Pelo que aprendi desde que escrevi este artigo, eu diria que a implementação não é estável. Eu diria que a implementação não é estável, revisarei este artigo e o atualizarei com soluções numericamente mais estáveis. Felizmente para nós, existem soluções compactas que poderiam facilmente resolver em uma linha o que fiz em todo este artigo, se ao menos eu soubesse naquela época o que sei agora.

 
Bryan John Aldridge Como sou iniciante, não consigo descobrir onde está o erro óbvio, portanto, espero que você possa me dar uma solução ou correção, pois espero implementar a análise de regressão em um futuro EA .

Obrigado por sua consideração e por suas belas palavras.


Atenciosamente, Bryan

Olá, Bryan, suas preocupações são relevantes. Fique tranquilo, pois a culpa não é sua. O algoritmo que implementei neste artigo é um bom começo, mas não é estável. Atualizarei este artigo com soluções estáveis, que são notavelmente mais fáceis de implementar.