Deskripsi
Kelas COBVOnRingBuffer dirancang untuk menghitung indikator teknikal On Balance Volume (On Balance Volume, OBV) menggunakan algoritma ring buffer.
Deklarasi
class COBVOnRingBuffer : public CArrayRing
Judul
#include <IncOnRingBuffer\COBVnRingBuffer.mqh>File kelas COBVOnRingBuffer.mqh harus diletakkan di folder IncOnRingBuffer yang perlu dibuat di MQL5\Include\. Terdapat dua file dengan contoh yang digunakan oleh kelas ini dari folder tersebut yang dilampirkan pada deskripsi. File dengan kelas ring buffer juga harus berada di folder ini.
Metode Kelas
//--- metode inisialisasi: bool Init( // jika ada kesalahan, mengembalikan false, jika sukses - true int period = 0, // periode OBV int size_buffer = 256, // ukuran ring buffer bool as_series = false // true, jika seri waktu, jika tidak - false );
Periode OBV digunakan seperti pada Integer: jika nilai 0 (default) maka indikator bekerja seperti yang ada di terminal - dihitung untuk semua bar pada grafik. Jika ada nilai positif lainnya yang ditentukan, jumlah bar yang digunakan (prinsip Rata-rata Bergerak) untuk perhitungan nilai pada setiap bar grafik.
//--- metode perhitungan berdasarkan seri waktu atau buffer indikator: int MainOnArray( // mengembalikan jumlah elemen yang diproses const int rates_total, // ukuran dari array const int prev_calculated, // elemen yang diproses pada panggilan sebelumnya const double& price[], // harga const long& volume[]); // volume );
//--- metode perhitungan berdasarkan elemen terpisah dari array double MainOnValue( // mengembalikan nilai OBV untuk elemen yang ditentukan (bar) const int rates_total, // ukuran dari array const int prev_calculated, // elemen yang diproses dari array const int begin, // dari mana data signifikan dari array dimulai const double price, // harga const long volume, // volume const int index // indeks elemen (bar) );
//--- metode akses data: int BarsRequired(); // Mengembalikan jumlah bar yang diperlukan untuk menggambar indikator string Name(); // Mengembalikan nama indikator int Period(); // Mengembalikan periode int Size(); // Mengembalikan ukuran ring buffer
Untuk mendapatkan data yang dihitung dari indikator dari ring buffer, dapat dilakukan seperti dari array biasa. Sebagai contoh:
//--- kelas dengan metode perhitungan indikator OBV: #include <IncOnRingBuffer\COBVOnRingBuffer.mqh> COBVOnRingBuffer obv; ... //+------------------------------------------------------------------+ //| 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 berdasarkan seri waktu: obv.MainOnArray(rates_total,prev_calculated,close,tick_volume); ... //--- gunakan data dari ring buffer "obv", // misalnya, salin data ke buffer indikator: for(int i=start;i<rates_total && !IsStopped();i++) OBV_Buffer[i] = obv[rates_total-1-i]; // garis indikator ... //--- kembalikan nilai prev_calculated untuk panggilan berikutnya: return(rates_total); }
Harap diperhatikan bahwa pengindeksan dalam ring buffer sama dengan pada seri waktu.
Contoh
- Indikator menghitung file
Test_OBV_OnArrayRB.mq5berdasarkan seri waktu harga. Penerapan metodeMainOnArray()ditunjukkan. - File
Test_OBV_OnValueRB.mq5menunjukkan penggunaan metodeMainOnValue(). Pada awalnya indikator OBV dihitung dan digambar. Kemudian berdasarkan indikator ring buffer ini, satu OBV lagi digambar.

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

Hasil dari kerja Test_OBV_OnValueRB.mq5 dengan ukuran ring buffer 256 elemen
Dalam penulisan kode, pengembangan dari MetaQuotes Software Corp., Integer dan GODZILLA telah 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 Open Range Breakout untuk MetaTrader 5: Strategi Trading yang Efektif
- Memahami Indikator On Balance Volume (OBV) untuk Trading yang Lebih Baik
- Master Tools: Alat Indikator untuk MetaTrader 4 yang Harus Dimiliki