تحمل الأخطاء
يشير مصطلح "تحمل الأخطاء" إلى قدرة النظام الآلي على مواصلة العمل عند مواجهة فشل. بالنسبة لخوارزميات cTrader، يعني تحمل الأخطاء أن العمليات التي تستضيف cBots والإضافات والمؤشرات يمكن أن تستمر في التشغيل حتى عند مواجهة الأخطاء.
يشرح هذا المقال كيفية عمل تحمل الأخطاء ويصف الفوائد الرئيسية التي تقدمها هذه الميزة لمتداولي الخوارزميات.
تحمل الأخطاء في دقيقة واحدة!
- بموجب قواعد تحمل الأخطاء، عند مواجهة استثناء، ستستمر الخوارزمية في التشغيل. تجعل هذه الميزة خوارزميات 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() طبقة إضافية من التحكم في كيفية تفاعل الخوارزميات الخاصة بك مع الاستثناءات.