La idea de este enfoque está descrita en el artículo sobre el Manejador de Eventos 'Nueva Barra'. En este artículo, presentaremos un ejemplo de su uso en Asesores Expertos y también abordaremos cómo aplicarlo a los indicadores. La premisa es la misma: permitirá realizar recalculos solo cuando aparezca una nueva barra, lo que resulta ser una alternativa muy conveniente al uso directo de la función OnCalculate().
A continuación, te muestro un indicador simple que imprime una línea cada vez que aparece una nueva barra:
//+------------------------------------------------------------------+//| 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> // aquí está el secreto de la llamada a la función OnNewBarCalculate()//+------------------------------------------------------------------+//| Manejador de evento de nueva barra para el 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[]) { //--- aquí puedes escribir el código, similar a OnCalculate();//--- pero esta función será llamada solo si ha aparecido una nueva barra (no en cada tick) PrintFormat("Nueva barra: %s", TimeToString(TimeCurrent(), TIME_SECONDS)); //--- valor de retorno de prev_calculated para la próxima llamada return(rates_total); }

Comentarios 0