Toleransi kesalahan
Istilah "toleransi kesalahan" mengacu pada kemampuan sistem otomatis untuk terus beroperasi ketika menghadapi kegagalan. Untuk algo cTrader, toleransi kesalahan berarti bahwa proses yang menjalankan cBot, plugin, dan indikator dapat terus berjalan bahkan ketika menghadapi error.
Artikel ini menjelaskan bagaimana toleransi kesalahan bekerja dan menjelaskan manfaat utama yang ditawarkan fitur ini kepada trader algo.
Toleransi kesalahan dalam satu menit!
- Berdasarkan aturan toleransi kesalahan, ketika menghadapi pengecualian, algo akan terus berjalan. Fitur ini membuat algo cTrader lebih stabil dan memberikan peluang untuk menyempurnakan cara eksekusi kode Anda.
- Algo sekarang dapat secara otomatis menampilkan pengecualian yang mereka hadapi dalam log operasi, memberikan informasi berharga yang dapat Anda gunakan untuk menyempurnakan kode Anda.
- Anda dapat menggunakan metode
OnException(Exception exception)untuk menyesuaikan bagaimana algo Anda bereaksi terhadap pengecualian. Gunakan penangan event ini untuk membuat ekstensi yang andal dan efektif.
Aturan toleransi kesalahan
Secara singkat, toleransi kesalahan memastikan bahwa semua algo mengikuti aturan yang dijelaskan di bawah ini:
- Ketika menghadapi pengecualian, algo harus terus berjalan.
- Setiap pengecualian yang terjadi saat algo beroperasi harus dicatat.
- Pengguna harus memiliki kesempatan untuk memperkenalkan aturan kustom yang menentukan bagaimana algo menangani berbagai pengecualian.
Toleransi kesalahan memungkinkan algo pada dasarnya mengabaikan semua error yang tidak mengancam untuk menghentikan proses mereka. Meskipun pengecualian masih dapat mencegah eksekusi kode, toleransi kesalahan sangat mengurangi jumlah kali algo mungkin crash secara tak terduga.
Metode OnException()
Berdasarkan aturan toleransi kesalahan, algo harus mengabaikan pengecualian. Namun, Anda juga dapat menyesuaikan bagaimana algo Anda bereaksi terhadap pengecualian tertentu, atau menimpa perilaku toleransi kesalahan default sepenuhnya.
Untuk melakukannya, gunakan metode OnException(). Ini bertindak sebagai penangan khusus untuk pengecualian yang tidak tertangani. Tanda tangan defaultnya adalah sebagai berikut:
1 2 3 4 | |
Pertimbangkan contoh berikut di mana metode OnException() digunakan untuk mengubah cara cBot bereaksi terhadap pengecualian NullReferenceException.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Untuk melempar pengecualian NullReferenceException, kita membuat cBot kita menutup posisi short yang mungkin tidak ada. Ketika menghadapi pengecualian yang ditentukan, cBot kita seharusnya menampilkan MessageBox yang menampilkan teks penjelasan, sehingga kita dapat bereaksi cepat terhadap pengecualian ini dan menyesuaikan perilaku cBot kita.
Perhatikan bahwa penangan OnException() tidak dimaksudkan untuk menangani pengecualian yang terjadi saat metode ini dipanggil. Meskipun demikian, pengecualian tersebut masih dicatat dalam log event.
Manfaat toleransi kesalahan
Toleransi kesalahan adalah aspek penting dari cara kerja algo trading di cTrader dengan memberikan manfaat berikut.
- Toleransi kesalahan sangat meningkatkan keandalan algo dan memberikan peluang baru untuk menyempurnakan cara Anda mendekati trading otomatis.
- Karena algo dapat menampilkan pengecualian yang mereka hadapi dalam log event, Anda dapat dengan mudah menentukan kondisi di mana algo telah menghadapi error tertentu.
- Dengan memungkinkan penanganan event pengecualian, metode
OnException()dapat digunakan untuk menyempurnakan perilaku algo Anda dan meningkatkan keandalan mereka.
Menangani crash
Seperti yang telah disebutkan sebelumnya, beberapa kesalahan dapat menyebabkan crash pada seluruh proses. Kesalahan tersebut adalah sebagai berikut:
- Pengecualian
OutOfMemoryException. - Pengecualian
StackOverflowException. - Setiap pengecualian yang tidak tertangani yang terjadi di thread terpisah.
- Kesalahan lain yang dapat mengancam crash pada proses tempat algo berjalan.
Ketika menghadapi salah satu kesalahan di atas, instance indikator akan dihentikan; tidak akan dimulai ulang secara otomatis. Namun, pengecualian tersebut akan tetap dicatat dalam log.
Sebaliknya, ketika proses yang menjalankan instance cBot crash, proses tersebut akan dimulai ulang secara otomatis (dengan pengecualian dicatat dalam log).
Beberapa instance dalam satu proses
Ada kasus di mana satu proses dapat menjalankan beberapa instance cBot. Jika salah satu instance ini mengalami pengecualian yang menyebabkannya crash, seluruh proses juga akan crash. Saat dimulai ulang, proses tersebut akan memulai ulang semua instance cBot yang awalnya dijalankan.
Ringkasan
Toleransi kesalahan memberikan beberapa peluang berharga untuk membuat algo lebih stabil dan efektif. OnException() menyediakan lapisan kontrol tambahan atas bagaimana algo Anda bereaksi terhadap pengecualian.