# The class to draw MACD using the ring buffer

> Download: cmaonringbuffer.mqh         Mengintip Dapur MACD di MT5: Menggunakan CMACDOnRingBuffer untuk Analisis Lebih Cepat   Pernahkah kamu merasa agak frustrasi saat melihat indikator MACD di chart MetaTrader 5 (MT5) terasa sedikit tertinggal? Padahal, kita tahu MACD itu keren banget buat nangkap momentum dan sinyal pembalikan arah. Nah, ternyata ada cara lho buat bikin perhitungan MACD jadi lebih gesit, terutama kalau kamu suka mainin Expert Advisor (EA) atau indikator custom sendiri.   Di ba

**URL:** https://metatrader.id/MT5+Indikator/the-class-to-draw-macd-using-the-ring-buffer

---


## The class to draw MACD using the ring buffer

**Download:** [cmaonringbuffer.mqh](https://www.mql5.com/en/code/download/1361/cmaonringbuffer.mqh?ref=metatrader.id)

![The class to draw MACD using the ring buffer](https://c.mql5.com/18/9/Test_MACD_OnArrayRB.png)\
![The class to draw MACD using the ring buffer](https://c.mql5.com/18/9/Test_MACD_OnValueRB.png)

## Mengintip Dapur MACD di MT5: Menggunakan CMACDOnRingBuffer untuk Analisis Lebih Cepat

Pernahkah kamu merasa agak frustrasi saat melihat indikator MACD di chart MetaTrader 5 (MT5) terasa sedikit tertinggal? Padahal, kita tahu MACD itu keren banget buat nangkap momentum dan sinyal pembalikan arah. Nah, ternyata ada cara lho buat bikin perhitungan MACD jadi lebih gesit, terutama kalau kamu suka mainin Expert Advisor (EA) atau indikator custom sendiri.

Di balik layar, ada yang namanya **CMACDOnRingBuffer**. Kedengarannya memang agak teknis ya, tapi santai saja, kita akan bedah pelan-pelan. Anggap saja ini adalah "koki rahasia" yang tugasnya menghitung MACD dengan metode yang lebih efisien.

### Apa Sih CMACDOnRingBuffer Itu?

Jadi begini, CMACDOnRingBuffer ini adalah sebuah *class* (kalau di dunia pemrograman itu semacam cetakan atau resep) yang didesain khusus untuk menghitung indikator **Moving Average Convergence/Divergence (MACD)**. Bedanya, dia pakai yang namanya **algoritma ring buffer**.

Kenapa ini penting? Bayangkan kamu lagi nyatet data harga dalam jumlah banyak. Kalau kamu simpan semua data dari awal sampai akhir, memori komputer kamu bisa penuh berat, apalagi kalau data historisnya berjibun. Ring buffer ini ibaratnya sebuah wadah dengan kapasitas terbatas yang terus berputar. Data baru masuk dari satu sisi, data lama yang paling duluan dihisap akan keluar dari sisi lainnya. Jadi, memori yang terpakai selalu stabil, nggak membengkak terus.

### Gimana Cara Kerjanya Si CMACDOnRingBuffer Ini?

Prinsip dasar MACD kan kita sudah paham ya. Ada dua Moving Average (biasanya Exponential Moving Average/EMA) yang dihitung, lalu dikurangi untuk menghasilkan garis MACD. Garis sinyal kemudian dihitung dari garis MACD itu sendiri (biasanya EMA dari garis MACD). Nah, CMACDOnRingBuffer ini melakukan perhitungan yang sama, tapi dengan cara yang lebih pintar menggunakan konsep ring buffer tadi.

Tanpa ring buffer, untuk menghitung MACD di sebuah bar (periode waktu) tertentu, kita butuh data harga dari bar-bar sebelumnya sesuai dengan periode Moving Average yang digunakan. Misalnya, EMA 12 butuh 12 data, EMA 26 butuh 26 data. Kalau kita pakai cara biasa, setiap kali ada bar baru, seluruh perhitungan EMA diulang lagi.

Dengan ring buffer, perhitungan jadi lebih efisien. Data harga yang "dibutuhkan" untuk perhitungan Moving Average akan disimpan dalam "wadah" ring buffer yang ukurannya sudah ditentukan. Saat ada data harga baru, data terlama dalam ring buffer akan diganti. Ini membuat perhitungan EMA dan akhirnya MACD jadi jauh lebih cepat karena nggak perlu memproses ulang seluruh data historis setiap saat.

Bayangkan kamu sedang membuat adonan kue. Dengan cara biasa, setiap kali kamu mau menambahkan sedikit terigu lagi, kamu harus mengeluarkan semua bahan dari mangkuk, mengaduknya lagi, lalu memasukkan kembali ke mangkuk. Repot kan? Nah, ring buffer itu ibaratnya mangkuk adonan yang kamu bisa terus tambahkan bahan sedikit demi sedikit tanpa harus mengeluarkan semuanya.

### Mendapatkan Data MACD dari Ring Buffer: Gampang Kok!

Nah, setelah si CMACDOnRingBuffer ini selesai menghitung, data MACD-nya itu bisa kamu ambil lho, persis seperti mengambil data dari array biasa di MQL5. Nggak ada yang ribet di sini.

Misalnya, kamu mau tahu nilai garis MACD di bar terbaru, kamu bisa panggil saja seperti ini:

```
// Asumsikan 'macd_value' adalah variabel untuk menyimpan nilai MACD
// Dan 'cmacd' adalah objek dari class CMACDOnRingBuffer yang sudah dibuat
double macd_value = cmacd.MACD_Value(0); // Angka 0 berarti bar terbaru (current bar)

// Atau untuk bar sebelumnya
double macd_value_prev = cmacd.MACD_Value(1); // Angka 1 berarti satu bar yang lalu
```

Sama juga kalau mau ambil nilai garis sinyal atau histogram MACD. Indeksnya pun sama dengan time series biasa di MQL5. Indeks 0 itu untuk bar paling baru (yang sedang terbentuk), indeks 1 untuk bar sebelumnya, dan seterusnya. Gampang kan?

### Kapan Kita Pakai "Koki Rahasia" Ini?

CMACDOnRingBuffer ini sangat berguna kalau kamu:

1. **Mengembangkan Expert Advisor (EA) Sendiri:** Kalau EA kamu butuh perhitungan MACD yang cepat dan efisien, apalagi kalau EA itu harus melakukan banyak perhitungan dalam waktu singkat, menggunakan CMACDOnRingBuffer bisa jadi solusi. Bayangkan kalau EA kamu harus mengecek MACD di ratusan atau ribuan pair instrumen secara bersamaan. Efisiensi ini jadi krusial.
2. **Membuat Indikator Custom yang Kompleks:** Mungkin kamu lagi bikin indikator yang nggak cuma pakai MACD, tapi juga mengkombinasikannya dengan indikator lain atau menerapkan logika tertentu yang membutuhkan data MACD real-time dan cepat.
3. **Memainkan dengan Data MACD Secara Langsung:** Kalau kamu memang seorang programmer MQL5 yang suka bereksperimen dengan data indikator, CMACDOnRingBuffer memberikan cara yang lebih "bersih" dan efisien untuk mengakses data MACD.

### Pemasangan Gampang Kok

Untuk menggunakan class CMACDOnRingBuffer ini, kamu perlu menempatkan file `.mqh` (ini adalah file header yang berisi definisi class-nya) ke dalam folder khusus di MT5 kamu. Lokasinya ada di: `MQL5\Include\OnRingBuffer`. Jadi, kalau folder `OnRingBuffer` itu belum ada, kamu bisa buat dulu.

Di dalam folder `OnRingBuffer` tersebut, kamu perlu ada tiga file:

1. File kelas `CMACDOnRingBuffer.mqh` itu sendiri.
2. File kelas untuk ring buffer (`RingBuffer.mqh`, misalnya).
3. File kelas untuk Moving Average (`MovingAverage.mqh`, misalnya).

Semua ini akan membantu CMACDOnRingBuffer menjalankan tugasnya dengan baik.

### Melihat Hasil Kerjanya Langsung

Ada contoh-contoh kode yang bisa kamu coba untuk melihat langsung bagaimana CMACDOnRingBuffer ini bekerja. Dua contoh file yang biasanya disertakan adalah:

- `Test_MACD_OnArrayRB.mq5`
- `Test_MACD_OnValueRB.mq5`

Kedua contoh ini biasanya menggunakan ukuran ring buffer sebesar 256 elemen. Dengan menjalankan kode tersebut, kamu bisa melihat bagaimana perhitungan MACD dilakukan secara efisien menggunakan ring buffer di chart MT5 kamu. Kadang, melihat contoh langsung itu jauh lebih mudah daripada hanya membaca penjelasan.

Misalnya, di `Test_MACD_OnArrayRB.mq5`, kamu akan melihat bagaimana data MACD yang dihasilkan dari ring buffer itu bisa langsung diplot menjadi histogram atau garis di chart. Kamu bisa membandingkan dengan indikator MACD bawaan MT5, dan dalam skenario tertentu, kamu akan merasakan perbedaannya terutama saat melakukan perhitungan yang sangat intensif.

Penulisannya sendiri menggunakan pengembangan dari MetaQuotes Software Corp. (pembuat MT5), Integer, dan GODZILLA. Ini menunjukkan bahwa class ini dibangun dengan pondasi yang kuat dari para developer berpengalaman.

Jadi, buat kamu yang penasaran dan ingin utak-atik kode MQL5, mempelajari CMACDOnRingBuffer ini bisa jadi langkah menarik untuk membuat strategi trading kamu jadi lebih canggih dan responsif. Ini adalah salah satu cara untuk menggali lebih dalam kemampuan platform MT5 yang luar biasa.
