Neste post, vamos falar sobre uma abordagem super útil que você pode aplicar em seus indicadores no MetaTrader 5. A ideia principal está detalhada no artigo "Manipulador de Eventos Novo Bar". Aqui, vamos explorar como implementar essa lógica em seus sistemas de trading, garantindo que os cálculos sejam realizados apenas quando um novo bar surgir. Isso é uma alternativa prática ao uso direto da função OnCalculate().
Vamos ver um exemplo simples de um indicador que desenha uma linha sempre que um novo bar aparece:
//+------------------------------------------------------------------+//| OnNewBarCalculate.mq5 |//| Copyright 2010, Lizar |//| Lizar@mail.ru |//+------------------------------------------------------------------+#property copyright "Copyright 2010, Lizar"#property link "Lizar@mail.ru"#property version "1.00"#property indicator_chart_window#include <OnNewBarCalculate.mqh> // aqui está o segredo da chamada da função OnNewBarCalculate()//+------------------------------------------------------------------+//| Manipulador de eventos de novo bar para o indicador |//+------------------------------------------------------------------+int OnNewBarCalculate(constint rates_total, constint prev_calculated, constdatetime& time[], constdouble& open[], constdouble& high[], constdouble& low[], constdouble& close[], constlong& tick_volume[], constlong& volume[], constint& spread[]) { //--- aqui você pode escrever o código, similar ao OnCalculate(); //--- mas esta função será chamada apenas se um novo bar aparecer (não a cada tick) PrintFormat("Novo bar: %s",TimeToString(TimeCurrent(),TIME_SECONDS)); //--- retorne o valor de prev_calculated para a próxima chamada return(rates_total); }

Comentário 0