Discussão do artigo "Assistente MQL5: Como criar um módulo de sinais de comércio" - página 3

 
Na nova versão do MQL5 Wizard, o formato dos módulos de sinal foi alterado. Veja aqui as informações - https://www.mql5.com/ru/forum/3724/66962#comment_66962.
Обсуждение статьи "Мастер MQL5: Новая версия"
Обсуждение статьи "Мастер MQL5: Новая версия"
  • www.mql5.com
Изменения в архитектуре сигналов позволяют теперь создавать торговые роботы на основе комбинации различных рыночных моделей.
 
Rosh:
Na nova versão do MQL5 Wizard, o formato dos módulos de sinal foi alterado. Veja aqui as informações - https://www.mql5.com/ru/forum/3724/66962#comment_66962.

Fiz essas alterações, o assistente vê o novo módulo de sinal, mas o Expert Advisor resultante não negocia por algum motivo. Posso usar a depuração para acessar as funções CheckOpenShort/CheckOpenLong?
 
Analisei o código de vários sinais prontos da pasta Signal e não há implementação das funções CheckOpenShort/CheckOpenLong. Em vez delas, são usadas
//--- métodos para verificar se os modelos de mercado estão formados
   virtual int       LongCondition();
   virtual int       ShortCondition();
Eu entendi corretamente? Ao escrever meu próprio módulo, preciso implementá-las também? Quando aparecerá a descrição da classe CExpert?
 
beginner:

Analisei o código de vários sinais prontos da pasta Signal e não há implementação das funções CheckOpenShort/CheckOpenLong. Em vez disso, elas são usadas corretamente, pelo que entendi?
Sim, isso está correto.
 
Rosh:
Sim, é isso mesmo.

Para ser sincero, estou um pouco confuso. Há funções CheckOpenShort/CheckOpenLong na classe CExpertSignal. Você usa outras funções em seus sinais, e também não entendo onde elas são chamadas no CExpert. O problema é que eu peguei um sinal pronto no artigo sobre como escrever meu próprio módulo de sinais, fiz com que o assistente o visse (você provavelmente pode fazer alterações no artigo sobre o novo formato) e obtive um Expert Advisor com esse sinal, mas ele não negocia, nem uma única operação no testador durante um ano.

As funções são chamadas no construtor - isso está claro, mas por que não são usadas funções padrão?

 
Por favor, veja o que está errado. Não estou negociando no testador.
Arquivos anexados:
1.mq5  7 kb
 
beginner:

Por favor, veja o que está errado. Ele não está sendo negociado no testador.

Este módulo está negociando.

No seu caso, substitua os longs

if(  High(1) > High(2) && Low(2)>Low(3) && High(2)<High(3) && Close(3)>Open(3) ){
     return(100);
   }
//--- условие не выполнено
   return(0);  
  }

por

Open(1)< Open(2)

para as posições vendidas - encontre você mesmo

Arquivos anexados:
 
gdtt:

esse módulo comercializa

para o seu caso, substitua os longs

por

para as posições vendidas, você mesmo o encontrará.

Sim, é verdade, obrigado! Passei o dia, acho que fiz tudo como no artigo, qual é o meu erro?
 
beginner:
Sim, é verdade, obrigado! Passei o dia, acho que fiz tudo como no artigo, qual é o meu erro?

No novo assistente, em comparação com o anterior, há mudanças muito grandes,

virtual bool CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration);

virtual bool CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration);

Entendi da seguinte forma: deve haver um objeto da classe CExpertSignal entre os vários objetos usados no Expert Advisor com o atributo main, que pode usar essas funções. Outros objetos participam da abertura de posições por meio das funções

virtual int ShortCondition(); //verifica a condição de abertura de venda

virtual int LongCondition(); //verifica a condição de abertura de uma posição de compra

Para colocar os pontos nos is, precisamos de um artigo sobre como escrever seu próprio módulo de sinais no novo assistente, portanto, estamos esperando por ele.

 
Sim, o artigo está faltando, e a documentação do CExpertSignal provavelmente precisa ser atualizada.