ArraySetAsSeries

Stellt Flagge AS_SERIES für das angegebene Objekt des dynamischen Arrays ein, Indizieren der Elemente wird wie in Zeitreihen durchgeführt werden.

bool  ArraySetAsSeries(
   const void&  array[],    // Array durch Referenz 
   bool         flag        // true bedeutet umgekehrte Reihenfolge des Indizierens 
   );

Parameter

array[]

[in][out]  Numerisches Array für Einstellung.

flag

[in]  Richtung des Arrayindizierens.

Rückgabewert

Gibt true beim Erfolg zurück, sonst false.

Hinweis

Flagge AS_SERIES kann nicht für die vieldimensionale Arrays und für die statische Arrays (d.h. Arrays, deren Größe noch während der Kompilierung in eckigen Klammern angegeben wird) eingestellt werden. Indizieren einer Zeitreihe unterscheidet sich von normalen Feld dadurch, dass Indizieren der Elemente einer Zeitreihe vom Feldende zum Feldanfang durchgeführt wird (von den neuesten Daten zu den ältesten Daten).

Beispiel: Indikator, der Barnummer zeigt

Indikator für Darstellung der Barnummer

 

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot Numeration
#property indicator_label1  "Numeration"
#property indicator_type1   DRAW_LINE
#property indicator_color1  CLR_NONE
//--- Indikator Puffers
double         NumerationBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Bindung von Array zum Indikator-Puffer
   SetIndexBuffer(0,NumerationBuffer,INDICATOR_DATA);
//--- stellen wir Pufferindizieren wie in einer Zeitreihe ein
   ArraySetAsSeries(NumerationBuffer,true);
//--- stellen wir Genauigkeit der Darstellung in DataWindow ein
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//--- wie der Name des Indikatorfeldes in DataWindow aussehen wird
   PlotIndexSetString(0,PLOT_LABEL,"Bar #"); 
//---
   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[])
  {
//---  wir werden die Eröffnungszeit der laufenden Nullbar aufbewahren
   static datetime currentBarTimeOpen=0;
//--- kehren wir die Größe des Arrays time[] um - machen wir es wie in einer Zeitreihe 
   ArraySetAsSeries(time,true);
//--- wenn sich die Zeit der Nullbar davon unterscheidet, was wir aufbewahren 
   if(currentBarTimeOpen!=time[0])
     {
     //--- numerieren wir alle Bars von der laufenden Position in die Charttiefe  
      for(int i=rates_total-1;i>=0;i--) NumerationBuffer[i]=i;
      currentBarTimeOpen=time[0];
     }
//--- den Wert prev_calculated für den nächsten Anruf zurückgeben
   return(rates_total);
  }

Sehen Sie auch

Zugang zu Zeitreihen, ArrayGetAsSeries