Manejador de Eventos 'Nueva Barra' para Indicadores en MetaTrader 5

Mike 2011.01.21 00:22 31 0 0
Archivos adjuntos

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);
  }
Lista
Comentarios 0