Discussão do artigo "MQL5 Wizard: Nova Versão" - página 4

 

1. Você pode me dizer como inverter um sinal?

Exemplo: para confirmar um sinal de compra de GBP/USD, precisamos de um sinal de venda MACD EUR/GBP.

Ou é mais fácil pesquisar no código da biblioteca e alterar "mais" para "menos" e salvá-lo como uma biblioteca com um nome diferente?

P.S. Seria bom poder escolher, ao criar um Expert Advisor, qual sinal usar: sinal direto ou reverso

2. Como posso retirar os pesos dos padrões que são costurados na biblioteca para otimizar esses pesos?

 
52_rus:

1. Você pode me dizer como inverter o sinal?

Exemplo: para confirmar um sinal de compra de GBP/USD, precisamos de um sinal de venda MACD EUR/GBP.

Ou é mais fácil pesquisar no código da biblioteca e alterar "mais" para "menos" e salvá-lo como uma biblioteca com um nome diferente?

P.S. Seria bom poder escolher, ao criar um Expert Advisor, qual sinal usar: sinal direto ou reverso

2. Como podemos retirar os pesos dos padrões, que são costurados na biblioteca, para otimizar esses pesos?

1. Os mecanismos para inverter (e ignorar) sinais estão incorporados à classe base CExpertSignal, mas, infelizmente, ainda não estão disponíveis no Assistente.

2 O mesmo pode ser dito sobre os pesos dos padrões.

Anexe o código-fonte do Expert Advisor, obtido após o "Wizard" e de forma resumida. Tentarei explicar como fazer isso "à mão".

PS. O "Wizard" será desenvolvido e essas configurações estarão disponíveis posteriormente.

 

1. Como posso adicionar minha biblioteca (por exemplo: alterar o MACD atual e salvá-lo sem excluir a biblioteca principal) à lista de sinais mestre?

2. Pergunta sobre como trabalhar com bibliotecas:

Vamos considerar um Expert Advisor baseado em MAKD, criado com a ajuda do assistente: nós o criamos e compilamos, testamos e obtivemos alguns resultados

O sinal MAKD da biblioteca era o seguinte:

//--- definição dos "pesos" padrão dos modelos de mercado
   m_pattern_0    =10;       // modelo 0 "o oscilador tem a direção necessária"
   m_pattern_1    =30;       // modelo 1 "reverso do oscilador para a direção necessária"
   m_pattern_2    =80;       // modelo 2 "cruzamento da linha principal e da linha de sinal"
   m_pattern_3    =50;       // modelo 3 "cruzamento da linha principal no nível zero"
   m_pattern_4    =60;       // modelo 4 "divergência do oscilador e do preço"
   m_pattern_5    =100;      // modelo 5 "divergência dupla do oscilador e do preço" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- definição dos "pesos" padrão dos modelos de mercado
   m_pattern_0    =0;       // modelo 0 "o oscilador tem a direção necessária"
   m_pattern_1    =0;       // modelo 1 "reverso do oscilador para a direção necessária"
   m_pattern_2    =80;       // modelo 2 "cruzamento da linha principal e da linha de sinal"
   m_pattern_3    =0;       // modelo 3 "cruzamento da linha principal no nível zero"
   m_pattern_4    =0;       // modelo 4 "divergência do oscilador e do preço"
   m_pattern_5    =0;      // modelo 5 "divergência dupla do oscilador e do preço" 

Compilarei somente a biblioteca (não compilarei o código do EA em si). Vou testá-la e obterei exatamente o mesmo resultado que no primeiro teste.

Se eu compilar o código do EA também, obterei um resultado diferente, neste exemplo, apenas para o padrão 2.

Tenho uma pergunta: Por que tenho que recompilar o código do EA depois de alterar alguns parâmetros na biblioteca? (Ele não foi alterado).

 
52_rus:

1. Como posso adicionar minha biblioteca (por exemplo: alterar o MACD atual e salvá-lo sem excluir o principal) à lista de sinais mestre?


Você se refere ao arquivo include que contém o código do módulo de sinais? Altere o módulo atual conforme sua necessidade e salve-o no mesmo diretório, mas com um nome diferente. Mais detalhes sobre isso são fornecidos no artigo:

Criando um robô de negociação no novo Assistente MQL5

O código do EA é construído usando o Assistente MQL5 do MetaEditor.

