Come viene calcolato il valore Performance nello Screener?
I dati relativi alle prestazioni dello screener vengono calcolati utilizzando la formula:
Perf. = (currentClose – openDaysAgo) × 100 / abs(openDaysAgo)
dove:
- currentClose — l'ultimo prezzo di chiusura
- openDaysAgo — il prezzo di apertura della barra passata corrispondente, determinato dall'intervallo selezionato (ad esempio, 1 settimana, 3 mesi, 365 giorni)
Esempio
Oggi è martedì, calcoliamo Perf.W:
- Prendiamo il prezzo di chiusura di oggi.
- Sottraiamo il prezzo di apertura della barra giornaliera di martedì scorso.
- Moltiplichiamo la differenza per 100.
- Dividiamo il risultato per il valore assoluto del prezzo di apertura della barra giornaliera di martedì scorso.
Di seguito è riportata una formula dettagliata per le risoluzioni più comunemente utilizzate, che tiene conto di specifiche quali il numero di giorni in un anno bisestile.
//@version=5
indicator(title="Screener Performance")
rateOfreturn(ref) =>
if ref < 0 and close > 0
na
else
(close - ref) * 100 / math.abs(ref)
rr(bb, maxbarsback) =>
open[maxbarsback] * 0 + bb == 0 ? na : rateOfreturn(open[bb])
perfYTD() =>
var lastYearOpen = open
if year > year[1]
lastYearOpen := open
rateOfreturn(lastYearOpen)
fastSearchTimeIndex(x, maxbarsback) =>
mid = 0 * time[maxbarsback]
right = math.min(bar_index, maxbarsback)
left = 0
if time < x
0
else
for i = 0 to 9 by 1
mid := math.ceil((left + right) / 2)
if left == right
break
else if time[mid] < x
right := mid
continue
else if time[mid] > x
left := mid
continue
else
break
mid
week1 = 7
week_ago = timenow - 1000 * 60 * 60 * 24 * week1
week_ago_this_bar = time - 1000 * 60 * 60 * 24 * week1
countOfBarsWeekAgo = fastSearchTimeIndex(week_ago, week1)
month1 = 30
month_ago = timenow - 1000 * 60 * 60 * 24 * month1
countOfBars1MonthAgo = fastSearchTimeIndex(month_ago, month1)
month3 = 90
months3_ago = timenow - 1000 * 60 * 60 * 24 * month3
countOfBars3MonthAgo = fastSearchTimeIndex(months3_ago, month3)
month6 = 180
months6_ago = timenow - 1000 * 60 * 60 * 24 * month6
countOfBars6MonthAgo = fastSearchTimeIndex(months6_ago, month6)
years1 = 365
oneYearAgo = timenow - 1000 * 60 * 60 * 24 * years1
barsCountOneYear = fastSearchTimeIndex(oneYearAgo, years1)
years3 = 365 * 3
years3_ago = timenow - 1000 * 60 * 60 * 24 * years3
countOfBars3YearAgo = fastSearchTimeIndex(years3_ago, years3)
years5 = 365 * 4 + 366
years5_ago = timenow - 1000 * 60 * 60 * 24 * years5
countOfBars5YearAgo = fastSearchTimeIndex(years5_ago, years5)
years10 = (365 * 4 + 366) * 2
years10_ago = timenow - 1000 * 60 * 60 * 24 * years10
countOfBars10YearAgo = fastSearchTimeIndex(years10_ago, years10)
perfYTD = perfYTD()
plot((close - open[4]) / open[4] * 100, title='Perf.5D')
plot(rr(countOfBarsWeekAgo, week1), title='Perf.W')
plot(rr(countOfBars1MonthAgo, month1), title='Perf.1M')
plot(rr(countOfBars3MonthAgo, month3), title='Perf.3M')
plot(rr(countOfBars6MonthAgo, month6), title='Perf.6M')
plot(rr(barsCountOneYear, years1), title='Perf.Y')
plot(rr(countOfBars3YearAgo, years3), title='Perf.3Y')
plot(rr(countOfBars5YearAgo, years5), title='Perf.5Y')
plot(rr(countOfBars10YearAgo, years10), title='Perf.10Y')
plot(perfYTD, 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 leggere qui.
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).