Deskripsi
Kelas CADXWOnRingBuffer dirancang untuk menghitung indikator teknikal Average Directional Movement Index Wilder (ADX Wilder) dengan menggunakan algoritma buffer cincin.
Deklarasi
class CADXWOnRingBufferJudul
#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
- File Test_ADXW_OnArrayRB.mq5 menghitung indikator berdasarkan seri waktu harga. Aplikasi metode MainOnArray() ditunjukkan.
- 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
- Panduan Lengkap MetaCOT 2 CFTC ToolBox untuk Analisis COT di MT4
- Menggunakan Buffer Jam dalam MetaTrader 5 untuk Pengumpulan Data Trading
- Indikator MACD Candle untuk MT4: Panduan Lengkap
- Membuat Indikator ADX dengan Ring Buffer di MetaTrader 5
- Indikator Alerts pada New Bar untuk MetaTrader 4: Panduan Lengkap