Translation of “Trendline Breakouts With Targets” from TV
Forums › ProRealTime English forum › ProBuilder support › Translation of “Trendline Breakouts With Targets” from TV
- This topic has 7 replies, 3 voices, and was last updated 3 weeks ago by Iván.
-
-
11/23/2024 at 3:48 PM #240695
Hello Ivan
I see in Trading View and indicator that I think it is very useful on the low time frame, it indicates you the trendline and the brekout. I would like use this strategy with also your Indicator on Support / Demand. So whne the price arrive on a Support ( for example) timeframe 15m, and I see a brekout of tredinline 1 minute the bias is very High!
I post here the TV code of “Trendline Breakouts With Targets”, please could you translate it in PRT?
Thank you in advance! 🙂
Franco
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/// © ChartPrime//@version=5indicator(“Trendline Breakouts With Targets [ Chartprime ]”,shorttitle = “TBT [ Chartprime ]”,overlay = true,max_bars_back = 500,max_lines_count = 500)bool ChartTime = time > chart.left_visible_bar_time and time < chart.right_visible_bar_timestring CORE = “➞ Core Settings 🔸”var bool TradeisON = falsevar bool LongTrade = falsevar bool ShortTrade = falsevar float TP = 0.0var float SL = 0.0int BarTIME = time – time[1]var line tpLine = navar label LAB = navar int UpdatedX = 0var float UpdatedY = 0.0var float UpdatedSLP = 0.0var int UpdatedXLow = 0var float UpdatedYLow = 0.0var float UpdatedSLPLow = 0.0int Period = input.int(10, title=’ Period ➞’,group = CORE,inline = “001”)bool Trendtype = input.string(title = “ Type ➞”,defval=’Wicks’,options=[‘Wicks’, ‘Body’],group = CORE,inline = “001”)== ‘Wicks’stringExtensions =input.string(title=’ Extend ➞’,defval=’ 25′,options=[‘ 25’, ‘ 50’, ‘ 75’],group = CORE,inline = “001”)color LineCol1 = input.color(color.rgb(109, 111, 111, 19),””,group = CORE,inline = “001”)bool ShowTargets = input.bool(true,”Show Targets”,group = CORE,inline = “002”)ExtenSwitcher(ex) =>switchex‘ 25’ => 1 ,‘ 50’ => 2 ,=> 3WidthSwitcher(ex) =>switchex‘1’ => 1 ,‘2’ => 2 ,=>3StyleSwitcher(style) =>switchstyle‘Dashed’ => line.style_dashed ,‘Dotted’ => line.style_dotted ,=>line.style_solidmethod volAdj(int len)=>math.min(ta.atr(len) * 0.3, close * (0.3/100)) [20] /2Zband = volAdj(30)method Trendlines(float src, int timeIndex,bool dir) =>var int Start = 1 , var int End = 0 , var int TIME = 1var float YEnd = 0, var float YStart = 0 , var float Slope = 0var line Line1 = line.new(na,na,na,na)var line Line2 = line.new(na,na,na,na)var line Line3 = line.new(na,na,na,na)SCR = fixnan(src)if ta.change(SCR) != 0TIME := time[timeIndex]YStart := SCR[1]Start := TIME[1]Slope := (SCR – YStart) / (TIME – Start)SlopeEXTime = ExtenSwitcher(Extensions) * BarTIME * 25End := TIME + EXTimeYEnd := SCR + EXTime * Slopeif ta.change(SCR) != 0 and not TradeisON[1]LineCond = Slope * time < 0 ? dir ? na : color.rgb(11, 139, 7, 53) : dir ? color.rgb(212, 46, 0, 54) : naif not na(LineCond) //and ChartTimeLine1 := line.new(Start,YStart,End,YEnd,xloc.bar_time,extend.none,color=color.new(color.white,100))Line2:=line.new(Start,YStart – (Zband * 2),End,YEnd – (Zband * 2),xloc.bar_time,extend.none,color=color.new(color.black,100))Line3:=line.new(Start,YStart – (Zband * 1),End,YEnd – (Zband * 1),xloc.bar_time,extend.none,color=color.new(color.black,100))linefill.new(Line3,Line2,color= LineCol1)linefill.new(Line3,Line1,color= LineCond)// linefill.new(Line,Line2,color= color.rgb(28, 15, 2, 76))[Start, YStart, Slope]PH = ta.pivothigh(Trendtype ? high : close > open ? close : open, Period, Period / 2)PL = ta.pivotlow(Trendtype ? low : close > open ? open : close, Period, Period / 2)method GetlinePrice(int TIME, float Price, float SLOP, int LookB) =>var float Current = 0.0EsTime = time – TIMECurrent := Price + (EsTime – LookB * BarTIME) * SLOPCurrentmethod CheckCross(float Price, int StartTime, float StartPrice, float SLP) =>var float Current = 0.0var float Previous = 0.0if StartPrice[Period] != StartPriceCurrent := GetlinePrice(StartTime, StartPrice, SLP, 0)Previous := GetlinePrice(StartTime, StartPrice, SLP, 1)Crossover = Price[1] < Previous and Price > Current ? 1 : Price[1] > Previous – (Zband*0.1) and Price < Current – (Zband*0.1) ? -1 : 0Crossover[Xx, XZ, SLPXZ] = Trendlines(PH, Period / 2,false)[XxL, XZL, SLPXZL] = Trendlines(PL, Period / 2, true)if ta.change(fixnan(PH)) != 0UpdatedX := XxUpdatedY := XZUpdatedSLP := SLPXZUpdatedSLPif ta.change(fixnan(PL)) != 0UpdatedXLow := XxLUpdatedYLow := XZLUpdatedSLPLow := SLPXZLUpdatedSLPLowLong = not (UpdatedSLP * time > 0)and CheckCross(close, UpdatedX, UpdatedY, UpdatedSLP)== 1and not TradeisONShort = not (UpdatedSLPLow * time < 0)and CheckCross(close, UpdatedXLow, UpdatedYLow, UpdatedSLPLow)==-1and not TradeisONTradeFire = Long or Shortif Long and not TradeisONLongTrade:= trueShortTrade:= falseif Short and not TradeisONLongTrade:= falseShortTrade:= trueiftrueif TradeFire and not TradeisONTP := switchLong => high + (Zband *20)Short => low – (Zband *20)SL := switchLong => low – (Zband *20)Short => high + (Zband *20)TradeisON:= trueif ShowTargetsline.new(bar_index,Long ? high : low,bar_index,TP,width=2,color = color.rgb(154, 103, 20),style= line.style_dashed)tpLine:= line.new(bar_index,TP,bar_index+2,TP,style= line.style_dashed,color = color.rgb(154, 103, 20))LAB:=label.new(bar_index,TP,“Target”,color = color.rgb(154, 103, 20),style= label.style_label_left,size=size.small,textcolor = color.white)if TradeisONline.set_x2(tpLine,bar_index)label.set_x(LAB,bar_index+1)if LongTrade and TradeisONif high >= TPlabel.set_color(LAB,color.rgb(6, 128, 10, 37))TradeisON:=falseif close <= SLlabel.set_color(LAB,color.new(color.rgb(246, 7, 7),70))TradeisON:=falseelse if ShortTrade and TradeisONiflow<=TPlabel.set_color(LAB,color.rgb(6, 128, 10, 37))TradeisON:=falseifclose>=SLlabel.set_color(LAB,color.new(color.rgb(246, 7, 7),70))TradeisON:=falseplotshape(Long and not TradeisON[1],size = size.small,color = color.rgb(46, 192, 6, 11),location = location.belowbar,style = shape.labelup ,text = “”,textcolor = color.white)plotshape(Short and not TradeisON[1],size = size.small,color = color.rgb(241, 2, 2, 11),location = location.abovebar,style = shape.labeldown ,text = “”,textcolor = color.white)// — END — .11/27/2024 at 5:15 PM #240810Hi! this is my version.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144//--------------------------------------------------////PRC_TrendLine BreakOuts//version = 0//27.11.2024//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge//--------------------------------------------------//// Inputs//--------------------------------------------------//period=10pivottype=1 // 1 means wicks // 0 means BodyshowtrendUP=1 //BooleanshowtrendDN=1 //Boolean//--------------------------------------------------//// Pivots High and Low//--------------------------------------------------//leftbars=periodrightbars=max(1,floor(period/2))if pivottype thensrc1 = lowsrc2 = highelsesrc1 = min(open,close)src2 = max(open,close)endif//---Pivots Lowif src1 > src1[rightbars] and lowest[rightbars](src1) > src1[rightbars] and src1[rightbars] < lowest[leftbars](src1)[rightbars+1] then$PLy[z+1]=src1[rightbars]$PLx[z+1]=barindex[rightbars]z=z+1//y=(x-x1)*slope+y1if $PLy[z]>$PLy[z-1] then$slopeL[z]=($PLy[z]-$PLy[z-1])/($PLx[z]-$PLx[z-1])endifendif//---Pivots Highif src2 < src2[rightbars] and highest[rightbars](src2)<src2[rightbars] and src2[rightbars]>highest[leftbars](src2)[rightbars+1] then$PHy[t+1]=src2[rightbars]$PHx[t+1]=barindex[rightbars]t=t+1//y=(x-x1)*slope+y1if $PHy[t]<$PHy[t-1] then$slope[t]=($PHy[t]-$PHy[t-1])/($PHx[t]-$PHx[t-1])endifendif//--------------------------------------------------////Volatility for TP and SL//--------------------------------------------------//Zband=min(averagetruerange[30](close)*0.3,close*(0.3/100))[20]/2//--------------------------------------------------//// Draw trendlines and trading signals//--------------------------------------------------////Trendline and Long positionsif islastbarupdate and showtrendUP thenfor i=t downto 4 doif $PHy[i-1]<$PHy[i-2] thenx1=$PHx[i-2]y1=$PHy[i-2]for j=$PHx[i-1]+1 to barindex dox2=jy2=y1+(x2-x1)*$slope[i-1]if close[barindex-j]>y2 thentp=high[barindex-j]+(Zband[barindex-j]*20)sl=low[barindex-j]-(Zband[barindex-j]*20)breakendifnextfor k=x2+1 to barindex doif high[barindex-k]>=tp thenx3=ksellprice=max(tp,open[barindex-k])win=1breakelsif low[barindex-k]<=sl thenx3=ksellprice=min(sl,open[barindex-k])win=0breakelsex3=barindexendifnextif x2<$PHx[i] thendrawsegment(x1,y1,x2,y2)coloured("darkgreen")drawtext("▲",x2,y2-0.25*tr[1])coloured("green")drawsegment(x2,tp,x3,tp)style(dottedline)coloured("green")drawsegment(x2,sl,x3,sl)style(dottedline)coloured("darkred")drawsegment(x2,y2,x2,tp)style(dottedline4,1)coloured("green")drawsegment(x2,y2,x2,sl)style(dottedline4,1)coloured("green")if x3<>barindex thendrawpoint(x3,sellprice,1)coloured("orange")drawtext("✖",x3,sellprice+0.25*tr[1])coloured("green")endifendifendifnextendif//---TrendLine and Short positionsif islastbarupdate and showtrendDN thenfor i=z downto 4 doif $PLy[i-1]>$PLy[i-2] thenx1=$PLx[i-2]y1=$PLy[i-2]for j=$PLx[i-1]+1 to barindex dox2=jy2=y1+(x2-x1)*$slopeL[i-1]if close[barindex-j]<y2 thensl=high[barindex-j]+(Zband[barindex-j]*20)tp=low[barindex-j]-(Zband[barindex-j]*20)breakendifnextfor k=x2+1 to barindex doif high[barindex-k]>=sl thenx3=ksellprice=max(sl,open[barindex-k])win=0breakelsif low[barindex-k]<=tp thenx3=ksellprice=min(tp,open[barindex-k])win=1breakelsex3=barindexendifnextif x2<$PLx[i] thendrawsegment(x1,y1,x2,y2)coloured("darkred")drawtext("▼",x2,y2+0.50*tr[1])coloured("darkred")drawsegment(x2,tp,x3,tp)style(dottedline)coloured("green")drawsegment(x2,sl,x3,sl)style(dottedline)coloured("darkred")drawsegment(x2,y2,x2,tp)style(dottedline4,1)coloured("green")drawsegment(x2,y2,x2,sl)style(dottedline4,1)coloured("green")if x3<>barindex thendrawpoint(x3,sellprice,1)coloured("orange")drawtext("✖",x3,sellprice+0.25*tr[1])coloured("darkred")endifendifendifnextendif//--------------------------------------------------//return1 user thanked author for this post.
11/28/2024 at 10:22 AM #240845Hello Ivan
is it possible to have the screener to find today’s values “▲”?
thanks
11/29/2024 at 10:38 AM #240875123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172//--------------------------------------------------////SRC_TrendLine BreakOuts//version = 0//27.11.2024//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge//--------------------------------------------------//// Inputs//--------------------------------------------------//period=10pivottype=1 // 1 means wicks // 0 means Body//--------------------------------------------------//// Pivots High and Low//--------------------------------------------------//leftbars=periodrightbars=max(1,floor(period/2))if pivottype thensrc1 = lowsrc2 = highelsesrc1 = min(open,close)src2 = max(open,close)endif//---Pivots Lowif src1 > src1[rightbars] and lowest[rightbars](src1) > src1[rightbars] and src1[rightbars] < lowest[leftbars](src1)[rightbars+1] then$PLy[z+1]=src1[rightbars]$PLx[z+1]=barindex[rightbars]z=z+1//y=(x-x1)*slope+y1if $PLy[z]>$PLy[z-1] then$slopeL[z]=($PLy[z]-$PLy[z-1])/($PLx[z]-$PLx[z-1])endifendif//---Pivots Highif src2 < src2[rightbars] and highest[rightbars](src2)<src2[rightbars] and src2[rightbars]>highest[leftbars](src2)[rightbars+1] then$PHy[t+1]=src2[rightbars]$PHx[t+1]=barindex[rightbars]t=t+1//y=(x-x1)*slope+y1if $PHy[t]<$PHy[t-1] then$slope[t]=($PHy[t]-$PHy[t-1])/($PHx[t]-$PHx[t-1])endifendif//--------------------------------------------------////Trendline and Long positionsif t>1 thenx1=$PHx[t-1]y1=$PHy[t-1]x2=barindexy2=y1+(x2-x1)*$slope[t]if $PHy[t]<$PHy[t-1] and close crosses over y2 thensetuplong=1elsesetuplong=0endifendif//---TrendLine and Short positionsif z>1 thenxx1=$PLx[z-1]yy1=$PLy[z-1]xx2=barindexyy2=yy1+(xx2-xx1)*$slopeL[z]if $PLy[z]>$PLy[z-1] and close crosses under yy2 thensetupshort=1elsesetupshort=0endifendifSCREENER[setupshort or setuplong](setupshort as "SH",setuplong as "LG")1 user thanked author for this post.
11/29/2024 at 11:46 AM #240882Hello Ivan
I tested your screener but it don’t gives today’s values “▲” on the indicator (for the longshort)
1<span class="Y2IQFc" lang="en"> </span>112/02/2024 at 9:52 AM #24096512/02/2024 at 11:28 AM #240971HI Ivan
TF day
“Today for US Tech 150 in daily timeframe there are 3 stocks.”
yes and on the indicator these 3 values are not in signal “▲” today ? (with the same period that screener)
112/03/2024 at 9:52 AM #241012If you compare the indicator with the screener you will see that the code is different. The indicator needs an additional pivot to draw the line. The screener does not.
This is why the trend line has not yet been drawn.1 user thanked author for this post.
-
AuthorPosts