WeCore
מסחר אלגוריתמי

בקטסט ב-Pine Script: איך קוראים נכון את ה-Strategy Tester

מדריך מעשי לבקטסט ב-Pine Script: הגדרות האסטרטגיה, עמלה וסליפג', איך הפילים מדומים, מילון מדדים וההטיות שמעוותות תוצאות בדיקה היסטורית.

WeCore·פורסם ·7 דק׳ קריאה

בקטסט ב-Pine Script הוא הרצה של סקריפט אסטרטגיה על נרות היסטוריים, ורשימה של העסקאות שהיו נוצרות. ה-Strategy Tester של TradingView מאפשר להתחיל בקלות, ולהבין לא נכון באותה קלות. הדוח נראה מדויק, אבל כל מספר בו תלוי בהגדרות, בניחוש של הסימולטור מה קרה בתוך כל נר, ובהנחות שנתתם לו. במדריך הזה נעבור על האופן שבו מגדירים בקטסט ב-Pine Script, מה כל חלק בדוח מודד באמת, ואילו הטיות גורמות לתוצאות להיראות טובות מכפי שהן.

זה מדריך קריאה, לא הבטחה שאסטרטגיה כלשהי תתנהג בצורה מסוימת. על השאלה הרחבה למה תוצאות חיות שונות מבדיקה, ראו בקטסט מול מסחר חי, ועל המלכודת הסטטיסטית של כוונון סקריפט עד שהוא מתאים לעבר ראו התאמת יתר באסטרטגיות מסחר. כאן אנחנו נשארים אצל הכלי עצמו.

מהו ה-Strategy Tester

TradingView מתארת אסטרטגיות כסקריפטים ב-Pine Script שיכולים לשלוח, לשנות, לבצע ולבטל פקודות קנייה ומכירה, ואת הבקטסט כשחזור פעולת האסטרטגיה על נתונים היסטוריים. פורוורד-טסט משחזר אותה בזמן אמת בזמן שהגרף מתרענן. ה-Strategy Tester (או Strategy Report) מציג את הפלט בלשוניות: סקירה, סיכומי ביצועים ועסקאות, ורשימת עסקאות.

הרעיון המרכזי: הכלי הוא סימולציה שמריץ מדמה ברוקר, לא תיעוד של משהו שבוצע בפועל. המדמה פועל לפי כללים שכתובים בתיעוד של Pine Script, והתוצאות ריאליות רק במידה שהכללים וההגדרות שלכם ריאליים.

הגדרות שמשנות את התוצאה

פתחו את הגדרות האסטרטגיה והיכנסו ללשונית Properties. לפי דף העזרה של TradingView על מאפייני אסטרטגיה, הפקדים העיקריים הם:

  • Initial capital ומטבע בסיס. היתרה ההתחלתית של הסימולציה. האחוזים בדוח יחסיים אליה.
  • Order size. כמות קבועה, סכום במטבע, או אחוז מההון. בחוזים עתידיים, מספר חוזים קבוע הוא האפשרות השקופה ביותר כי כך שולחים פקודה בפועל.
  • Commission. אפשר להגדיר כאחוז משווי העסקה, סכום קבוע לחוזה או סכום קבוע לפקודה. ברירת המחדל היא אפס, וזה מייפה כל תוצאה.
  • Slippage. נמדד בטיקים ונוסף למחיר הביצוע של פקודות שוק ופקודות סטופ.
  • Verify price for limit orders. כשהאפשרות פעילה, השוק צריך לעבור את הלימיט שלכם במספר טיקים לפני שהפקודה מתמלאת. זו הנחה זהירה יותר.
  • Margin. אחוז משווי הפוזיציה שחייבים לממן.
  • אפשרויות חישוב מחדש. חישוב אחרי מילוי פקודה, או בכל טיק. דף העזרה מציין שחישוב בכל טיק גורם ל-repainting על נתונים היסטוריים.
  • Fill orders. אפשרות ה-bar magnifier משתמשת במחירים מטווח זמן נמוך יותר כדי למקם מילויים בצורה ריאלית יותר בנרות היסטוריים, ואפשרות Standard OHLC כופה מחירים אמיתיים כשהגרף הוא Heikin Ashi.

התיעוד של Pine Script מוסיף שה-bar magnifier (הפרמטר `use_bar_magnifier`) זמין רק בחלק מהמסלולים בתשלום, אז בדקו את המסלול שלכם לפני שאתם נשענים עליו. ל-Deep Backtesting יש אזכור בתיעוד TradingView כדרך לשמור את כל היסטוריית העסקאות ולא רק 9,000 העסקאות האחרונות, אבל לא הצלחנו לאמת אילו מסלולים כוללים אותו נכון ל-11 באוקטובר 2026, ולכן בדקו בדפי המחירים והעזרה העדכניים של TradingView.

