Olá, traders! Hoje vamos falar sobre como detectar novas barras no MetaTrader 4. Isso é algo que muitos de vocês têm perguntado, e é mais simples do que parece!
Como Detectar uma Nova Barra
Para detectar uma nova barra no timeframe atual, o processo é bem tranquilo. Veja o código abaixo:
void start(){ static datetime tmp; if (tmp != Time[0]) { tmp = Time[0]; // seu código aqui } }
Eventos em Outros Timeframes
Mas e os eventos em outros timeframes? Não se preocupe! Embora o MT4 não suporte o evento onBar, você pode armazenar os horários em um array e verificar esses tempos a cada tick. Se chegar ao horário certo, execute o evento da nova barra.
Por exemplo, se você estiver fazendo um backtest no timeframe M5, pode capturar eventos do M6, M7, até D1. Mas por que só conseguimos detectar tendências ascendentes? A resposta é simples: como gerar dados de tick no MetaTrader?
Até o timeframe D1, a coisa complica um pouco, pois a semana pode começar, por exemplo, no domingo às 20:45 (dependendo do seu corretor) e o início do mês pode cair no meio da semana...
Acredito que essa informação não seja tão relevante, então não vou me aprofundar nisso.
Explicando o Código
Vamos dar uma olhada no código. Na função init, você preenche o array de tempos com os horários iniciais:
curIndex = utils.periodToPeriodIndex(Period()); times[curIndex] = Time[0]; for(int i = curIndex + 1; i < MAX; i++) times[i] = times[curIndex] - MathMod(times[curIndex], utils.periodIndexToPeriod(i) * 60);
Na função start, você verifica se já passou tempo suficiente:
if (times[curIndex] != Time[0]) { times[curIndex] = Time[0]; onBar(Period()); for(int i = curIndex + 1; i < MAX; i++) { int period = utils.periodIndexToPeriod(i), seconds = period * 60, time0 = times[curIndex] - MathMod(times[curIndex], seconds); if (times[i] != time0) { times[i] = time0; onBar(period); } } }
Como Escrever Seu Código
Você pode escrever seu código nas funções:
void onTick() {
}
e
void onBar(int period) { }
É isso aí, pessoal!
Atualização 1.1: Agradecimentos ao WHRoeder pelo código claro!
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- MQL5 Wizard: Sinais de Negócios com 3 Corvos Negros/3 Soldados Brancos + Estocástico para MetaTrader 5
- Como Integrar Eventos de Alto Impacto do ForexFactory no Seu EA para MetaTrader 4
- Template de EA para Análise de Notícias no MetaTrader 4 sem DLL
- Template de EA para Notícias sem DLL - MetaTrader 4