por
Joabe Barbosa
26 de dezembro de 2024
4 min
Os buffers no MetaTrader 5 são uma parte essencial do desenvolvimento de indicadores técnicos e desempenham um papel fundamental para armazenar e exibir os dados calculados em um gráfico. Este guia detalhado explica como os buffers funcionam e como utilizá-los corretamente.
Buffers são arrays especiais usados para armazenar valores calculados de indicadores técnicos. Eles permitem que o MetaTrader 5 desenhe linhas, histogramas, ou outros elementos visuais diretamente no gráfico.
Cada buffer corresponde a uma série de dados, como:
LEIA MAIS: Como Programar Robôs no MetaTrader 5
Declaração de Buffers
Buffers são declarados como arrays no código MQL5 e devem ser vinculados ao sistema gráfico.
double Buffer1[]; // Declaração de um buffer
double Buffer2[]; // Declaração de outro buffer
Ligação ao Gráfico
A função SetIndexBuffer
é usada para conectar os buffers ao sistema gráfico do MetaTrader.
SetIndexBuffer(0, Buffer1); // Liga o primeiro buffer ao índice 0
SetIndexBuffer(1, Buffer2); // Liga o segundo buffer ao índice 1
Cada índice está associado a um buffer e, consequentemente, a um estilo de linha ou representação gráfica.
Você pode configurar como o buffer será exibido no gráfico utilizando a função SetIndexStyle
.
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, clrBlue); // Configura linha azul sólida
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2, clrRed); // Configura histograma vermelho
Os estilos disponíveis incluem:
DRAW_LINE
: Linhas contínuas.DRAW_HISTOGRAM
: Histogramas.DRAW_ARROW
: Seta nos gráficos.Os valores dos buffers devem ser preenchidos durante a execução da função OnCalculate
.
Exemplo:
Vamos criar um indicador que calcula a média móvel simples (SMA).
#property indicator_separate_window
#property indicator_buffers 1 // Número de buffers
#property indicator_color1 clrBlue // Cor do buffer 1
double Buffer1[]; // Declaração do buffer
int OnInit()
{
SetIndexBuffer(0, Buffer1); // Conecta Buffer1 ao índice 0
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, clrBlue); // Configura estilo
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total, // Total de barras no gráfico
const int prev_calculated,// Barras calculadas anteriormente
const datetime &time[], // Tempo das barras
const double &open[], // Preço de abertura
const double &high[], // Preço máximo
const double &low[], // Preço mínimo
const double &close[], // Preço de fechamento
const long &tick_volume[],// Volume de ticks
const long &volume[], // Volume real
const int &spread[]) // Spread
{
int start = prev_calculated > 0 ? prev_calculated – 1 : 0;
for (int i = start; i < rates_total; i++){
Buffer1[i] = iMA(NULL, 0, 14, 0, MODE_SMA, PRICE_CLOSE, i); // Calcula SMA
}
return(rates_total);
}
EMPTY_VALUE
aos índices do buffer que não possuem dados válidos.Buffer1[i] = EMPTY_VALUE; // Ignorar este índice
#property indicator_buffers
.MQL5/Indicators
.Os buffers podem ser usados para criar:
Buffers são uma ferramenta poderosa para programar indicadores personalizados no MetaTrader 5. Com a prática, você pode utilizá-los para criar visualizações detalhadas e precisas que ajudarão na análise técnica e no desenvolvimento de estratégias.
*Ao clicar em “Inscreva-se” você estará concordando com a Política de Privacidade.
A newsletter com insights do mundo dos investimentos, direto no seu e-mail
*Ao clicar em “Inscreva-se” você estará concordando com a Política de Privacidade.
© 2025 QUANTCODE. Todos os direitos reservados.