הנתונים של ביצועי המסנן מחושבים באמצעות הנוסחה:
//@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 = 0if xs < x 0elsefor i = 0 to 9 by 1
mid := math.ceil((left + right) / 2)if left == right breakelse if xs[mid] < x right := mid continueelse if xs[mid] > x left := mid continueelsebreak
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_backif 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הערה: ערכי סקריפט זה שונים בהיסטוריה ובזמן אמת בגלל timenow, ראה https://www.tradingview.com/pine-script-docs/en/v4/essential/Indicator_repainting.html
לגבי תצוגות חזותיות, ניתן להוסיף את הסקריפט הזה לגרף שלכם דרך העורך Pine ותוך שימוש בטווח הזמן היומי של הגרף. על הגרף יופיע מתנד, שהמתווה שלו יציג את הערכים עבור כל סוג של ביצועים.
% שינוי לעומת % ביצועים:
נניח שהיום יום שלישי. שינוי שבועי מחשב את ההפרש בין הסגירה הנוכחית (יום שלישי) לבין הסגירה מהשבוע האחרון (מחיר הסגירה של יום שישי הקודם). הביצועים השבועיים מחשבים את ההפרש בין הסגירה הנוכחית (שלישי) לפתיחה מלפני שבוע בדיוק (יום שלישי הקודם).