אני מקבל הודעת שגיאה 'פיין לא יכול לקבוע את אורך הפניה של סדרה. נסה להשתמש max_bars_back

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

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

בעיה נפוצה בדרך כלל בענפים של משפטים מותנים(if, iff, or ?)  כאשר הפניות בעבר למשתנה או לפונקציה בתוך המשפט המותנה מבוצעות לראשונה כאשר הבר 244 כבר עבר. במקרים כאלה, פין לא יוכל להקצות גודל מאגר מתאים לאותה פונקציה ובגודל ברירת המחדל של המאגר ישמש. התבונן בקוד שלהלן. זה יחזיר את השגיאה הנ"ל כי:

  • הערך המשתנה var1 אינו ידוע בזמן ההרכבה
  • משתנה הבדיקה אינו מבקש נתוני עבר ב 244 הברים הראשונים בגרף

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

//@version=4
study("max_bars_back var",overlay=true)
var1 = input(301)
test = 0.0
//max_bars_back(test, 301)
if bar_index > 244
    test := test[var1]
plot(test)
Java

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

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

//@version=4
study("Requires max_bars_back")
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)
Java

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

//@version=4
study("Requires max_bars_back", max_bars_back=20)
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)
Java

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

//@version=4
study("Requires max_bars_back")
test = 0.0
vwma20 = vwma(close, 20)
if bar_index > 1000
    test := vwma20
plot(test)
Java

במדריך למשתמש שלנו max_bars_back ,תוכל ללמוד עוד על השגיאה הקשורה ל 

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