Traduzione Codice “Market Structure Algo” da TV
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Traduzione Codice “Market Structure Algo” da TV
- This topic has 2 replies, 2 voices, and was last updated 2 days ago by
roccafragius.
Viewing 3 posts - 1 through 3 (of 3 total)
-
-
10/16/2025 at 6:39 PM #252684Buongiorno, ho notato su TV questo indicatore che trovo fantastico, si potrebbe avere la traduzione in PRT?Grazie in anticipo!Franco// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/// © OmegaTools//@version=5indicator(“Market Structure Algo”, “MS Algo”, true)left = input.int(5, “Internal MS”, minval = 2)left1 = input.int(30, “External MS”, minval = 7)dist = input.float(2.00, “Zone Distance”, minval = 1, step = 0.1, inline = “zone”)zone = input.bool(true, “”, inline = “zone”)right = leftright1 = left1upcolor = input.color(#2962ff, “Positive color”, group = “Appearence”)downcolor = input.color(#e91e63, “Negative color”, group = “Appearence”)// Internalpvh = ta.pivothigh(left, right)pvl = ta.pivotlow(left, right)var float ph = navar float pl = naph := pvh != 0 ? pvh : ph[1]pl := pvl != 0 ? pvl : pl[1]currenth = ta.valuewhen(pvh != 0, high[right], 0)lasth = ta.valuewhen(pvh != 0, high[right], 1)currentl = ta.valuewhen(pvl != 0, low[right], 0)lastl = ta.valuewhen(pvl != 0, low[right], 1)var int ms = nams := if currenth > lasth and currentl > lastl and close > phms := 2else if close > phms := 1else if currenth < lasth and currentl < lastl and close < plms := -2else if close < plms := -1elsems[1]var int last = nalongsig = close > ph and ms[1] < 0shortsig = close < pl and ms[1] > 0longsig1 = close > ph and ms[1] > 0shortsig1 = close < pl and ms[1] < 0longsig2 = longsig1 and longsig1[1] == false and longsig[1] == falseshortsig2 = shortsig1 and shortsig1[1] == false and shortsig[1] == falselongexit = high > ph and close < phshortexit = low < pl and close > pl// Externalpvh1 = ta.pivothigh(left1, right1)pvl1 = ta.pivotlow(left1, right1)var float ph1 = navar float pl1 = naph1 := pvh1 != 0 ? pvh1 : ph1[1]pl1 := pvl1 != 0 ? pvl1 : pl1[1]// Zonema = ta.sma(close, left1)atr = ta.atr(left1)ma2 = ms > 0 and ms[1] > 0 ? ma – atr * dist : ms < 0 and ms[1] < 0 ? ma + atr*dist : nama3 = ms > 0 and ms[1] > 0 ? ma2 + atr : ms < 0 and ms[1] < 0 ? ma2 – atr : na// Plotif pvh != 0l1 = line.new(x1 = bar_index – right, y1 = ph, x2 = bar_index + math.round(right/2), y2 = ph, color = color.new(upcolor, 50), style = line.style_dashed)if pvl != 0l2 = line.new(x1 = bar_index – right, y1 = pl, x2 = bar_index + math.round(right/2), y2 = pl, color = color.new(downcolor, 50), style = line.style_dashed)if pvh1 != 0l3 = line.new(x1 = bar_index – right1, y1 = ph1, x2 = bar_index + math.round(right1/2), y2 = ph1, color = upcolor, width = 2)if pvl1 != 0l4 = line.new(x1 = bar_index – right1, y1 = pl1, x2 = bar_index + math.round(right1/2), y2 = pl1, color = downcolor, width = 2)barcolor(ms >= 2 ? upcolor : ms == 1 ? color.new(upcolor, 50) : ms <= -2 ? downcolor : ms == -1 ? color.new(downcolor, 50) : na)plotshape(longsig, “Long Signal”, shape.labelup, location.belowbar, upcolor, 0, “↑”, textcolor = color.new(color.white, 50))plotshape(longsig2, “Buy Signal”, shape.triangleup, location.belowbar, upcolor)plotshape(shortsig, “Short Signal”, shape.labeldown, location.abovebar, downcolor, 0, “↓”, textcolor = color.new(color.white, 50))plotshape(shortsig2, “Sell Signal”, shape.triangledown, location.abovebar, downcolor)plotshape(longexit, “Long Exit”, shape.triangledown, location.abovebar, color.gray)plotshape(shortexit, “Short Exit”, shape.triangleup, location.belowbar, color.gray)p1 = plot(zone ? ma2 : na, “External Zone”, close > ma2 ? upcolor : close < ma2 ? downcolor : na, 1, plot.style_linebr)p2 = plot(zone ? ma3 : na, “Internal Zone”, close > ma2 ? color.new(upcolor, 80) : close < ma2 ? color.new(downcolor, 80) : na, 1, plot.style_linebr)fill(p1, p2, color = close > ma2 ? color.new(upcolor, 80) : color.new(downcolor, 80), title = “Zone fill”)alertcondition(longsig, “Long CHoCH”)alertcondition(shortsig, “Short CHoCH”)alertcondition(longsig2, “Long BOS”)alertcondition(shortsig2, “Short BOS”)10/17/2025 at 2:47 PM #252698
Ecco:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186//---------------------------------------------// PRC_Market Structure Algo by OmegaTools//version = 0//17.10.2025//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge//---------------------------------------------// --- User Inputs ---//---------------------------------------------// Internal Market Structure periodprdleftInt = 5// External Market Structure periodprdleftExt = 30// Zone Distance multiplier for ATRdist = 2.0// Show volatility zones (1 = yes, 0 = no)showZone = 1// --- Appearance ---// Positive color (R, G, B)upcolorR = 41upcolorG = 98upcolorB = 255// Negative color (R, G, B)downcolorR = 233downcolorG = 30downcolorB = 99// Exit signal color (Gray)graycolorR = 128graycolorG = 128graycolorB = 128alpha = 50//---------------------------------------------// --- Internal Market Structure Calculation//---------------------------------------------pvh = 0pvl = 0// Pivot High Detection: checks if the high 'left' bars ago is the highest in a window of 'left*2+1' barsIF high[prdleftInt] = highest[prdleftInt*2+1](high) THENpvh = high[prdleftInt]pvhx = barindex[prdleftInt]drawpoint(pvhx,pvh,1)coloured("blue",150)ENDIF// Pivot Low Detection: checks if the low 'left' bars ago is the lowest in a window of 'left*2+1' barsIF low[prdleftInt] = lowest[prdleftInt*2+1](low) THENpvl = low[prdleftInt]pvlx = barindex[prdleftInt]drawpoint(pvlx,pvl,1)coloured("blue",150)ENDIF// Store the last valid pivot levelsIF pvh > 0 THENph = pvhENDIFIF pvl > 0 THENpl = pvlENDIF// Store current and last pivot high/low values (valuewhen logic)IF pvh <> 0 THENlasth = currenthlasthx = currenthxcurrenth = high[prdleftInt]currenthx = barindex[prdleftInt]drawsegment(lasthx,lasth,currenthx,lasth)COLOURED(upcolorR, upcolorG, upcolorB)style(dottedline)ENDIFIF pvl <> 0 THENlastl = currentllastlx = currentlxcurrentl = low[prdleftInt]currentlx = barindex[prdleftInt]drawsegment(lastlx,lastl,currentlx,lastl)COLOURED(downcolorR, downcolorG, downcolorB)style(dottedline)ENDIF//---------------------------------------------// Determine Market Structure (ms) state//---------------------------------------------IF currenth > lasth AND currentl > lastl AND close > ph THENms = 2 // Bullish StrongELSIF close > ph THENms = 1 // BullishELSIF currenth < lasth AND currentl < lastl AND close < pl THENms = -2 // Bearish StrongELSIF close < pl THENms = -1 // BearishENDIF//---------------------------------------------// --- Signal Conditions ---//---------------------------------------------// Long CHoCH Signal (Change of Character)longsig = close > ph AND ms[1] < 0// Short CHoCH Signalshortsig = close < pl AND ms[1] > 0// Long BOS Signal (Break of Structure)longsig1 = close > ph AND ms[1] > 0shortsig1 = close < pl AND ms[1] < 0longsig2 = longsig1 AND NOT longsig1[1] AND NOT longsig[1]shortsig2 = shortsig1 AND NOT shortsig1[1] AND NOT shortsig[1]// Exit Signalslongexit = high > ph AND close < phshortexit = low < pl AND close > pl//---------------------------------------------// --- External Market Structure Calculation//---------------------------------------------once pvhExt = highonce pvlExt = lowIF high[prdleftExt] = highest[prdleftExt*2+1](high) THENpvhExt = high[prdleftExt]pvhxExt = barindex[prdleftExt]drawpoint(pvhxExt,pvhExt,5)coloured("orange",50)drawsegment(pvhxExt,pvhExt,barindex,pvhExt)COLOURED(upcolorR, upcolorG, upcolorB)style(line,2)ENDIFIF low[prdleftExt] = lowest[prdleftExt*2+1](low) THENpvlExt = low[prdleftExt]pvlxExt = barindex[prdleftExt]drawpoint(pvlxExt,pvlExt,5)coloured("orange",50)drawsegment(pvlxExt,pvlExt,barindex,pvlExt)COLOURED(downcolorR, downcolorG, downcolorB)style(line,2)ENDIFIF pvhExt > 0 THENphExt = pvhExtENDIFIF pvlExt > 0 THENplExt = pvlExtENDIF//---------------------------------------------// --- Zone Calculation ---//---------------------------------------------ma = average[prdleftExt](close)atr = averagetruerange[prdleftExt]ma2 = undefinedma3 = undefinedIF ms > 0 AND ms[1] > 0 THENma2 = ma - atr * distma3 = ma2 + atrr=upcolorRg=upcolorGb=upcolorBelsif ms < 0 AND ms[1] < 0 THENma2 = ma + atr * distma3 = ma2 - atrr=downcolorRg=downcolorGb=downcolorBelsema2 = undefinedma3 = undefinedENDIF//---------------------------------------------// --- Visual Outputs ---//---------------------------------------------// 1. Plot Signals on Price ChartatrOffset = atr * 0.5IF longsig THENDRAWARROWUP(barindex, low - atrOffset) COLOURED(upcolorR, upcolorG, upcolorB)ENDIFIF longsig2 THENdrawtext("▲",barindex, low-0.15*atr)COLOURED(upcolorR, upcolorG, upcolorB)ENDIFIF shortsig THENDRAWARROWDOWN(barindex, high + atrOffset) COLOURED(downcolorR, downcolorG, downcolorB)ENDIFIF shortsig2 THENdrawtext("▼",barindex, high+0.15*atr) COLOURED(downcolorR, downcolorG, downcolorB)ENDIFIF longexit THENdrawtext("▼",barindex, high+0.15*atr)COLOURED(graycolorR, graycolorG, graycolorB)ENDIFIF shortexit THENdrawtext("▲",barindex, low-0.15*atr)COLOURED(graycolorR, graycolorG, graycolorB)ENDIF// 2. Conditional Zone PlotszoneMa2 = undefinedzoneMa3 = undefinedIF showZone = 1 THENzoneMa2 = ma2zoneMa3 = ma3ENDIFif islastbarupdate thendrawsegment(currentlx,currentl,barindex+5,currentl)COLOURED(downcolorR, downcolorG, downcolorB)style(dottedline)drawsegment(currenthx,currenth,barindex+5,currenth)COLOURED(upcolorR, upcolorG, upcolorB)style(dottedline)drawsegment(pvlxExt,pvlExt,barindex+5,pvlExt)COLOURED(downcolorR, downcolorG, downcolorB)style(line,2)drawsegment(pvhxExt,pvhExt,barindex+5,pvhExt)COLOURED(upcolorR, upcolorG, upcolorB)style(line,2)endif//---------------------------------------------RETURN zoneMa2 AS "External Zone"coloured(r,g,b)style(line,2), zoneMa3 AS "Internal Zone"coloured(r,g,b,100)style(line,1)10/17/2025 at 5:36 PM #252706Grazieeee Ivan lo provo buon weekend!
-
AuthorPosts
Viewing 3 posts - 1 through 3 (of 3 total)
Find exclusive trading pro-tools on
Similar topics: