Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

SignalMAAboveBelow 3 - biblioteca para MetaTrader 5

Visualizações:
1064
Avaliação:
(14)
Publicado:
2018.06.08 13:44
\MQL5\Signal\ \MQL5\Experts\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Desenvolvimento da segunda versão da biblioteca SignalMAAboveBelow 2.


Novo na versão 3

  • Parâmetro CurrentBarSize - tamanho da barra atual (calcula-se como Close-Open);
  • Parâmetro PreviousBarSize - tamanho da barra anterior (calcula-se como Close-Open).

Nesse caso, se o preço na barra atual estiver SOBRE o indicador, as duas barras devem ser altistas. Se o preço na barra atual estiver SOB o indicador, as duas barras devem ser baixistas. Assim, ambos os parâmetros (CurrentBarSize e PreviousBarSize) atuam como filtros de proteção ao abrir uma posição.

No módulo de sinais, conectamos timeseries no construtor:

//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSignalMA::CSignalMA(void) : m_reverse(false),
                             m_ma_period(12),
                             m_ma_shift(0),
                             m_ma_method(MODE_SMA),
                             m_ma_applied(PRICE_CLOSE),
                             m_pattern_0(80),
                             m_size_current_bar(40),
                             m_size_previous_bar(20)
  {
//--- initialization of protected data
   m_used_series=USE_SERIES_OPEN+USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE;
  }

Após a conexão das TimeSeries, você pode usar os objetos m_close e m_open das classes CiClose e CiOpen, respectivamente (esses objetos são declarados em um nível mais alto - no nível do pai ExpertBase.mqh).

Trabalhamos com esses objeto em CSignalMA::LongCondition

//+------------------------------------------------------------------+
//| "Voting" that price will grow.                                   |
//+------------------------------------------------------------------+
int CSignalMA::LongCondition(void)
  {
   if(m_type_trade==1) // m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL
      return(0);
   int result=0;
   int idx   =StartIndex();
//---
   if(m_close.GetData(idx+1)-m_open.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit())
      return(0);
   if(m_close.GetData(idx)-m_open.GetData(idx)<m_current_bar_size*PriceLevelUnit())
      return(0);
//--- analyze positional relationship of the close price and the indicator at the first analyzed bar

e em CSignalMA::ShortCondition

//+------------------------------------------------------------------+
//| "Voting" that price will fall.                                   |
//+------------------------------------------------------------------+
int CSignalMA::ShortCondition(void)
  {
//--- m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL
   if(m_type_trade==0)
      return(0);
   int result=0;
   int idx=StartIndex();
//---
   if(m_open.GetData(idx+1)-m_close.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit())
      return(0);
   if(m_open.GetData(idx)-m_close.GetData(idx)<m_current_bar_size*PriceLevelUnit())
      return(0);
//--- analyze positional relationship of the close price and the indicator at the first analyzed bar

Exemplo de abertura de posições com o parâmetro Reverse == false:

SignalMAAboveBelow 3 Open Buy

Fig. 1. SignalMAAboveBelow 3 - abertura de posição BUY

SignalMAAboveBelow 3 Open Sell

Fig. 2. SignalMAAboveBelow 3 - abertura de posição SELL


Parâmetros do módulo de sinal

  • Reverse - sinalizador do reverso dos sinais;
  • PeriodMA - período do indicador de média Moving Average;
  • Shift - deslocamento horizontal do indicador Moving Average;
  • Method - tipo de suavização do indicador Moving Average;
  • Applied - tipo de preço com base no qual é calculado o indicador Moving Average;
  • TypeOfTrade - tipo de sinais de negociação: 0 → BUY, 1 → SELL, 2 → BUY and SELL;
  • CurrentBarSize - tamanho da barra atual (calcula-se como Close-Open);
  • PreviousBarSize - tamanho da barra anterior (calcua-se como Close-Open).

Parâmetros do EA de teste TestSignalMAAboveBelow3.mq5 são definidos por padrão, sem nenhuma otimização.

Aliás, se no EA TestSignalMAAboveBelow3.mq5 gerado no Assistente MQL5

//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title                 ="TestSignalMAAboveBelow3"; // Document name
ulong                    Expert_MagicNumber           =20884;                     // 
bool                     Expert_EveryTick             =false;                     // 
//--- inputs for main signal

for permitido o trabalho em CADA TICK (mudar este "false" - definido por padrão - para "true"), você pode obter resultados mais interessantes, uma vez que o EA começa a processar a condição quando a barra atual (que será a barra com índice #0) vira igual ou maior do que o parâmetro CurrentBarSize definido.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/20164

VSI VSI

VSI (Volatility Switch Indicator) - indicador de mudança de volatilidade.

IDayIIndex IDayIIndex

Indicador-oscilador (Intraday Intensity Index) - índice de intensidade intradiária.

Alexav SpeedUp M1 Alexav SpeedUp M1

Abertura simultânea de duas posições opostas. Trailing de posições.

Volume Average percent Volume Average percent

Esta é uma versão normalizada que mostra o volume em porcentagem em comparação com o volume médio do período selecionado.