Discussão sobre a implementação dos conselheiros. - página 5

 
Ivan_Invanov:
Aqui, aprendi a sintaxe do idioma. Estou aprendendo o construtor como um exemplo. Eu vejo uma chamada de classe. A lógica é cortada para mim a partir daqui. O que eu devo fazer? Busca de artigos? É melhor implementar com meios padrão ou escrever minhas próprias aulas?
Encontrei um artigo sobre o esclarecimento do construtor. Explicando, por exemplo, como funciona um bloco de sinal. E um par de frases secas como sim, este parâmetro é fixo. E não há nada escrito para mudá-lo. Tenho tais perguntas, se eu não precisar do parâmetro, posso simplesmente apagá-lo... está na inicialização, apagar lá também... Que outros parâmetros posso acrescentar e como? Se eu visse um exemplo de mudança, eu poderia descobri-lo. Acho que é apenas um problema de referência. Não há detalhes suficientes, não há exemplos suficientes, não há generalizações suficientes para uma percepção sistemática. Talvez eu seja muito franco, eu não sei. Será que sou só eu? Ou talvez os manuais de treinamento precisem ser melhorados? Estou disposto a pagar pessoalmente, por exemplo.
 
Ivan_Invanov:

MQL5 - Este é o recurso com a descrição mais detalhada da documentação. Há uma enorme quantidade de informações nos artigos, fórum e KodoBase. Você não o encontrará em nenhum outro lugar onde é explicado com tanto detalhe.

Tudo o que você precisa é a vontade de entender tudo isso.

 
Vladimir Karputov:

MQL5 - Este é o recurso com a descrição mais detalhada da documentação. Há uma enorme quantidade de informações nos artigos, fórum e KodoBase. Você não o encontrará em nenhum outro lugar onde é explicado com tanto detalhe.

Você só precisa da vontade de agarrar tudo isso.

Aqui está uma pergunta específica. Temos o CExpertSignal com a função AddFilter. Por exemplo, temos um spread lá. Como faço se não consigo ver o exemplo. O que devo fazer exatamente? Bem, vou tentar adivinhar isso agora.

CExpert ExtExpert;
ExtExpert.InitSignal(signal);
signal.AddFilter(filter0);
filer0.Spread(20);

Compilação sem erros. Eu o escrevi corretamente? Agora as negociações não serão concluídas se o spread exceder 20? E o que devo fazer em um caso desses? O que se pode ler?

 
Ivan_Invanov:

Aqui está uma pergunta específica. Há um CExpertSignal com AddFilter dentro dele, mas a ajuda não diz nada sobre as funções do AddFilter. Por exemplo, há uma propagação. Como escrevê-lo, se não consigo ver o exemplo. O que devo fazer exatamente? Bem, vou tentar adivinhar isso agora.

Compilação sem erros. Eu o escrevi corretamente? Agora as negociações não serão concluídas se o spread exceder 20? E o que devo fazer em um caso desses? O que eu devo ler?

Leia:MQL4/MQL5 Wizard

Atribuição:

  • Para criar um simples Expert Advisor usando o Wizard
  • no MetaEditor, abrir o código resultante
Depois disso, fazer perguntas.
Мастер MQL4/MQL5 - Справка по MetaEditor
Мастер MQL4/MQL5 - Справка по MetaEditor
  • www.metatrader5.com
Благодаря Мастеру MQL4/MQL5, трейдер может создать советника, не обладая знаниями в области программирования. Все что нужно сделать — это выбрать торговые сигналы, которые будет использовать советник, алгоритм мани-менеджмента и трейлинг-стопа. Код советника будет сгенерирован автоматически на основе выбранных параметров. Помимо этого, Мастер...
 
Ivan_Invanov:

Aqui está uma pergunta específica. Há um CExpertSignal com AddFilter dentro dele, mas a ajuda não diz nada sobre as funções do AddFilter. Por exemplo, há uma propagação. Como escrevê-lo, se não consigo ver o exemplo. O que devo fazer exatamente? Bem, vou tentar adivinhar isso agora.

Compilação sem erros. Eu o escrevi corretamente? Agora as negociações não serão concluídas se o spread exceder 20? E o que devo fazer em um caso desses? O que eu devo ler?

Parece-me que aqui é uma tentativa de começar imediatamente a escrever tópicos para adultos sem conhecimentos básicos. Não é assim que funciona. Primeiro eles aprendem o alfabeto, depois aprendem a escrever em letras maiúsculas e pouco a pouco vão chegando aos ensaios, e depois precisam de talento. Portanto, é o mesmo sem o conhecimento básico tentando lidar com o código gerado automaticamente. Não é a melhor maneira de bater com a cabeça contra a parede.

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMA.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title         ="1";         // Document name
ulong                    Expert_MagicNumber   =15825;       //
bool                     Expert_EveryTick     =false;       //
//--- inputs for main signal
input int                Signal_ThresholdOpen =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose=10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel    =0.0;         // Price level to execute a deal
input double             Signal_StopLevel     =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel     =50.0;        // Take Profit level (in points)
input int                Signal_Expiration    =4;           // Expiration of pending orders (in bars)
input int                Signal_MA_PeriodMA   =12;          // Moving Average(12,0,...) Period of averaging
input int                Signal_MA_Shift      =0;           // Moving Average(12,0,...) Time shift
input ENUM_MA_METHOD     Signal_MA_Method     =MODE_SMA;    // Moving Average(12,0,...) Method of averaging
input ENUM_APPLIED_PRICE Signal_MA_Applied    =PRICE_CLOSE; // Moving Average(12,0,...) Prices series
input double             Signal_MA_Weight     =1.0;         // Moving Average(12,0,...) Weight [0...1.0]
//--- inputs for money
input double             Money_FixRisk_Percent=10.0;        // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      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);
//--- Creating filter CSignalMA
   CSignalMA *filter0=new CSignalMA;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   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);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money=new CMoneyFixedRisk;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+
Olá. Você poderia me dizer que sinal de entrada no mercado esta EA tem e onde ela está localizada no código?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
O sinal de entrada no mercado está no 'filtro', certo?
 
Por que declarações de classe diferentes? Por que às vezes a memória empilhada e às vezes não? Com e sem asterisco?
 
Eu preciso de um filtro de propagação e gostaria de entender o que está sendo feito aqui. Será que entendi corretamente que a estratégia aqui é que se o preço é mais alto por qualquer valor da média, então uma troca é feita?
 
Ivan_Invanov:
Olá. Você pode me dizer qual é o sinal de entrada no mercado deste EA e onde ele está localizado no código?

Você tem que usar um depurador para lidar com tais questões.

Quando um tick vem, a função OnTick() é chamada. É onde todo o processamento ocorre, os sinais são identificados se necessário, e ações comerciais são realizadas.

Como você pode ver, nesta função, o ExtExpert. Tudo acontece dentro desta função, não há mais nada no código.

Assim, você coloca um ponto de parada nele e administra o Expert Advisor no depurador. Assim que o primeiro tique chega, o ponto de parada aciona e você pára o código nesta posição. E então você passa pelo código passo a passo, descobrindo por que e quais ações são realizadas.