Bagaimana Performa dihitung pada Penyaring ?
Data Performa Penyaring dihitung menggunakan rumus berikut:
Perf. = (currentClose – openDaysAgo) × 100 / abs(openDaysAgo)
di mana:
- currentClose — harga penutupan terbaru
- openDaysAgo — harga pembukaan bar sebelumnya yang sesuai, ditentukan oleh interval yang dipilih (misalnya, 1 minggu, 3 bulan, 365 hari)
Contoh
Hari ini adalah Selasa, mari kita hitung Perf.W:
- Ambil harga penutupan hari ini.
- Kurangi harga pembukaan bar harian Selasa lalu.
- Kalikan selisihnya dengan 100.
- Bagi hasilnya dengan nilai absolut dari harga pembukaan bar harian Selasa lalu.
Di bawah ini adalah rumus detail untuk resolusi yang paling umum digunakan, dengan mempertimbangkan hal-hal spesifik seperti jumlah hari dalam tahun kabisat.
//@version=6
indicator("Screener Performance")
// first bar's timestamp in pine history
var first_bar_time = time / 1000
// Performance helper functions
rateOfreturn(ref) =>
if ref < 0 and close > 0
na
else
(close - ref) * 100 / math.abs(ref)
rr(bb, maxbarsback) =>
nz(open[maxbarsback] * 0) + bb == 0 ? na : rateOfreturn(open[bb])
perfYTD() =>
if year != year(timenow)
na
else
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 x/1000 <= first_bar_time
bar_index
else if time < x
0
else
for i = 0 to 10
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)
// Perf.<W | 1M | 3M | 6M | Y | 5Y | 10Y | YTD>
fiveDays = 5
fiveDaysAgo = timenow - 1000 * 60 * 60 * 24 * fiveDays
countOfBarsFiveDaysAgo = fastSearchTimeIndex(fiveDaysAgo, fiveDays)
perfYTD = perfYTD()
plot(rr(countOfBarsFiveDaysAgo, fiveDays), 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')
Catatan: nilai script ini berbeda antara riwayat dan saat ini dikarenakan timenow, lihat https://www.tradingview.com/pine-script-docs/en/v4/essential/Indicator_repainting.html
Untuk tampilan visual, anda dapat menambahkan script ini ke chart anda melalui Pine Editor menggunakan chart dengan kerangka waktu harian. Indikator akan muncul pada chart, plot akan menunjukkan nilai untuk setiap tipe performa.
% Perubahan vs % Performa:
Katakanlah hari ini adalah hari Selasa. Perubahan Mingguan menghitung selisih antara penutupan saat ini (Selasa) dan penutupan dari minggu lalu (harga penutupan hari Jumat sebelumnya). Performa Mingguan menghitung selisih antara penutupan saat ini (Selasa) dan penutupan dari seminggu yang lalu tepatnya (Selasa sebelumnya).