خصائص الاستراتيجية

لكل استراتيجية Pine عدد من الخصائص التي تحدد سلوكها:

  1. رأس المال الأولي
  2. عملة الأساس
  3. حجم الطلب
  4. البنية الهرمية
  5. عمولة
  6.  تحقق من السعر لأوامر Limit
  7. الانزلاق السعري
  8. الهامش
  9. إعادة الحساب

وهي متوفرة في إعدادات الإستراتيجية ، في علامة التبويب "الخصائص":

يمكن تغيير كل من المعلمات المحددة في خصائص الإستراتيجية عن طريق تحرير وسيطات استدعاء دالة strategy() في نص Pine النصي المقابل:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

دعنا نلقي نظرة على كل معلمة إدخال في قائمة الخصائص والمعلمة المقابلة لها في لغة Pine:

1 - Initial Capital (parameter: initial_capital

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

2 - Base Currency (parameter: currency

يحدد العملة المستخدمة في الحسابات. النتائج التي تظهر في علامة التبويب "اختبار الإستراتيجية" (الربح ، الخسارة ، التراجع ، إلخ) يتم التعبير  عنها بهذه العملة. الخيارات المتاحة هي:

افتراضي ، USD ، EUR ، AUD ، GBP ، NZD ، CAD ، CHF ، HKD ، JPY ، NOK ، SEK ، SGD ، TRY ، ZAR. إذا تم تحديد الخيار الافتراضي ، فستستخدم الإستراتيجية العملة الافتراضية لهذا الرمز ولا يوجد تحويل عملة.

3 - Order Size (parameters: default_qty_value, default_qty_type). 

هذا يتطلب قيمة وطريقة حساب. لاحظ أن القيم المحسوبة يمكن أن تخضع لقيود بسبب الحد الأدنى من الكميات القابلة للتداول للرمز:

  • Contracts (argument: strategy.fixed

ستدخل الإستراتيجية مع العدد المحدد من العقود / الأسهم / اللوتات.

  • Amount in currency (argument: strategy.cash)

ستدخل الإستراتيجية المبلغ المحدد بالعملة الأساسية.

  • Percentage of equity (argument: strategy.percent_of_equity)

سيتم احتساب أحجام المركز كنسبة مئوية من الأسهم المتاحة عند فتح .

4 - Pyramiding (parameter: pyramiding

يحدد الحد الأقصى لعدد المدخلات المتتالية المسموح بها في نفس الاتجاه. 

عندما يتم تعطيل البناء الهرمي للتداولات، يمكن للاستراتيجية فتح مركز واحد شراء أو بيع فقط ، حتى إذا تم استيفاء شروط الدخول. يؤثر البناء الهرمي فقط على الإدخالات التي تم إجراؤها باستخدام دالة Strategy.entry(). ليس له أي تأثير على الأوامر التي تم إنشاؤها باستخدام Strategy.order().

5 - Commission (parameters: commission_type, commission_value).

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

  • Percentage of the transacted value (argument: strategy.commission.percent) 

يفرض عمولة على كل أمر تداول تساوي النسبة المئوية المحددة.

  • Currency per contract (argument: strategy.commission.cash_per_contract

يفرض عمولة على كل عقد.

  • Currency per order (argument: strategy.commission.cash_per_order)

يفرض عمولة على كل أمر تداول.

6 - Verify Price For Limit Orders (parameter: backtest_fill_limits_assumption)

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

7 - Slippage (parameter: slippage)

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

8 - Margin For Long and Short Positions (parameters: margin_long, margin_short

يحدد الهامش لكل صفقة، أي النسبة المئوية للمركز الذي يجب على المتداول تمويله. على سبيل المثال، إذا تم تعيين الهامش لصفقات الشراء على 25٪، يجب أن يكون لدى المتداول أموال كافية لتغطية 25٪ من الصفقة المفتوحة ويمكن أن ينفق ما يصل إلى 400٪ من رأس ماله في كل صفقة.

 

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

 

1. حساب الأموال التي تم إنفاقها، مقدار المال الذي أنفقه المتداول على فتح المركز.

 

حجم المركز * سعر الدخول

  

2. حساب القيمة السوقية للأمن (MVS).

 

حجم المركز * السعر الحالي 

 

3. حساب الربح المفتوح. إذا كان الصفقة بيعًا على المكشوف ، وكان الربح المفتوح رقمًا موجبًا، فيجب أن تظل النتيجة سلبية، لذلك نضرب القيمة المطلقة لحسابنا في -1.

 

ABS (MVS - الأموال المنفقة) * -1

 

4. حساب السيولة، أي الأموال المتاحة للمتداول في الوقت الحالي.

 

رأس المال المبدئي + صافي الربح + الربح المفتوح

 

5. تحويل نسبة الهامش إلى معدل الهامش.

 

نسبة الهامش / 100

 

6. حساب الهامش، أي المبلغ المحدد من المال اللازم لتغطية الجزء الخاص بهم من المركز المفتوح.

 

MVS * نسبة الهامش

 

 

7. حساب الأموال المتاحة، أي مبلغ الأموال المفقودة التي لا يستطيع المتداول تغطيتها برصيده الحالي.

 

رأس المال - الهامش

 

 

8. حساب المبلغ الإجمالي للمال الذي خسره المتداول.

 

الأموال المتاحة / نسبة الهامش

 

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

 

اقتطاع (الخطوة رقم 8 / السعر الحالي)

 

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

 

الخطوة رقم #9 * 4

 

 

لفحص هذا الحساب بالتفصيل، دعنا نضيف استراتيجية Supertrend المدمجة إلى الرسم البياني لشركة NASDAQ:TSLA على الإطار الزمني 1D. اضبط حجم الأمر على 300٪ من رأس المال والهامش لمراكز الشراء على 25٪.

حدث أول دخول لنا عند افتتاح العمود في 16 سبتمبر 2010. نشتري 682438 وحدة (حجم المركز) مقابل 4.43 دولار أمريكي (سعر الدخول). ثم، في 23 سبتمبر 2010، عندما كان السعر عند 3.9 (السعر الحالي)، تمت تصفية 111052 وحدة بالقوة عن طريق نداء الهامش.

 

 

 

1. النقود المُنفقة: 682438 * 4.43 = 3023200.34

 

2. MVS: 682438 * 3.9 = 2661508.2

 

3. أرباح المرك: -361692.14

 

4. رأس المال: 1000000 + 0 − 361692.14 = 638307.86

 

5. نسبة الهامش: 25 * 100 = 0.25

 

6. الهامش 2661508.2 * 0.25 = 665377.05

 

7. الأموال المتاحة 638307.86 - 665377.05 = -27069.19

 

8. الخسارة: -27069.19 * 0.25 = -108276.76

 

9. الأسهم لتغطية الخسارة: اقتطاع (-108276.76 / 3.9) = اقتطاع (-27763.27) = -27763

 

10. حجم نداء الهامش -27763 * 4 = - 111052

9 - Recalculate 

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

الخيارات أدناه ، يمكن أيضًا إعادة حسابها: 

  • After Order is Filled (parameter: calc_on_order_fills)

يسمح للإستراتيجية بإجراء حساب إضافي لأمر داخل العمود مباشرة بعد تنفيذ الأمر. يحدث هذا الحساب الإضافي على كل من الأعمدة التاريخية والحالية.

  • On Every Tick (parameter: calc_on_every_tick
  1. بشكل افتراضي، تحسب الاستراتيجيات فقط عند إغلاق الأعمدة البيانية في الوقت الفعلي. تسمح هذه المعلمة للإستراتيجية بالحساب عند كل تحديث للأعمدة الوقت الفعلي ، كما تفعل الدراسة. لاحظ أنه يتم فقد بيانات التجزئة عند تحديث الرسم البياني، لذلك ستتم إعادة رسم الاستراتيجيات التي تستخدم هذا الخيار. لا تؤثر هذه المعلمة على سلوك الاستراتيجيات على الأعمدة التاريخية. لاحظ أيضًا أن الاستراتيجيات التي تستخدم هذه الميزة لن تظهر نتائج واقعية على الأعمدة البيانية التاريخية ، لأنها لا تحتوي على بيانات التيك tick data .