Cara menangani event bar
Event bar sangat penting dalam siklus hidup setiap cBot. Penanganan event ini dengan benar sangat penting untuk mengelola bagaimana cBot Anda bereaksi terhadap kondisi pasar baru. Dalam artikel ini dan video terkait, kami akan mendemonstrasikan jenis-jenis utama event bar dan membahas handler untuk event-event ini yang diekspos oleh API cTrader.
- Bar - mengacu pada berbagai jenis objek yang secara berurutan digambar pada grafik trading oleh cTrader. Ini bisa berupa candlestick, balok Renko, bar Range atau bahkan lilin Heiken Ashi.
Menangani event BarOpened
Event bar terjadi ketika sebuah bar baru mulai digambar pada grafik trading yang terhubung ke cBot. Event BarOpened terjadi untuk bar baru yang baru saja mulai digambar pada grafik.
Penanganan event ini dilakukan melalui metode OnBar(), yang merupakan metode turunan dari kelas dasar Robot. Sekarang kita akan membuat cBot yang menangani event BarOpened sebagai bagian dari strategi kita untuk menganalisis sentimen pasar. Kita akan menghapus metode OnStart() dan OnStop() dari template dan mengganti handler OnTick() dengan handler OnBar().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
cBot ini dimaksudkan untuk diluncurkan pada grafik dengan timeframe D1 (harian). Pada setiap bar, ia membandingkan perbedaan harga pembukaan dengan harga pembukaan bar sebelumnya dan menempatkan order baru dalam arah yang sesuai. Jika perbedaan harga tidak signifikan, bot justru menutup semua posisi yang saat ini terbuka.
Jika kita menjalankan backtest bot sederhana ini, hasilnya tampak menjanjikan.

Menangani event BarClosed
Ketika sebuah bar baru terbuka, ia secara efektif tidak memiliki data harga selain harga pembukaannya. Dalam banyak kasus, Anda mungkin ingin cBot Anda mengakses data dari bar sebelumnya untuk memastikan eksekusi strategi yang lancar. Inilah mengapa event BarClosed terjadi untuk bar yang baru saja ditutup (yang tepat sebelum bar baru) dan memungkinkan Anda untuk dengan mudah menggunakan data harga dan volumenya. Ketika event BarClosed dipicu, bar yang baru dibuka sepenuhnya dihilangkan dari koleksi Bars
Untuk menangani event BarClosed, API mengekspos metode OnBarClosed.
Catatan
Dalam contoh sebelumnya, kita menggunakan properti Bars.LastBar.Open untuk mendapatkan harga pembukaan bar yang baru dibuka. Jika kita menggunakan properti yang sama dalam metode OnBarClosed(), kita akan mendapatkan harga pembukaan bar yang baru saja ditutup.
Kita akan membuat cBot sederhana yang menggunakan handler OnBarClosed() sebagai berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
cBot mendeteksi pola bullish (hammer) dengan mengevaluasi panjang sumbu bawah lilin. Jika pola hammer terdeteksi, semua posisi yang sebelumnya terbuka ditutup dan order beli baru ditempatkan dengan stop loss 50 pip.
Jika kita melakukan backtest bot ini, kita akan mendapatkan hasil yang cukup baik.

Menambahkan handler event kustom
Saat menangani event BarOpened dan BarClosed, Anda juga dapat menggunakan sintaks yang sedikit berbeda dengan menetapkan event-event ini dengan handler kustom. Sementara OnBar() dan OnBarClosed() hanya dipicu sekali, Anda dapat menetapkan sebanyak mungkin handler kustom yang Anda inginkan, yang memungkinkan untuk menambahkan logika yang kompleks.
Catatan
Handler event kustom harus ditambahkan dalam metode OnStart(). Handler kustom juga harus menerima argumen dari tipe BarOpenedEventArgs (untuk event BarOpened) atau BarClosedEventArgs (untuk event BarClosed).
1 2 3 4 5 6 7 8 9 10 | |
Kita akan membuat cBot lain yang menggunakan dua handler kustom untuk event BarOpened untuk bereaksi terhadap kemungkinan pembalikan bullish dan bearish.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
cBot memeriksa apakah harga pembukaan bar yang baru dibuka lebih tinggi dari harga penutupan dua bar sebelumnya. Jika ini terjadi, order beli ditempatkan. Jika harga pembukaan lebih rendah dari harga penutupan dua bar sebelumnya, order jual ditempatkan. Penggunaan dua handler event terpisah memungkinkan kita untuk membagi logika trading kita menjadi komponen-komponen yang lebih kecil yang dapat dengan mudah kita modifikasi nanti jika diperlukan.
Hasil backtesting pada timeframe D1 juga positif.

Ringkasan
Dengan mempelajari cara menangani event bar dengan benar, Anda dapat membuat cBot Anda melakukan persis apa yang Anda inginkan dan kapan Anda ingin mereka melakukannya.