Especialistas: Assistente MQL5 - Sinais de Negociação Baseados no cruzamento de Preços com o Indicador Moving Averag - página 2

 

Olá Carl Schreiber, muito obrigado por sua resposta rápida. Minha pergunta está relacionada a este artigo aqui https://www.mql5.com/pt/code/248. Ele descreve como criar um Expert Advisor com esse sinal usando o assistente. Não consigo chegar a esse ponto. Primeiro, verifiquei se o indicador está no diretório correto. Se, em seguida, eu clicar em File New -> Generate Expert Advisor -> Assign Name -> Parameters of Signal Module no Meta Editor, os sinais baseados no cruzamento de preços com MA devem aparecer lá, de acordo com o artigo descrito. Infelizmente, a seleção não aparece. Tenho a versão 5.0 Build 3211

MQL5 Wizard - Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator
MQL5 Wizard - Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator
  • www.mql5.com
Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator "Signals based on price crossover with MA" (Klasse CSignalMA in der Standardbibliothek).
Arquivos anexados:
MAXWizard.jpg  65 kb
 

Infelizmente, sua compilação é muito pequena para que eu possa reconhecer qualquer coisa.

O indicador iMA é integrado, não precisa estar em um diretório específico.

Não tenho problemas para criar um EA (gerar com o Expert Advisor) de acordo com este artigo com a média móvel: https://www.metatrader5.com/de/metaeditor/help/mql5_wizard/wizard_ea_generate

Depois de adicionar a média móvel, continue ...

Em seguida, esse EA é criado:

//+------------------------------------------------------------------+
//|test_Wizard.mq5
//|Calli |
//| https://www.mql5.com/pt/users/gooly |
//+------------------------------------------------------------------+
#property copyright "Calli"
#property link      "https://www.mql5.com/pt/users/gooly"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Incluir|
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- sinais disponíveis
#include <Expert\Signal\SignalMA.mqh>
//--- disponível no final
#include <Expert\Trailing\TrailingNone.mqh>
//--- gerenciamento de dinheiro disponível
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Entradas|
//+------------------------------------------------------------------+
//--- entradas para especialista
input string             Expert_Title         ="test_Wizard"; // Nome do documento
ulong                    Expert_MagicNumber   =18344;         //
bool                     Expert_EveryTick     =false;         //
//--- entradas para o sinal principal
input int                Signal_ThresholdOpen =10;            // Valor do limiar do sinal a ser aberto [0...100]
input int                Signal_ThresholdClose=10;            // Valor do limite do sinal para fechar [0...100]
input double             Signal_PriceLevel    =0.0;           // Nível de preço para executar uma transação
input double             Signal_StopLevel     =50.0;          // Nível de stop loss (em pontos)
input double             Signal_TakeLevel     =50.0;          // Nível de Take Profit (em pontos)
input int                Signal_Expiration    =4;             // Expiração de ordens pendentes (em barras)
input int                Signal_MA_PeriodMA   =12;            // Média móvel(12,0,...) Período de cálculo da média
input int                Signal_MA_Shift      =0;             // Média móvel(12,0,...) Mudança de horário
input ENUM_MA_METHOD     Signal_MA_Method     =MODE_SMA;      // Média móvel(12,0,...) Método de cálculo da média
input ENUM_APPLIED_PRICE Signal_MA_Applied    =PRICE_CLOSE;   // Média móvel(12,0,...) Série de preços
input double             Signal_MA_Weight     =1.0;           // Média móvel(12,0,...) Peso [0...1.0]
//--- insumos para dinheiro
input double             Money_FixLot_Percent =10.0;          // Porcentagem
input double             Money_FixLot_Lots    =0.1;           // Volume fixo
//+------------------------------------------------------------------+
//| Objeto especialista global|
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Função de inicialização do especialista
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Inicialização do especialista
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- falhou
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Criando sinal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- falhou
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Criando o filtro CSignalMA
   CSignalMA *filter0=new CSignalMA;
   if(filter0==NULL)
     {
      //--- falhou
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Definir parâmetros de filtro
   filter0.PeriodMA(Signal_MA_PeriodMA);
   filter0.Shift(Signal_MA_Shift);
   filter0.Method(Signal_MA_Method);
   filter0.Applied(Signal_MA_Applied);
   filter0.Weight(Signal_MA_Weight);
//--- Criação do objeto final
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- falhou
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Adicione o final ao expert (será excluído automaticamente))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- falhou
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Definir parâmetros finais
//--- Criação do objeto dinheiro
   CMoneyFixedLot *money=new CMoneyFixedLot;
   if(money==NULL)
     {
      //--- falhou
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Adicionar dinheiro ao especialista (será excluído automaticamente))
   if(!ExtExpert.InitMoney(money))
     {
      //--- falhou
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Definir parâmetros monetários
   money.Percent(Money_FixLot_Percent);
   money.Lots(Money_FixLot_Lots);
//--- Verificar os parâmetros de todos os objetos de negociação
   if(!ExtExpert.ValidationSettings())
     {
      //--- falhou
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Ajuste de todos os indicadores necessários
   if(!ExtExpert.InitIndicators())
     {
      //--- falhou
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Função de desinicialização do especialista
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| Função do manipulador de eventos "Tick|
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| Função do manipulador de eventos "Trade|
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| Função do manipulador de eventos "Timer|
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

O código compila sem problemas, mas não sei se ele também gera lucros, nem sei se o código poderia ser otimizado.

Erstellen eines fertigen Expert Advisors - MQL4/MQL5 Assistent - MetaEditor Hilfe
Erstellen eines fertigen Expert Advisors - MQL4/MQL5 Assistent - MetaEditor Hilfe
  • www.metatrader5.com
Der MQL4/MQL5 Assistent erlaubt das Erstellen eines voll funktionsfähigen EAs auf Basis der Standardbibliothek aus der Handelsplattform...
[Excluído]  
código realmente bom