Beranda Indikator Teknis Postingan

Membuat Indikator ADX Wilder dengan Buffer Cincin di MetaTrader 5

Lampiran
1356.zip (10.07 KB, Unduh 0 kali)

Deskripsi

Kelas CADXWOnRingBuffer dirancang untuk menghitung indikator teknikal Average Directional Movement Index Wilder (ADX Wilder) dengan menggunakan algoritma buffer cincin.

Deklarasi

class CADXWOnRingBuffer

Judul

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>

File CADXWOnRingBuffer.mqh harus diletakkan di folder IncOnRingBuffer yang perlu dibuat di MQL5\Include\. Dua file dengan contoh yang digunakan oleh kelas dari folder ini dilampirkan pada deskripsi. File dengan kelas buffer cincin dan kelas Moving Average juga harus ada di folder ini.

Metode Kelas

//--- metode inisialisasi:
bool Init(                                 // jika ada kesalahan mengembalikan false, jika berhasil - true
   int            ma_period   = 14,        // periode smoothing Moving Average  
   ENUM_MA_METHOD ma_method   = MODE_SMMA, // metode smoothing Moving Average
   int            size_buffer = 256,       // ukuran buffer cincin, jumlah data yang disimpan
   bool           as_series   = false      // true, jika waktu seri, false - jika pengindeksan biasa dari data input
   );             
//--- metode perhitungan berdasarkan waktu seri atau buffer indikator:          
int MainOnArray(                  // mengembalikan jumlah elemen yang diproses  
   const int     rates_total,     // ukuran array
   const int     prev_calculated, // elemen yang diproses pada panggilan sebelumnya
   const double &high[]           // array nilai maksimum
   const double &low[]            // array nilai minimum
   const double &close[]          // array harga penutupan
   );
//--- metode perhitungan berdasarkan elemen terpisah dari array           
double MainOnValue(              // mengembalikan nilai ADXW untuk elemen yang ditetapkan
   const int    rates_total,     // ukuran array
   const int    prev_calculated, // elemen yang diproses dari array
   const int    begin,           // dari mana data signifikan array dimulai
   const double high,            // nilai maksimum 
   const double low,             // nilai minimum 
   const double close,           // harga penutupan 
   const int    index            // indeks elemen
   );
//--- metode akses ke data:
int    BarsRequired();   // Mengembalikan jumlah bar yang diperlukan untuk menggambar indikator
string NameADXW();       // Mengembalikan nama indikator
string NameNDI();        // Mengembalikan nama garis indikator pergerakan negatif
string NamePDI();        // Mengembalikan nama garis indikator pergerakan positif
string MAMethod();       // Mengembalikan metode smoothing dalam bentuk teks  
int    MAPeriod();       // Mengembalikan periode smoothing
int    Size();           // Mengembalikan ukuran buffer cincin

Untuk mendapatkan data yang dihitung dari indikator dari buffer cincin, Anda bisa melakukannya seperti dari array biasa. Contohnya:

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>
CADXWOnRingBuffer adxw;

...

//+------------------------------------------------------------------+
//| Fungsi iterasi indikator kustom                              |
//+------------------------------------------------------------------+
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[])
  {
//--- perhitungan indikator:
   adxw.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...
     
//--- salin data dari buffer cincin "adxw" ke indikator:
   for(int i=start;i<rates_total;i++)
     {
      ADXW_Buffer[i] = adxw[rates_total-1-i];      // indeks pergerakan arah rata-rata Wilder
      PDI_Buffer[i]  = adxw.pdi[rates_total-1-i];  // indeks pergerakan positif
      NDI_Buffer[i]  = adxw.ndi[rates_total-1-i];  // indeks pergerakan negatif
     }

   ...
  }

Perlu dicatat bahwa pengindeksan di buffer cincin sama seperti dalam waktu seri.

Contoh

  1. File Test_ADXW_OnArrayRB.mq5 menghitung indikator berdasarkan seri waktu harga. Aplikasi metode MainOnArray() ditunjukkan.
  2. File Test_ADXW_OnValueRB.mq5 menunjukkan penggunaan metode MainOnValue(). Pertama, indikator ADXW dihitung dan digambar. Kemudian berdasarkan buffer cincin dari indikator ini, tiga garis indikator ADXW dihitung.


Hasil kerja Test_ADXW_OnArrayRB.mq5 dengan ukuran buffer cincin 256 elemen



Hasil kerja Test_ADXW_OnValueRB.mq5 dengan ukuran buffer cincin 256 elemen

 

Dalam penulisan kode ini, pengembangan dari MetaQuotes Software Corp., Integer dan GODZILLA digunakan.

Postingan terkait

Komentar (0)