Wie wird die Performance im Screener berechnet?

Die Leistungsdaten des Screeners werden nach folgender Formel berechnet:

//@version=5
indicator(title="Screener Performance")
fastSearchN(_xs, x, maxbarsback) =>  // xs - sorted, ascending
	xs = _xs
	if bar_index == 0
		xs += xs[maxbarsback] * 0  // max_bars_back
	left = 0
	right = math.min(bar_index, maxbarsback)
	mid = 0
	if xs < x
		0
	else
		for i = 0 to 9 by 1
			mid := math.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
years5 = 365 * 4 + 366
years5_ago = timenow - 1000 * 60 * 60 * 24 * years5
countOfBars5YearAgo = fastSearchN(time, years5_ago, years5)
weeks52 = 7 * 52
weeks52_ago = timenow - 1000 * 60 * 60 * 24 * weeks52
countOfBars52WeekAgo = fastSearchN(time, weeks52_ago, weeks52)
month6 = 180
months6_ago = timenow - 1000 * 60 * 60 * 24 * month6
countOfBars6MonthAgo = fastSearchN(time, months6_ago, month6)
month3 = 90
months3_ago = timenow - 1000 * 60 * 60 * 24 * month3
countOfBars3MonthAgo = fastSearchN(time, months3_ago, month3)
month1 = 30
month_ago = timenow - 1000 * 60 * 60 * 24 * month1
month_ago_this_bar = time - 1000 * 60 * 60 * 24 * month1
countOfBars1MonthAgo = fastSearchN(time, month_ago, month1)
countOfBars1MonthAgoThisBar = fastSearchN(time, month_ago_this_bar, month1)
week1 = 7
week_ago = timenow - 1000 * 60 * 60 * 24 * week1
week_ago_this_bar = time - 1000 * 60 * 60 * 24 * week1
countOfBarsWeekAgo = fastSearchN(time, week_ago, week1)
countOfBarsWeekAgoThisBar = fastSearchN(time, week_ago_this_bar, week1)

// performance
rateOfreturn(v1, v2) =>
	(v1 - v2) * 100 / math.abs(v2)
rr(_bb, maxbarsback) =>
	bb = _bb
	if bar_index == 0
		bb += math.round(open[maxbarsback] * 0)  // max_bars_back
	if bb == 0
		na
	else
		rof = rateOfreturn(close, open[bb])
		rof
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(countOfBars52WeekAgo, weeks52), title="Perf.Y")
plot(rr(countOfBars5YearAgo, years5), title="Perf.5Y")
var lastYearOpen = open
if year > year[1]
	lastYearOpen := open[1]
plot(rateOfreturn(close, lastYearOpen), title="Perf.YTD")

Hinweis: Die Werte dieses Skripts unterscheiden sich bei History und Realtime aufgrund von Timenow, siehe https://www.tradingview.com/pine-script-docs/en/v4/essential/Indicator_repainting.html

Für visuelle Darstellungen können Sie dieses Skript über den Pine-Editor zu Ihrem Chart hinzufügen, indem Sie den täglichen Zeitrahmen des Charts verwenden. Auf dem Chart erscheint dann ein Indikator, dessen Plots die Werte für jeden Leistungstyp anzeigen.

Veränderung % vs. Performance %::

Nehmen wir an, heute ist Dienstag. Weekly Change berechnet die Differenz zwischen dem aktuellen Schlusskurs (Dienstag) und dem Schlusskurs der letzten Woche (dem Schlusskurs des vorherigen Freitags). Weekly Performance berechnet die Differenz zwischen dem aktuellen Schlusskurs (Dienstag) und dem Eröffnungskurs von vor genau einer Woche (dem vorangegangenen Dienstag).