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); }

Commentaire 0