#property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //---- Çizimlerin numaralandırılması #property indicator_label1 "Numeration" #property indicator_type1 DRAW_LINE #property indicator_color1 CLR_NONE //--- gösterge tamponları double NumerationBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- gösterge tamponlarının eşlenmesi SetIndexBuffer(0,NumerationBuffer,INDICATOR_DATA); //--- tamponların indis yönünü zaman serilerindeki gibi ayarla ArraySetAsSeries(NumerationBuffer,true); //--- veri Penceresi içindeki gösterimin doğruluğunu ayarlayın IndicatorSetInteger(INDICATOR_DIGITS,0); //--- gösterge dizisinin ismi, Veri Penceresi içinde nasıl gözükecek 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[]) { //--- mevcut sıfır çubuğunun açılış zamanını kaydet static datetime currentBarTimeOpen=0; //--- time[] dizisinin erişim yönünü ters çevir - zaman serilerindeki gibi indisle ArraySetAsSeries(time,true); //--- sıfır çubuğunun açılış zamanı kaydedilen zamandan farklıysa if(currentBarTimeOpen!=time[0]) { //--- şimdikinden başlayarak çizelge derinliğine kadar tüm çubukları say for(int i=rates_total-1;i>=0;i--) NumerationBuffer[i]=i; currentBarTimeOpen=time[0]; } //--- bir sonraki çağrı için prev_calculated değerine dönüş yap return(rates_total); } |