Startseite Technischer Indikator Beitrag

Neuer Bar-Event-Handler für Indikatoren in MetaTrader 5

Anhang
199.zip (2.92 KB, Herunterladen 0 mal)

In diesem Artikel möchte ich dir den Neuer Bar-Event-Handler vorstellen, der dir helfen kann, deine Indikatoren effizienter zu nutzen. Das Konzept dahinter ist einfach: Der Handler ermöglicht es, Recalculations nur dann durchzuführen, wenn ein neuer Bar erschienen ist. Das ist eine großartige Alternative zur direkten Nutzung der OnCalculate()-Funktion.

Hier ist ein einfaches Beispiel für einen Indikator, der eine Linie zeichnet, wenn ein neuer Bar auftritt:

//+------------------------------------------------------------------+
//|                                            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> // Hier liegt das Geheimnis des Aufrufs der OnNewBarCalculate()-Funktion//+------------------------------------------------------------------+
//| Neuer Bar-Event-Handler für den Indikator                          |
//+------------------------------------------------------------------+
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[]) 
  {
//--- Hier kannst du den Code schreiben, ähnlich wie bei OnCalculate();
//--- Diese Funktion wird nur aufgerufen, wenn ein neuer Bar erschienen ist (nicht bei jedem Tick)

   PrintFormat("Neuer Bar: %s",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- Rückgabewert von prev_calculated für den nächsten Aufruf
   return(rates_total);
  }

Verwandte Beiträge

Kommentar (0)