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 constint rates_total, // saiz array constint prev_calculated, // elemen yang diproses pada panggilan sebelumnya constdouble& high[], // array maksimum constdouble& 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) constint rates_total, // saiz array constint prev_calculated, // elemen yang diproses dari array constint begin, // dari mana data penting dari array bermula constdouble high, // maksimum bar semasa constint 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) constint rates_total, // saiz array constint prev_calculated, // elemen yang diproses dari array constint begin, // dari mana data penting dari array bermula constdouble low, // minimum bar semasa, elemen maksimum array semasa constint index // indeks elemen semasa (bar) );
//--- kaedah akses kepada data:int BarsRequired(); // Mengembalikan bilangan bar yang diperlukan untuk menggambar indikatorstring Name(); // Mengembalikan nama indikatorstring NameUpper() // Mengembalikan nama fraktal atasstring NameLower() // Mengembalikan nama fraktal bawahint BarsRight() // Mengembalikan bilangan bar di sebelah kanan dari ekstremumint BarsLeft() // Mengembalikan bilangan bar di sebelah kiri dari ekstremumint 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 |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, constint prev_calculated, constdatetime& time[], constdouble& open[], constdouble& high[], constdouble& low[], constdouble& close[], constlong& tick_volume[], constlong& volume[], constint& 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.

Komen 0