نُشر بوصفه فكرة TradingView حول ETHUSDT. عرض الرسم البياني على TradingView
إن سبق أن نقلت مؤشرًا إلى 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% | 51 | 1216 |
| الصحيحة، الطول 23 | +0.260% | 50 | 1223 |
اقتطاع بنسبة 38% بسبب عُرف في التقريب.
ثم سجّلنا الدرس نفسه على نحو خاطئ
قالت الملاحظة التي كتبناها إن الأمر يحدث على إطار 4H فقط. كُتبت انطلاقًا من الإطار الزمني الوحيد الذي صادف أنه كان تحت الاختبار، وبقيت كذلك شهرين.
وبتشغيل الحساب نفسه على كل إطار زمني:
| الإطار الزمني | طول النظام | طول التدفق | النتيجة |
|---|---|---|---|
| 5m | 45 مقابل 45 | 23 مقابل 22 | يتباعد |
| 2H | 45 مقابل 45 | 23 مقابل 22 | يتباعد |
| 4H | 23 مقابل 22 | 12 مقابل 11 | يتباعد |
| 8H | 53 مقابل 52 | 27 مقابل 26 | يتباعد |
| 1D | 18 مقابل 18 | 9 مقابل 9 | تعادل، ويتفق |
| 3D, 1W | 15 مقابل 15 | 8 مقابل 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 Oracle | 3 من 3 قبلها، 3 من 3 بعدها | لم يستطع التمييز بينهما |
| Harmonic | 6 من 8 قبلها، 5 من 8 بعدها | منح النسخة المعطوبة درجة أعلى |
| Plutus Flow | لم يُشغَّل قط | — |
الصف الأوسط هو الذي يستحق التأمل. فقد فضّلت عملية التحقق الشيفرة الخاطئة. ولو تركنا الفحص يقرر، لأعادنا بالحجة إلى داخل الخطأ.
عملية تحقق تقارن قيمة مخرجات واحدة لا يمكنها اكتشاف ثابت مدخلات خاطئ. المخرجات غربال أخشن مما يلزم. فمجموعات معاملات خاطئة كثيرة ومختلفة تنتج اليوم تسمية النظام نفسها، وحالة التقاطع نفسها، واللون نفسه على الرسم البياني. وهي تختلف على شموع لا تنظر إليها في هذه اللحظة، وهناك بالضبط يعيش الاختبار التاريخي.
ما الذي ينبغي فعله بدلًا من ذلك
اطبع كل معامل مشتق. كل طول، وكل عتبة، وكل مضاعف. وقارنها بالمصدر سطرًا سطرًا قبل أن تضع درجة لأي شيء.
أبقِ على فحص المخرجات. فهو يضبط صنفًا آخر من الأخطاء وهو ضروري. غير أنه أبعد ما يكون عن الكفاية، وقد مرّت هذه الثلاثة جميعها من أمامه دون أن يمسّها.
النطاق الصادق
كانت شيفرة Pine صحيحة في الحالات الثلاث. والخطأ كان في الجهاز الذي بُني لاختبارها، وهذه هي الصيغة الأكثر إزعاجًا للمشكلة: انحرف جهاز القياس، وقال فحصه الذاتي إنه لم ينحرف.
رقم 38% هو صف واحد، ومسح واحد، وإطار زمني واحد، وداخل العينة، وهو مقتبس من سجلنا نحن لا مُعاد تشغيله. أما نتيجة التقريب فقابلة لإعادة الإنتاج بأمر واحد، وتصحيحها هو ما كشف أن ملاحظتنا نحن عنها كانت خاطئة طوال شهرين.
نُشر بوصفه فكرة TradingView حول ETHUSDT. عرض الرسم البياني على TradingView
قياس سابق لأدواتنا نحن، موصوف بعد وقوعه. ولا شيء هنا توصية ولا مؤشرًا على نتائج مستقبلية.