Deskripsi
Kelas CADXOnRingBuffer dirancang untuk menghitung indikator teknikal Average Directional Movement Index (ADX) menggunakan algoritma ring buffer.
Deklarasi
class CADXOnRingBufferJudul
#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>File kelas CADXOnRingBuffer.mqh perlu ditempatkan di folder IncOnRingBuffer, yang harus dibuat di MQL5\Include\. Dua file contoh yang digunakan oleh kelas dari folder ini juga dilampirkan dalam deskripsi. File dengan kelas ring buffer dan kelas Moving Average juga harus ada di folder ini.
Metode Kelas
//--- metode inisialisasi: bool Init( // jika terjadi kesalahan, mengembalikan false, jika berhasil - true int ma_period = 14, // periode penghalusan Moving Average ENUM_MA_METHOD ma_method = MODE_EMA, // metode penghalusan Moving Average int size_buffer = 256, // ukuran ring buffer, jumlah data yang disimpan bool as_series = false // true, jika merupakan time series, false jika indeks biasa dari input data );
//--- metode perhitungan berdasarkan time series 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 untuk perhitungan berdasarkan elemen terpisah dari array double MainOnValue( // mengembalikan nilai ADX untuk elemen yang ditentukan const int rates_total, // ukuran array const int prev_calculated, // elemen yang diproses dari array const int begin, // dari mana nilai 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 data: int BarsRequired(); // Mengembalikan jumlah bar yang diperlukan untuk menggambar indikator string NameADX(); // Mengembalikan nama indikator string NameNDI(); // Mengembalikan nama garis indikator pergerakan negatif string NamePDI(); // Mengembalikan nama garis indikator pergerakan positif string MAMethod(); // Mengembalikan metode penghalusan dalam bentuk teks int MAPeriod(); // Mengembalikan periode penghalusan int Size(); // Mengembalikan ukuran ring buffer
Untuk mendapatkan data yang dihitung dari indikator dari ring buffer, dapat dilakukan seperti pada array biasa. Contoh:
#include <IncOnRingBuffer\CADXOnRingBuffer.mqh> CADXOnRingBuffer adx; ... //+------------------------------------------------------------------+ //| 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: adx.MainOnArray(rates_total, prev_calculated, high, low, close); ... //--- salin data dari buffer ring "adx" ke indikator: for(int i=start; i<rates_total; i++) { ADX_Buffer[i]=adx[rates_total-1-i]; // indeks pergerakan arah rata-rata PDI_Buffer[i]=adx.pdi[rates_total-1-i]; // indeks pergerakan arah positif NDI_Buffer[i]=adx.ndi[rates_total-1-i]; // indeks pergerakan arah negatif } ... }
Perlu dicatat bahwa pengindeksan dalam ring buffer sama dengan pada time series.
Contoh
- File Test_ADX_OnArrayRB.mq5 menghitung indikator berdasarkan time series harga. Penggunaan metode MainOnArray() ditunjukkan.
- File Test_ADX_OnValueRB.mq5 menunjukkan penggunaan metode MainOnValue(). Pertama, indikator ADX dihitung dan digambar. Kemudian, berdasarkan ring buffer dari indikator ini, tiga garis dari indikator ADX dihitung.

Hasil kerja dari Test_ADX_OnArrayRB.mq5 dengan ukuran ring buffer 256 elemen

Hasil kerja dari Test_ADX_OnValueRB.mq5 dengan ukuran ring buffer 256 elemen
Pengembangan kode ini melibatkan MetaQuotes Software Corp., Integer dan GODZILLA.
Postingan terkait
- Panduan Lengkap MetaCOT 2 CFTC ToolBox untuk Analisis COT di MT4
- Menggunakan Buffer Jam dalam MetaTrader 5 untuk Pengumpulan Data Trading
- Membuat Indikator ADX Wilder dengan Buffer Cincin di MetaTrader 5
- Indikator MACD Candle untuk MT4: Panduan Lengkap
- Master Tools: Alat Indikator untuk MetaTrader 4 yang Harus Dimiliki