تخطَّ إلى المحتوى

ثلاثة أخطاء، ثلاثة اختبارات ناجحة، ولم يُضبط أي منها

رسم بياني للعقد الدائم ETHUSDT على إطار أربع ساعات، مع نافذتَي استرجاع مرسومتين جنبًا إلى جنب، إحداهما 23 شمعة والأخرى 22، أي الطول الذي يحسبه مصدر Pine والطول الذي حسبته إعادة البناء بلغة Python من المعادلة نفسها.
الاسترجاع نفسه، محسوبًا مرتين. يقرّب Pine القيمة 22.5 مبتعدًا عن الصفر فيحصل على 23. ويقرّبها Python 3 إلى العدد الزوجي فيحصل على 22. ولا شيء في أي من اللغتين ينبهك إلى أن العُرف قد تغيّر.

إن سبق أن نقلت مؤشرًا إلى Python كي تختبره على بيانات تاريخية، أو وثقت ببرنامج نصي لأنه جاء مصحوبًا بتحقق، فالحديث هنا عن الفجوة التي يتركها هذان الأمران مفتوحة.

أعدنا بناء ثلاثة من مؤشراتنا كي يتمكن اختبار تاريخي من المرور عليها. احتوت النسخ الثلاث جميعها على ثابت خاطئ. واجتازت الثلاث جميعها عملية التحقق الخاصة بها. ولم يضبط أي اختبار واحدة منها.

لماذا نعيد بناء مؤشر أصلًا

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

في إعادة البناء تلك يكفّ المؤشر بهدوء عن أن يكون المؤشر نفسه.

الخطأ الأعلى كلفة، وهو شمعة واحدة

يُشتق أحد الأطوال داخل Volume Oracle من الإطار الزمني:

target bars   = 36 hours × 60 / 240 minutes = 9
regime length = round(9 × 2.5) = round(22.5)

دالة math.round في Pine تحسم التعادل مبتعدة عن الصفر. وهي تعطي 23. أما دالة round() في Python 3 فتستخدم تقريب المصرفيين، الذي يحسم التعادل باتجاه العدد الزوجي. وهي تعطي 22.

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

تحرك معه كل استرجاع مشتق من ذلك الرقم. وكانت النتيجة في أفضل صفوف مسح من 36 إشارة سندًا:

النسخةالأفضلية على 48 ساعةنسبة الإصابةn
معاد بناؤها، الطول 22+0.423%511216
الصحيحة، الطول 23+0.260%501223

اقتطاع بنسبة 38% بسبب عُرف في التقريب.

ثم سجّلنا الدرس نفسه على نحو خاطئ

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

وبتشغيل الحساب نفسه على كل إطار زمني:

الإطار الزمنيطول النظامطول التدفقالنتيجة
5m45 مقابل 4523 مقابل 22يتباعد
2H45 مقابل 4523 مقابل 22يتباعد
4H23 مقابل 2212 مقابل 11يتباعد
8H53 مقابل 5227 مقابل 26يتباعد
1D18 مقابل 189 مقابل 9تعادل، ويتفق
3D, 1W15 مقابل 158 مقابل 8تعادل، ويتفق

أربعة من ستة عشر، لا واحد.

يسقط من ذلك الجدول أمران لم ينتجهما أي قدر من الاستنتاج.

التعادل وحده لا يكفي. تقع الأطر 1D و3D و1W جميعها على .5 تمامًا وتتفق. فتقريب المصرفيين لا يحرك إلا تعادلًا تكون إجابته بالتقريب لأعلى فردية، ولذلك فإن round(17.5) يساوي 18 في الحالتين. ونحو نصف حالات التعادل جميعها غير ضار، وهذا بالضبط سبب أن فحص واحدة منها على سبيل العينة لا يثبت شيئًا.

قد يصل التباعد متأخرًا بخطوة واحدة. على 5m و2H يتفق الطول الأول عند 45. أما السطر التالي، round(45 × 0.5)، فيساوي 22.5 مرة أخرى، وهذا هو الذي ينقسم. فإن فحصت الثابت الأول ثم مضيت، تكون قد برّأت الإطارين الزمنيين كليهما بغير وجه حق.

الاثنان الآخران، باختصار

Harmonic يوحّد مقياس مذبذب بقصّه إلى نطاق متحرك. في المصدر تُقصّ كل شمعة بنطاقها هي. أما إعادة البناء فكانت تقصّ نافذة كاملة من 200 شمعة باستخدام نطاق الشمعة الحالية، وهذه دالة أخرى. الفارق المقيس عبر 11,497 شمعة: 0.47 نقطة في المتوسط. خطأ نسخ حقيقي بلا أثر جوهري.

وهذا الخطأ ضخّمناه أيضًا قبل أن نقيسه. فقد أُعلن، بمجرد قراءة الشيفرة، أنه شبه المؤكد أنه الانحراف البالغ 9%. وكان الرقم 0.47. الخطأ الحقيقي والخطأ الجوهري ادعاءان مختلفان، ويُقاس المقدار قبل أن يُسمّى الأثر.

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

الجزء الذي يمثل الدرس فعلًا

هذا ما أبلغت به عملية التحقق الخاصة بكل إعادة بناء في حينه.

إعادة البناءفحصها هيما الذي عناه ذلك
Volume Oracle3 من 3 قبلها، 3 من 3 بعدهالم يستطع التمييز بينهما
Harmonic6 من 8 قبلها، 5 من 8 بعدهامنح النسخة المعطوبة درجة أعلى
Plutus Flowلم يُشغَّل قط

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

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

ما الذي ينبغي فعله بدلًا من ذلك

اطبع كل معامل مشتق. كل طول، وكل عتبة، وكل مضاعف. وقارنها بالمصدر سطرًا سطرًا قبل أن تضع درجة لأي شيء.

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

النطاق الصادق

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

رقم 38% هو صف واحد، ومسح واحد، وإطار زمني واحد، وداخل العينة، وهو مقتبس من سجلنا نحن لا مُعاد تشغيله. أما نتيجة التقريب فقابلة لإعادة الإنتاج بأمر واحد، وتصحيحها هو ما كشف أن ملاحظتنا نحن عنها كانت خاطئة طوال شهرين.


قياس سابق لأدواتنا نحن، موصوف بعد وقوعه. ولا شيء هنا توصية ولا مؤشرًا على نتائج مستقبلية.