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

A classe simplificada do buffer anel CArrayRing256 - biblioteca para MetaTrader 5

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

A classe CArrayRing256 é a versão simplificada do buffer anel CArrayRing, é mais rápida e permite organizar a mini-série temporal, minibuffers do indicador, buffers de tamanhos curtos para armazenar dados intermediários de fluxo dentro do Expert Advisor ou indicador.

A simplificação com base na propriedade uchar-variable que é usada como índice da array. Por exemplo, no código

double array[UCHAR_MAX+1];  // os dados do buffer anel
uchar  index=0;             // índice dos elementos de buffer

while(!IsStopped())
  {
   array[++index];          // vá para o próximo elemento de buffer
   ...
  }

o índice da array sempre assume o valor de 0 a 255 e nunca irá além da dimensão da array. Permite remover toda a verificação de métodos associados com a eventual saída de índice, além da saída da array, pela simplificação dos métodos por si e aumento a taxa de desempenho. O tamanho do buffer será sempre constante e terá o tamanho de 256 elementos. Para muitas tarefas é uma alternativa aceitável para a classe universal CArrayRing em troca de um aumento da taxa de trabalho.

Declaração

сlass CArrayRing256

Título

#include <IncOnRingBuffer\CArrayRing256.mqh>

O arquivo de classe CArrayRing256.mqh deve ser colocado na pasta IncOnRingBuffer que precisam ser criada em MQL5\Include\.

Métodos de classe

//--- Método de inicialização do buffer:
void Init(
   double volue=EMPTY_VALUE // valor para a localização de buffers vazios
   );
//--- 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 configurado:
bool Update(                // Se com erro vai retornar "false", se bem sucedida - "true"
   const double element,    // novo valor do elemento
   const int index=0        // índice de elementos
   );  
//--- O método retorna o valor do elemento com o índice configurado
double At(                  // retorna o valor do elemento
   const uchar index        // índice de elementos 
   ) 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
   );  
//--- método do retorno do tamanho do buffer anel:
int Size();

Nota:

  • o tamanho do buffer anel é sempre constante e igual a 256 elementos
  • na realização obtida do buffer anel, a indexação é feita em série temporal, isto é, o oposto ao usual

Exemplos:

A utilização desta classe é semelhante a CArrayRing. Mas existem algumas diferenças:

  • O método init() é usado para inicialização do buffer pelo valor definido;
  • O método de Resize() está ausente com o tamanho da memória intermédia sendo sempre constante.

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

Composite High/Low Momentum Blau_HLM Composite High/Low Momentum Blau_HLM

Composite High-Low Momentum Indicator por William Blau.

Exemplo do trabalho com o arquivo CSV como uma tabela. Exemplo do trabalho com o arquivo CSV como uma tabela.

O arquivo CSV foi desenvolvido para escrever notícias econômicas, mas houve um problema que o Terminal não distingue as linhas, exatamente o número necessário quando se trabalha com o arquivo CSV. É por isso que eu decidi compartilhar minha solução deste problema.

Breakout Bars Trend v2 Breakout Bars Trend v2

A segunda versão (editado e adicionada) do indicador alternativo para a definição de tendências com base nas barras de ruptura e da distância das extremidades. Os níveis de ruptura e tamanho das tendências anteriores são adicionados.

Ergodic CSI-Oscillator Blau_Ergodic_CSI Ergodic CSI-Oscillator Blau_Ergodic_CSI

Ergodic CSI-Oscillator por William Blau.