Support Board
Date/Time: Wed, 28 Jan 2026 16:27:24 +0000
Can you please add the RCI Ribbon indicator as this is better than Stochastics or RSI.
View Count: 193
| [2025-12-12 07:59:24] |
| User566779 - Posts: 30 |
|
Spearman's RCI is unique. By plotting a set of 3 Rank Correlation Index (RCI) oscillators with different lookback lengths, we can see whether the direction of price changes is relatively consistent across multiple time periods in one indicator pane. It is equal to the best inductor I have seen if not the very best. Can we please have this added. This is how it looks on trading view. It is a 3-line indicator. https://www.tradingview.com/support/solutions/43000765571-rci-ribbon/ Thanks |
| [2025-12-12 16:26:34] |
| John - SC Support - Posts: 44262 |
|
Do you have a reference for the calculations for this? Although we can not say when we would get to this, we would need to have the references in order to build it correctly when we do. For the most reliable, advanced, and zero cost futures order routing, use the Teton service: Sierra Chart Teton Futures Order Routing |
| [2025-12-12 16:49:49] |
| User566779 - Posts: 30 |
|
From AI... Spearman's RCI (Rank Correlation Index) ribbon on TradingView plots three lines, each representing the RCI calculated over different periods (typically short, medium, and long, like 9, 26, or 52), measuring the correlation between price ranks and time sequence ranks. RCI Calculation The core formula for RCI adapts Spearman's rank correlation coefficient to trading data: RCI=(1−6∑d2n(n2−1))×100RCI=(1−n(n2−1)6∑d2)×100 (See attached) where n is the lookback period, and d is the difference between the rank of the current closing price and the rank of its position in time (1 to n, with 1 being the most recent bar). To compute: • Rank closing prices over n bars (highest price gets rank 1, lowest gets rank n). • Rank time positions (most recent bar is 1, oldest is n). • Calculate d for each bar, square and sum them, then apply the formula. Ribbon Implementation TradingView's version overlays three RCI lines in one pane for visual trend alignment: values above +80 signal overbought/uptrends, below -80 indicate oversold/downtrends, and ribbon convergence/divergence highlights momentum shifts. |
| Attachment Deleted. |
| [2025-12-12 18:36:28] |
| John - SC Support - Posts: 44262 |
|
We really need a reference to something written by the creator of the indicator, so we can properly code what they intended. References from AI sources are not trustworthy enough to use.
For the most reliable, advanced, and zero cost futures order routing, use the Teton service: Sierra Chart Teton Futures Order Routing |
| [2025-12-12 22:23:01] |
| User719512 - Posts: 408 |
|
RCI Ribbon is just 3 RCI studies on the same chart/plot. The 10, 30, 50 are its defaults on TradingView. RCI itself can be calculated in Sierra with this code: // RCI.cpp // Compile this into a DLL for Sierra Chart using the ACSIL framework. #include "sierrachart.h" SCDLLName("RCI") double ord(SCFloatArrayRef seq, int idx, int itv, int baseIndex) { float p = seq[baseIndex - idx]; int o = 1; int s = 0; for (int i = 0; i < itv; i++) { float seq_i = seq[baseIndex - i]; if (p < seq_i) { o++; } else if (p == seq_i) { s++; } } return o + (s - 1) / 2.0; } double d_calc(int itv, SCFloatArrayRef seq, int baseIndex) { double sum = 0.0; for (int i = 0; i < itv; i++) { double rank = ord(seq, i, itv, baseIndex); sum += pow((i + 1) - rank, 2); } return sum; } double rci(int itv, SCFloatArrayRef seq, int baseIndex) { return (1.0 - 6.0 * d_calc(itv, seq, baseIndex) / (itv * (itv * itv - 1.0))) * 100.0; } SCSFExport scsf_RCI(SCStudyInterfaceRef sc) { SCInputRef IntervalInput = sc.Input[0]; SCInputRef SourceInput = sc.Input[1]; if (sc.SetDefaults) { sc.GraphName = "RCI"; sc.StudyDescription = "Rank Correlation Index"; sc.AutoLoop = 1; sc.GraphRegion = 1; // Separate region by default IntervalInput.Name = "Interval"; IntervalInput.SetInt(12); IntervalInput.SetIntLimits(1, MAX_STUDY_LENGTH); SourceInput.Name = "Source"; SourceInput.SetInputDataIndex(SC_LAST); // Default to Close sc.Subgraph[0].Name = "RCI"; sc.Subgraph[0].DrawStyle = DRAWSTYLE_LINE; sc.Subgraph[0].PrimaryColor = RGB(0, 255, 0); // Green sc.Subgraph[0].LineWidth = 1; sc.Subgraph[1].Name = "Zero Line"; sc.Subgraph[1].DrawStyle = DRAWSTYLE_LINE; sc.Subgraph[1].PrimaryColor = RGB(255, 0, 0); // Red sc.Subgraph[1].LineWidth = 1; sc.Subgraph[1].DrawZeros = 1; return; } int itv = IntervalInput.GetInt(); if (sc.Index < itv - 1) { return; // Not enough data } SCFloatArrayRef SourceArray = sc.BaseDataIn[SourceInput.GetInputDataIndex()]; sc.Subgraph[0][sc.Index] = (float)rci(itv, SourceArray, sc.Index); sc.Subgraph[1][sc.Index] = 0.0f; } |
To post a message in this thread, you need to log in with your Sierra Chart account:
