conversion indicateur super ichi

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #264939 quote
    stephxr
    Participant
    Junior

    bonjour

    Serait il possible de me convertir le script de cet indicateur en langage probuilder?

    merci!

    #264940 quote
    stephxr
    Participant
    Junior

    //@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)


    #264941 quote
    Iván González
    Moderator
    Legend

    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"
    


    #264946 quote
    stephxr
    Participant
    Junior

    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!

    #264974 quote
    stephxr
    Participant
    Junior

    bonjour ivan

    Je crois également que la senkou span A n’est pas défini…

    Merci et bonne journée à toi!

    #264980 quote
    Iván González
    Moderator
    Legend

    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"
    
    PRC_Super-Ichimoku.itf
    #265015 quote
    stephxr
    Participant
    Junior

    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!

Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

TradingView to ProRealTime Translation Center

New Reply
Author
author-avatar
stephxr @stephxr Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by stephxr
1 hour, 31 minutes ago.

Topic Details
Forum: TradingView to ProRealTime Translation Center Forum
Started: 09/04/2026
Status: Active
Attachments: 1 files
Logo Logo
Loading...