צ'קליסט הגדרות מינימלי

  1. הגדירו עמלה לפי מה שהברוקר והבורסה גובים בפועל לחוזה לכל צד.
  2. הגדירו סליפג' של טיק אחד לפחות לפקודות שוק וסטופ, והתייחסו לכל מספר כהנחה שצריך לבדוק בחי.
  3. השתמשו במספר חוזים קבוע שמתאים למה שהייתם סוחרים באמת.
  4. החליטו אם פקודות לימיט צריכות מעבר מחיר דרך הרמה לפני מילוי.
  5. השתמשו בסימבול ובטווח הזמן של הגרף שתאטמטו בפועל.

איך מדמים מילויים

התיעוד של Pine Script מסביר שהמדמה ממלא פקודות בנרות היסטוריים לפי נתוני הגרף. הוא לא רואה טיקים בתוך הנר, ולכן הוא מניח מסלול: אם הפתיחה קרובה לגבוה יותר מאשר לנמוך, הוא מניח את הרצף פתיחה, גבוה, נמוך, סגירה, ולהפך בכיוון ההפוך. פקודות מבוססות מחיר מניחות שאין פערים בתוך נר, ופקודה שהפער חוצה אותה מתמלאת בפתיחת הנר הבא. פקודות שוק מתמלאות בהזדמנות הבאה, ובנרות היסטוריים זו בדרך כלל פתיחת הנר הבא.

שתי השלכות:

  • אם הסטופ והיעד שלכם נמצאים באותו נר, הדוח יכול רק לנחש מה נגע קודם. תצוגה בטווח נמוך יותר או ה-bar magnifier מקטינים את הניחוש אבל לא מבטלים אותו.
  • מחיר שהשוק הציג לרגע בלבד נחשב כמילוי. תורים אמיתיים, מילויים חלקיים ונזילות דקה לא מדומים, ולכן סליפג' ועלויות ביצוע חשובים יותר ממה שרוב הדוחות מודים.

נרות היסטוריים מול נר חי

בנרות היסטוריים הסקריפט רואה ערכי פתיחה, גבוה, נמוך וסגירה סופיים. בנר החי הערכים משתנים בכל טיק עד לסגירה. סקריפט שמתנהג אחרת בהיסטוריה ובזמן אמת הוא שורש רוב התלונות על repainting. התראות אסטרטגיה מוסיפות נקודה נוספת: הן יורות רק על פקודות שנוצרו בזמן אמת, לא על נרות היסטוריים, ולכן ההיסטוריה בטסטר ומה שהתראה הייתה שולחת אף פעם לא זהים.

מילון המדדים העיקריים

השתמשו בהם כאוצר מילים, לא כיעדים. המספרים בדוח שלכם לא אומרים כלום בלי ההגדרות שלמעלה ובלי מדגם סביר.

מדדמה הוא מודדמה לשאול
רווח נקי / סך P&Lהתוצאה המצטברת בתקופת הבדיקה, עם אחוז מההון ההתחלתיהאם עמלה וסליפג' הופעלו? האם עסקה אחת אחראית לרוב התוצאה?
ירידה מקסימלית (Max drawdown)הירידה הגדולה מפסגה לשפל בהון בתקופת הבדיקההאם נמדדת על עסקאות סגורות בלבד או כולל הפסדים פתוחים? האם הייתם עומדים בה בחשבון חי?
אחוז עסקאות רווחיותחלק העסקאות הסגורות שהסתיימו ברווחאחוז גבוה לבדו לא אומר כלום; חשוב היחס בין הרווח הממוצע להפסד הממוצע
יחס רווח גולמי להפסד גולמיסך הסכומים הרווחיים חלקי סך ההפסדיםשביר במדגם קטן ורגיש לעסקת קצה אחת
עסקה ממוצעתהתוצאה הממוצעת לעסקה סגורההשוו לעלות ריאלית לעסקה
מספר עסקאותגודל המדגםמעט עסקאות פירושו שהמדדים האחרים הם רעש
Max run-upהעלייה הגדולה מתחתית לפסגההקשר שימושי לירידה, לא ציפייה
השוואה לקנה-והחזקבסיס של החזקת הנכס בלבדלא מדד הוגן לאסטרטגיה שרוב הזמן מחוץ לשוק

חשבון היפותטי על עלויות

כדי להבין למה הגדרת עמלה חשובה, ניקח מספרים עגולים שהומצאו. נניח שאסטרטגיה מבצעת 1,000 עסקאות סיבוב מלא בבדיקה, והעלות האמיתית הכוללת היא 4 דולר לסיבוב. העלויות יסתכמו ב-4,000 דולר על המדגם. אם בבדיקה העמלה נשארה אפס, 4,000 הדולרים האלה פשוט לא יופיעו בדוח. המספרים מומצאים להמחשה ואינם מתארים אסטרטגיה אמיתית.

הטיות שמייפות בקטסט

Repainting

התיעוד של Pine Script מגדיר repainting כהתנהגות סקריפט שגורמת לחישובים או לציורים היסטוריים ולאלה של זמן אמת להיות שונים. מקורות נפוצים: ערכים שמשתנים בנר הפתוח, `request.security()` שמחזיר ערכים לא מאושרים בנר החי, וציור פיבוטים או תוויות על נרות עבר אחרי שזוהו. אות שמופיע בגרף בדיעבד לא היה זמין באותו רגע.

הצצה לעתיד (look-ahead)

