ProRealCode - Trading & Coding with ProRealTime™
bonjour
Serait il possible de me convertir le script de cet indicateur en langage probuilder?
merci!
//@version=5
indicator(“SuperIchi [LUX]”,’SuperIchi [LuxAlgo]’,overlay=true,max_lines_count=500)
tenkan_len = input(9,’Tenkan ‘,inline=’tenkan’)
tenkan_mult = input(2.,”,inline=’tenkan’)
kijun_len = input(26,’Kijun ‘,inline=’kijun’)
kijun_mult = input(4.,”,inline=’kijun’)
spanB_len = input(52,’Senkou Span B ’,inline=’span’)
spanB_mult = input(6.,”,inline=’span’)
offset = input(26,’Displacement’)
//——————————————————————————
avg(src,length,mult)=>
atr = ta.atr(length)*mult
up = hl2 + atr
dn = hl2 – atr
upper = 0.,lower = 0.
upper := src[1] < upper[1] ? math.min(up,upper[1]) : up
lower := src[1] > lower[1] ? math.max(dn,lower[1]) : dn
os = 0,max = 0.,min = 0.
os := src > upper ? 1 : src < lower ? 0 : os[1]
spt = os == 1 ? lower : upper
max := ta.cross(src,spt) ? math.max(src,max[1]) : os == 1 ? math.max(src,max[1]) : spt
min := ta.cross(src,spt) ? math.min(src,min[1]) : os == 0 ? math.min(src,min[1]) : spt
math.avg(max,min)
//——————————————————————————
tenkan = avg(close,tenkan_len,tenkan_mult)
kijun = avg(close,kijun_len,kijun_mult)
senkouA = math.avg(kijun,tenkan)
senkouB = avg(close,spanB_len,spanB_mult)
//——————————————————————————
tenkan_css = #2157f3
kijun_css = #ff5d00
cloud_a = color.new(color.teal,80)
cloud_b = color.new(color.red,80)
chikou_css = #7b1fa2
plot(tenkan,’Tenkan-Sen’,tenkan_css)
plot(kijun,’Kijun-Sen’,kijun_css)
plot(ta.crossover(tenkan,kijun) ? kijun : na,’Crossover’,#2157f3,3,plot.style_circles)
plot(ta.crossunder(tenkan,kijun) ? kijun : na,’Crossunder’,#ff5d00,3,plot.style_circles)
A = plot(senkouA,’Senkou Span A’,na,offset=offset-1)
B = plot(senkouB,’Senkou Span B’,na,offset=offset-1)
fill(A,B,senkouA > senkouB ? cloud_a : cloud_b)
plot(close,’Chikou’,chikou_css,offset=-offset+1,display=display.none)
Voilà. Je déplace cette discussion vers le groupe de traduction des indicateurs TradingView vers ProBuilder.
DEFPARAM DRAWONLASTBARONLY = TRUE
//--------------------------------------------
// PRC_SuperIchi (SuperIchi [LUX] by LuxAlgo)
// version = 0
// 04.09.2026
// Ivan Gonzalez @ www.prorealcode.com
// Sharing ProRealTime knowledge
//--------------------------------------------
// Ichimoku-style set of lines built on an ATR trailing-stop
// engine instead of the classic Donchian midpoints.
// Each line is the midpoint between the extreme reached by
// price and the trailing stop of its own regime.
//--------------------------------------------
//=== INPUTS (declare as Variables in the editor) ===
tenkanLen = 9 // Tenkan ATR length
tenkanMult = 2.0 // Tenkan ATR multiplier
kijunLen = 26 // Kijun ATR length
kijunMult = 4.0 // Kijun ATR multiplier
spanBLen = 52 // Senkou Span B ATR length
spanBMult = 6.0 // Senkou Span B ATR multiplier
disp = 26 // Displacement
//=== ADAPTIVE MIDLINE ENGINE - TENKAN ===
atrT = averagetruerange[tenkanLen](close) * tenkanMult
upT = (high + low) / 2 + atrT
dnT = (high + low) / 2 - atrT
IF barindex <= tenkanLen THEN
upperT = upT
lowerT = dnT
osT = 0
sptT = close
mxT = close
mnT = close
ELSE
IF close[1] lowerT[1] THEN
lowerT = max(dnT, lowerT[1])
ELSE
lowerT = dnT
ENDIF
IF close > upperT THEN
osT = 1
ELSIF close < lowerT THEN
osT = 0
ELSE
osT = osT[1]
ENDIF
IF osT = 1 THEN
sptT = lowerT
ELSE
sptT = upperT
ENDIF
crT = 0
IF close[1] sptT THEN
crT = 1
ENDIF
IF close[1] > sptT[1] AND close < sptT THEN
crT = 1
ENDIF
IF crT = 1 OR osT = 1 THEN
mxT = max(close, mxT[1])
ELSE
mxT = sptT
ENDIF
IF crT = 1 OR osT = 0 THEN
mnT = min(close, mnT[1])
ELSE
mnT = sptT
ENDIF
ENDIF
//=== ADAPTIVE MIDLINE ENGINE - KIJUN ===
atrK = averagetruerange[kijunLen](close) * kijunMult
upK = (high + low) / 2 + atrK
dnK = (high + low) / 2 - atrK
IF barindex <= kijunLen THEN
upperK = upK
lowerK = dnK
osK = 0
sptK = close
mxK = close
mnK = close
ELSE
IF close[1] lowerK[1] THEN
lowerK = max(dnK, lowerK[1])
ELSE
lowerK = dnK
ENDIF
IF close > upperK THEN
osK = 1
ELSIF close < lowerK THEN
osK = 0
ELSE
osK = osK[1]
ENDIF
IF osK = 1 THEN
sptK = lowerK
ELSE
sptK = upperK
ENDIF
crK = 0
IF close[1] sptK THEN
crK = 1
ENDIF
IF close[1] > sptK[1] AND close < sptK THEN
crK = 1
ENDIF
IF crK = 1 OR osK = 1 THEN
mxK = max(close, mxK[1])
ELSE
mxK = sptK
ENDIF
IF crK = 1 OR osK = 0 THEN
mnK = min(close, mnK[1])
ELSE
mnK = sptK
ENDIF
ENDIF
//=== ADAPTIVE MIDLINE ENGINE - SENKOU SPAN B ===
atrS = averagetruerange[spanBLen](close) * spanBMult
upS = (high + low) / 2 + atrS
dnS = (high + low) / 2 - atrS
IF barindex <= spanBLen THEN
upperS = upS
lowerS = dnS
osS = 0
sptS = close
mxS = close
mnS = close
ELSE
IF close[1] lowerS[1] THEN
lowerS = max(dnS, lowerS[1])
ELSE
lowerS = dnS
ENDIF
IF close > upperS THEN
osS = 1
ELSIF close < lowerS THEN
osS = 0
ELSE
osS = osS[1]
ENDIF
IF osS = 1 THEN
sptS = lowerS
ELSE
sptS = upperS
ENDIF
crS = 0
IF close[1] sptS THEN
crS = 1
ENDIF
IF close[1] > sptS[1] AND close < sptS THEN
crS = 1
ENDIF
IF crS = 1 OR osS = 1 THEN
mxS = max(close, mxS[1])
ELSE
mxS = sptS
ENDIF
IF crS = 1 OR osS = 0 THEN
mnS = min(close, mnS[1])
ELSE
mnS = sptS
ENDIF
ENDIF
//=== OUTPUT LINES (masked during the longest warm-up) ===
IF barindex sB THEN
aUp = 51
aDn = 0
ELSE
aUp = 0
aDn = 51
ENDIF
COLORBETWEEN(sA, sB, 0, 137, 123, aUp)
COLORBETWEEN(sA, sB, 255, 82, 82, aDn)
//=== PROJECTED CLOUD (bars that do not exist yet) ===
IF islastbarupdate AND barindex > spanBLen + disp THEN
FOR j = 1 TO dispPlot DO
xa = barindex + j - 1
xb = barindex + j
ya = senkouA[dispPlot - j + 1]
yb = senkouA[dispPlot - j]
za = senkouB[dispPlot - j + 1]
zb = senkouB[dispPlot - j]
ym = (ya + yb) / 2
zm = (za + zb) / 2
IF ym > zm THEN
rr = 0
gg = 137
bb = 123
ELSE
rr = 255
gg = 82
bb = 82
ENDIF
DRAWRECTANGLE(xa, min(ym, zm), xb, max(ym, zm)) COLOURED(rr, gg, bb, 0) FILLCOLOR(rr, gg, bb, 51)
NEXT
ENDIF
//=== TENKAN / KIJUN CROSSES ===
dotUp = undefined
dotDn = undefined
aDotUp = 0
aDotDn = 0
IF tenkan > kijun AND tenkan[1] <= kijun[1] THEN
dotUp = kijun
aDotUp = 255
ENDIF
IF tenkan = kijun[1] THEN
dotDn = kijun
aDotDn = 255
ENDIF
RETURN tenkan COLOURED(33, 87, 243, 255) STYLE(line, 2) AS "Tenkan-Sen", kijun COLOURED(255, 93, 0, 255) STYLE(line, 2) AS "Kijun-Sen", dotUp COLOURED(33, 87, 243, aDotUp) STYLE(point, 3) AS "Crossover", dotDn COLOURED(255, 93, 0, aDotDn) STYLE(point, 3) AS "Crossunder", sA COLOURED(0, 137, 123, 0) STYLE(line, 1) AS "Senkou Span A", sB COLOURED(255, 82, 82, 0) STYLE(line, 1) AS "Senkou Span B"
bonjour Ivan et merci pour ta réactivité
le code a une erreur sur les lignes 40 42 44 et 47
merci encore pour ton aide!
bonjour ivan
Je crois également que la senkou span A n’est pas défini…
Merci et bonne journée à toi!
I don’t know why sometimes the copy/paste doesn’t work. I’ve attached also the .itf
DEFPARAM DRAWONLASTBARONLY = TRUE
//--------------------------------------------
// PRC_SuperIchi (SuperIchi [LUX] by LuxAlgo)
// version = 0
// 04.09.2026
// Ivan Gonzalez @ www.prorealcode.com
// Sharing ProRealTime knowledge
//--------------------------------------------
// Ichimoku-style set of lines built on an ATR trailing-stop
// engine instead of the classic Donchian midpoints.
// Each line is the midpoint between the extreme reached by
// price and the trailing stop of its own regime.
//--------------------------------------------
//=== INPUTS (declare as Variables in the editor) ===
tenkanLen = 9 // Tenkan ATR length
tenkanMult = 2.0 // Tenkan ATR multiplier
kijunLen = 26 // Kijun ATR length
kijunMult = 4.0 // Kijun ATR multiplier
spanBLen = 52 // Senkou Span B ATR length
spanBMult = 6.0 // Senkou Span B ATR multiplier
disp = 26 // Displacement
//=== ADAPTIVE MIDLINE ENGINE - TENKAN ===
atrT = averagetruerange[tenkanLen](close) * tenkanMult
upT = (high + low) / 2 + atrT
dnT = (high + low) / 2 - atrT
IF barindex <= tenkanLen THEN
upperT = upT
lowerT = dnT
osT = 0
sptT = close
mxT = close
mnT = close
ELSE
IF close[1] < upperT[1] THEN
upperT = min(upT, upperT[1])
ELSE
upperT = upT
ENDIF
IF close[1] > lowerT[1] THEN
lowerT = max(dnT, lowerT[1])
ELSE
lowerT = dnT
ENDIF
IF close > upperT THEN
osT = 1
ELSIF close < lowerT THEN
osT = 0
ELSE
osT = osT[1]
ENDIF
IF osT = 1 THEN
sptT = lowerT
ELSE
sptT = upperT
ENDIF
crT = 0
IF close[1] < sptT[1] AND close > sptT THEN
crT = 1
ENDIF
IF close[1] > sptT[1] AND close < sptT THEN
crT = 1
ENDIF
IF crT = 1 OR osT = 1 THEN
mxT = max(close, mxT[1])
ELSE
mxT = sptT
ENDIF
IF crT = 1 OR osT = 0 THEN
mnT = min(close, mnT[1])
ELSE
mnT = sptT
ENDIF
ENDIF
//=== ADAPTIVE MIDLINE ENGINE - KIJUN ===
atrK = averagetruerange[kijunLen](close) * kijunMult
upK = (high + low) / 2 + atrK
dnK = (high + low) / 2 - atrK
IF barindex <= kijunLen THEN
upperK = upK
lowerK = dnK
osK = 0
sptK = close
mxK = close
mnK = close
ELSE
IF close[1] < upperK[1] THEN
upperK = min(upK, upperK[1])
ELSE
upperK = upK
ENDIF
IF close[1] > lowerK[1] THEN
lowerK = max(dnK, lowerK[1])
ELSE
lowerK = dnK
ENDIF
IF close > upperK THEN
osK = 1
ELSIF close < lowerK THEN
osK = 0
ELSE
osK = osK[1]
ENDIF
IF osK = 1 THEN
sptK = lowerK
ELSE
sptK = upperK
ENDIF
crK = 0
IF close[1] < sptK[1] AND close > sptK THEN
crK = 1
ENDIF
IF close[1] > sptK[1] AND close < sptK THEN
crK = 1
ENDIF
IF crK = 1 OR osK = 1 THEN
mxK = max(close, mxK[1])
ELSE
mxK = sptK
ENDIF
IF crK = 1 OR osK = 0 THEN
mnK = min(close, mnK[1])
ELSE
mnK = sptK
ENDIF
ENDIF
//=== ADAPTIVE MIDLINE ENGINE - SENKOU SPAN B ===
atrS = averagetruerange[spanBLen](close) * spanBMult
upS = (high + low) / 2 + atrS
dnS = (high + low) / 2 - atrS
IF barindex <= spanBLen THEN
upperS = upS
lowerS = dnS
osS = 0
sptS = close
mxS = close
mnS = close
ELSE
IF close[1] < upperS[1] THEN
upperS = min(upS, upperS[1])
ELSE
upperS = upS
ENDIF
IF close[1] > lowerS[1] THEN
lowerS = max(dnS, lowerS[1])
ELSE
lowerS = dnS
ENDIF
IF close > upperS THEN
osS = 1
ELSIF close < lowerS THEN
osS = 0
ELSE
osS = osS[1]
ENDIF
IF osS = 1 THEN
sptS = lowerS
ELSE
sptS = upperS
ENDIF
crS = 0
IF close[1] < sptS[1] AND close > sptS THEN
crS = 1
ENDIF
IF close[1] > sptS[1] AND close < sptS THEN
crS = 1
ENDIF
IF crS = 1 OR osS = 1 THEN
mxS = max(close, mxS[1])
ELSE
mxS = sptS
ENDIF
IF crS = 1 OR osS = 0 THEN
mnS = min(close, mnS[1])
ELSE
mnS = sptS
ENDIF
ENDIF
//=== OUTPUT LINES (masked during the longest warm-up) ===
IF barindex <= spanBLen THEN
tenkan = undefined
kijun = undefined
senkouA = undefined
senkouB = undefined
ELSE
tenkan = (mxT + mnT) / 2
kijun = (mxK + mnK) / 2
senkouB = (mxS + mnS) / 2
senkouA = (kijun + tenkan) / 2
ENDIF
//=== CLOUD, SHIFTED FORWARD BY disp-1 BARS ===
// A forward plot at +N is read on the chart as the value
// computed N bars ago, so the past half of the cloud is a
// plain series lag. The future half has no bars yet: drawn below.
dispPlot = disp - 1
sA = senkouA[dispPlot]
sB = senkouB[dispPlot]
IF sA > sB THEN
aUp = 51
aDn = 0
ELSE
aUp = 0
aDn = 51
ENDIF
COLORBETWEEN(sA, sB, 0, 137, 123, aUp)
COLORBETWEEN(sA, sB, 255, 82, 82, aDn)
//=== PROJECTED CLOUD (bars that do not exist yet) ===
IF islastbarupdate AND barindex > spanBLen + disp THEN
FOR j = 1 TO dispPlot DO
xa = barindex + j - 1
xb = barindex + j
ya = senkouA[dispPlot - j + 1]
yb = senkouA[dispPlot - j]
za = senkouB[dispPlot - j + 1]
zb = senkouB[dispPlot - j]
ym = (ya + yb) / 2
zm = (za + zb) / 2
IF ym > zm THEN
rr = 0
gg = 137
bb = 123
ELSE
rr = 255
gg = 82
bb = 82
ENDIF
DRAWRECTANGLE(xa, min(ym, zm), xb, max(ym, zm)) COLOURED(rr, gg, bb, 0) FILLCOLOR(rr, gg, bb, 51)
NEXT
ENDIF
//=== TENKAN / KIJUN CROSSES ===
dotUp = undefined
dotDn = undefined
aDotUp = 0
aDotDn = 0
IF tenkan > kijun AND tenkan[1] <= kijun[1] THEN
dotUp = kijun
aDotUp = 255
ENDIF
IF tenkan < kijun AND tenkan[1] >= kijun[1] THEN
dotDn = kijun
aDotDn = 255
ENDIF
RETURN tenkan COLOURED(33, 87, 243, 255) STYLE(line, 2) AS "Tenkan-Sen", kijun COLOURED(255, 93, 0, 255) STYLE(line, 2) AS "Kijun-Sen", dotUp COLOURED(33, 87, 243, aDotUp) STYLE(point, 3) AS "Crossover", dotDn COLOURED(255, 93, 0, aDotDn) STYLE(point, 3) AS "Crossunder", sA COLOURED(0, 137, 123, 0) STYLE(line, 1) AS "Senkou Span A", sB COLOURED(255, 82, 82, 0) STYLE(line, 1) AS "Senkou Span B"
bonjour ivan et merci beaucoup il marche très bien
Je souhaite augmenter la taille des points d’intersection entre la tenkan et la kijun et je n’arrive pas a monter au dessus de 5 en taille
y a-t-il une astuce pour augmenter plus ces points?
merci à toi!
This topic contains 6 replies,
has 2 voices, and was last updated by stephxr
1 hour, 31 minutes ago.
| Forum: | TradingView to ProRealTime Translation Center Forum |
| Started: | 09/04/2026 |
| Status: | Active |
| Attachments: | 1 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.