IdeaRelative Trend Index MT4 Indicator request

19031
[TRADINGVIEW] "Relative Trend Index" (RTI) by Zeiierman

I've seen this indicator blow up on TradingView and become immensely popular. But after seeing Xard777's tease of the latest iteration of his system, I think it's high time we got this indicator coded for MT4.

I don't want to give the URL for the TradingView website itself because I'll get kicked off this forum if I put in a link directed to an external website again (currently skating on thin ice right now).

At the same time, the description for this indicator is way too long for me to paste in its entirety.

So I'll paste what I believe is the most relevant part and the rest is up to you to read for yourself.

The RSI is a momentum oscillator that measures the speed and change of price movements and is typically used to identify overbought and oversold conditions in a market. However, its primary limitation lies in its tendency to produce false signals during extended trending periods.

On the other hand, the RTI is designed specifically to identify and adapt to market trends. Instead of solely focusing on price changes, the RTI measures the relative positioning of the current closing price within its recent range, providing a more comprehensive view of market conditions.

The RTI's adaptable nature is particularly valuable. The user-adjustable sensitivity percentage allows traders to fine-tune the indicator's responsiveness, making it more resilient to sudden market fluctuations and noise that could otherwise produce false signals. This feature is advantageous in various market conditions, from trending to choppy and sideways-moving markets.

Furthermore, the RTI's unique method of defining OB/OS zones takes into account the prevailing trend, which can provide a more precise reflection of the market's condition.

While the RSI is an invaluable tool in many traders' toolkits, the RTI's unique approach to trend identification, adaptability, and enhanced definition of OB/OS zones can provide traders with a more nuanced understanding of market conditions and potential trading opportunities. This makes the RTI an especially powerful tool for those seeking to ride long-term trends and avoid false signals.


Despite the lengthy description, the code is only 73 lines long.

Code: Select all

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © Zeiierman
//@version=5
indicator('Relative Trend Index (RTI) by Zeiierman', shorttitle= "RTI", overlay=false, precision=0)

// Inputs {
trend_data_count             = input.int(100, step=4, minval=10, title="Trend Length", inline = "RT", group="Relative Trend Index [RTI]", tooltip="This variable determines the number of data points used in the calculation. \n\nIn short: A high value returns the long-term trend and a low value returns the short-term trend. \n\nIf a user increases the 'Trend Length', the trend will take into account a larger number of data points. This makes the trends smoother and more resistant to sudden changes in the market, as they're based on a broader set of data. It  also makes the trends slower to react to recent changes, as they're diluted by older data. \n\nOn the other hand, if a user decreases the 'Trend Length', the trend will take into account fewer data points. This could make the trends more responsive to recent market changes, as they're based on a narrower set of data. It also makes the trends more susceptible to noise and rapid fluctuations, as each new piece of data has a greater impact.")
trend_sensitivity_percentage = input.int(95, step=1,minval=50, maxval=98,title='Sensitivity    ', inline = "RT1", group="Relative Trend Index [RTI]", tooltip="This variable determines the specific indices in the sorted trend arrays that are used for the upper and lower trend. It's used as a percentage of the 'Trend length'. \n\nIf a user increases the 'Sensitivity', the trend will be based on higher and lower positions in the sorted arrays, respectively. This makes the trend less sensitive.  \n\nConversely, if a user decreases the 'Sensitivity', the trend will be based on positions closer to the middle of the sorted arrays. This makes the trend more sensitive.")
signal_length                = input.int(20, step=1,minval=1, maxval=200,title='Signal Length', inline = "", group="Signal Line", tooltip="Set the Ma period.")
ob  = input.float(80, step=1, minval=0, maxval=100, title="", inline = "obos", group="Overbought/Oversold", tooltip="")
os  = input.float(20,step=1, minval=0, maxval=100,title="", inline = "obos", group="Overbought/Oversold", tooltip="Set the OB/OS levels.")
//~~~~~~~~~~~~~~~~~~~~~~~}

// Relative Trend Index Calculation {
upper_trend = close + ta.stdev(close, 2)
lower_trend = close - ta.stdev(close, 2)

upper_array = array.new<float>(0)
lower_array = array.new<float>(0)
for i = 0 to trend_data_count - 1 
    upper_array.push(upper_trend[i])
    lower_array.push(lower_trend[i])
