Gli input degli script possono ora essere organizzati in righe e sezioni

Mar 12, 2021

Il nostro ultimo aggiornamento di Pine introduce due novità per la sezione degli input, con cui solitamente interagisce l’utente per cambiare i parametri dell’indicatore:

  • Un nuovo parametro group che consente ai programmatori di creare una sezione che include un titolo e varie opzioni.
  • Un nuovo parametro inline per permettere a più input di coesistere nella stessa riga.

Non sono tanto novità dal punto di vista funzionale, quanto da quello dell’esperienza utente, come illustrato dall’indicatore Auto Ritracciamenti Fib.

Implementare i nuovi parametri negli script è semplice! Dai un’occhiata a questo esempio di un indicatore VWAP con la particolarità di permettere agli utenti di specificare l’inizio e la fine del periodo analizzato e  di controllare gli ancoraggi:

//@version=4
study(title = "Custom Period VWAP", shorttitle = "CPVWAP", overlay = true)

src = input(hlc3, "Source", input.source)
enableHighlight = input(true, "Highlight", input.bool, inline = "Highlight")
highlightType = input("Anchors", "", input.string, options = ["Anchors", "Background"], inline = "Highlight")
highlightColor = input(color.red, "", input.color, inline = "Highlight")
useStartPeriodTime = input(true, "Start", input.bool, group = "Date Range", inline = "Start Period")
startPeriodTime = input(timestamp("20 Jan 2021"), "", input.time, group = "Date Range", inline = "Start Period")
useEndPeriodTime = input(true, "End", input.bool, group = "Date Range", inline = "End Period")
endPeriodTime = input(timestamp("20 Feb 2021"), "", input.time, group = "Date Range", inline = "End Period")

start = useStartPeriodTime ? startPeriodTime >= time : false
end = useEndPeriodTime ? endPeriodTime <= time : false
calcPeriod = not start and not end

var srcVolArray = array.new_float(na)
var volArray = array.new_float(na)
var line startAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width = 2)
var line endAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width = 2)
useBgcolor = false

if calcPeriod
    array.push(srcVolArray, src*volume)
    array.push(volArray, volume)
else
    array.clear(srcVolArray), array.clear(volArray)

customVwap = array.sum(srcVolArray) / array.sum(volArray)
if enableHighlight
    if highlightType == "Anchors"
        if useStartPeriodTime
            line.set_xy1(startAnchor, startPeriodTime, low)
            line.set_xy2(startAnchor, startPeriodTime, high)
        if useEndPeriodTime
            line.set_xy1(endAnchor, not na(customVwap) ? time : line.get_x1(endAnchor), low)
            line.set_xy2(endAnchor, not na(customVwap) ? time : line.get_x1(endAnchor), high)
    if highlightType == "Background"
        useBgcolor :=  true

bgcolor(useBgcolor and calcPeriod ? highlightColor : na, editable = false)
plot(customVwap, title="CPVWAP", color = color.blue, linewidth = 2)

L’argomento indicato dal parametro group è usato in due moalità: per definire il nome del gruppo e per indicare la sua appartenenza.

Quando si usa il parametro inline, tutti gli input() che hanno lo stesso argomento saranno raggruppati nella stessa riga. Il title di ogni input() determina la legenda da usare. Se quest’ultimo non viene indicato, allora nessuna legenda sarà applicata. Inoltre, se gli input che condividono lo stesso argomento inline non entrano in una riga, saranno posti a capo.

La descrizione dei nuovi parametri è presente nel Manuale di riferimento di Pine, alla voce input().

Per l’elenco di tutte le novità in ambito Pine, vi invitiamo a consultare le Note di rilascio.

Continuate ad inviarci suggerimenti per migliorare. TradingView è il frutto dei vostri desideri.

Look first Then leap

TradingView è realizzato per te. Assicurati di sfruttare al massimo tutte le sue funzionalità
Apri grafico