HyperTrend translate from Tradingview
Forums › ProRealTime English forum › ProBuilder support › HyperTrend translate from Tradingview
- This topic has 30 replies, 8 voices, and was last updated 1 year ago by PeterSt.
-
-
08/09/2023 at 12:43 PM #218824
Hello,
i tried to translate the code of this Tradingview script but i don’t understand why it does not work… Maybe it’s because i don’t know tradingview language ? 🙂
https://www.tradingview.com/script/Bcufg8oX-HyperTrend-LuxAlgo/
// 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/// © LuxAlgo//@version=5indicator(“HyperTrend [LuxAlgo]”, “LuxAlgo – HyperTrend”, overlay = true)//——————————————————————————//Settings//—————————————————————————–{mult = input.float(5, ‘Multiplicative Factor’, minval = 0)slope = input.float(14, ‘Slope’, minval = 0)width = input.float(80, ‘Width %’, minval = 0, maxval = 100) / 100//StylebullCss = input.color(color.teal, ‘Average Color’, inline = ‘avg’, group = ‘Style’)bearCss = input.color(color.red, ” , inline = ‘avg’, group = ‘Style’)area = input.string(‘Gradient’, ‘Area’, options = [‘Gradient’, ‘Solid’], group = ‘Style’)upperCss = input.color(color.new(color.red, 70), ‘Upper Area’, group = ‘Style’)lowerCss = input.color(color.new(color.teal, 70) , ‘Lower Area’, group = ‘Style’)//—————————————————————————–}//Calculation//—————————————————————————–{var float upper = navar float lower = navar float avg = closevar hold = 0.var os = 1.atr = nz(ta.atr(200)) * multavg:=math.abs(close-avg)>atr?math.avg(close, avg): avg + os * (hold / mult / slope)os := math.sign(avg – avg[1])hold := os != os[1] ? atr : holdupper := avg + width * holdlower := avg – width * hold//—————————————————————————–}//Plots//—————————————————————————–{css = os == 1 ? bullCss : bearCssplot_upper = plot(upper, ‘Upper’, na)plot_avg = plot(avg, ‘Average’, os != os[1] ? na : css)plot_lower = plot(lower, ‘Lower’, na)var color upper_topcol = navar color upper_btmcol = navar color lower_topcol = navar color lower_btmcol = na//Fillif area == ‘Gradient’upper_topcol := upperCssupper_btmcol := color.new(chart.bg_color, 100)lower_topcol := color.new(chart.bg_color, 100)lower_btmcol := lowerCsselseupper_topcol := upperCssupper_btmcol := upperCsslower_topcol := lowerCsslower_btmcol := lowerCss//Upper Areafill(plot_upper, plot_avg, top_color = os != os[1] ? na : upper_topcol, bottom_color = os != os[1] ? na : upper_btmcol, top_value = upper, bottom_value = avg)//Lower Areafill(plot_avg, plot_lower, top_color = os != os[1] ? na : lower_topcol, bottom_color = os != os[1] ? na : lower_btmcol, top_value = avg, bottom_value = lower)//—————————————————————————–}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////So here’s my prorealcode versiononce avg = close
once hold = 0
once os = 1
once rR = 220
once gR = 20
once bR = 60
once rV = 60
once gV = 179
once bV = 113atr = AverageTrueRange[200] * mult
If abs(close – avg) > atr then
avg = (close+avg)/2
else
avg = avg + os * (hold / mult / slope)
endifos = sgn(avg – avg[1])
If os <> os[1] then
hold = atr
else
hold = hold[1]
endifupper = avg + width*hold
lower = avg – width*holdIf os = 1 then
r = rV
g = gV
b = bV
else
r = rR
g = gR
b = bR
endifDRAWSEGMENT(barindex-1,avg[1],barindex,avg) COLOURED(r,g,b,255)
DRAWSEGMENT(barindex-1,upper[1],barindex,upper) COLOURED(rR,gR,bR,100)
DRAWSEGMENT(barindex-1,lower[1],barindex,lower) COLOURED(rV,gV,bV,100)Return
Any help on how to find my mistake(s) would be appreciate
Thanks
08/09/2023 at 12:55 PM #21882508/09/2023 at 12:59 PM #218828Here’s the description and a picture of the beast 🙂
The HyperTrend indicator aims to provide a real-time estimate of an underlying linear trend in the price. Support and resistance extremities are constructed from this estimate which can provide trade opportunities within the overall trend.
Most tools that return lines on a chart are either subject to backpainting or repainting. We aimed to provide a reliable real-time method to estimate linear trends in the price, enhancing traders’ decision making processes when it comes to trading trends in price, hence the term ‘HyperTrend’.
08/10/2023 at 5:22 PM #21891508/10/2023 at 11:11 PM #218920From what i understood with this :
https://fr.tradingview.com/pine-script-reference/v5/#fun_ta.valuewhen
the section should be converted like this :
If abs(close – avg) > atr then
avg = (close+avg)/2
else
avg = avg + os * (hold / mult / slope)
endifBut i am not sure about the 2 “/”, because hold/mult/slope = (hold*slope)/mult
So avg would be equel to : avg = avg + (os*hold*slope) / mult
Unless the 2 “/” mean anything else… ?
08/10/2023 at 11:45 PM #218921That was also my first thoughts, but the result/graph is wrong…
Math.avg(close, avg) I think is about average of series (arrays)…
I tried it like this and then something is plotted (currently without colors and fillings) but I can’t reproduce the original band…
Hyper Trend1234567891011121314151617181920212223242526272829303132333435363738394041// Indicator settingsmult=5 //Multiplicative Factor (Min.Value=0)slope=14 //Slope (Min.Value=0)width=80/100 //Width % (Min.Value=0 Max.Value=100)Once upper=UndefinedOnce lower=UndefinedOnce avg=CloseOnce hold=0Once os=1// CalculationIf BarIndex>1 thenatr=AverageTrueRange[200](close)*multAvgClose=Average[BarIndex](Close)Avg=Average[BarIndex](AvgClose)if abs(AvgClose-avg)>atr thenavg=(AvgClose+avg)/2elseavg=avg+os*(hold/mult/slope)EndIfEndIfIf (avg-avg[1])>0 thenos=1elsIf (avg-avg[1])<0 thenos=-1Elseos=0EndIfIf os <> os[1] thenhold=atrelsehold=holdEndIfupper = avg + width * holdlower = avg - width * hold// PlottingReturn avg as "avg",upper as "Upper", avg as "Average", lower as "Lower"08/11/2023 at 8:31 AM #21892612345678910111213141516171819202122232425262728293031323334353637383940414243444546474849once avg = closeonce hold = 0once os = 1once rR = 220once gR = 20once bR = 60once rV = 60once gV = 179once bV = 113if barindex > 200 thenatr = AverageTrueRange[200] * multIf abs(close - avg) > atr thenavgN = (close+avg)/2avg = avgNelseavgN = avg + (os*hold*slope)/multavg = avgNendifos = sgn(avg - avg[1])If os <> os[1] thenhold = atrelsehold = hold[1]endifupper = avg + width*hold/100lower = avg - width*hold/100If os = 1 thenr = rVg = gVb = bVelser = rRg = gRb = bRendifDRAWSEGMENT(barindex-1,avg[1],barindex,avg) COLOURED(r,g,b,255)DRAWSEGMENT(barindex-1,upper[1],barindex,upper) COLOURED(rR,gR,bR,100)DRAWSEGMENT(barindex-1,lower[1],barindex,lower) COLOURED(rV,gV,bV,100)endifReturnI have something too… Need something more but it is close
08/15/2023 at 5:34 PM #21911412345678910111213141516171819202122232425262728293031323334353637383940414243444546474849once avg = closeonce hold = 0once os = 1once rR = 220once gR = 20once bR = 60once rV = 60once gV = 179once bV = 113if barindex > 200 thenatr = AverageTrueRange[200] * multIf abs(close - avg) > atr thenavg = (close+avg)/2//avg = avgNelseavg = avg + os*(hold/mult/slope)//avg = avgNendifos = sgn(avg - avg[1])If os <> os[1] thenhold = atrelsehold = hold[1]endifupper = avg + width*hold/100lower = avg - width*hold/100If os = 1 thenr = rVg = gVb = bVelser = rRg = gRb = bRendifDRAWSEGMENT(barindex-1,avg[1],barindex,avg) COLOURED(r,g,b,255)DRAWSEGMENT(barindex-1,upper[1],barindex,upper) COLOURED(rR,gR,bR,100)DRAWSEGMENT(barindex-1,lower[1],barindex,lower) COLOURED(rV,gV,bV,100)endifReturnIt is working now
08/15/2023 at 6:04 PM #219115And with colorbetween…
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152once avg = closeonce hold = 0once os = 1once rR = 220once gR = 20once bR = 60once rV = 60once gV = 179once bV = 113if barindex > 200 thenatr = AverageTrueRange[200] * multIf abs(close - avg) > atr thenavg = (close+avg)/2//avg = avgNelseavg = avg + os*(hold/mult/slope)//avg = avgNendifos = sgn(avg - avg[1])If os <> os[1] thenhold = atrelsehold = hold[1]endifupper = avg + width*hold/100lower = avg - width*hold/100If os = 1 thenr = rVg = gVb = bVelser = rRg = gRb = bRendifDRAWSEGMENT(barindex-1,avg[1],barindex,avg) COLOURED(r,g,b,255)style(line,3)DRAWSEGMENT(barindex-1,upper[1],barindex,upper) COLOURED(rR,gR,bR,100)style(line,1)DRAWSEGMENT(barindex-1,lower[1],barindex,lower) COLOURED(rV,gV,bV,100)style(line,1)ColorBetween(avg,upper,rR,gR,bR,30)ColorBetween(avg,lower,rV,gV,bV,30)endifReturnPicture is DAX today, 5 min timeframe, with 3 as mult, 14 for slope and 85 for width
1 user thanked author for this post.
08/15/2023 at 6:10 PM #21911708/15/2023 at 6:42 PM #219121Good work @LucasBest
Yes, you can place it in the library and before the final placement it will first be reviewed…
Required for placement:
Description of the indicator
Code
Screenshot
Itf.file
08/15/2023 at 7:01 PM #219122Hello, this is how to submit to library:
08/15/2023 at 7:03 PM #219123Good work @LucasBest
Yes, you can place it in the library and before the final placement it will first be reviewed…
Required for placement:
Description of the indicator
Code
Screenshot
Itf.file
Thank you but it seems that i can’t post on the library…
When i click on “add my code”, i have the popup with the “Share my code into the website library”, but then when i click on it, it make me return to the home page… Maybe i have to delete cookies or something else ?! There is a bug.
08/15/2023 at 7:08 PM #219127Hello, this is how to submit to library:
I have same issue as previously reported…
Anyway, Can anyone post it for me ? Thanks
You have the description here below :
The HyperTrend indicator aims to provide a real-time estimate of an underlying linear trend in the price. Support and resistance extremities are constructed from this estimate which can provide trade opportunities within the overall trend.
Most tools that return lines on a chart are either subject to backpainting or repainting. We aimed to provide a reliable real-time method to estimate linear trends in the price, enhancing traders’ decision making processes when it comes to trading trends in price, hence the term ‘HyperTrend’.
Users can use the HyperTrend to easily determine the trend direction in the price, with an average sloping upward indicating an uptrend, and an average sloping downward indicating a downtrend.
The channels upper extremity can act as a resistance, while the lower extremity can act as a support. Contact with candle wicks can signal timely reversals/retracements
Using a higher “Multiplicative Factor” value will return less frequent new channels, and is suitable to analyze longer-term trends. The slope settings on the other end allow us to control the slope of the returned channels, with higher values returning flatter results (similar to our previously posted predictive ranges).
08/16/2023 at 8:01 AM #219139Thank you very much for helping me with the code conversions, it helps the community a lot! Bravo for your work 🙂 For your information, here is the (non-exhaustive) list of conversions in progress: https://docs.google.com/spreadsheets/d/1x-GJwezHPpQwqy1qBj6ygf2nx160f1aLgtQWflMO1_U/edit?usp=sharing I will correct the Library code sharing problem.
-
AuthorPosts
Find exclusive trading pro-tools on