Inicio Indicador técnico Publicación

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

Archivos adjuntos
199.zip (2.92 KB, Descargar 0 veces)

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(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& 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);
  }

Publicaciones relacionadas

Comentarios (0)