Perguntas sobre MQL5 Wizard e biblioteca padrão de classes comerciais - página 6

 
uncleVic:
O mestrado e as aulas para ele avançaram até agora no "modo de manutenção". Para a criação das classes multivariantes mais simples já estão adaptadas (não estão prontas agora, mas mais tarde vou colocar aqui um exemplo).

Fiz uma classe com várias moedas baseada na gerada pelo feiticeiro. Mas eu tinha de corrigir a classe EXPERT.

Logo no início do método INIT() há uma verificação do símbolo de trabalho e, consequentemente, não há moedas múltiplas. O cheque foi retirado e tudo correu bem. Olhe para o tempo - a ideia pelo menos isso?

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

Arquivos anexados:
Master01_ML.mq5  14 kb
 

Olá Moderador!

Tenho uma pergunta a fazer:

MQL5 Wizard tem 20 módulos de sinais que realizam análises de divergência, sobre-compra, sobre-venda, etc. Poderia aconselhar se é possível pedir emprestado qualquer módulo de sinais do MQL5 Wizard para realizar a análise do mesmo, mas a partir de um indicador personalizado da sua própria concepção e o que deve ser feito para isso? Será necessário muito retrabalho (redesenho) ou será suficiente alterar algo no módulo (a sua cópia) a partir da entrega padrão?

Obrigado de antemão!

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

ForexMoneyMaker:

Sabe se é possível emprestar algum módulo de sinais do MQL5 Wizard para realizar a análise do mesmo, mas a partir de um indicador personalizado da sua própria concepção, e o que deve ser feito para isso? Será necessário muito retrabalho (modificação), ou será suficiente para alterar algo no módulo (a sua cópia) a partir da entrega padrão?

Boa pergunta! E aqui está a razão - é realmente possível criar um novo módulo com modificações mínimas dos módulos padrão, apenas inserindo outro indicador em vez de um. Não sei quando seremos capazes de escrever nós próprios um artigo sobre este tema, por isso sugiro que o façamos:

Quem tem conhecimento e deseja escrever um artigo "Como criar o seu próprio com base no módulo padrão de sinais" - escreva-me na mensagem pessoal.

 
Erm955:

Fiz uma classe com várias moedas baseada na gerada pelo feiticeiro. Mas eu tinha de corrigir a classe EXPERT.

Logo no início do método INIT() há uma verificação do símbolo de trabalho e, consequentemente, não há moedas múltiplas. O cheque foi retirado e tudo correu bem. Olhe para o tempo - a ideia pelo menos isso?

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

A ideia é a mesma, mas:

1. não é bom mudar a classe do CExpert. É bom herdar dele anulando o método Init(...).

2) Não é necessário modificar a classe CExpert. É preciso escrevê-lo:

