MetaTrader 5 herunterladen

DRAW_NONE

Stil DRAW_NONE ist für diejenigen Fälle, in denen der Puffer-Wert berechnet und in "Data Window" dargestellt werden sollte, aber die Anzeige auf dem Chart ist nicht erforderlich. Um die Genauigkeit der Anzeige zu konfigurieren, verwenden Sie Ausdruck IndicatorSetInteger(INDICATOR_DIGITS,Anzahl_der_Zeichen) in der OnInit()-Funktion:

int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,InvisibleBuffer,INDICATOR_DATA);
//--- Wir stellen die Genauigkeit, mit der der Wert im Daten-Fenster angezeigt werden
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//---
   return(INIT_SUCCEEDED);
 ;}

Die erforderliche Anzahl der Puffer für den Bau von DRAW_NONE ist 1.

Ein Beispiel für einen Indikator, der in "Data Window" die Nummer des Balkens, auf dem die Maus ist, zeigt. Die Nummerierung entspricht der Zeit-Serie, d.h. der aktuelle unvollendete Balken hat Null-Index, und der älteste Balken verfügt über den größten Index.

Ein Beispiel des Stils DRAW_NONE

Beachten Sie, dass trotz der Tatsache, dass für die grafische Konstruktion Nummer 1 rote Farbe der Darstellung angegeben ist, zeichnet der Indikator nichts auf dem Chart.

//+------------------------------------------------------------------+
//|                                                    DRAW_NONE.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Invisible
#property indicator_label1  "Bar Index"
#property indicator_type1   DRAW_NONE
#property indicator_style1  STYLE_SOLID
#property indicator_color1  clrRed
#property indicator_width1  1
//--- indicator buffers
double         InvisibleBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Bindung vom Array und Indikator-Puffer
   SetIndexBuffer(0,InvisibleBuffer,INDICATOR_DATA);
//--- Wir stellen die Genauigket, mit der der Wert in Data Window angezeigt werden
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//---
   return(INIT_SUCCEEDED);
 ;}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(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[])
  {
   static datetime lastbar=0;
//--- Wenn dies die erste Berechnung des Indikators ist
   if(prev_calculated==0)
     {
      //--- Durchnumerieren Balken zum ersten Mal
      CalcValues(rates_total,close);
      //--- Speichern Öffnungszeit des aktuellen Balkens in lastbar
      lastbar=(datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
    ;}
   else
     {
      //--- Wenn ein neuer Balken erscheint hat, sien Öffnungszeit fällt nicht mit lastbar zusammen
      if(lastbar!=SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE))
        {
         //--- Durchnummerieren Balken noch einmal
         CalcValues(rates_total,close);
         //--- Aktuallisieren Öffnungszeit des aktuellen Balkens in lastbar
         lastbar=(datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
       ;}
    ;}
//--- return value of prev_calculated for next call
   return(rates_total);
 ;}
//+------------------------------------------------------------------+
//| Numeriert Balken wie in Zeitreihen                               |
//+------------------------------------------------------------------+
void CalcValues(int total,double const  &array[])
  {
//--- Wir definieren Indexierung des Indikator-Puffers als in Zeitreihen
   ArraySetAsSeries(InvisibleBuffer,true);
//--- Wir füllen Nummer jedem Balken
   for(int i=0;i<total;i++) InvisibleBuffer[i]=i;
 ;}