ความทนทานต่อข้อผิดพลาด
คำว่า "ความทนทานต่อข้อผิดพลาด" หมายถึงความสามารถของระบบอัตโนมัติในการทำงานต่อไปเมื่อเผชิญกับความล้มเหลว สำหรับอัลกอริทึม cTrader ความทนทานต่อข้อผิดพลาดหมายความว่ากระบวนการที่โฮสต์ cBot ปลั๊กอิน และตัวบ่งชี้สามารถทำงานต่อไปได้แม้เมื่อเผชิญกับข้อผิดพลาด
บทความนี้อธิบายวิธีการทำงานของความทนทานต่อข้อผิดพลาดและอธิบายประโยชน์หลักที่ฟีเจอร์นี้มอบให้กับนักเทรดที่ใช้ Algo
ความทนทานต่อข้อผิดพลาดในหนึ่งนาที!
- ภายใต้กฎความทนทานต่อข้อผิดพลาด เมื่อเผชิญกับข้อยกเว้น อัลกอจะยังคงทำงานต่อไป ฟีเจอร์นี้ทำให้อัลกอของ cTrader มีความเสถียรมากขึ้นและเปิดโอกาสให้ปรับปรุงวิธีการทำงานของโค้ดของคุณ
- ตอนนี้อัลกอสามารถแสดงข้อยกเว้นที่พบในบันทึกการดำเนินการโดยอัตโนมัติ ซึ่งให้ข้อมูลที่มีค่าที่คุณสามารถใช้ในการปรับปรุงโค้ดของคุณ
- คุณสามารถใช้เมธอด
OnException(Exception exception)เพื่อปรับแต่งวิธีที่อัลกอของคุณตอบสนองต่อข้อยกเว้น ใช้ตัวจัดการเหตุการณ์นี้เพื่อสร้างส่วนขยายที่น่าเชื่อถือและมีประสิทธิภาพ
กฎความทนทานต่อข้อผิดพลาด
โดยสรุป ความทนทานต่อข้อผิดพลาดทำให้แน่ใจว่าอัลกอทั้งหมดปฏิบัติตามกฎที่ระบุไว้ด้านล่าง:
- เมื่อพบข้อยกเว้น อัลกอต้องทำงานต่อไป
- ข้อยกเว้นทุกอย่างที่เกิดขึ้นในขณะที่อัลกอกำลังทำงานต้องถูกบันทึกไว้
- ผู้ใช้ต้องมีโอกาสในการแนะนำกฎที่กำหนดเองซึ่งกำหนดวิธีที่อัลกอจัดการกับข้อยกเว้นต่างๆ
ความทนทานต่อข้อผิดพลาดช่วยให้อัลกอสามารถละเว้นข้อผิดพลาดทั้งหมดที่ไม่ทำให้กระบวนการของพวกมันหยุดทำงาน แม้ว่าข้อยกเว้นอาจยังคงป้องกันการทำงานของโค้ด แต่ความทนทานต่อข้อผิดพลาดช่วยลดจำนวนครั้งที่อัลกออาจหยุดทำงานโดยไม่คาดคิดได้อย่างมาก
เมธอด OnException()
ภายใต้กฎความทนทานต่อข้อผิดพลาด อัลกอต้องละเว้นข้อยกเว้น อย่างไรก็ตาม คุณยังสามารถปรับแต่งวิธีที่อัลกอของคุณตอบสนองต่อข้อยกเว้นบางอย่าง หรือเขียนทับพฤติกรรมความทนทานต่อข้อผิดพลาดเริ่มต้นทั้งหมดได้
เพื่อทำเช่นนั้น ให้ใช้เมธอด OnException() มันทำหน้าที่เป็นตัวจัดการเฉพาะสำหรับข้อยกเว้นที่ไม่ได้จัดการ ลายเซ็นเริ่มต้นของมันเป็นดังนี้:
1 2 3 4 | |
พิจารณาตัวอย่างต่อไปนี้ซึ่งเมธอด OnException() ถูกใช้เพื่อเปลี่ยนวิธีที่ cBot ตอบสนองต่อข้อยกเว้น NullReferenceException
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
เพื่อโยนข้อยกเว้น NullReferenceException เราทำให้ cBot ของเราปิดสถานะขายที่อาจไม่มีอยู่ เมื่อพบข้อยกเว้นที่ระบุ cBot ของเราควรแสดง MessageBox ที่แสดงข้อความอธิบาย เพื่อให้เราสามารถตอบสนองต่อข้อยกเว้นนี้ได้อย่างรวดเร็วและปรับพฤติกรรมของ cBot ของเรา
โปรดทราบว่าตัวจัดการ OnException() ไม่ได้มีไว้เพื่อจัดการข้อยกเว้นที่เกิดขึ้นในขณะที่เมธอดนี้กำลังถูกเรียกใช้ อย่างไรก็ตาม ข้อยกเว้นดังกล่าวยังคงถูกบันทึกไว้ในบันทึกเหตุการณ์
ประโยชน์ของความทนทานต่อข้อผิดพลาด
ความทนทานต่อข้อผิดพลาดเป็นแง่มุมที่สำคัญของวิธีการทำงานของการเทรดด้วยอัลกอใน cTrader โดยให้ประโยชน์ดังต่อไปนี้
- ความทนทานต่อข้อผิดพลาดช่วยเพิ่มความน่าเชื่อถือของอัลกอและเปิดโอกาสใหม่ๆ ในการปรับปรุงวิธีที่คุณเข้าถึงการเทรดอัตโนมัติ
- เนื่องจากอัลกอสามารถแสดงข้อยกเว้นที่พบในบันทึกเหตุการณ์ คุณสามารถระบุเงื่อนไขที่อัลกอพบข้อผิดพลาดเฉพาะได้อย่างง่ายดาย
- โดยการอนุญาตให้จัดการเหตุการณ์ข้อยกเว้น เมธอด
OnException()สามารถใช้เพื่อปรับปรุงพฤติกรรมของอัลกอของคุณและเพิ่มความน่าเชื่อถือของพวกมัน
จัดการการหยุดทำงาน
ตามที่กล่าวไว้ก่อนหน้านี้ ข้อผิดพลาดหลายอย่างสามารถทำให้กระบวนการทั้งหมดหยุดทำงานได้ ข้อผิดพลาดเหล่านั้นมีดังนี้:
- ข้อยกเว้น
OutOfMemoryException - ข้อยกเว้น
StackOverflowException - ข้อยกเว้นที่ไม่ได้จัดการใดๆ ที่เกิดขึ้นในเธรดแยก
- ข้อผิดพลาดอื่นๆ ที่อาจทำให้กระบวนการที่อัลกอกำลังทำงานอยู่หยุดทำงาน
เมื่อเผชิญกับข้อผิดพลาดข้างต้น อินสแตนซ์ของอินดิเคเตอร์จะหยุดทำงาน และจะไม่เริ่มต้นใหม่โดยอัตโนมัติ อย่างไรก็ตาม ข้อยกเว้นจะยังคงถูกบันทึกไว้ในบันทึก
ในทางตรงกันข้าม เมื่อกระบวนการที่โฮสต์อินสแตนซ์ของ cBot หยุดทำงาน มันจะเริ่มต้นใหม่โดยอัตโนมัติ (โดยข้อยกเว้นจะถูกบันทึกไว้ในบันทึก)
หลายอินสแตนซ์ในกระบวนการเดียว
มีกรณีที่กระบวนการเดียวอาจโฮสต์อินสแตนซ์ของ cBot หลายตัว หากหนึ่งในอินสแตนซ์เหล่านี้พบข้อยกเว้นที่ทำให้มันหยุดทำงาน กระบวนการทั้งหมดก็จะหยุดทำงานด้วย เมื่อเริ่มต้นใหม่ กระบวนการจะเริ่มต้นอินสแตนซ์ของ cBot ทั้งหมดที่มันโฮสต์ไว้เดิม
สรุป
ความทนทานต่อข้อผิดพลาดให้โอกาสที่มีค่าหลายอย่างในการทำให้อัลกอมีความเสถียรและมีประสิทธิภาพมากขึ้น ตัวจัดการ OnException() ให้การควบคุมเพิ่มเติมในการกำหนดวิธีที่อัลกอของคุณตอบสนองต่อข้อยกเว้น