Bagaimanakah Prestasi dikira dalam Penyaring?
Prestasi Penyaring dikira mengikut formula berikut:
Perf. = (currentClose – openDaysAgo) × 100 / abs(openDaysAgo)
di mana:
- currentClose — harga tutup terkini
- openDaysAgo — harga buka untuk bar sebelum yang sepadan, ditentukan oleh selang masa dipilih (cth., 1 minggu, 3 bulan, 365 hari)
Contoh
Hari ini adalah hari Selasa, mari kita kira Perf.W:
- Ambil harga tutup hari ini.
- Tolak harga buka pada bar harian Selasa lepas
- Darabkan perbezaan dengan 100
- Bahagikan keputusan dengan nilai mutlak harga buka bar harian Selasa lepas
Di bawah adalah formula mendalam untuk resolusi yang selalunya digunakan, mengambil kira perkara-perkara khusus seperti bilangan hari dalam tahun lompat.
//@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')
JavaNota: nilai-nilai skrip ini adalah berbeza di sejarah dan masa nyata kerana timenow, rujuk di sini.
Untuk paparan visual, anda boleh menambahkan skrip kepada carta anda melalui Editor Pine dengan menggunakan rangka masa harian. Sebuah penunjuk akan muncul di carta di mana plot akan menunjukkan nila setiap jenis pretasi.
Perubahan % lwn Prestasi %:
Katakan hari ini adalah Selasa.
Perubahan Mingguan - perbezaan di antara penutup terkini (Selasa) dan penutup dari minggu lepas (harga penutup pada Jumaat lepas).
Prestasi Mingguan - perbezaan di antara penutup terkini (Selasa) dan penutup dari satu minggu lepas setepatnya (Selasa lepas).