Deskripsi
Class CFractalsOnRingBuffer dirancang untuk menghitung indikator teknikal Fraktal menggunakan algoritma buffer cincin.
Deklarasi
class CFractalsOnRingBufferJudul
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>File CFractalsOnRingBuffer.mqh harus diletakkan di folder IncOnRingBuffer yang perlu dibuat di MQL5\Include\. Dua file dengan contoh yang digunakan oleh class ini terlampir pada deskripsi. File dengan class buffer cincin juga harus ada di folder ini.
Metode Class
//--- metode inisialisasi: bool Init( // jika ada kesalahan, mengembalikan false, jika sukses - true int bars_right = 2, // jumlah candlestick di kanan dari ekstremum int bars_left = 2, // jumlah candlestick di kiri dari ekstremum int size_buffer = 256, // ukuran buffer cincin bool as_series = false // true jika seri waktu, jika tidak - false );
//--- metode perhitungan berdasarkan seri waktu 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 maksimum const double& low[], // array minimum );
//--- metode perhitungan fraktal berdasarkan elemen seri terpisah dari array high[]: double MainOnHigh( // mengembalikan nilai fraktal atas untuk elemen index-bars_right (bar) 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, // maksimum bar saat ini const int index // indeks elemen (bar) saat ini );
//--- metode perhitungan fraktal bawah berdasarkan elemen seri terpisah dari array low[]: double MainOnLow( // mengembalikan nilai fraktal bawah untuk elemen index-bars_right (bar) 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 low, // minimum bar saat ini, elemen maksimum dari array saat ini const int index // indeks elemen (bar) saat ini );
//--- metode akses data: int BarsRequired(); // Mengembalikan jumlah candlestick yang diperlukan untuk menggambar indikator string Name(); // Mengembalikan nama indikator string NameUpper() // Mengembalikan nama fraktal atas string NameLower() // Mengembalikan nama fraktal bawah int BarsRight() // Mengembalikan jumlah candlestick di kanan dari ekstremum int BarsLeft() // Mengembalikan jumlah candlestick di kiri dari ekstremum int Size(); // Mengembalikan ukuran buffer cincin
Untuk mendapatkan data yang dihitung dari indikator dari buffer cincin, Anda dapat melakukannya seperti pada array biasa. Contohnya:
//--- class dengan metode perhitungan indikator Fraktal: #include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh> CFractalsOnRingBuffer fractals; ... //+------------------------------------------------------------------+ //| 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 harga: fractals.MainOnArray(rates_total, prev_calculated, high, low); ... //--- gunakan data dari buffer cincin "fractals", // misalnya, salin data ke buffer indikator: for(int i=start;i<rates_total-BarsRight && !IsStopped();i++) { UpperBuffer[i] = fractals.upper[rates_total-1-i]; // fraktal atas LowerBuffer[i] = fractals.lower[rates_total-1-i]; // fraktal bawah } ... //--- kembalikan nilai prev_calculated untuk panggilan berikutnya: return(rates_total); }
Perlu dicatat bahwa pengindeksan di buffer cincin sama seperti dalam seri waktu.
Contoh
- Indikator menghitung file
Test_Fractals_OnArrayRB.mq5berdasarkan seri waktu harga. Penggunaan metodeMainOnArray()didemonstrasikan. - File
Test_Fractals_OnValueRB.mq5mendemonstrasikan penggunaan metodeMainOnValue(). Pertama indikator Fraktal dihitung dan digambar. Kemudian berdasarkan buffer cincin indikator ini, satu lagi Fraktal digambar.

Hasil kerja dari Test_Fractals_OnArrayRB.mq5 dengan ukuran buffer cincin 256 elemen

Hasil kerja dari Test_Fractals_OnValueRB.mq5 dengan ukuran buffer cincin 256 elemen
Dalam penulisan kode, pengembangan dari MetaQuotes Software Corp., Integer dan GODZILLA telah digunakan.
Komentar 0