As classes básicas de estratégias de negociação estão localizadas na pasta terminal_data_folder\MQL5\Include\Expert\. Os algoritmos prontos das classes de sinais de negociação, classes de manutenção de posições abertas e classes de gerenciamento de capital e risco estão localizados nos subdiretórios Signal, Trailing e Money. O Assistente MQL5 analisa os arquivos nesses diretórios e os utiliza para gerar o código do EA.

Isso significa que os módulos de sinal estão (e devem estar, para serem vistos pelo Assistente MQL5) no diretório terminal_data_folder\MQL5\Include\Expert\Signal.
 
Tudo funcionou, obrigado, acabei de corrigir o código, mas não alterei o nome da classe....
 

Por algum motivo, as novas versões do terminal não contêm mais versões personalizadas dos módulos do gerador de sinais. Há 30 módulos na pasta /MQL5/Include/Expert/Signal/, mas o Wizard vê apenas 20 módulos fornecidos como padrão, de acordo com a Ajuda.

É impressão minha ou o editor MT5 não está mais procurando novos módulos na pasta com os módulos de sinal? Nem mesmo os antigos módulos de sinais baseados em padrões de candlestick desenvolvidos pela Metaquotes estão conectados.

 
Livingston:

Por algum motivo, as novas versões do terminal não contêm mais versões personalizadas dos módulos do gerador de sinais. Há 30 módulos na pasta /MQL5/Include/Expert/Signal/, mas o Wizard vê apenas 20 módulos fornecidos como padrão, de acordo com a Ajuda.

É impressão minha ou o editor do MT5 não está mais procurando novos módulos na pasta com os módulos de sinal? Mesmo os antigos módulos de sinal baseados em padrões de candlestick desenvolvidos pela Metaquotes não estão conectados.

Um novo módulo de sinal deve ter uma descrição de módulo diferente e seu tipo deve ser SignalAdvanced


 
Rosh:

O novo módulo de sinal deve ter uma descrição de módulo diferente e seu tipo deve ser SignalAdvanced


Muito obrigado.
 
Rosh:

Um novo módulo de sinal deve ter uma descrição de módulo diferente e seu tipo deve ser SignalAdvanced


Se você substituir Signal por SignalAdvanced em módulos de sinal escritos anteriormente, eles ainda não funcionarão. Agora as funções CheckOpenShort/CheckOpenLong não são usadas e foram substituídas por ShortCondition/LongCondition?

Não há parâmetros nessas funções, portanto, não está claro como definir os takeouts e stops.

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- analisar a relação posicional do preço de fechamento e o indicador na primeira barra analisada
   if(DiffCloseMA(idx)<0.0)
     {
      //--- o preço de fechamento está abaixo do indicador
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //--- o preço de abertura está acima do indicador (ou seja, houve uma interseção), mas o indicador está direcionado para cima
         result=m_pattern_1;
         //--- considere que esse é um "piercing" não formado e sugira entrar no mercado pelo preço atual
         m_base_price=0.0;
        }
     }
   else
     {
      //--- o preço de fechamento está acima do indicador (o indicador não tem objeções à compra)
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      //--- se o modelo 2 for usado
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //--- o indicador é direcionado para cima
         if(DiffOpenMA(idx)<0.0)
           {
            //--- o preço de abertura está abaixo do indicador (ou seja, houve uma interseção)
            result=m_pattern_2;
            //--- sugiro entrar no mercado no "roll back"
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //--- o preço de abertura está acima do indicador
            if(DiffLowMA(idx)<0.0)
              {
               //--- o preço baixo está abaixo do indicador
               result=m_pattern_2;
               //--- considero que esse é um "piercing" formado e sugiro entrar no mercado pelo preço atual
               m_base_price=0.0;
              }
           }
        }
     }
//--- retornar o resultado
   return(result);
  }

Agora IS_PATTERN_USAGE() é usada em todos os lugares no módulo de sinais, não está claro o motivo.

Em geral, estamos aguardando informações sobre como criar o módulo de sinais por conta própria.

e o antigo modo de assistente Type=Signal estará disponível? ou todos os módulos serão escritos de uma nova maneira?

 

A cada modelo de mercado é atribuída uma significância, medida de 1 a 100. Quanto maior o valor, mais forte é o modelo.

MA com um peso de 0,4 e Estocástico com um peso de 0,8 - isso é definido em variáveis externas, e de onde vem o MA - sua importância é 100. A importância estocástica desse modelo é igual a 80. Onde está definida a importância de cada modelo ou como ela é determinada?