Gestionnaire d'événements 'Nouveau Bar' pour les indicateurs sous MetaTrader 5

Mike 2011.01.21 00:22 16 0 0
Pièce jointe

L'idée derrière cette approche est expliquée dans l'article sur le Gestionnaire d'événements 'Nouveau Bar'. On y trouve un exemple d'utilisation dans les systèmes de trading. Ici, nous allons explorer une solution pour les indicateurs. Le principe est le même : cela permettra d'effectuer des recalculs uniquement lorsqu'un nouveau bar apparaît. C'est une alternative pratique à l'utilisation directe de la fonction OnCalculate().

Voici un indicateur simple qui affiche une ligne lorsque le nouveau bar apparaît :

//+------------------------------------------------------------------+//|                                            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> // voici le secret de l'appel de la fonction OnNewBarCalculate()//+------------------------------------------------------------------+//| Gestionnaire d'événements nouveau bar pour l'indicateur              |//+------------------------------------------------------------------+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[])
  {
//--- ici vous pouvez écrire le code, similaire à OnCalculate();//--- mais cette fonction ne sera appelée que si un nouveau bar est apparu (pas à chaque tick)

   PrintFormat("Nouveau bar : %s",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- retour de la valeur de prev_calculated pour le prochain appel
   return(rates_total);
  }
Liste
Commentaire 0