Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1921
- Avaliação:
- Publicado:
- 2014.01.14 15:11
- Atualizado:
- 2016.11.22 07:33
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
A classe CRSIOnRingBuffer foi projetada para cálculo do indicador técnico Índice de Força Relativa (Relative Strength Index, RSI) utilizando o algoritmo do buffer anel.
Declaração
class CRSIOnRingBuffer : public CArrayRing
Título
#include <IncOnRingBuffer\CRSIOnRingBuffer.mqh>
O arquivo da classe CRSIOnRingBuffer.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 = 14, // Período RSI ENUM_MA_METHOD method = MODE_SMMA, // método suavizado int size_buffer = 256, // tamanho do buffer anel, o 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 do indicador: int MainOnArray( // retorna o número de elementos processados const int rates_total, // o tamanho da array[] const int prev_calculated, // elementos processados na chamada anterior const double &array[] // a array dos valores de entrada );
//--- Método de cálculo com base em elementos de série separados da array double MainOnValue( // retorna o valor RSI para o elemento configurado const int rates_total, // o 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 value, // o valor do elemento da array 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 int Period(); // Retorna o período string Method(); // Retorna o método na forma de linha de texto 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 RSI: #include <IncOnRingBuffer\CRSIOnRingBuffer.mqh> CRSIOnRingBuffer rsi; ... //+------------------------------------------------------------------+ //| função de iteração do indicador personalizado | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- Cálculo do indicador baseado em preços de séries temporais : rsi.MainOnArray(rates_total,prev_calculated,price); ... //--- Dados de uso do buffer anel "rsi", // por exemplo, copiar dados nos buffers do indicador: for(int i=start;i<rates_total;i++) { RSI_Buffer[i] = RSI[rates_total-1-i]; // linha 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:
- O indicador calcula o arquivo Test_RSI_OnArrayRB.mq5 com base na série temporal de preço. A aplicação do método MainOnArray() é demonstrado.
- O arquivo Test_RSI_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). No início, o indicador RSI é calculado e desenhado. Em seguida, com base na buffer anel deste indicador, mais um RSI é desenhado.
O resultado do trabalho do Test_RSI_OnArrayRB.mq5 com o tamanho do buffer de anel de 256 elementos
O resultado do trabalho do Test_RSI_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/1385

Sistema de negociação baseado na variação da direção de tendência mostrado pelo indicador EF_distance e na força da tendência determinado pelo indicador Flat-Trend.

Ergodic DTI-Oscillator (Índice de Tendência Direcional) por William Blau.

Média Móvel que representa em si uma combinação linear da série EMA suavizada pela Média Móvel Exponencial (EMA).

Indicador Índice de Tendência Direcional(DTI) por William Blau.