upper_array.sort()
lower_array.sort()

upper_index  = math.round(trend_sensitivity_percentage / 100 * trend_data_count) - 1
lower_index  = math.round((100 - trend_sensitivity_percentage) / 100 * trend_data_count) - 1
UpperTrend   = upper_array.get(upper_index)
LowerTrend   = lower_array.get(lower_index)
RelativeTrendIndex = ((close - LowerTrend) / (UpperTrend - LowerTrend))*100
//~~~~~~~~~~~~~~~~~~~~~~~}

// Plots {
MA_RelativeTrendIndex = ta.ema(RelativeTrendIndex,signal_length)
RT = plot(RelativeTrendIndex, 'Relative Trend Index (RTI)', color=color.new(color.teal, 0))
plot(MA_RelativeTrendIndex, 'Ma Relative Trend Index', color=color.new(#00bcd4, 0))
//~~~~~~~~~~~~~~~~~~~~~~~}

// Line plots {
mid           = hline(50, 'Mid', color=#606060, linestyle=hline.style_dashed)
overbought    = hline(ob, 'Overbought', color=#606060, linestyle=hline.style_dashed)
oversold      = hline(os, 'Oversold', color=#606060, linestyle=hline.style_dashed)
//~~~~~~~~~~~~~~~~~~~~~~~}

// BG Fill {
fill(overbought, oversold, color=color.new(color.teal, 90), title='Background')
//~~~~~~~~~~~~~~~~~~~~~~~}

// Overbought/Oversold Gradient Fill {
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(RT, midLinePlot, 100, ob, top_color = color.new(color.green, 0), bottom_color = color.new(color.green, 100),  title = "Overbought Gradient Fill")
fill(RT, midLinePlot, os,  0,  top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0),      title = "Oversold Gradient Fill")
//~~~~~~~~~~~~~~~~~~~~~~~}

//Alerts {
RT_OB_Over   = ta.crossover(RelativeTrendIndex,ob)
RT_OB_Under  = ta.crossunder(RelativeTrendIndex,ob)
RT_OS_Over   = ta.crossover(RelativeTrendIndex,os)
RT_OS_Under  = ta.crossunder(RelativeTrendIndex,os)
RT_Mid_Over  = ta.crossover(RelativeTrendIndex,50)
RT_Mid_Under = ta.crossunder(RelativeTrendIndex,50)
RT_MA_Over   = ta.crossover(RelativeTrendIndex,MA_RelativeTrendIndex)
RT_MA_Under  = ta.crossunder(RelativeTrendIndex,MA_RelativeTrendIndex)

alertcondition(RT_OB_Over,  title = "RTI Crossover OB",  message = "RTI Crossover OB")
alertcondition(RT_OB_Under, title = "RTI Crossunder OB", message = "RTI Crossunder OB")
alertcondition(RT_OS_Over,  title = "RTI Crossover OS",  message = "RTI Crossover OS")
alertcondition(RT_OS_Under, title = "RTI Crossunder OS", message = "RTI Crossunder OS")
alertcondition(RT_Mid_Over, title = "RTI Crossover 50",  message = "RTI Crossover 50")
alertcondition(RT_Mid_Under,title = "RTI Crossunder 50", message = "RTI Crossunder 50")
alertcondition(RT_MA_Over,  title = "RTI Crossover Ma",  message = "RTI Crossover Ma")
alertcondition(RT_MA_Under, title = "RTI Crossunder Ma", message = "RTI Crossunder Ma")

kvak, mrtools, or any of the legacy programmers on the forum, would it be possible to port the RTI in its entirety for MT4? I think this indicator request, if fulfilled, would make Xard777 a very happy man!
These users thanked the author TransparentTrader for the post (total 7):
Banzai, Woodyz, Mrs.Watanabe, Jimmy, boytoy, moey_dw, Jedidiah


InfoRe: Relative Trend Index MT4 Indicator request

19035
TransparentTrader wrote: Sat Jul 29, 2023 10:52 am [TRADINGVIEW] "Relative Trend Index" (RTI) by Zeiierman

I've seen this indicator blow up on TradingView and become immensely popular. But after seeing Xard777's tease of the latest iteration of his system, I think it's high time we got this indicator coded for MT4.

I don't want to give the URL for the TradingView website itself because I'll get kicked off this forum if I put in a link directed to an external website again (currently skating on thin ice right now).

At the same time, the description for this indicator is way too long for me to paste in its entirety.

So I'll paste what I believe is the most relevant part and the rest is up to you to read for yourself.
Image



Despite the lengthy description, the code is only 73 lines long.

Code: Select all

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © Zeiierman
//@version=5
indicator('Relative Trend Index (RTI) by Zeiierman', shorttitle= "RTI", overlay=false, precision=0)

// Inputs {
trend_data_count             = input.int(100, step=4, minval=10, title="Trend Length", inline = "RT", group="Relative Trend Index [RTI]", tooltip="This variable determines the number of data points used in the calculation. \n\nIn short: A high value returns the long-term trend and a low value returns the short-term trend. \n\nIf a user increases the 'Trend Length', the trend will take into account a larger number of data points. This makes the trends smoother and more resistant to sudden changes in the market, as they're based on a broader set of data. It  also makes the trends slower to react to recent changes, as they're diluted by older data. \n\nOn the other hand, if a user decreases the 'Trend Length', the trend will take into account fewer data points. This could make the trends more responsive to recent market changes, as they're based on a narrower set of data. It also makes the trends more susceptible to noise and rapid fluctuations, as each new piece of data has a greater impact.")
trend_sensitivity_percentage = input.int(95, step=1,minval=50, maxval=98,title='Sensitivity    ', inline = "RT1", group="Relative Trend Index [RTI]", tooltip="This variable determines the specific indices in the sorted trend arrays that are used for the upper and lower trend. It's used as a percentage of the 'Trend length'. \n\nIf a user increases the 'Sensitivity', the trend will be based on higher and lower positions in the sorted arrays, respectively. This makes the trend less sensitive.  \n\nConversely, if a user decreases the 'Sensitivity', the trend will be based on positions closer to the middle of the sorted arrays. This makes the trend more sensitive.")
signal_length                = input.int(20, step=1,minval=1, maxval=200,title='Signal Length', inline = "", group="Signal Line", tooltip="Set the Ma period.")
ob  = input.float(80, step=1, minval=0, maxval=100, title="", inline = "obos", group="Overbought/Oversold", tooltip="")
os  = input.float(20,step=1, minval=0, maxval=100,title="", inline = "obos", group="Overbought/Oversold", tooltip="Set the OB/OS levels.")
//~~~~~~~~~~~~~~~~~~~~~~~}

// Relative Trend Index Calculation {
upper_trend = close + ta.stdev(close, 2)
lower_trend = close - ta.stdev(close, 2)

upper_array = array.new<float>(0)
lower_array = array.new<float>(0)
for i = 0 to trend_data_count - 1 
    upper_array.push(upper_trend[i])
    lower_array.push(lower_trend[i])
upper_array.sort()
lower_array.sort()

upper_index  = math.round(trend_sensitivity_percentage / 100 * trend_data_count) - 1
lower_index  = math.round((100 - trend_sensitivity_percentage) / 100 * trend_data_count) - 1
UpperTrend   = upper_array.get(upper_index)
LowerTrend   = lower_array.get(lower_index)
RelativeTrendIndex = ((close - LowerTrend) / (UpperTrend - LowerTrend))*100
//~~~~~~~~~~~~~~~~~~~~~~~}

// Plots {
MA_RelativeTrendIndex = ta.ema(RelativeTrendIndex,signal_length)
RT = plot(RelativeTrendIndex, 'Relative Trend Index (RTI)', color=color.new(color.teal, 0))
plot(MA_RelativeTrendIndex, 'Ma Relative Trend Index', color=color.new(#00bcd4, 0))
//~~~~~~~~~~~~~~~~~~~~~~~}

// Line plots {
mid           = hline(50, 'Mid', color=#606060, linestyle=hline.style_dashed)
overbought    = hline(ob, 'Overbought', color=#606060, linestyle=hline.style_dashed)
oversold      = hline(os, 'Oversold', color=#606060, linestyle=hline.style_dashed)
//~~~~~~~~~~~~~~~~~~~~~~~}

// BG Fill {
fill(overbought, oversold, color=color.new(color.teal, 90), title='Background')
//~~~~~~~~~~~~~~~~~~~~~~~}

// Overbought/Oversold Gradient Fill {
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(RT, midLinePlot, 100, ob, top_color = color.new(color.green, 0), bottom_color = color.new(color.green, 100),  title = "Overbought Gradient Fill")
fill(RT, midLinePlot, os,  0,  top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0),      title = "Oversold Gradient Fill")
//~~~~~~~~~~~~~~~~~~~~~~~}

//Alerts {
RT_OB_Over   = ta.crossover(RelativeTrendIndex,ob)
RT_OB_Under  = ta.crossunder(RelativeTrendIndex,ob)
RT_OS_Over   = ta.crossover(RelativeTrendIndex,os)
RT_OS_Under  = ta.crossunder(RelativeTrendIndex,os)
RT_Mid_Over  = ta.crossover(RelativeTrendIndex,50)
RT_Mid_Under = ta.crossunder(RelativeTrendIndex,50)
RT_MA_Over   = ta.crossover(RelativeTrendIndex,MA_RelativeTrendIndex)
RT_MA_Under  = ta.crossunder(RelativeTrendIndex,MA_RelativeTrendIndex)

alertcondition(RT_OB_Over,  title = "RTI Crossover OB",  message = "RTI Crossover OB")
alertcondition(RT_OB_Under, title = "RTI Crossunder OB", message = "RTI Crossunder OB")
alertcondition(RT_OS_Over,  title = "RTI Crossover OS",  message = "RTI Crossover OS")
alertcondition(RT_OS_Under, title = "RTI Crossunder OS", message = "RTI Crossunder OS")
alertcondition(RT_Mid_Over, title = "RTI Crossover 50",  message = "RTI Crossover 50")
alertcondition(RT_Mid_Under,title = "RTI Crossunder 50", message = "RTI Crossunder 50")
alertcondition(RT_MA_Over,  title = "RTI Crossover Ma",  message = "RTI Crossover Ma")
alertcondition(RT_MA_Under, title = "RTI Crossunder Ma", message = "RTI Crossunder Ma")

kvak, mrtools, or any of the legacy programmers on the forum, would it be possible to port the RTI in its entirety for MT4? I think this indicator request, if fulfilled, would make Xard777 a very happy man!
Thanks for the code, just got back home, kind of late here now will see what I can do with it tomorrow.
These users thanked the author mrtools for the post (total 5):
TransparentTrader, Jimmy, boytoy, moey_dw, Chickenspicy


Re: MT4 Indicator requests and ideas

19037
Dear Mr Tools
Is this indicator really unable to add buttons because the code is too old?
It would be great if you could add a button
Gratitude
Be patient therefore, brethren, until the coming of the Lord. Behold, the husbandman waiteth for the precious fruit of the earth: patiently bearing till he receive the early and latter rain.
Behold, we account them blessed who have endured. You have heard of the patience of Job, and you have seen the end of the Lord, that the Lord is merciful and compassionate.

Re: Relative Trend Index MT4 Indicator request

19040
TransparentTrader wrote: Sat Jul 29, 2023 10:52 am I've seen this indicator blow up on TradingView and become immensely popular. But after seeing Xard777's tease of the latest iteration of his system, I think it's high time we got this indicator coded for MT4.

I don't want to give the URL for the TradingView website itself because I'll get kicked off this forum if I put in a link directed to an external website again (currently skating on thin ice right now).
mrtools wrote: Sun Jul 30, 2023 1:30 pm Thanks for the code, just got back home, kind of late here now will see what I can do with it tomorrow.
YES MRTOOLZ PLEASE!!

DO IT!! DO IT!! DO IT!!

These users thanked the author moey_dw for the post (total 2):
Chickenspicy, Jimmy
Official Forex-station GIF animator at your service 👨‍⚖️
See a GIF with Forex-station.com on it? I probably made it
The best divergence indicator in the world.
Real news exists: Infowars.com 👈


Who is online

Users browsing this forum: Trendiction [Bot], WhatsApp [Bot], Yandex [Bot] and 77 guests