Pine Script® الآن يتوفر على خرائط!

Aug 31, 2023

نقدم أداة جديدة لمبرمجي Pine – الخرائط والمجموعات التي تحتفظ بالبيانات في أزواج القيم الرئيسية. إنها تسمح للمستخدمين بربط العناصر ذات الصلة من أنواع مختلفة معًا للوصول إليها لاحقًا في نص برمجي. على عكس مجموعات Pine الأخرى، تصل النصوص البرمجية بسرعة إلى قيم الخريطة باستخدام المفاتيح من أزواج قيم المفاتيح بدلاً من الفهرس الداخلي.

تعد مساحة اسمالخريطة “map” موطنًا لجميع الدوال المتعلقة بالخريطة.  لإنشاء خريطة، استخدم الخريطة.map.new< key_type, value_type>دالة (). على سبيل المثال:

//@variable خريطة تحتوي على مفاتيح `int` وقيم `line`.
//@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)

المنشورات التالية هي أمثلة على النصوص التي تستخدم الخرائط:

Volume/Market Profile by SamRecio

Volume Profile by LuxAlgo

Historical Pattern Matcher by Trendoscope


المنشورات التالية هي أمثلة على النصوص البرمجية التي تستخدم الخرائط:

بروفايل أحجام التداول/السوق بواسطة SamRecio

بروفايل أحجام التداول بواسطة LuxAlgo

مطابقة النمط التاريخي بواسطة Trendoscope

للبقاء على اطلاع دائم بميزات Pine Script® الجديدة، تابع ملاحظات إصدار دليل المستخدم . يبث حساب  أيضًا تحديثات من Squawk Box تيليغرام، حساب على موقع تويتر، ومن الدردشة العامة  Pine Script® Q&A على TradingView.

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

فريق TradingView

Look first Then leap

تم إنشاء TradingView خصيصًا لك، لذا تأكد من حصولك على أقصى استفادة من خدماتنا الرائعة
فتح الرسم البياني