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:
- 1428
- Avaliação:
- Publicado:
- 2014.01.14 15:15
- Atualizado:
- 2016.11.22 07:33
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
O buffer anel é uma forma de organização de armazenamento de dados. Geralmente representa uma array finita de comprimento para a entrada, onde os elementos mais antigos são substituídos por dados mais recentes. Assim, sempre existirá o acesso a um certo número dos últimos dados. Principalmente utilizado para o assíncrona leitura/escrita de fluxo de dados. Para mais detalhes clique aqui.
Ao escrever os Expert Advisors e indicadores, muitas vezes não precisa armazenar os valores calculados para todas os barras. Será o suficiente para manter em mãos os últimos dados, por exemplo, para 100 barras. O buffer anel é adequado para isso. As vantagens óbvias:
- aumento dos cálculos
- economia de memória
- fácil de usar, não há necessidade de se preocupar com a saída além da array.
Declaração
сlass CArrayRing
Título
#include <IncOnRingBuffer\CArrayRing.mqh>
O arquivo da classe CArrayRing.mqh precisa ser colocados na pasta IncOnRingBuffer que é necessária criar no MQL5\Include\. Abaixo exemplos para utilização desta classe.
Métodos de classe
//--- o buffer do método de inicialização : bool Init( // Se com erro vai retornar false, se bem sucedida - true int size, // tamanho do buffer anel double volue=EMPTY_VALUE // significando localização vazia dos buffers );
//--- o método de adição de novo elemento no buffer: void Add( const double element // valor do elemento adicionado );
//--- o método substitui o valor do elemento com o índice fornecido: bool Update( // Se com erro vai retornar false, se bem sucedida - true const double element, // novo valor do elemento const int index=0 // índice do elemento );
//--- o método retorna o valor do elemento com o índice fornecido: double At( // retorna o valor do elemento const int index // índice do elemento ) const;
//--- o método retorna o valor da última escrita no elemento buffer: double Last() const;
//--- O método substitui o último valor do elemento no buffer: void Last( const double element // novo valor do elemento element );
//--- a método retorna o tamanho do buffer anel: int Size();
//--- método altera o tamanho do buffer anel: bool Resize( const int size // novo tamanho );
Nota:
- quando o tamanho do buffer diminuir, então não será o último elemento e sim os elementos mais antigos que estão faltando
- na realização obtida do buffer anel, a indexação é aceita como nas séries de tempo, ou seja, o oposto ao usual
Exemplos:
Há três exemplos de como usar o buffer anel para o momento da publicação:
- Classe para desenhar Média Móvel
- Classe para desenhar Average True Range
- Classe para desenhar a Average Directional Movement Index
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/1340

A classe foi projetada para cálculo de médias móveis (Moving Average) usando o algoritmo do buffer anel.

Oscilador Ergodic por William Blau.

Indicador Índice de Força verdadeira (TSI) por William Blau.

O sistema de negociação Exp_ColorLeManTrend se baseia nas variações da direção da tendência exibidos pelo indicador ColorLeManTrend.