Come viene calcolato il valore Performance nello Screener?

Il valore di Performance visibile nello Screener è calcolato con la seguente formula:

//@version=4
study("Screener Performance")


fastSearchN(xs, x) => // xs - sorted, ascending
    max_bars_back(xs, 366)
    left  = 0
    right = min(bar_index,366)
    mid = 0
    if xs < x
        0
    else
        for i = 0 to 9
            mid := ceil((left+right) / 2)
            if left == right
                break
            else if xs[mid] < x
                right := mid
                continue
            else if xs[mid] > x
                left := mid
                continue
            else
                break
        mid

week1 = 7
week_ago = timenow - 1000*60*60*24*week1
countOfBarsWeekAgo = fastSearchN(time, week_ago)

month1 = 30
month_ago = timenow - 1000*60*60*24*month1
countOfBars1MonthAgo = fastSearchN(time, month_ago)

month3 = 90
months3_ago = timenow - 1000*60*60*24*month3
countOfBars3MonthAgo = fastSearchN(time, months3_ago)

month6 = 180
months6_ago = timenow - 1000*60*60*24*month6
countOfBars6MonthAgo = fastSearchN(time, months6_ago)

weeks52 = 7*52
weeks52_ago = timenow - 1000*60*60*24*weeks52
countOfBars52WeekAgo = fastSearchN(time, weeks52_ago)

// performance
rateOfreturn(v1, v2) => (v1 - v2) * 100 / abs(v2)
rr(bb) =>
    if bb == 0
        na
    else
        max_bars_back(close, 366)
        rof = rateOfreturn(close, close[bb])
        rof

plot(rr(countOfBarsWeekAgo), title="Perf.W")
plot(rr(countOfBars1MonthAgo), title="Perf.1M")
plot(rr(countOfBars3MonthAgo), title="Perf.3M")
plot(rr(countOfBars6MonthAgo), title="Perf.6M")
plot(rr(countOfBars52WeekAgo), title="Perf.Y")
var lastYearClose = float(na)
if year > year[1]
    lastYearClose := close[1]
plot(rateOfreturn(close, lastYearClose), title="Perf.YTD")

N.B.: i valori di questo script differiscono in base all'utilizzo di barre storiche o in tempo reale, a causa del parametro timenow. Per maggiori info: https://www.tradingview.com/pine-script-docs/en/v4/essential/Indicator_repainting.html

Se vuoi una rappresentazione visiva, puoi aggiungere lo script al tuo grafico copiandolo ed incollandolo nell'Editor Pine. Spostandoti su un timeframe giornaliero dovresti vedere comparire un indicatore nel grafico con i valori per ogni tipo di performance.

Variazione % vs Performance %:

Mettiamo caso che oggi sia Martedì. La variazione settimanale calcola la differenza tra la chiusura corrente (Martedì) e la chiusura della settimana scorsa (intesa come il prezzo di chiusura di Venerdì). La performance invece calcola la differenza tra la chiusura corrente (Martedì) e la chiusura dello stesso giorno durante la settimana precedente (Martedì scorso).