ProRealCode - Trading & Coding with ProRealTime™
Ivan, gentilmente puoi tradurre il codice allegato? Mi sembra interessante.
// @version= 5
indicator ( “Segnali di tendenza a ritardo zero (MTF) + Filtro laterale” , overlay = true )
// === INPUT ===
// Input di tendenza a ritardo zero
lunghezza = input.int ( 70 , “Lunghezza” , gruppo = “Calcoli principali” )
mult = input.float ( 1.2 , “Moltiplicatore di banda” , gruppo = “Calcoli principali” )
t1 = input.timeframe ( “5” , “Intervallo di tempo 1” , gruppo = “Intervalli di tempo aggiuntivi” )
t2 = input.timeframe ( “15” , “Intervallo di tempo 2” , gruppo = “Intervalli di tempo aggiuntivi” )
t3 = input.timeframe ( “60” , “Intervallo di tempo 3” , gruppo = “Intervalli di tempo aggiuntivi” )
t4 = input.timeframe ( “240” , “Intervallo di tempo 4” , gruppo = “Intervalli di tempo aggiuntivi” )
t5 = input.timeframe ( “1D” , “Intervallo di tempo 5” , gruppo = “Intervalli di tempo aggiuntivi” )
verde = input.color ( #00ffbb , “Colore rialzista” , gruppo = “Aspetto” )
rosso = input.color ( #ff1100 , “Colore ribassista” , gruppo = “Aspetto” )
fillBullColor1Input = input.color ( #00ffbb , “Riempimento esterno rialzista” , gruppo = “Aspetto” )
fillBullColor2Input = input.color ( #00ffbb , “Riempimento interno rialzista” , gruppo = “Aspetto” )
fillBearColor1Input = input.color ( #ff1100 , “Riempimento esterno ribassista” , gruppo = “Aspetto” )
fillBearColor2Input = input.colore ( #ff1100 , “Riempimento interno ribassista” , gruppo = “Aspetto” )
// Input di mercato laterale
rsiLength = input ( 14 , title = “Lunghezza RSI” , group = “Filtro mercato laterale” )
adxLength = input ( 14 , title = “Lunghezza ADX” , group = “Filtro mercato laterale” )
showSidewaysCircles = input.bool ( true , “Mostra cerchi laterali” , group = “Filtro mercato laterale” )
circleColor = input.color ( color.gray , “Colore cerchio laterale” , group = “Filtro mercato laterale” )
// === CALCOLO DEL MERCATO LATERALE ===
rsiValue = ta.rsi ( close , rsiLength )
tr = ta.tr ( true )
upMove = high – ta.highest ( high [ 1 ] , 1 )
downMove = ta.lowest ( low [ 1 ] , 1 ) – low
diPlus = ta.rma ( upMove > downMove e upMove > 0 ? upMove : 0 , adxLength ) / ta.rma ( tr , adxLength ) * 100
diMinus = ta.rma ( downMove > upMove e downMove > 0 ? downMove : 0 , adxLength ) / ta.rma ( tr , adxLength ) * 100
dx = math.abs ( diPlus – diMinus ) / ( diPlus + diMinus ) * 100
adx = ta.rma ( dx , adxLength )
rsiCondition = rsiValue > 40 e rsiValue < 60
adxCondition = adx <= 25 e adx < diPlus e adx < diMinus
lateralmente = rsiCondition e adxCondition
// Traccia il mercato lateralmente come una
forma circolare ( showSidewaysCircles e lateralmente ? chiudi : in , titolo = “Mercato Sideways” , style = shape.labelup , location = location.belowbar , color = circleColor );
// === CALCOLO DEL TREND A RITARDO ZERO ===
src = close
lag = math.floor (( length – 1 ) / 2 )
zlema = ta.ema ( src + ( src – src [ lag ]) , length )
volatility = ta.highest ( ta.atr ( length ) , length * 3 ) * mult
var trend = 0
se non lateralmente se ta.crossover ( chiusura , zlema + volatilità ) tendenza : = 1 altrimenti se ta.crossunder ( chiusura , zlema – volatilità ) tendenza : = -1
zlemaColor = trend == 1 ? color.new ( verde , 70 ) : trend == -1 ? color.new ( rosso , 70 ) : na
m = plot ( zlema , titolo = “Base a ritardo zero” , larghezza riga = 2 , colore = zlemaColor )
superiore = plot ( trend == -1 ? zlema + volatilità : na , stile = plot.style_linebr , colore = color.new ( rosso , 90 ) , titolo = “Banda di deviazione superiore” )
inferiore = plot ( trend == 1 ? zlema – volatilità : na , stile = plot.style_linebr , colore = color.new ( verde , 90 ) , titolo = “Banda di deviazione inferiore” )
riempimento ( m , superiore , ( apri + chiudi ) / 2 , zlema + volatilità , colore.nuovo ( fillBearColor1Input , 90 ) , colore.nuovo ( fillBearColor2Input , 70 ))
riempimento ( m , inferiore , ( apri + chiudi ) / 2 , zlema – volatilità , colore.nuovo ( fillBullColor1Input , 90 ) , colore.nuovo ( fillBullColor2Input , 70 ))
plotshape ( non lateralmente e ta.crossover ( trend , 0 ) ? zlema + volatilità : na , “Trend ribassista” , shape.labeldown , location.absolute , rosso , testo = “▼” , colore del testo = chart.fg_color , dimensione = size.small )
plotshape ( non lateralmente e ta.crossover ( trend , 0 ) ? zlema – volatilità : na , “Trend rialzista” , shape.labelup , location.absolute , verde , testo = “▲” , colore del testo = chart.fg_color , dimensione = size.small )
plotchar ( non lateralmente e ta.crossover ( chiudi , zlema ) e trend == 1 e trend [ 1 ] == 1 ? zlema – volatilità * 1,5 : na , “Entrata rialzista” , “▲” , posizione.assoluta , verde , dimensione = dimensione.piccola )
plotchar ( non lateralmente e ta.crossunder ( chiudi , zlema ) e trend == -1 e trend [ 1 ] == -1 ? zlema + volatilità * 1,5 : na , “Entrata ribassista” , “▼” , posizione.assoluta , rosso , dimensione = dimensione.piccola )
s1 = richiesta.sicurezza ( syminfo.tickerid , t1 , tendenza )
s2 = richiesta.sicurezza ( syminfo.tickerid , t2 , tendenza )
s3 = richiesta.sicurezza ( syminfo.tickerid , t3 , tendenza )
s4 = richiesta.sicurezza ( syminfo.tickerid , t4 , tendenza )
s5 = richiesta.sicurezza ( syminfo.tickerid , t5 , tendenza )
s1a = s1 == 1 ? “Rialzista” : “Ribassista”
s2a = s2 == 1 ? “Rialzista” : “Ribassista”
s3a = s3 == 1 ? “Rialzista” : “Ribassista”
s4a = s4 == 1 ? “Rialzista” : “Ribassista”
s5a = s5 == 1 ? “Rialzista” : “Ribassista”
se barstate.islast var data_table = table.new ( posizione = position.top_right , colonne = 2 , righe = 6 , colore sfondo = chart.bg_color , larghezza bordo = 1 , colore bordo = chart.fg_color , colore cornice = chart.fg_color , larghezza cornice = 1 ) table.cell ( data_table , text_halign = text.align_center , colonna = 0 , riga = 0 , testo = “Intervallo di tempo” , colore testo = chart.fg_color ) table.cell ( data_table , text_halign = text.align_center , colonna = 1 , riga = 0 , testo = “Segnale” , colore testo = chart.fg_color )
table.cell ( data_table , text_halign = text.align_center , column = 0 , row = 1 , text = t1 , text_color = chart.fg_color ) table.cell ( data_table , text_halign = text.align_center , column = 1 , row = 1 , text = s1a , text_color = chart.fg_color , bgcolor = s1a == “Ottimista” ? color.new ( green , 70 ) : color.new ( red , 70 ))
table.cell ( data_table , text_halign = text.align_center , column = 0 , row = 2 , text = t2 , text_color = chart.fg_color ) table.cell ( data_table , text_halign = text.align_center , column = 1 , row = 2 , text = s2a , text_color = chart.fg_color , bgcolor = s2a == “Ottimista” ? color.new ( green , 70 ) : color.new ( red , 70 ))
table.cell ( data_table , text_halign = text.align_center , column = 0 , row = 3 , text = t3 , text_color = chart.fg_color ) table.cell ( data_table , text_halign = text.align_center , column = 1 , row = 3 , text = s3a , text_color = chart.fg_color , bgcolor = s3a == “Ottimista” ? color.new ( green , 70 ) : color.new ( red , 70 ))
table.cell ( data_table , text_halign = text.align_center , column = 0 , row = 4 , text = t4 , text_color = chart.fg_color ) table.cell ( data_table , text_halign = text.align_center , column = 1 , row = 4 , text = s4a , text_color = chart.fg_color , bgcolor = s4a == “Ottimista” ? color.new ( green , 70 ) : color.new ( red , 70 ))
table.cell ( data_table , text_halign = text.align_center , column = 0 , row = 5 , text = t5 , text_color = chart.fg_color ) table.cell ( data_table , text_halign = text.align_center , column = 1 , row = 5 , text = s5a , text_color = chart.fg_color , bgcolor = s5a == “Ottimista” ? color.new ( green , 70 ) : color.new ( red , 70 ))
// === AVVISI ===
alertcondition ( non laterale e ta.crossover ( close , zlema ) e trend == 1 e trend [ 1 ] == 1 , “Segnale di ingresso rialzista” , message = “Segnale di ingresso rialzista rilevato. Si consideri l’inserimento di una posizione lunga.” )
alertcondition ( non laterale e ta.crossunder ( close , zlema ) e trend == -1 e trend [ 1 ] == -1 , “Segnale di ingresso ribassista” , message = “Segnale di ingresso ribassista rilevato. Si consideri l’inserimento di una posizione corta.” )
alertcondition ( non laterale e ta.crossover ( trend , 0 ) , “Tendenza rialzista” )
alertcondition ( non laterale e ta.crossunder ( trend , 0 ) , “Tendenza ribassista” )
alertcondition ( non laterale e ta.cross ( trend , 0 ) , “Tendenza (rialzista o ribassista)” )
Grazie
Ciao. Posso tradurlo, ma ho bisogno di un codice funzionante. Quello che hai fornito sembra una traduzione dall’inglese all’italiano e contiene diversi errori.
Se mi fornisci il codice funzionante e, soprattutto, lo aggiungi con il pulsante “Add PRT code”, posso farlo.
Salvo errori, c’è già questa versione senza tabella timeframes:
//@version=5
indicator(""Zero Lag Trend Signals (MTF) + Sideways Filter"", overlay=true)
// === INPUTS ===
// Zero Lag Trend Inputs
length = input.int(70, ""Length"", group = ""Main Calculations"")
mult = input.float(1.2, ""Band Multiplier"", group = ""Main Calculations"")
t1 = input.timeframe(""5"", ""Time frame 1"", group = ""Extra Timeframes"")
t2 = input.timeframe(""15"", ""Time frame 2"", group = ""Extra Timeframes"")
t3 = input.timeframe(""60"", ""Time frame 3"", group = ""Extra Timeframes"")
t4 = input.timeframe(""240"", ""Time frame 4"", group = ""Extra Timeframes"")
t5 = input.timeframe(""1D"", ""Time frame 5"", group = ""Extra Timeframes"")
green = input.color(#00ffbb, ""Bullish Color"", group = ""Appearance"")
red = input.color(#ff1100, ""Bearish Color"", group = ""Appearance"")
fillBullColor1Input = input.color(#00ffbb, ""Bullish Fill Outer"", group = ""Appearance"")
fillBullColor2Input = input.color(#00ffbb, ""Bullish Fill Inner"", group = ""Appearance"")
fillBearColor1Input = input.color(#ff1100, ""Bearish Fill Outer"", group = ""Appearance"")
fillBearColor2Input = input.color(#ff1100, ""Bearish Fill Inner"", group = ""Appearance"")
// Sideways Market Inputs
rsiLength = input(14, title=""RSI Length"", group=""Sideways Market Filter"")
adxLength = input(14, title=""ADX Length"", group=""Sideways Market Filter"")
showSidewaysCircles = input.bool(true, ""Show Sideways Circles"", group=""Sideways Market Filter"")
circleColor = input.color(color.gray, ""Sideways Circle Color"", group=""Sideways Market Filter"")
// === SIDEWAYS MARKET CALCULATION ===
rsiValue = ta.rsi(close, rsiLength)
tr = ta.tr(true)
upMove = high - ta.highest(high[1], 1)
downMove = ta.lowest(low[1], 1) - low
diPlus = ta.rma(upMove > downMove and upMove > 0 ? upMove : 0, adxLength) / ta.rma(tr, adxLength) * 100
diMinus = ta.rma(downMove > upMove and downMove > 0 ? downMove : 0, adxLength) / ta.rma(tr, adxLength) * 100
dx = math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100
adx = ta.rma(dx, adxLength)
rsiCondition = rsiValue > 40 and rsiValue < 60
adxCondition = adx <= 25 and adx < diPlus and adx < diMinus
sideways = rsiCondition and adxCondition
// Plot sideways market as a circle
plotshape(showSidewaysCircles and sideways ? close : na, title=""Sideways Market"", style=shape.labelup, location=location.belowbar, color=circleColor)
// === ZERO LAG TREND CALCULATION ===
src = close
lag = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length * 3) * mult
var trend = 0
if not sideways
if ta.crossover(close, zlema + volatility)
trend := 1
else if ta.crossunder(close, zlema - volatility)
trend := -1
zlemaColor = trend == 1 ? color.new(green, 70) : trend == -1 ? color.new(red, 70) : na
m = plot(zlema, title=""Zero Lag Basis"", linewidth=2, color=zlemaColor)
upper = plot(trend == -1 ? zlema + volatility : na, style=plot.style_linebr, color=color.new(red, 90), title=""Upper Deviation Band"")
lower = plot(trend == 1 ? zlema - volatility : na, style=plot.style_linebr, color=color.new(green, 90), title=""Lower Deviation Band"")
fill(m, upper, (open + close) / 2, zlema + volatility, color.new(fillBearColor1Input, 90), color.new(fillBearColor2Input, 70))
fill(m, lower, (open + close) / 2, zlema - volatility, color.new(fillBullColor1Input, 90), color.new(fillBullColor2Input, 70))
plotshape(not sideways and ta.crossunder(trend, 0) ? zlema + volatility : na, ""Bearish Trend"", shape.labeldown, location.absolute, red, text=""▼"", textcolor=chart.fg_color, size=size.small)
plotshape(not sideways and ta.crossover(trend, 0) ? zlema - volatility : na, ""Bullish Trend"", shape.labelup, location.absolute, green, text=""▲"", textcolor=chart.fg_color, size=size.small)
plotchar(not sideways and ta.crossover(close, zlema) and trend == 1 and trend[1] == 1 ? zlema - volatility * 1.5 : na, ""Bullish Entry"", ""▲"", location.absolute, green, size=size.tiny)
plotchar(not sideways and ta.crossunder(close, zlema) and trend == -1 and trend[1] == -1 ? zlema + volatility * 1.5 : na, ""Bearish Entry"", ""▼"", location.absolute, red, size=size.tiny)
s1 = request.security(syminfo.tickerid, t1, trend)
s2 = request.security(syminfo.tickerid, t2, trend)
s3 = request.security(syminfo.tickerid, t3, trend)
s4 = request.security(syminfo.tickerid, t4, trend)
s5 = request.security(syminfo.tickerid, t5, trend)
s1a = s1 == 1 ? ""Bullish"" : ""Bearish""
s2a = s2 == 1 ? ""Bullish"" : ""Bearish""
s3a = s3 == 1 ? ""Bullish"" : ""Bearish""
s4a = s4 == 1 ? ""Bullish"" : ""Bearish""
s5a = s5 == 1 ? ""Bullish"" : ""Bearish""
if barstate.islast
var data_table = table.new(position=position.top_right, columns=2, rows=6, bgcolor=chart.bg_color, border_width=1, border_color=chart.fg_color, frame_color=chart.fg_color, frame_width=1)
table.cell(data_table, text_halign=text.align_center, column=0, row=0, text=""Time Frame"", text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=0, text=""Signal"", text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=0, row=1, text=t1, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=1, text=s1a, text_color=chart.fg_color, bgcolor=s1a == ""Bullish"" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=2, text=t2, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=2, text=s2a, text_color=chart.fg_color, bgcolor=s2a == ""Bullish"" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=3, text=t3, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=3, text=s3a, text_color=chart.fg_color, bgcolor=s3a == ""Bullish"" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=4, text=t4, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=4, text=s4a, text_color=chart.fg_color, bgcolor=s4a == ""Bullish"" ? color.new(green, 70) : color.new(red, 70))
table.cell(data_table, text_halign=text.align_center, column=0, row=5, text=t5, text_color=chart.fg_color)
table.cell(data_table, text_halign=text.align_center, column=1, row=5, text=s5a, text_color=chart.fg_color, bgcolor=s5a == ""Bullish"" ? color.new(green, 70) : color.new(red, 70))
// === ALERTS ===
alertcondition(not sideways and ta.crossover(close, zlema) and trend == 1 and trend[1] == 1, ""Bullish Entry Signal"", message=""Bullish Entry Signal detected. Consider entering a long position."")
alertcondition(not sideways and ta.crossunder(close, zlema) and trend == -1 and trend[1] == -1, ""Bearish Entry Signal"", message=""Bearish Entry Signal detected. Consider entering a short position."")
alertcondition(not sideways and ta.crossover(trend, 0), ""Bullish Trend"")
alertcondition(not sideways and ta.crossunder(trend, 0), ""Bearish Trend"")
alertcondition(not sideways and ta.cross(trend, 0), ""(Bullish or Bearish) Trend"")
Adesso sì!
//-------------------------------------//
//PRC_Zero Lag Trend Signals + Sideways filter
//version = 0
//06.05.25
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//-------------------------------------//
//---Inputs
//-------------------------------------//
length=70
mult=1.2
src=close
rsilength=14
adxlength=14
showSideways=1
//-------------------------------------//
// Sideways market calculation
//-------------------------------------//
//---RSI
rsivalue=rsi[rsilength](close)
rsiCondition=rsiValue>40 and rsiValue<60
//---ADX
pdi=DIplus[adxlength](close)
mdi=DIminus[adxlength](close)
iadx=ADX[adxlength]
adxCondition=iadx<=25 and iadx<pdi and iadx<mdi
//---Sideways
sideways=rsiCondition and adxCondition
if showSideways and sideways then
drawpoint(barindex,low-tr,2)coloured("grey")
endif
//-------------------------------------//
// Zlema calculation
//-------------------------------------//
lag=floor((length-1)/2)
myzlema=average[length,1](src+(src-src[lag]))
//-------------------------------------//
// Volatility calculation
//-------------------------------------//
atr=averagetruerange[length](close)
volatil=highest[length*3](atr)*mult
//-------------------------------------//
// Trend condition
//-------------------------------------//
once trend=0
if sideways=0 then
if close crosses over myzlema+volatil then
trend=1
r=0
g=255
elsif close crosses under myzlema-volatil then
trend=-1
r=255
g=0
endif
endif
//-------------------------------------//
// Signals and colors
//-------------------------------------//
if trend=-1 then
upper=myzlema+volatil
alpha1=90
lower=myzlema
alpha2=0
if trend<>trend[1] and sideways=0 then
drawarrowdown(barindex,upper+0.25*atr)coloured(r,g,0,175)
endif
else
upper=myzlema
alpha1=0
lower=myzlema-volatil
alpha2=90
if trend<>trend[1] and sideways=0 then
drawarrowup(barindex,lower-0.25*atr)coloured(r,g,0,175)
endif
endif
if close crosses over myzlema and trend=1 and trend[1]=1 and sideways=0 then
drawtext("▲",barindex,myzlema-volatil*1.5)coloured("green")
elsif close crosses under myzlema and trend=-1 and trend[1]=-1 and sideways=0 then
drawtext("▼",barindex,myzlema+volatil*1.5)coloured("red")
endif
if barindex > 4*length then
colorbetween(myzlema,upper,r,g,0,alpha1)
colorbetween(myzlema,lower,r,g,0,alpha2)
endif
//-------------------------------------//
return myzlema as "Zero Lag Basis"style(line,2)coloured(r,g,0)
Grazie funziona bene, ma non ci sono etichette sui vari TF
Quando avremo le funzioni nella v13, potrò farlo facilmente.
Per ora si può fare solo copiando e incollando il codice più volte, tante quante sono le timeframe che vogliamo visualizzare.
Traduzione codice “Indicatore di tendenza”
This topic contains 6 replies,
has 3 voices, and was last updated by
Iván González
9 months ago.
| Forum: | ProBuilder: Indicatori & Strumenti Personalizzati |
| Language: | Italian |
| Started: | 05/05/2025 |
| Status: | Active |
| Attachments: | No files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.