筛选器表现数据使用以下公式计算:
//@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")
Java注意:由于时间的原因,此脚本的历史值和实时值不同,请参阅 https://www.tradingview.com/pine-script-docs/en/v4/essential/Indicator_repainting.html
对于视觉显示,您可以使用图表的每日时间周期透过 Pine 编辑器将此脚本加到您的图表中。图表上将出现一个指标,其图表将显示每种表现类型的值。
涨跌% vs 表现%:
假设今天是星期二。周涨跌计算当前收盘价(周二)与上周收盘价(上周五收盘价)之间的差值。周表现计算当前收盘价(周二)和一周前的收盘价(上周二)之间的差值。