Discussão do artigo "Funcionalidades do assistente MQL5 que você precisa conhecer (Parte 1): Análise de regressão"

 

Novo artigo Funcionalidades do assistente MQL5 que você precisa conhecer (Parte 1): Análise de regressão foi publicado:

O trader moderno está quase sempre procurando novas ideias, consciente ou inconscientemente. Ele está constantemente tentando novas estratégias, modificando-as e descartando aquelas que não funcionam. Este processo de pesquisa é demorado e propenso a erros. Nesta série de artigos, tentarei provar que o assistente MQL5 é um verdadeiro suporte para qualquer operador. Graças ao assistente, o trader economiza tempo ao implementar suas ideias. Também reduz a probabilidade de erros que ocorrem ao duplicar o código. Assim, em vez de perder tempo com codificação, os operadores colocam em prática sua filosofia de negociação.

Abaixo estão os resultados de nossa otimização. Primeiro, é um relatório e uma curva de ações dos melhores resultados de negociação apenas com ordens a mercado.




Autor: Stephen Njuki

 


Oi Stephen,

Artigo muito bom. Fiz alguns testes e obtive bons resultados. Parece que temos um sistema de comércio encorajador.

Gostaria de saber como posso usar a entrada com períodos de tempo não fixos para otimização.

Tentei alterar essas linhas, mas o OnInit "retornou o código 1 diferente de zero" sem nenhuma mensagem de erro.

//--- entradas para especialista
input string Expert_Title                     ="Regr2"; // Nome do documento
ulong        Expert_MagicNumber               =26034;   //
bool         Expert_EveryTick                 =false;   //
input ENUM_TIMEFRAMES   timeframe             =PERIOD_M5;      //TimeFrame
//--- entradas para o sinal principal
.
.
.
.
int OnInit()
  {
//--- Especialista em inicialização
   if(!ExtExpert.Init(Symbol(),timeframe,Expert_EveryTick,Expert_MagicNumber))
     {
      //--- falhou
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Criando sinal
.
.
.
.




Você pode me ajudar?

 
Guilherme Mendonca #:


Olá, Stephen,

Artigo muito bom. Fiz alguns testes e obtive bons resultados. Parece que temos um sistema de comércio encorajador.

Gostaria de saber como posso usar a entrada com períodos de tempo não fixos para otimização.

Tentei alterar essas linhas, mas o OnInit "retornou o código diferente de zero 1" sem nenhuma mensagem de erro.




Você pode me ajudar?

Olá, você recebeu ajuda do Stephen?
 
Guilherme Mendonca #:


Olá, Stephen,

Artigo muito bom. Fiz alguns testes e obtive bons resultados. Parece que temos um sistema de comércio encorajador.

Gostaria de saber como posso usar a entrada com períodos de tempo não fixos para otimização.

Tentei alterar essas linhas, mas o OnInit "retornou o código 1 diferente de zero" sem nenhuma mensagem de erro.




Você pode me ajudar?

Olá,

Acabei de ver isso. Desculpe-me. Isso pode ser um pouco complicado porque os Expert Advisors montados por assistentes tendem a usar e a se ater ao período de tempo do gráfico ao qual estão anexados. E isso é referenciado em vários lugares diferentes, não apenas na função OnInit() que parece que você está tentando modificar. Portanto, se o período de tempo de entrada não corresponder ao período de tempo usado e esperado em outros lugares (que é o período de tempo do gráfico), isso poderá gerar erros.

No entanto, em termos gerais, há um caso para a leitura de dados e buffers de preço em mais de um período de tempo, portanto, acho que, em um futuro próximo, procurarei fazer um artigo sobre como isso poderia ser feito. Obrigado por seu feedback.

 

Recebo um erro ao compilar um especialista que usa o SignalDUAL_RA. O erro se refere ao matrix.mqh

O CMatrixDouble é uma chamada de função para as classes incorporadas do MetaEditor, matrix.mqh, portanto, presumo que o erro não esteja aí.

Você pode me ajudar a resolver isso?

Alguém pode me ajudar?

Arquivos anexados:
 

ele não compilava para mim com o problema mencionado anteriormente (veja a captura de tela). Resolvi o problema da seguinte forma


_a[r].Set(c,Data(r+c,close)); deveria ser _a.Set(r,c,Data(r+c,close));


com o uso de _a[r] não estamos editando a r-ésima linha diretamente, mas passando-a como uma referência. Essa correção funcionou.