Deskripsi
Kelas CFractalsOnRingBuffer direka untuk mengira indikator teknikal Fraktal menggunakan algoritma buffer gelung.
Pengumuman
class CFractalsOnRingBufferJudul
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>Fail CFractalsOnRingBuffer.mqh perlu diletakkan dalam folder IncOnRingBuffer yang mesti dibina di dalam MQL5\Include\. Terdapat dua fail contoh yang digunakan oleh kelas dari folder ini yang dilampirkan pada deskripsi. Fail dengan kelas buffer gelung juga mesti ada dalam folder ini.
Kaedah Kelas
//--- kaedah inisialisasi: bool Init( // jika ada ralat, ia mengembalikan false, jika berjaya - true int bars_right = 2, // bilangan bar di sebelah kanan dari ekstremum int bars_left = 2, // bilangan bar di sebelah kiri dari ekstremum int size_buffer = 256, // saiz buffer gelung bool as_series = false // true, jika ia adalah siri waktu, jika tidak - false );
//--- kaedah pengiraan berdasarkan siri waktu atau buffer indikator: int MainOnArray( // mengembalikan bilangan elemen yang diproses const int rates_total, // saiz array const int prev_calculated, // elemen yang diproses pada panggilan sebelumnya const double& high[], // array maksimum const double& low[], // array minimum );
//--- kaedah pengiraan fraktal berdasarkan elemen siri berasingan dari array high[]: double MainOnHigh( // mengembalikan nilai fraktal atas untuk elemen index-bars_right (bar) const int rates_total, // saiz array const int prev_calculated, // elemen yang diproses dari array const int begin, // dari mana data penting dari array bermula const double high, // maksimum bar semasa const int index // indeks elemen semasa (bar) );
//--- kaedah pengiraan fraktal bawah berdasarkan elemen siri berasingan dari array low[]: double MainOnLow( // mengembalikan nilai fraktal bawah untuk elemen index-bars_right (bar) const int rates_total, // saiz array const int prev_calculated, // elemen yang diproses dari array const int begin, // dari mana data penting dari array bermula const double low, // minimum bar semasa, elemen maksimum array semasa const int index // indeks elemen semasa (bar) );
//--- kaedah akses kepada data: int BarsRequired(); // Mengembalikan bilangan bar 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 bilangan bar di sebelah kanan dari ekstremum int BarsLeft() // Mengembalikan bilangan bar di sebelah kiri dari ekstremum int Size(); // Mengembalikan saiz buffer gelung
Untuk mendapatkan data yang dikira dari indikator dari buffer gelung adalah sama seperti dari array biasa. Sebagai contoh:
//--- kelas dengan kaedah pengiraan indikator Fraktal: #include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh> CFractalsOnRingBuffer fractals; ... //+------------------------------------------------------------------+ //| Fungsi iterasi indikator khusus | //+------------------------------------------------------------------+ 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[]) { //--- pengiraan indikator berdasarkan siri waktu harga: fractals.MainOnArray(rates_total,prev_calculated,high,low); ... //--- gunakan data dari buffer gelung "fractals", // sebagai contoh, 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 } ... //--- pulangkan nilai prev_calculated untuk panggilan berikutnya: return(rates_total); }
Sila ambil perhatian bahawa pengindeksan dalam buffer gelung adalah sama seperti dalam siri waktu.
Contoh
- Indikator mengira fail
Test_Fractals_OnArrayRB.mq5berdasarkan siri waktu harga. Penggunaan kaedahMainOnArray()ditunjukkan. - Fail
Test_Fractals_OnValueRB.mq5menunjukkan penggunaan kaedahMainOnValue(). Pada awalnya, indikator Fraktal dikira dan dilukis. Kemudian berdasarkan indikator fraktal ini, satu lagi fraktal dilukis.

Hasil kerja fail Test_Fractals_OnArrayRB.mq5 dengan saiz buffer gelung 256 elemen

Hasil kerja fail Test_Fractals_OnValueRB.mq5 dengan saiz buffer gelung 256 elemen
Dalam penulisan kod, perkembangan MetaQuotes Software Corp., Integer dan GODZILLA telah digunakan.
Siaran berkaitan
- Indikator Pembukaan Rentang Untuk MetaTrader 5: Panduan Lengkap
- Penggunaan Buffer Jam untuk Pengumpulan Data di MetaTrader 5
- Panduan Volume Profile + Range v6.0 untuk MetaTrader 5: Indikator Trading Utama
- iSpread: Indikator Spread untuk Perdagangan Pasangan di MetaTrader 5
- WeightOscillator_Alert: Indikator Trend untuk MetaTrader 5 dengan Pemberitahuan