ArrayGetAsSeries

Dizi indisinin yönünü kontrol eder.

bool  ArrayGetAsSeries(
   const void&  array[]    // kontrol edilecek dizi
   );

Parametreler

array

[in]  Kontrol edilen dizi.

Dönüş değeri

Eğer belirlenen dizi AS_SERIES bayrak ayarına sahipse (yani diziye erişim zaman serilerinde olduğu gibi arkadan öne doğru işliyorsa) true değerine dönüş yapar. Bir zaman serisi, elemanlarının indisleme yönünün sondan başa (en yeni veriden en eski veriye) doğru işlemesi açısından alışıldık diğer dizilerden ayrılır.

Not

Bir dizinin zaman serisi olup olmadığını kontrol etmek için ArrayIsSeries() fonksiyonunu kullanın. OnCalculate() fonksiyonuna giriş parametresi şeklinde geçirilen fiyat verisi dizileri, zaman serilerinde kullanılan indisleme yönüne sahip olmak zorunda değildir. Gereken indisleme yönü ArraySetAsSeries() fonksiyonu ile ayarlanabilir.

Örnek:

#property description "Gösterge, Açılış ve Kapanış fiyatları veya Yüksek ve Düşük fiyatlar"
#property description "arasındaki farkın mutlak değerini hesaplar ve bunları ayrı bir pencerede,"
#property description "bir histogram şeklinde gösterir."
//--- gösterge ayarları
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- grafik
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3
//--- giriş parametreleri
input bool InpAsSeries=true// gösterge tamponunun indisleme yönü
input bool InpPrices=true;   // Hesaplama fiyatları (true - Open,Close; false - High,Low)
//--- gösterge tamponu
double ExtBuffer[];
//+------------------------------------------------------------------+
//| Gösterge değerlerinin hesaplanması                               |
//+------------------------------------------------------------------+
void CandleSizeOnBuffer(const int rates_total,const int prev_calculated,
                        const double &first[],const double &second[],double &buffer[])
  {
//--- çubukların hesaplanması için başlangıç değeri
   int start=prev_calculated;
//--- gösterge değerleri bir önceki tik ile zaten hesaplanmışsa son çubukta çalış
   if(prev_calculated>0)
      start--;
//--- dizilerin indisleme yönünü ayarla
   bool as_series_first=ArrayGetAsSeries(first);
   bool as_series_second=ArrayGetAsSeries(second);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
//--- gerekirse indisleme yönünü doğrudan biriyle değiştir
   if(as_series_first)
      ArraySetAsSeries(first,false);
   if(as_series_second)
      ArraySetAsSeries(second,false);
   if(as_series_buffer)
      ArraySetAsSeries(buffer,false);
//--- gösterge değerlerini hesapla
   for(int i=start;i<rates_total;i++)
      buffer[i]=MathAbs(first[i]-second[i]);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- gösterge tamponlarını bağla
   SetIndexBuffer(0,ExtBuffer);
//--- gösterge tamponunda indisleme elemanını ayarla
   ArraySetAsSeries(ExtBuffer,InpAsSeries);
//--- göstergenin hangi değerler için hesaplanacağını kontrol et
   if(InpPrices)
     {
      //--- Open ve Close fiyatları
      PlotIndexSetString(0,PLOT_LABEL,"BodySize");
      //--- gösterge rengini ayarla
      PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrOrange);
     }
   else
     {
      //--- Yüksek ve Düşük fiyatlar
      PlotIndexSetString(0,PLOT_LABEL,"ShadowSize");
      //--- gösterge rengini ayarla
      PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrDodgerBlue);
     }
//---
   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[])
  {
//--- göstergeyi bayrak değerine göre hesapla
   if(InpPrices)
      CandleSizeOnBuffer(rates_total,prev_calculated,open,close,ExtBuffer);
   else
      CandleSizeOnBuffer(rates_total,prev_calculated,high,low,ExtBuffer);
//--- bir sonraki çağrı için prev_calculated değerine dönüş yap
   return(rates_total);
  }

Ayrıca Bakınız

Zaman Serilerine Erişim, ArraySetAsSeries