Comment la performance est-elle calculée dans le Screener?

Les données relatives aux performances du screener sont calculées à l'aide de la formule suivante :

Perf. = (currentClose – openDaysAgo) × 100 / abs(openDaysAgo)
Java

où:

  • currentClose — le dernier cours de clôture
  • openDaysAgo — le cours d'ouverture de la barre correspondante passée, déterminé par l'intervalle sélectionné (par exemple, 1 semaine, 3 mois, 365 jours)

Exemple

Nous sommes mardi, calculons Perf.W :

  1. Prenez le cours de clôture d'aujourd'hui.
  2. Soustrayez le cours d'ouverture de la barre quotidienne de mardi dernier.
  3. Multipliez la différence par 100.
  4. Divisez le résultat par la valeur absolue du cours d'ouverture de la barre quotidienne de mardi dernier.

Vous trouverez ci-dessous une formule détaillée pour les résolutions les plus couramment utilisées, tenant compte de spécificités telles que le nombre de jours dans une année bissextile.


//@version=6indicator("Screener Performance")// first bar's timestamp in pine historyvar first_bar_time = time / 1000// Performance helper functionsrateOfreturn(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        midweek1 = 7week_ago = timenow - 1000 * 60 * 60 * 24 * week1week_ago_this_bar = time - 1000 * 60 * 60 * 24 * week1countOfBarsWeekAgo = fastSearchTimeIndex(week_ago, week1)month1 = 30month_ago = timenow - 1000 * 60 * 60 * 24 * month1countOfBars1MonthAgo = fastSearchTimeIndex(month_ago, month1)month3 = 90months3_ago = timenow - 1000 * 60 * 60 * 24 * month3countOfBars3MonthAgo = fastSearchTimeIndex(months3_ago, month3)month6 = 180months6_ago = timenow - 1000 * 60 * 60 * 24 * month6countOfBars6MonthAgo = fastSearchTimeIndex(months6_ago, month6)years1 = 365oneYearAgo = timenow - 1000 * 60 * 60 * 24 * years1barsCountOneYear = fastSearchTimeIndex(oneYearAgo, years1)years3 = 365 * 3years3_ago = timenow - 1000 * 60 * 60 * 24 * years3countOfBars3YearAgo = fastSearchTimeIndex(years3_ago, years3)years5 = 365 * 4 + 366years5_ago = timenow - 1000 * 60 * 60 * 24 * years5countOfBars5YearAgo = fastSearchTimeIndex(years5_ago, years5)years10 = (365 * 4 + 366) * 2years10_ago = timenow - 1000 * 60 * 60 * 24 * years10countOfBars10YearAgo = fastSearchTimeIndex(years10_ago, years10)// Perf.<W | 1M | 3M | 6M | Y | 5Y | 10Y | YTD>fiveDays = 5fiveDaysAgo = timenow - 1000 * 60 * 60 * 24 * fiveDayscountOfBarsFiveDaysAgo = 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')
Java

Remarque : les valeurs de ce script sont différentes dans l'historique et en temps réel en raison de timenow, voir ici.

Pour les affichages visuels, vous pouvez ajouter ce script à votre graphique via l'éditeur Pine en utilisant la période quotidienne du graphique. Un indicateur apparaîtra sur le graphique, dont les tracés montreront les valeurs pour chaque type de performance.

Variation % vs Performance %:

Disons que nous sommes mardi aujourd'hui.

Variation hebdomadaire - la différence entre la clôture actuelle (mardi) et la clôture de la semaine dernière (le cours de clôture du vendredi précédent). 

Performance hebdomadaire - la différence entre la clôture actuelle (mardi) et l'ouverture d'il y a exactement une semaine (le mardi précédent).