...
   if(!ExtExpert_EG.Init(Symbol(),PERIOD_M10,Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert_EG.Deinit();
      return(-1);
     }
   ExtExpert_EG.Symbol("NZDUSD");
...

Por agora...

 
ForexMoneyMaker:

Olá Moderador!

Tenho uma pergunta a fazer:

MQL5 Wizard tem 20 módulos de sinais que realizam análises de divergência, sobre-compra, sobre-venda, etc. Pode aconselhar se é possível pedir emprestado algum módulo de sinais do MQL5 Wizard para realizar a análise do mesmo, mas a partir de um indicador personalizado da sua própria concepção e o que deve ser feito para isso? Será necessário muito retrabalho (redesenho) ou será suficiente alterar algo no módulo (a sua cópia) a partir da entrega padrão?

Obrigado de antemão!


Dê uma olhada no fórum inglês aqui
 
uncleVic:

A ideia é a mesma, mas:

1. não é bom modificar a classe CExpert. É bom herdar dele através do método Init(...).

2. não é necessário modificar a classe CExpert. É preciso escrevê-lo:

Até agora...

Deve redefinir o método Init() e excluir a verificação do símbolo de trabalho do mesmo. Mas a p. 2 não encaixa, uma vez que o método Init(), entre outras coisas, contém uma verificação do número de dígitos e se o símbolo da obra contém 5 dígitos, e o que está a ser testado contém 3 dígitos, haverá um erro com paragens/lucros. Eu herdei e ignorei. Tudo funciona agora.

Claro que não sou um grande especialista em OOP, mas acontece que, para configurar flexivelmente o programa para um número diferente de símbolos testados, é necessário preencher sem problemas, por exemplo, 21 peças de código (todos os símbolos), e depois por método de escolha de parâmetros de entrada para passar este ou aquele fragmento de código. Fiz o mesmo sem o OOP, mas todos os cabos e valores indicadores no init foram escritos em matrizes dinâmicas, e depois a OnTick já utilizava estas matrizes. Então, ainda não vi nenhuma vantagem do OOP?

P S. Não o escrevi com precisão. Talvez haja uma forma de ligar dinamicamente os dados (manipuladores e valores indicadores) durante a configuração para o número de caracteres a trabalhar simultaneamente. O problema é que tudo isto deve ser ligado ao Init e utilizado no OnTic/OnTimer.

Arquivos anexados:
Master02_ML.mq5  20 kb
 
Erm955:

É necessário redefinir o método Init(), excluindo a verificação do símbolo de trabalho. E p.2 não encaixa, porque o método Init(), entre outras coisas, verifica o número de dígitos, e se o símbolo de trabalho tem 5 dígitos, e o que está a ser testado tem 3 dígitos, então haverá um erro com stops/profits. Eu herdei e ignorei. Tudo funciona agora.

Claro que não sou um grande especialista em OOP, mas acontece que, para configurar flexivelmente o programa para um número diferente de símbolos testados, é necessário preencher sem problemas, por exemplo, 21 peças de código (todos os símbolos), e depois por método de escolha de parâmetros de entrada para passar esta ou aquela secção de código. Fiz o mesmo sem o OOP, mas todos os cabos e valores indicadores no init foram escritos em matrizes dinâmicas, e depois a OnTick já utilizava estas matrizes. Então, ainda não vi nenhuma vantagem do OOP?

P S. Não o escrevi com precisão. Talvez haja uma forma de ligar dinamicamente os dados (manipuladores e valores indicadores) durante a afinação para o número de caracteres que trabalham simultaneamente. O problema é que tudo isto deve ser ligado ao Init e utilizado no OnTic/OnTimer.

É assim. A propósito, obrigado pela dica no ponto 2. Vou acrescentar controlo e alterar o número de caracteres.
 
uncleVic:
É assim. A propósito, obrigado pela dica no ponto 2. Acrescentarei um controlo e mudança de dígitos.

Merda! Acabei de instalar tudo e quando actualizei para 485 construir, o erro apareceu novamente:

2011.08.08 17:13:04 O testador do núcleo 1 parou porque o erro crítico OnInit
2011.08.08 17:13:04 Core 1 2010.01.01.01 00:00:00 OnInit: indicadores inicializadores de erro
2011.08.08 17:13:04 Core 1 2010.01.01.01 00:00:00 CExpert::InitIndicadores: erro de inicialização de indicadores de objectos monetários
2011.08.08 17:13:04 Core 1 2010.01.01.01 00:00:00 CExpertBase::InitIndicadores: os parâmetros de definição não são verificados
2011.08.08 17:13:04 Core 1 2010.01.01.01 00:00:00 CExpertBase::SetOtherSeries: a mudança de séries temporais é proibida
2011.08.08 17:13:04 Core 1 2010.01.01.01 00:00:00 CExpertBase::SetPriceSeries: mudança de séries de tempos é proibida
2011.08.08 17:13:04 Core 1 EURUSD,H4: a história começa a partir de 2009.01.02 04:00
2011.08.08 17:13:04 Core 1 EURUSD,H4: cache histórico reservado para cerca de 4692 barras

Arquivos anexados:
Master02_ML.mq5  20 kb
 
Erm955:

Merda! Acabei de preparar tudo e quando actualizei para 485 o erro apareceu novamente:

Os agentes foram actualizados? A EA está recompilada na nova versão?
 
Rosh:
Os agentes foram actualizados? A EA foi recompilada na nova versão?

É isso mesmo, eu recompilei!