Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
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
Indicadores

A classe para desenhar o indicador Estocástico usando o buffer anel. - indicador para MetaTrader 5

Visualizações:
1872
Avaliação:
(21)
Publicado:
2014.01.14 15:12
Atualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\IncOnRingBuffer\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

A classe CStochasticOnRingBuffer foi projetada para cálculo do indicador técnico Oscilador Estocástico (Stochastic Oscillator) utilizando o algoritmo do buffer anel.

Declaração

class CStochasticOnRingBuffer

Título

#include <IncOnRingBuffer\CStochacticOnRingBuffer.mqh>

O arquivo da classe CStochasticOnRingBuffer.mqh deve ser colocado na pasta IncOnRingBuffer que precisa ser criada em MQL5\Include\. Dois arquivos com exemplos são utilizados pela classe a partir desta pasta que está anexado para a descrição. Arquivo com a classe do buffer anel e a classe Média Móvel também devem estar nesta pasta.

Métodos de classe

//--- Método de inicialização:
bool Init(                                 // Se com erro vai retornar "false" se bem sucedido - "true"
   int            period_k    = 5,         // período %K
   int            period_d    = 3,         // período %D
   int            period_s    = 3,         // período de desaceleração de %K
   ENUM_MA_METHOD method      = MODE_SMA,  // método %D
   int            size_buffer = 256,       // o tamanho do buffer anel, número de dados armazenados
   bool           as_series   = false      // "true", se for uma série temporal, "false" se houver uma indexação comum nos dados de entrada
   );   
//---  Método de cálculo baseado em série de tempo ou no buffer de indicador:          
int MainOnArray(                  // retorna o número de elementos processados  
   const int     rates_total,     // o tamanho das arrays 
   const int     prev_calculated, // elementos processados na chamada anterior 
   const double &high[]           // o valor da array da máxima do preço 
   const double &low[]            // o valor da array da mínima do preço
   const double &close[]          // array do fechamento do preço 
   );
//--- Método de cálculo com base em elementos de série separados da array            
double MainOnValue(              // retorna o valor Stochastic para o elemento configurado
   const int    rates_total,     // tamanho da array
   const int    prev_calculated, // elementos processados da array
   const int    begin,           // a partir de onde os dados significativos da array iniciam
   const double high,            // o valor da máxima do preço 
   const double low,             // o valor da mínima do preço 
   const double close,           // fechamento do preço 
   const int    index            // o índice do elemento
   );
//--- Os métodos de acesso aos dados:
int    BarsRequired();   // Retorna o número necessário de barras para desenhar o indicador
string Name();           // Retorna o nome do indicador
string NameSignal();     // Retorna o nome da linha de sinal do indicador
string Method();         // Retorna o método de suavização na forma da linha de texto
int    PeriodK()         // Retorna o período de %K
int    PeriodS()         // Retorna o período de desaceleração de %K
int    PeriodD()         // Retorna o período de %D
int    Size();           // Retorna o tamanho do buffer anel

Os dados calculados do indicador a partir do buffer anel são possíveis de serem obtidos a partir da array usual. Por exemplo:

//--- A classe com os métodos de cálculo do indicador Estocástico:
#include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh>
CStochasticOnRingBuffer st;

...

//+------------------------------------------------------------------+
//| função de iteração do indicador personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//--- Cálculo do indicador baseado na série temporal do preço:
   st.MainOnArray(rates_total,prev_calculated,high,low,close);

...

//--- Utilizar os dados do buffer anel "st",
//    por exemplo, lidar os dados nos buffers de indicadores:
   for(int i=start;i<rates_total && !IsStopped();i++)
     {
      MainBuffer[i]   = st[rates_total-1-i];        // a linha principal do indicador 
      SignalBuffer[i] = st.signal[rates_total-1-i]; // a linha de sinal do indicador
     }

...

//--- Valor de retorno de prev_calculated para a próxima chamada: 
   return(rates_total);
  }

Por favor, note que a indexação no buffer anel é a mesma que na série temporal.

Exemplos:

  1. O arquivo Test_Stochastic_OnArrayRB.mq5 calcula o indicador baseado na série temporal de preços. A aplicação do método MainOnArray() é demonstrado.
  2. O arquivo Test_Stochastic_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). No início, o Stochastic Oscilator é calculado e desenhado. Em seguida, com base no buffer de anel mais duas linhas são desenhadas noStochastic Oscilator. https://www.mql5.com/pt/docs/series/bufferdirection

O resultado do trabalho do Test_Stochastic_OnArrayRB.mq5 com o tamanho do buffer anel de 256 elementos

O resultado do trabalho do Test_Stochastic_OnValueRB.mq5 com o tamanho do buffer anel de 256 elementos

Ao escrever código foram utilizados os desenvolvimentos da MetaQuotes Software Corp, Integer  e  GODZILLA.

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

Ergodic CMI-Oscillator Blau_Ergodic_CMI Ergodic CMI-Oscillator Blau_Ergodic_CMI

Ergodic CMI-Oscillator por Willam Blau.

ytg_Japan_Candles ytg_Japan_Candles

Indicador de combinações de velas (Velas Japonesas).

Índice Candlestick Blau_CSI Índice Candlestick Blau_CSI

Indicador Índice Candlestick (CSI) por William Blau.

A classe para desenhar o indicador OsMA usando o buffer anel A classe para desenhar o indicador OsMA usando o buffer anel

A classe foi projetada para cálculo do indicador técnico Oscilador de Média Móvel (Moving Average of Oscillator, OsMA) utilizando o algoritmo do buffer anel.