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
A classe para desenhar o indicador Fractals usando o buffer anel - indicador para MetaTrader 5
- Visualizações:
- 1952
- Avaliação:
- Publicado:
- 2014.01.14 15:02
- 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 foi projetada para cálculo do indicador técnico Fractais (Fractals) utilizando o algoritmo do buffer anel.
Declaração
class CFractalsOnRingBuffer
Título
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>
O arquivo da classe CFractalsOnRingBuffer.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. O arquivo da classe de buffer de ring também deve estar nesta pasta.
Métodos de classe
//--- initialization method: bool Init( // se com erro vai retornar "false", se bem sucedido - "true" int bars_right = 2, // o número de barras para as extremidades a direita int bars_left = 2, // o número de barras para as extremidades a esquerda int size_buffer = 256, // o tamanho do buffer anel bool as_series = false // "true", se for uma série temporal, do contrário - "false" );
//--- 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& high[], // o valor da array da máxima do preço const double& low[], // o valor da array da mínima do preço );
//--- Método de cálculo do fractal baseado em elementos de série separados da array high[] double MainOnHigh( // retorna o valor do fractal superior para o elemento index-bars_right (barra) 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 high, // a máxima da barra atual const int index // o índice do elemento atual (barra) );
//--- Método de cálculo do fractal baseado em elementos de série separados da array[] double MainOnLow( // retorna o valor do fractal inferior para o elemento index-bars_right (barra) 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 low, // a mínima da barra atual const int index // o índice do elemento atual (barra) );
//--- 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 NameUpper() // Retorna o nome dos fractals superior string NameLower() // Retorna o nome dos fractals inferior int BarsRight() // Retorna o número das barras a direita, a partir das extremidades int BarsLeft() // Retorna o número das barras a esquerda, a partir das extremidades 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 Fractals: #include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh> CFractalsOnRingBuffer fractals; ... //+------------------------------------------------------------------+ //| 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: fractals.MainOnArray(rates_total,prev_calculated,high,low); ... //--- Utilizar os dados do buffers anel "fractals", // por exemplo, copiar os dados no buffer do indicador: for(int i=start;i<rates_total-BarsRight && !IsStopped();i++) { UpperBuffer[i] = fractals.upper[rates_total-1-i]; // fractals superior LowerBuffer[i] = fractals.lower[rates_total-1-i]; // fractals inferior } ... //--- 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_Fractals_OnArrayRB.mq5 com base na série temporal de preço. A aplicação do método MainOnArray() é demonstrado.
- O arquivo Test_Fractals_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). Primeiro o indicador Fractals é calculado e desenhado. Em seguida, com base na buffer anel deste indicador, mais um Fractals é desenhado.
O resultado do trabalho do Test_Fractals_OnArrayRB.mq5 com o tamanho do buffer anel de 256 elementos
O resultado do trabalho do Test_Fractals_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/1422
Este Expert Advisor utiliza o indicador Índice Média Móvel - Index Moving Average (IMA).
Exp_CandleStop_TrailingO Expert Advisor modifica os níveis de Stop Loss das posições em aberto ao longo dos limites do canal construído utilizando o indicador CandleStop.
Este indicador se baseia em uma estratégia de negociação utilizando o CCI.
A classe para desenhar o indicador TEMA usando o buffer anelA classe foi projetada para cálculo do indicador técnico Média Móvel Exponencial Tripla (Triple Exponential Moving Average, TEMA) utilizando o algoritmo do buffer anel.