24 سبتمبر 2026 · بحث

أعدنا تشغيل استراتيجية ورقية وأعدنا تشغيل المحاكاة. فتغيّرت أوامرها.

أعدنا تشغيل استراتيجية ورقية وأعدنا تشغيل المحاكاة. فتغيّرت أوامرها.

أعدنا تشغيل استراتيجية ورقية في منتصف صفقة، فحصلنا على تسلسل أوامر مختلف عن الذي أصدرته قبل إعادة التشغيل. بيانات السوق نفسها، وإصدار الاستراتيجية نفسه، ورصيد الحساب نفسه. تطابق حساب الإشارة، لكن ذاكرة الاستراتيجية لمركزها وأوامرها المعلّقة لم تتطابق.

تتبعنا سبب الاختلاف خلال يوم من العمل على إعادة المحاكاة. وكان الدرس المفيد بسيطًا: إعادة التشغيل حدثٌ من أحداث السوق بالنسبة إلى برنامجك. إذا لم تختبر كيف تعيد الاستراتيجية بناء حالتها، فقد يخفي اختبار تاريخي نظيف نظامًا ورقيًا ينسى ما يملكه.

09:10 — اخترنا مركزًا عاديًا

تداولت استراتيجية الاختبار عقدًا دائمًا عالي السيولة: تدخل شراءً عندما يتقاطع متوسط متحرك قصير فوق متوسط أطول، ثم تخرج عند التقاطع العكسي. بدأنا إعادة المحاكاة بمركز صغير مفتوح بالفعل، وبأمر حدّ لتقليصه مع تفعيل خيار reduce-only. وهكذا صار على آلية التعافي إعادة بناء حقيقتين: ما نملكه، وما سبق أن طلبنا من المنصة تنفيذه.

عند نقطة التحقق، كان الحساب يحتفظ بـ 0.04 عقد. وكان هناك أمر مفتوح لكمية 0.01. خزّنت عملية الاستراتيجية القيمتين في الذاكرة، لكن مسار بدء التشغيل لم يسترجع سوى المركز. فتعاملت مع الأمر المخزّن مؤقتًا كأنه لم يعد قائمًا.

09:25 — ظهر أول أمر مكرر

بعد إعادة التشغيل، رأت الاستراتيجية مركز الشراء القائم، وشغّلت منطق الإشارة، ثم أرسلت أمرًا آخر لتقليص المركز بمقدار 0.01. أصبح لدى المنصة الورقية أمران نشطان. لم يكن أي منهما سيئًا بمفرده، لكنهما معًا قد يبيعان ضعف الكمية المقصودة إذا نُفّذا كلاهما.

ألقينا اللوم أولًا على حلقة الإشارات. لكنها لم تكن المشكلة؛ بل كانت اللقطة غير المكتملة. سألت الاستراتيجية: «ما المركز الذي أملكه؟» لكنها لم تسأل قط: «ما الأوامر التي لا تزال قيد التنفيذ؟»

الحالة بعد إعادة التشغيلما اعتقدت العملية أنه قائمما كان في الحساب
المركزشراء 0.04شراء 0.04
أوامر تقليص مفتوحةلا شيءأمران، لكل منهما 0.01
التعرض المقصود بعد تنفيذ أحدهماشراء 0.03قد يصبح شراء 0.02

10:00 — أصلحنا التعافي، ثم وجدنا مشكلة في التوقيت

عدّلنا بدء التشغيل ليعيد بناء الحالة من مراكز الحساب وأوامره المفتوحة قبل السماح بقرارات جديدة. أزال ذلك الأمر المكرر. ثم جعلنا الانقطاع أقل ترتيبًا: نُفّذ أمر بينما كانت الاستراتيجية غير متصلة، ووصل إشعار التنفيذ بعد إعادة الاتصال.

كانت لقطة الحساب تعكس التنفيذ بالفعل. ثم خفّض الإشعار المتأخر المركز المحلي مرة ثانية. لبضع ثوانٍ، اعتقدت الاستراتيجية أنها تحتفظ بـ 0.02 عقد، بينما كان الحساب يحتفظ بـ 0.03. واستندت إعادة الموازنة التالية إلى نقص غير حقيقي.

أضفنا قواعد للمطابقة: اعتماد لقطة الحساب كنقطة بداية، واستخدام معرّفات الأحداث لتجاهل عمليات التنفيذ المنعكسة فيها مسبقًا، وعدم إرسال أوامر قبل اكتمال المزامنة الأولية. قد يصل الإشعار متأخرًا أو مرتين، لذا يجب أن يتحمل التعافي الحالتين.

13:40 — كشفت إعادة المحاكاة اختلافًا خفيًا

أعدنا محاكاة مسار الأسعار نفسه في التشغيل الأصلي والتشغيل الذي أعقب إعادة التشغيل. لم تكن مقارنة P&L النهائي لتكشف المشكلة: انتهى الإصداران بالمركز نفسه بعد انعكاس السوق. أما مقارنة أحداث الأوامر فكشفتها.

سجّلنا كل قرار مع الحالة التي قرأها: المركز، والأوامر المفتوحة، ومعرّف آخر تنفيذ جرت معالجته، وقيمة الإشارة، وإصدار الاستراتيجية. عندها أمكن تفسير أول حدث اختلف بين التشغيلين. رأى أحدهما أمرًا قيد التنفيذ، بينما رأى الآخر قائمة فارغة. وبعد ذلك، طبّق أحدهما تنفيذًا مرتين.

تطابق الرصيد النهائي لا يثبت تطابق السلوك. قارن تسلسل القرارات والأوامر، خصوصًا عند حدود التعافي.

16:20 — ما سنفعله بشكل مختلف في المرة المقبلة

أمضينا وقتًا أطول مما ينبغي في إعادة محاكاة بيانات الأسعار قبل التحقق من انتقالات حالة الحساب. في المرة المقبلة، سنحقن حالات الفشل أولًا، ونجعل مسار السوق شبه مستوٍ. بذلك يسهل رؤية خطأ البرنامج من دون أن تحجب التشخيص حركة متقلبة.

وتعلمنا أيضًا أن نحفظ لقطة للتعافي إلى جانب إصدار الاستراتيجية وسجل الأحداث. جعل ذلك إعادة إنتاج العطل تستغرق دقائق بدلًا من الاعتماد على أن يتذكر أحدهم تسلسل إعادة الاتصال بدقة.

الاستراتيجية الورقية التي لا تتصرف على نحو صحيح إلا ما دامت عمليتها حية لم تجتز بروفة كاملة. أعد تشغيلها في منتصف مركز، واجعل عمليات التنفيذ تصل متأخرة، وافحص كل أمر ترسله بعد ذلك. ليس الهدف إثبات أنها لا تخفق أبدًا، بل إظهار كيفية تعافيها قبل أن يضطر الحساب الورقي إلى تلقينك الدرس نفسه على حين غرة.

التداول الورقي، حالة الاستراتيجية، الاختبار التاريخي، إدارة الأوامر، قابلية إعادة الإنتاج
→ جميع المقالات