שימוש בנתוני עתיד בנרות היסטוריים קורה בעיקר בבקשות מטווח זמן גבוה יותר. התיעוד מזהיר מפני lookahead בלי היסט, כי הוא מדליף מידע מנרות שעוד לא נסגרו. אם אסטרטגיה נראית טוב רק כש-look-ahead פעיל, התוצאה מתארת את העתיד ולא אות שאפשר לסחור בו.

התאמת יתר

ניסוי של הרבה צירופי פרמטרים ושמירת הטוב ביותר יוצר התאמה לעבר. זו משמעת נפרדת, וכדאי לקרוא את המדריך הייעודי שלמעלה; כאן מספיק לומר שעוד כוונונים משפרים את מראה הדוח ולא את מהימנות החשבון החי.

הטיית הישרדות, מדגם ותקופה

בדיקה על חלון קצר, על תנאי שוק אחד או על חוזה אחד עלולה להטעות. בחוזים עתידיים יש גם גלגול חוזים, ולכן בדקו איך נבנה הגרף הרציף שעליו אתם בודקים, כפי שמוסבר בגלגול חוזים עתידיים.

צ'קליסט לפני שסומכים על דוח

  1. עמלה וסליפג' מוגדרים, ואתם יודעים להסביר מאיפה כל מספר.
  2. מספר העסקאות גדול מספיק כך שהוצאת שלוש העסקאות הטובות כמעט לא משנה את התמונה.
  3. הסקריפט משתמש בנתוני נר מאושרים בלבד (למשל פעולה בסגירת נר) וללא look-ahead.
  4. התוצאות יציבות כשמזיזים פרמטרים מעט, ולא רק בערך אחד.
  5. הבדיקה מכסה תנאי שוק שונים, ובחנתם נתונים מחוץ למדגם.
  6. השוויתם את רשימת העסקאות לגרף בכמה ימים בעין.
  7. לאחר מכן הרצתם את האסטרטגיה בחשבון סימולציה בזמן אמת לפני כל גודל חי.

איפה WeCore נכנסת

WeCore לא מחליפה את ה-Strategy Tester, היא ממשיכה אחריו. אם בניתם סקריפט משלכם ב-TradingView, אפשר לחבר את ההתראות שלו לחשבון הברוקר או חברת הפרופ שלכם, להפעיל מגבלות סיכון שאתם קובעים, ולהריץ קודם במצב סימולציה כדי להשוות התנהגות בזמן אמת לבדיקה. בתוך אפליקציית WeCore, ה-Strategy Builder (תחת Tools, ודורש מסלול Start, Prop או Fleet פעיל) יכול להפוך את החוקים שכתבתם לאסטרטגיה ולבדוק אותה היסטורית על נתונים שמורים, עם עמלה וללא סליפג', באופן היפותטי ובלי ערובה לעתיד. אם אתם מעדיפים לוגיקה מוכנה, עמוד האסטרטגיות של WeAlgo מתאר מה קיים. אפשר לראות את המסלולים או לפתוח חשבון ולהתחיל במצב סימולציה. לפני שעוברים לחי כדאי לקרוא איך מגדירים מגבלות סיכון ב-WeCore.

שאלות נפוצות

איך פותחים את ה-Strategy Tester ב-TradingView?

מוסיפים אסטרטגיה לגרף ופותחים את חלונית Strategy Tester בתחתית. הלשוניות מציגות סקירה, ביצועים ורשימת עסקאות. לחיצה על סמל ההגדרות של האסטרטגיה משנה את המאפיינים שלה.

האם ה-Strategy Tester כולל עמלה וסליפג'?

רק אם הגדרתם אותם ב-Properties של האסטרטגיה. עמלה יכולה להיות אחוז, סכום לחוזה או סכום קבוע לפקודה, וסליפג' מוזן בטיקים. ברירות המחדל לא משקפות את הברוקר שלכם.

למה הבקטסט שלי נראה שונה מהתראות חיות?

בקטסט רץ על נרות היסטוריים סגורים עם מילויים מדומים, בעוד התראות פועלות רק על פקודות בזמן אמת. Repainting, חישוב בכל טיק ומילויים אמיתיים מסבירים את רוב ההבדלים.

מה זה bar magnifier?

זו הגדרת מילוי שמשתמשת במחירים מטווח זמן נמוך יותר כדי לקבוע את סדר האירועים בתוך נר היסטורי. היא משפרת את סידור הסטופים והיעדים אבל עדיין סימולציה, והיא מוגבלת למסלולים מסוימים.

האם בקטסט טוב הוא הוכחה שאסטרטגיה תהיה רווחית?

לא. בקטסט מתאר את העבר תחת עלויות ומילויים מניחים. התייחסו אליו ככלי למציאת פגמים, ואשרו התנהגות בסימולציה לפני מסחר חי.

המאמר הוא מידע כללי, אינו ייעוץ השקעות ואינו מבטיח תוצאה כלשהי. בקטסטים הם היפותטיים, ותוצאות עבר אינן ערובה לעתיד. מסחר בחוזים עתידיים כרוך בסיכון גבוה להפסד.

מקורות וקריאה נוספת