Toleransi kesalahan
Istilah "toleransi kesalahan" merujuk kepada keupayaan sistem automatik untuk terus beroperasi apabila menghadapi kegagalan. Bagi algo cTrader, toleransi kesalahan bermaksud proses yang mengendalikan cBot, plugin dan indikator boleh terus berjalan walaupun menghadapi ralat.
Artikel ini menerangkan cara toleransi kesalahan berfungsi dan menghuraikan manfaat utama yang ditawarkan ciri ini kepada pedagang algo.
Toleransi kesalahan dalam satu minit!
- Di bawah peraturan toleransi kesalahan, apabila menghadapi pengecualian, algo akan terus berjalan. Ciri ini menjadikan algo cTrader lebih stabil dan menyediakan peluang untuk memperhalusi cara kod anda dilaksanakan.
- Algo kini boleh secara automatik menghasilkan pengecualian yang dihadapi dalam log operasi, memberikan maklumat berharga yang boleh anda gunakan untuk memperhalusi kod anda.
- Anda boleh menggunakan kaedah
OnException(Exception exception)untuk menyesuaikan cara algo anda bertindak balas terhadap pengecualian. Gunakan pengendali acara ini untuk membuat sambungan yang boleh dipercayai dan berkesan.
Peraturan toleransi kesalahan
Secara ringkas, toleransi kesalahan memastikan semua algo mematuhi peraturan yang dinyatakan di bawah:
- Apabila menghadapi pengecualian, algo mesti terus berjalan.
- Setiap pengecualian yang berlaku semasa algo beroperasi mesti dilog.
- Pengguna mesti mempunyai peluang untuk memperkenalkan peraturan tersuai yang menentukan cara algo mengendalikan pelbagai pengecualian.
Toleransi kesalahan membolehkan algo pada asasnya mengabaikan semua ralat yang tidak mengancam untuk menyebabkan proses mereka terhenti. Walaupun pengecualian masih boleh menghalang pelaksanaan kod, toleransi kesalahan sangat mengurangkan bilangan kali algo mungkin terhenti secara tidak dijangka.
Kaedah OnException()
Di bawah peraturan toleransi kesalahan, algo perlu mengabaikan pengecualian. Walau bagaimanapun, anda juga boleh menyesuaikan cara algo anda bertindak balas terhadap pengecualian tertentu, atau menulis semula tingkah laku toleransi kesalahan lalai sepenuhnya.
Untuk berbuat demikian, gunakan kaedah OnException(). Ia bertindak sebagai pengendali khusus untuk sebarang pengecualian yang tidak dikendalikan. Tandatangan lalainya adalah seperti berikut:
1 2 3 4 | |
Pertimbangkan contoh berikut di mana kaedah OnException() digunakan untuk mengubah cara cBot bertindak balas 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 membangkitkan pengecualian NullReferenceException, kita membuat cBot kita menutup kedudukan pendek yang mungkin tidak wujud. Apabila menghadapi pengecualian yang dinyatakan, cBot kita sepatutnya menunjukkan MessageBox yang memaparkan teks penerangan, supaya kita boleh bertindak balas dengan cepat terhadap pengecualian ini dan melaraskan tingkah laku cBot kita.
Perhatikan bahawa pengendali OnException() tidak sepatutnya mengendalikan pengecualian yang berlaku semasa kaedah ini sedang dipanggil. Walau bagaimanapun, pengecualian sedemikian masih direkodkan dalam log acara.
Manfaat toleransi kesalahan
Toleransi kesalahan adalah aspek penting dalam cara dagangan algoritma berfungsi dalam cTrader dengan menyediakan manfaat berikut.
- Toleransi kesalahan sangat meningkatkan kebolehpercayaan algoritma dan menyediakan peluang baharu untuk menyempurnakan pendekatan anda terhadap dagangan automatik.
- Oleh kerana algoritma boleh memaparkan pengecualian yang dihadapi dalam log peristiwa, anda boleh menentukan dengan mudah keadaan di mana algoritma telah menghadapi ralat tertentu.
- Dengan membenarkan pengendalian peristiwa pengecualian, kaedah
OnException()boleh digunakan untuk menyempurnakan tingkah laku algoritma anda dan meningkatkan kebolehpercayaannya.
Mengendalikan kerosakan
Seperti yang dinyatakan sebelum ini, beberapa ralat boleh merosakkan keseluruhan proses. Ia adalah seperti berikut:
- Pengecualian
OutOfMemoryException. - Pengecualian
StackOverflowException. - Sebarang pengecualian yang tidak dikendalikan yang berlaku dalam bebenang berasingan.
- Sebarang ralat lain yang boleh mengancam untuk merosakkan proses di mana algoritma sedang berjalan.
Apabila menghadapi mana-mana ralat di atas, contoh penunjuk akan dihentikan; ia tidak akan dimulakan semula secara automatik. Walau bagaimanapun, pengecualian tersebut masih akan direkodkan dalam log.
Sebaliknya, apabila proses yang menghoskan contoh cBot rosak, ia akan dimulakan semula secara automatik (dengan pengecualian direkodkan dalam log).
Pelbagai contoh dalam satu proses
Terdapat kes di mana satu proses boleh menghoskan beberapa contoh cBot. Jika salah satu daripada contoh ini menghadapi pengecualian yang menyebabkannya rosak, keseluruhan proses juga akan rosak. Semasa dimulakan semula, proses tersebut akan memulakan semula semua contoh cBot yang asalnya dihoskan.
Ringkasan
Toleransi kesalahan menyediakan beberapa peluang berharga untuk menjadikan algoritma lebih stabil dan berkesan. Pengendali OnException() menyediakan lapisan kawalan tambahan terhadap cara algoritma anda bertindak balas terhadap pengecualian.