لقد نجحت في إضافة إستراتيجية إلى الرسم البياني، لكنها لا تنشئ أي أوامر
إذا كانت التبويبتان "قائمة الصفقات" و "نظرة عامة" في "اختبار الإستراتيجية" تعرض "لا توجد بيانات" بعد إضافة إستراتيجية إلى الرسم البياني، فمن المحتمل أنها لا تحاكي أي أوامر، مما ينتج عنه عدم وجود بيانات لإضافتها للتبويبات. إذا كان نصك البرمجي لا يقوم بإنشاء أوامر، فقد يرجع ذلك إلى أحد الأسباب التالية:
لا يتم تصنيف النص البرمجي كاستراتيجية أو لا يستخدم الأوامر التي تنشئ أوامر
لا يعمل الاختبار العكسي مع Strategy Tester إلا مع إستراتيجيات Pine Script™، التي تستخدم الدالة `strategy()` لبيان الإعلان الخاص بها. لا يمكن أن تتفاعلالنصوص البرمجية التي تم الإعلان عنها باستخدام indicator() أو library()مع وحدة Strategy Tester.
يجب أن تستخدم النصوص البرمجية المُعلنة كاستراتيجيات أوامر وضع الأوامر `strategy.*` (على سبيل المثال،strategy.order() أوstrategy.entry() ) لمحاكاة الأوامر وعرض البيانات في أداة اختبار الاستراتيجية، بغض النظر عن أي إشارات شراء/بيع أخرى قد يكون مؤلف النص البرمجي قد أدرجهافي الكود.
لا تملك الإستراتيجية رأس مال كافٍ لفتح مركز
لكي تفتح إستراتيجية مركزا، يجب أن يكون لديها ما يكفي من المال لشراء العدد المحدد من العقود/الحصص/الأسهم/الوحدات. لن تدخل في صفقة إذا لم يكن لديها رأس مال كافٍ لتغطية التكلفة. على سبيل المثال، إذا كان رأس المال الأولي للإستراتيجية هو 1000 دولار أمريكي وكان حجم الأمر عقدًا واحدًا، فلا يمكن دخول المركز إلا إذا انخفض سعر الأصل عن 1000 دولار أمريكي نظرًا لأنه لا يمكنه تحمل تكلفة الصفقة بأكملها. ستحاول الإستراتيجيات دائمًا شراء العدد المحدد من العقود/الأسهم/الحصص/الوحدات وليس أقل من ذلك.
ملاحظة مهمة حول الاختبار العكسي للعقود الآجلة:
عادةً ما تحتوي رموز العقود الآجلة على ما يُعرف بوحدة العقد (يتم تمثيلها بقيمة النقطة على TradingView ويمكن الوصول إليها في Pine عبرsyminfo.pointvalue المتغير). يمثل السعر على الرسم البياني سعر وحدة واحدة من السلعة المتداولة مثل الرموز الأخرى. ومع ذلك، فإن العقود الآجلة لها كمية محددة يمثلها كل منها، لذا فإن شراء وحدة واحدة غير ممكن عادةً. لحساب رأس المال المطلوب لعقد ما، اضرب سعر الرسم البياني في قيمة النقطة.
لتوضيح تأثيرات قيمة النقطة على الاستراتيجيات التي تعمل على العقود الآجلة، دعنا نلقي نظرة على الرمز CME_MINI:ES1!، الذي يمثل عقد ES الآجل مع أفضل سيولة والذي له قيمة 50 نقطة:

في المثال أدناه، أدخلت الإستراتيجية التي أضفناها إلى الرسم البياني مركزًا عند 4000 دولار أمريكي بالضبط وخرجت عند 4500 دولار أمريكي. كان المبلغ الذي تم إنفاقه على العقد بسعر الدخول 4000 دولار أمريكي ضعف قيمة النقطة 50، أي 200000 دولار أمريكي. عندما أغلقت الاستراتيجية مركزها عند الخروج، كان المبلغ المستلم 4500 دولار أمريكي * 50 = 225000 دولار أمريكي، مما أدى إلى ربح 25000 دولار أمريكي، وهو ما يمكننا تأكيده من خلال مشاهدة عمود "الربح" في التبويبة "قائمة التداولات" في اختبار الإستراتيجية:

