מאפייני אסטרטגיה
לכל אסטרטגיה של Pine יש מספר מאפיינים הקובעים את התנהגותה:
- הון ראשוני
- מטבע בסיס
- גודל הוראה
- פירמידה
- עמלה
- אימות מחיר להוראות מוגבלות
- החלקה
- מרג'ין
- חישוב מחדש
- דיוק בבקטסטינג
הם זמינים בהגדרות האסטרטגיה, בכרטיסיית מאפיינים
ניתן לשנות כל אחד מהפרמטרים שצוינו במאפייני האסטרטגיה על ידי עריכת הארגומנטים של קריאת הפונקציה 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) מייצג את כמות הכספים הזמינים בתחילה לאסטרטגיה לסחר, במטבע המוגדר במטבע בסיס. כברירת מחדל, ערך זה שווה ל 100,000. יתכן שתצטרך להעלות ערך זה כדי שעסקאות יתרחשו על סמלים מסוימים.
2 - מטבע בסיס (פרמטר: מטבע) מציין את המטבע המשמש לחישובים. התוצאות המופיעות בכרטיסייה בודק אסטרטגיה (רווח, הפסד, משיכה וכו ') באות לידי ביטוי במטבע זה. האפשרויות הזמינות הן:
- ברירת מחדל, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. אם בחרת ברירת מחדל, האסטרטגיה תשתמש במטבע ברירת המחדל עבור סמל זה ואין המרת מטבע.
3 - גודל הוראה (פרמטרים: default_qty_value, default_qty_type). זה דורש ערך ומצב חישוב. שים לב שהערכים המחושבים יכולים להיות כפופים למגבלות עקב הכמויות המינימליות הסחירות של הסמל:
- חוזים (ארגומנט: אסטרטגיה קבועה) - האסטרטגיה תיכנס עם המספר שצוין של חוזים / מניות / מגרשים.
- סכום במטבע (ארגומנט: strategy.cash) - האסטרטגיה תזין את הסכום שצוין במטבע הבסיס.
- אחוז ההון (ארגומנט: strategy.percent_of_equity) - גודל המיקום יחושב כאחוז מההון העצמי הזמין עם פתיחת המסחר. ניתן לציין ערך העולה על 100%.
4 - פירמידה (פרמטר: פירמידה) מציין את המספר המרבי של ערכים עוקבים המותרים באותו כיוון. כאשר פירמידה מושבתת, האסטרטגיה יכולה לפתוח רק עמדה ארוכה או קצרה אחת, גם אם מתקיימים תנאי כניסה. פירמידה משפיעה רק על ערכים שנעשו באמצעות הפונקציה strategy.entry (). אין לזה השפעה על הזמנות שנוצרו באמצעות strategy.order ().
5 - עמלה (פרמטרים: Commission_type, Commission_value). זהו הסכום המשולם בדמי המסחר עבור כל עסק. יש לספק מצב ערך וחישוב. שים לב כי העמלה מוחלת הן על ערכים והן על אקזיטים, וכי כאשר משתמשים באחוזים, העמלה המחושבת תשתנה עם ערך העסקה:
- אחוז מהערך המבוצע (טיעון: strategy.commission.percent) - מטיל עמלה על כל הוראה השווה לאחוז שצוין.
- מטבע לחוזה (טיעון: strategy.commission.cash_per_contract) - מטיל עמלה על כל חוזה.
- מטבע להוראה (טיעון: strategy.commission.cash_per_order) - מטיל עמלה על כל הוראה.
6 - אימות מחיר להוראות מגבלות (פרמטר: backtest_fill_limits_assumption) מחמיר את התנאים לכניסה לתפקיד באמצעות הזמנות הגבלה. כברירת מחדל, ערך זה הוא 0, כלומר הזמנות מגבלה ממלאות על נתונים היסטוריים ברגע שהמחיר המצוין בהזמנה מגיע. אם הפרמטר אינו אפס, אזי הזמנות הגבלה יכולות להזין מיקום בתוך הסרגל רק אם מחיר השוק חרג ממספר הסימונים שצוין עבור רמת הזמנת הגבול.
7 - החלקה (פרמטר: slippage) מציין את הערך בטיקים שיש להוסיף למחיר המילוי של הוראות שוק או סטופים. בעזרתו ניתן להסביר את הספרד.
8 - מרג'ין לפוזיציות שורט/לונג (Long/Short) (פרמטרים: margin_long, margin_short) מציין את המרג'ין לכל עסקה, כלומר, אחוז הפוזיציה שעל הסוחר לממן. לדוגמה, אם המרג'ין לפוזיציות לונג מוגדר ל-25%, לסוחר צריך להיות מספיק כסף כדי לכסות 25% מהעיסקה הפתוחה והוא יכול להוציא עד 400% מההון שלו על כל עסקה. אם נפתחה עסקה והיא מתחילה להיות מופסדת עד כדי כך שהכספים של הסוחר לא מספיקים לכסות את החלק שלו בעסקה, מתרחשת קריאת מרג'ין והיא סוגרת בכוח חלק מהפוזיציה המקורית. תוכל ללמוד עוד על תכונה זו וכיצד היא מחושבת במאמר זה במרכז התמיכה.
אם עסקה נפתחה והיא מתחילה להפסיד כסף במידה שבה הכספים של הסוחר אינם מספיקים כדי לכסות את חלקו בעסקה, מתרחשת קריאת מרג'ין ומחסלת בכוח חלק מהפוזיציה המקורית. המספר המדויק של היחידות שיחוסלו הוא פי 4 מהסכום שנדרש כדי פשוט לכסות את ההפסד.
זה מחושב באמצעות האלגוריתם הבא:
1. חשב את הכסף שהוצא, סכום הכסף שהסוחר הוציא על פתיחת הפוזיציה.
גודל פוזיציה * מחיר כניסה
2. חשב את ערך השוק של נייר הערך(MVS).
גודל פוזיציה * מחיר נוכחי
3. חשב את המרג'ין הפתוח. אם כיוון המסחר שורט ומרג'ין פתוח הוא מספר חיובי, התוצאה עדיין צריכה להיות שלילית, אז נכפיל את הערך המוחלט של החישוב שלנו ב-1.
ABS(MVS - כסף שהוצא) * -1
4. חשב את ההון העצמי, כלומר, הכסף העומד לרשות הסוחר ברגע הנוכחי.
הון ראשוני + רווח נקי + רווח פתוח
5. המר את אחוז המרג'ין ליחס המרג'ין.
אחוז מרג'ין/ 100
6. חשב את ה-מרג'ין, כלומר את הסכום המדויק של הכסף הדרוש לכיסוי החלק שלהם בפוזיציה הפתוחה.
MVS * יחס המרג'ין
7. חשב את הכספים הזמינים, כלומר את כמות הכסף האבוד שהסוחר לא יכול לכסות בהון העצמי הנוכחי שלו.
הון עצמי - מרג'ין
8. חשב את סכום הכסף הכולל שהסוחר הפסיד.
כספים זמינים / יחס מרג'ין
9. חשב כמה יחידות יצטרך הסוחר למכור כדי לכסות את ההפסד. הערך נחתך לאותה נקודה עשרונית כמו גודל החוזה המינימלי עבור הסימול הנוכחי.
TRUNCATE (שלב #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. מניות לכיסוי ההפסד: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763
10. גודל קריאת המרג'ין: -27763 * 4 = - 111052
9 - אפשרויות חישוב מחדש מציינות באיזו תדירות יש לחשב מחדש את האסטרטגיה. כברירת מחדל, האסטרטגיה מחושבת מחדש בסיום כל בר, אך באמצעות האפשרויות הבאות ניתן לחשב אותה מחדש:
- לאחר מילוי הפקודה (פרמטר: calc_on_order_fills) - מאפשרת לאסטרטגיה לבצע חישוב הזמנה תוך-בר נוסף מיד לאחר מילוי הפקודה. חישוב נוסף זה מתרחש גם בבריםהיסטוריים וגם בזמן אמת
- שימוש ב-OHLC סטנדרטי (פרמטר: fill_orders_on_standard_ohlc) מאלץ אסטרטגיות הפועלות על גרפי Heikin Ashi למלא פקודות באמצעות מחירי OHLC בפועל, לקבלת תוצאות מציאותיות יותר. כברירת מחדל, סקריפטים של אסטרטגיה ממלאים פקודות באמצעות מחירי הגרף, בלי קשר לסוג הגרף. לגרפים של Heikin Ashi, הגדרה זו מונעת שימוש במחירים סינתטיים שעלולים לא להתאים למציאות. לדוגמה, האסטרטגיה הזו שיישמנו על הגרף היומי של NASDAQ:AAPL Heikin Ashi מילאה פקודה ב-2023-09-25 במחיר סינתטי של 175.61 דולר. יחד עם זאת, לאחר הפעלת האפשרות "שימוש ב-OHLC סטנדרטי", אותה פקודה התמלאה במחיר הגרף הסטנדרטי של 174.20 דולר.