Pine Script® כולל עכשיו מפות!

Aug 31, 2023

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

מרחב השמות של המפה הוא ביתם של כל הפונקציות הקשורות למפה שלנו. כדי ליצור מפה, השתמש בפונקציה map.new<key_type, value_type>(). לדוגמה:

//@variable A map containing `int` keys and  `line` values.
m = map.new<int, line>()

המקשים של מפה יכולים להיות מכל סוג פונדמנטלי (int, float, bool, string, color) והערכים שלה יכולים להיות מכל סוג, אפילו סוג המוגדר על ידי המשתמש.

לאחר יצירת מפה, ניתן להשתמש איתה בכל אחת מהפונקציות במרחב השמות של המפה. לדוגמה, אתה יכול להכניס לתוכו זוגות מפתח-ערך באמצעות map.put() ולאחזר את הערך המקושר למפתח ייחודי באמצעות .map.get() אתה יכול גם ליצור מערך מכל המפתחות או הערכים הממופים באמצעות map.keys()  או map.values() למידע נוסף על השימוש באוספים חדשים אלה והפונקציות הקשורות אליהם, עיין בדף המדריך למשתמש שלנו במפות.

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

//@version=5
indicator("Session change highlighter", overlay = true)

// Inputs
sessionInput = input.session("0800-1700", "Session")
timezone     = input.string("America/New_York", "Timezone")
length       = input.int(10, "Sessions to compare")

//@variable A map of `int` closing time keys and `float` price change values.
var data = map.new<int, float>()
//@variable A map of `string` keys and `color` values for calculating the `highlightColor`.
var colors = map.new<string, color>()

var float sessionOpen    = na
float     relativeChange = na
int       closeTime      = time_close("D", sessionInput, timezone)

// Put (`string`, `color`) pairs into the `colors` map on the first bar.
if barstate.isfirst
    colors.put("Purple", color.new(color.purple, 50))
    colors.put("Orange", color.new(color.orange, 50))
    colors.put("Yellow", color.new(color.yellow, 50))

if not na(closeTime)
    // Update the session's opening price.
    if na(closeTime[1])
        sessionOpen := open

    // Assign a new value to the `closeTime` key in the `data` map.
    data.put(closeTime, math.abs(close - sessionOpen) / sessionOpen)

    //@variable An `array` of price changes from each session in the `data` map.
    sessionHistory = data.values()
    //@variable The number of sessions included in the `data` map.
    dataSize = data.size()

    if dataSize >= length
        //@variable The average price change over `length` sessions.
        avgSessionChange = sessionHistory.slice(dataSize - length, dataSize).avg()
        relativeChange := data.get(closeTime) / avgSessionChange

//@variable Returns a color gradient based on the `relativeChange` using the values in the `colors` map.
highlightColor = switch
    relativeChange <= 1 => color.from_gradient(relativeChange, 0, 1, colors.get("Purple"), colors.get("Orange"))
    =>                     color.from_gradient(relativeChange, 1, 2, colors.get("Orange"), colors.get("Yellow"))

bgcolor(highlightColor, title = "Background highlight")
plot(relativeChange, "Relative Change Ratio", highlightColor, display = display.data_window)

הפרסומים הבאים הם דוגמאות לסקריפטים אשר משתמשים במפות:

פרופיל ווליום/שוק מאת  SamRecio

פרופיל ווליום מאת LuxAlgo

מתאם תבניות היסטורי מאת Trendoscope

כדי להישאר מעודכן בתכונות החדשות של Pine Script®, עקוב אחר הערות הגרסה של המדריך למשתמש. חשבון PineCoders משדר גם עדכונים מה-Squawk Box שלו בטלגרם, חשבון הטוויטר שלו, ומהצ’אט הציבורי של Pine Script® Q&A ב-TradingView.

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

— צוות TradingView

Look first Then leap

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