إذا كانت الإستراتيجية تحتوي على قيمة رأس مال مبدئي أقل من 200000 دولار أمريكي في هذه الحالة، فلن تكون قادرة على وضع الأمر لأنها لا تستطيع تحمل سعر الدخول، والذي يمثل 50 ضعف للسعر الموضح على الرسم البياني. لمحاكاة المركز، يجب علينا زيادة رأس المال الأولي أو خفض قيم هامش الشراء/البيع على المكشوف للسماح للاستراتيجية بالعمل.
تقوم الإستراتيجية بإرجاع خطأ تشغيل
إذا واجهت الإستراتيجية مشكلة أثناء حساباتها، فسوف تظهر خطأ وقت التشغيل وتعرض علامة تعجب حمراء في الزاوية العلوية اليسرى من جزء الرسم البياني الذي يحتوي على الإستراتيجية. تمنع أخطاء التشغيل النص البرمجي من متابعة العمليات الحسابية، لذلك لا يمكنه محاكاة الاوامر. أخطاء التشغيل المختلفة في Pine لها أسباب مختلفة وإصلاحات محتملة. سيؤدي النقر فوق علامة التعجب إلى إظهار رسالة خطأ النص البرمجي.
لم يتم استيفاء الشروط المطلوبة لوضع أوامر الإستراتيجية
أحد الأسباب المحتملة لعدم عرض الإستراتيجية أي بيانات هو عدم وجود شرط أدى إلى تشغيل أمر في نطاق الاختبار. في هذه الحالة، لن يكون هناك إدخالات على الرسم البياني لأنه لا توجد أوامر لتنفيذها. يمكن للمستخدمين إصلاح هذا عن طريق تغيير الشروط في كود المصدر للاستراتيجية. قد يكون من المفيد غالبًا إجراء فحص لتاريخ شروط أمر الإستراتيجية عن طريق رسمها على الرسم البياني.
يستخدم النص البرمجي أدناه plotshape()وظيفة Pine لرسم تقاطعات زرقاء وحمراء فوق الأشرطة عند حدوث الشروط الطويلة والقصيرة، مما يسمح لنا بفحص تاريخها على الرسم البياني:
//@version=6
strategy('My Strategy', overlay = true)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))if longCondition strategy.entry('Long', strategy.long)plotshape(longCondition, color=color.new(color.blue, 0))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))if shortCondition strategy.entry('Short', strategy.short)plotshape(shortCondition, color=color.new(color.red, 0))
Java
للحصول على معلومات إضافية حول هذا الموضوع، راجع صفحة دليل المستخدم الخاصة بنا حول تصحيح الأخطاء.
خصائص الإستراتيجية غير صحيحة
تحتوي كل إستراتيجية على العديد من المعلمات التي تحكم قواعد فتح الأوامر. يمكن للمبرمجين تعيين هذه المعلمات في كود المصدر للاستراتيجية، ويمكن للمستخدمين تجاوزها بالمدخلات في التبويبة "الخصائص" في إعدادات الإستراتيجية.
ملاحظة: هناك عدة أماكن في كود المصدر للاستراتيجية حيث يمكن للمستخدمين تعيين عدد العقود/الأسهم/الحصص/الوحدات لأوامرها:
- تسمحالمعلمات في وظيفةstrategy ()للمستخدمين بتعيين كمية التجارة الافتراضية ونوعها، والتي تحدد القيم الافتراضية في علامة التبويب «الخصائص». يمكن للمستخدمين تجاوز هذه القيم عن طريق ضبط مدخلات "حجم الأمر".
- يمكنلأوامر وضع الأوامر التي تنتج أوامر الدخول، مثل strategy.entry()، تعيين كمية التداول على أساس كل أمر على حدة. في هذه الحالة، لن تؤثر التغييرات التي يتم إجراؤها على الإدخال في التبويبة "خصائص" على حجم أمر الإستراتيجية.
يجب على المستخدمين التأكد من تحديد أحجام أوامر استراتيجياتهم بشكل صحيح. للإضافة إلى "لا تملك الإستراتيجية رأس مال كافٍ لفتح مركزأعلاه، يجب ملاحظة ما يلي:
- إذا تم تعيين «نوع الأمر» للاستراتيجية على «العقود» (ما يعادل `default_qty_type` في الكود المصدري)، يجب أن يكون حجم الأمرأكبر من 1 لمعظم الرموز.strategy.fixed بعض العملات الرقمية تسهل الأحجام الصغرى. على سبيل المثال، حجم أمر 0.1 صالح لـ BTCUSD ولكن ليس لـ AAPL أو EURUSD.
- يجب أن يكون حجم الأمر موجبًا؛ سوف تتسبب الأرقام السالبة في حدوث أخطاء في التشغيل، ولن يكون للقيمة 0 أي تأثير.
- لا يمكن أن يتجاوز حجم المركز الإجمالي (عدد العقود) 1e12. لن تحاكي الإستراتيجيات الأوامر الجديدة إذا تجاوز حجم المركز هذا الرقم.