Skrip Pine® kini menampilkan peta!

Aug 31, 2023

Kami menghadirkan peralatan baru untuk para pembuat kode Pine — Peta, koleksi yang menyimpan data dalam pasangan nilai kunci. Mereka memungkinkan pengguna untuk menghubungkan elemen terkait dari jenis yang berbeda secara bersama-sama untuk diakses di lain waktu dalam skrip. Tidak seperti koleksi Pine lainnya, skrip dengan cepat mengakses nilai peta menggunakan kunci dari pasangan nilai kuncinya, bukan indeks internal.

Namespace peta adalah rumah bagi seluruh fungsi yang terkait peta kami. Untuk membuat peta, gunakan fungsi map.new<key_type, value_type>(). Sebagai contoh:

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

Kunci peta bisa bertipe fundamental apa pun (int, float, bool, string, atau color), dan nilainya bisa bertipe apa saja, bahkan tipe yang ditentukan pengguna.

Setelah membuat peta, anda dapat menggunakan salah satu fungsi di namespace peta dengannya. Misalnya, anda dapat memasukkan pasangan nilai kunci ke dalamnya menggunakan map.put() dan mengambil nilai yang ditautkan ke kunci unik menggunakan map.get(). Anda juga dapat membuat array dari seluruh kunci atau nilai yang dipetakan menggunakan map.keys() atau map.values(). Untuk informasi lebih lanjut tentang penggunaan koleksi baru ini dan fungsi terkait lainnya, lihat halaman Panduan Pengguna kami di Peta.

Pada contoh di bawah, kami telah membuat skrip yang menggunakan peta untuk mewarnai latar belakang chart pada perubahan harga sesi. Ia menggunakan peta data untuk menyimpan waktu penutupan dan informasi perubahan harga bersih untuk setiap sesi hari, lalu menghitung rasio perubahan harga sesi saat ini terhadap perubahan rata-rata selama sejumlah sesi historis tertentu. Ini mewarnai latar belakang chart berdasarkan rasio ini dengan menggunakan konten peta warna dan menampilkan nilai rasio di Jendela Data:

//@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)

Publikasi berikut adalah beberapa contoh skrip yang menggunakan peta:

Volume/Market Profile by SamRecio

Volume Profile by LuxAlgo

Historical Pattern Matcher by Trendoscope

Untuk tetap mendapatkan informasi terkini tentang fitur-fitur Skrip Pine® yang baru, pantau terus Catatan Rilis Panduan Pengguna. Akun PineCoders juga memberikan update dari Squawk Box di Telegram, akun Twitter, dan dari obrolan publik Tanya Jawab Skrip Pine® di TradingView.

Kami berharap fitur yang paling banyak diminta ini dapat bermanfaat bagi anda, dan terus kirimkan masukan dan saran anda kepada kami agar kami dapat menjadikan platform ini sebaik mungkin. Kami membangun TradingView untuk anda, dan kami selalu ingin mendengar pendapat anda.

— Tim TradingView

Look first Then leap

TradingView dibangun untuk anda, karenanya manfaatkan fitur-fitur luar biasa kami semaksimal mungkin
Luncurkan Chart