أخبرتني أن عملية التداول الورقي لديك تعطلت أثناء الليل. أعدت تشغيلها قبل القرار التالي، ولم تظهر أي أخطاء، فافترضت أنها استأنفت من حيث توقفت. ثم أرسلت أمر شراء لأصل تملكه بالفعل. وتريد أن تعرف إن كان في الاستراتيجية خلل.
قد يكون فيها خلل. لكن تحقّق أولًا مما إذا كانت العملية بعد إعادة تشغيلها تعرف الأشياء نفسها التي يعرفها حساب التداول الورقي. إعادة التشغيل مسألة استعادة حالة: يجب أن تتطابق المراكز والنقد والأوامر المفتوحة وأي ذاكرة للاستراتيجية تؤثر في القرار التالي. أما تشغيل الشيفرة مجددًا فهو الجزء السهل.
ماذا كانت الاستراتيجية تعتقد قبل تعطلها؟
دوّن آخر قرار اتخذته العملية قبل توقفها. ولكل أداة مالية جرى تداولها، سجّل المركز المستهدف، والمركز الفعلي في الحساب، والأوامر القائمة، وحالة الإشارة التي ستؤثر في الإجراء التالي. إذا لم تكن هذه السجلات موجودة، فلن تستطيع معرفة ما إذا كانت إعادة التشغيل قد استعادت الحالة أم اكتفت بتهيئة استراتيجية جديدة.
لنفترض أن استراتيجيتك كل ساعة تشتري وحدة واحدة عندما تصبح إشارة الاتجاه إيجابية، ثم تحتفظ بها حتى تتحول الإشارة إلى سلبية. ترسل العملية أمر الشراء عند 14:00، لكنها تتعطل قبل تسجيل قبول الأمر. تنفّذ منصة التداول الورقي الأمر. وعند إعادة التشغيل، لا ترى الاستراتيجية أي مركز مسجّل، بينما لا تزال الإشارة إيجابية، فترسل أمر شراء آخر. الإشارة تتصرف باتساق؛ لكن ذاكرتها لما يملكه الحساب قديمة.
لذلك يجب مطابقة المركز الحالي في الحساب مع حالة الاستراتيجية المحفوظة قبل السماح بإرسال أوامر جديدة. قد تكون اللقطة المحلية مفيدة، لكن الحساب أو منصة التداول هو المرجع لما نُفّذ بالفعل.
ما الحالات التي يجب أن تبقى بعد إعادة التشغيل؟
ابدأ بالحالة التي يمكن أن تغيّر الأمر التالي. احتفظ بسجل دائم يتضمن طابعًا زمنيًا ورقم إصدار لكل تحديث، وأنشئ نسخة قبل تغيير منطق الاستعادة كي تتمكن من إعادة تمثيل العطل لاحقًا.
| الحالة | سبب الأهمية | فحص الاستعادة |
|---|---|---|
| المراكز والنقد | تحدّد الانكشاف والقوة الشرائية المتاحة | قارن القيم المحفوظة بقيم حساب التداول الورقي |
| الأوامر المفتوحة | قد يكون أمر قد نُفّذ أثناء توقف العملية | استعلم عن حالة الأمر وطابق الكميات المنفّذة جزئيًا |
| ذاكرة الإشارة | قد تمتد حالات التقاطع وفترات التهدئة والاحتفاظ عبر عدة قرارات | استعد آخر مدخلات قرار تم تثبيتها |
| آخر حدث تمت معالجته | يحدد النقطة التي تستأنف الاستراتيجية منها استهلاك البيانات | أعِد تشغيل الأحداث بعد تلك النقطة من دون تطبيقها مرتين |
من السهل إغفال ذاكرة الإشارة. قد تخزّن استراتيجية تتداول عند تقاطع قيم مؤشر الأمس لاكتشاف تقاطع جديد. وإذا بدأت بقيمة فارغة، فقد تظن أن حالة قائمة هي حدث جديد. وتنطبق المشكلة نفسها على مؤقت فترة التهدئة: يجب ألا تؤدي إعادة التشغيل إلى تصفير قاعدة كان يُفترض أن تستمر.
كيف تجعل الاستعادة قابلة للتكرار؟
امنح كل أمر معرّف عميل ثابتًا مشتقًا من تشغيل الاستراتيجية والقرار الذي صدر عنه. إذا أعادت العملية المحاولة بعد انتهاء المهلة، فيمكنها التحقق مما إذا كان ذلك القرار قد أنشأ أمرًا بالفعل بدلًا من إرسال أمر مكرر. سجّل تغييرات الحالة بعد تأكيد حدث الحساب المقابل فقط، واحتفظ بمعرّفات الأوامر والتنفيذات التي تفسّر التغيير.
بعدها اختبر الحالة التي أدت إلى الواقعة. شغّل الاستراتيجية حتى اتخاذ قرار، واحفظ الحالة، ثم أوقفها واستعدها باستخدام مراكز حساب التداول الورقي وسجل أوامره. قارن القرار التالي والأوامر الناتجة بتشغيل متواصل. كرر الاختبار مع أمر نُفّذ جزئيًا، ومع تعطل بين الإرسال والإقرار. يجب ألا ينشئ التشغيل المستأنف مركزًا من تلقاء نفسه أو يكرر إجراءً مكتملًا.
احتفظ بسجل للاستعادة: آخر حدث تمت معالجته، ووقت لقطة الحساب، وحالات الأوامر المفتوحة، وإصدار الاستراتيجية المستعاد، وأول قرار بعد إعادة التشغيل. بهذا يتحول قول «عادت العملية للعمل» إلى أمر يمكنك تدقيقه.
ما الذي ينبغي أن تثق به بعد إعادة التشغيل؟
لا تثق بالعملية إلا بعد مطابقة حالة الحساب والاستراتيجية، ومعرفة حالات الأوامر المعلّقة، وتطابق القرار التالي مع ما تتوقعه من تشغيل متواصل. إذا لم تستطع تفسير اختلاف، فأوقف إرسال أوامر التداول الورقي وافحص سجل الأحداث. استمرار العملية في العمل لا يثبت أن الاستراتيجية استعادت حالتها.
لقد وجدت بالفعل الجانب المفيد من التعطل: فقد كشف افتراضًا لم يسبق لتشغيلك المعتاد أن واجهه. اجعل إعادة التشغيل سيناريو قابلًا للتكرار، وستعرف ما الذي تتذكره استراتيجيتك قبل أن تطلب منها التداول مجددًا.
→ جميع المقالات


