JURIK CFB ADAPTIVE QQE. Conversion from pinescript to PRT

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #260962 quote
    Pedro.lopez
    Participant
    Average

    Buenos días al grupo.

    Os agradecería pudierais poder traducir a PRT el script para PINESCRIPT del indicador JURIK CFB ADAPTIVE QQE cuyo autor es LOXX.

    Os paso el enlace donde encontrar dicho PINESCRIPT:

    https://www.tradingview.com/script/FS2ctCcJ-Jurik-CFB-Adaptive-QQE-Loxx/

    También os adjunto una imagen del mismo así como la descripción (un poco larga para incluirla en el cuerpo del mensaje).

    Nuevamente el uso de los array me confunde bastante, asi como alguna linea del script (la linea 71 del PINESCRIPT me tiene fascinado porque la condición del IF es

    (bar_index >= bar_index - depth * 2) 
    

    ya que los valores de la variable “depth” serán siempre positivos si no estoy equivocado ).

    He intentado por mi parte hacer una conversión y he visto que todas las funciones necesarias están incluidas y no hace llamadas a ninguna librería externa.

    Os lo agradezco de antemano, en caso de que pudierais hecharle un vistazo y poder convertir el PINESCRIPT a PRT.

    Recibid un cordial saludo.


    Pedro Lopez

    JURIK-CFB-ADAPTIVE-QQE.jpg JURIK-CFB-ADAPTIVE-QQE.jpg DESCRIPCION_Jurik-CFB-Adaptive-QQE.pdf DESCRIPCION_Jurik-CFB-Adaptive-QQE.pdf
    #260973 quote
    Iván González
    Moderator
    Legend

    Aquí tienes. He programado 2, la completa y la simplificada. Publico la simplificada porque los resultados son casi identicos y es utilizable, la completa tarda mucho en cargar por utilizar blucles anidados (no es operativa).

    //PRC_Jurik QQE (simple, sin CFB Adaptive)
    //version = 0
    //11.05.26
    //Ivan Gonzalez @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    //-----------------------------------------------------
    //===INPUTS===
    rsiTypeOpt = 1                   //0=Wilders, 1=RSX, 2=Rapid
    rsiPeriod = 14                   //RSI period
    RsiSmoothingFactor = 5           //EMA smoothing del RSI
    RsiPriceSmoothing = 1            //SMA del source antes del RSI
    WPFast = 2.618                   //Factor Fast Trend
    WPSlow = 4.236                   //Factor Slow Trend
    overbought = 80
    oversold = 20
    //-----------------------------------------------------
    
    //===Source smoothed (nativo, no necesita seed)===
    closer = average[RsiPriceSmoothing](close)
    
    //===Wilders RSI (nativo)===
    wildersRsi = rsi[rsiPeriod](closer)
    
    //===RSX (Jurik RSI) — cascada recursiva con seed===
    IF BarIndex = 0 THEN
       f28 = 0
       f30 = 0
       f38 = 0
       f40 = 0
       f48 = 0
       f50 = 0
       f58 = 0
       f60 = 0
       f68 = 0
       f70 = 0
       f78 = 0
       f80 = 0
       rsxVal = 50
    ELSE
       srcRsx = 100 * closer
       mom0 = srcRsx - srcRsx[1]
       moa0 = ABS(mom0)
       Kg = 3 / (rsiPeriod + 2)
       Hg = 1 - Kg
       //--cascada mom (4 etapas)
       f28 = Kg * mom0 + Hg * f28[1]
       f30 = Hg * f30[1] + Kg * f28
       mom1 = f28 * 1.5 - f30 * 0.5
       f38 = Hg * f38[1] + Kg * mom1
       f40 = Kg * f38 + Hg * f40[1]
       mom2 = f38 * 1.5 - f40 * 0.5
       f48 = Hg * f48[1] + Kg * mom2
       f50 = Kg * f48 + Hg * f50[1]
       momOut = f48 * 1.5 - f50 * 0.5
       //--cascada moa (4 etapas)
       f58 = Hg * f58[1] + Kg * moa0
       f60 = Kg * f58 + Hg * f60[1]
       moa1 = f58 * 1.5 - f60 * 0.5
       f68 = Hg * f68[1] + Kg * moa1
       f70 = Kg * f68 + Hg * f70[1]
       moa2 = f68 * 1.5 - f70 * 0.5
       f78 = Hg * f78[1] + Kg * moa2
       f80 = Kg * f78 + Hg * f80[1]
       moaOut = f78 * 1.5 - f80 * 0.5
       //--resultado
       IF moaOut <> 0 THEN
          rsxRaw = (momOut / moaOut + 1) * 50
       ELSE
          rsxRaw = 50
       ENDIF
       rsxVal = MAX(MIN(rsxRaw, 100), 0)
    ENDIF
    
    //===Rapid RSI (nativo con summation)===
    upMov = MAX(closer - closer[1], 0)
    dnMov = MAX(closer[1] - closer, 0)
    upSumR = summation[rsiPeriod](upMov)
    dnSumR = summation[rsiPeriod](dnMov)
    IF dnSumR = 0 THEN
       rapidRsi = 100
    ELSIF upSumR = 0 THEN
       rapidRsi = 0
    ELSE
       rapidRsi = 100 - 100 / (1 + upSumR / dnSumR)
    ENDIF
    
    //===Selector RSI===
    IF rsiTypeOpt = 0 THEN
       rawRsi = wildersRsi
    ELSIF rsiTypeOpt = 1 THEN
       rawRsi = rsxVal
    ELSE
       rawRsi = rapidRsi
    ENDIF
    
    //===QQE — requiere histórico mínimo (rsiPeriod + smoothing)===
    warmupBars = rsiPeriod + RsiSmoothingFactor + 2
    
    IF BarIndex < warmupBars THEN
       //--Seeds iniciales: oscilador en línea media, trends iguales (sin disparar)
       rsiMA = 50
       MaAtrRsi = 0
       outerJ = 0
       emaf = 0
       emas = 0
       TrendSlow = 50
       TrendFast = 50
    ELSE
       //--rsiMA: EMA del RSI elegido
       rsiMA = average[RsiSmoothingFactor, 1](rawRsi)
       //--MaAtrRsi: Wilder del |delta rsiMA|
       atrRsiIn = ABS(rsiMA[1] - rsiMA)
       MaAtrRsi = average[rsiPeriod, 3](atrRsiIn)
       outerJ = average[rsiPeriod, 3](MaAtrRsi)
       emaf = outerJ * WPFast
       emas = outerJ * WPSlow
       
       //--QQE Slow Trend
       trS = TrendSlow[1]
       dvS = trS
       IF rsiMA < trS THEN
          trS = rsiMA + emas
          IF rsiMA[1] < dvS AND trS > dvS THEN
             trS = dvS
          ENDIF
       ENDIF
       IF rsiMA > trS THEN
          trS = rsiMA - emas
          IF rsiMA[1] > dvS AND trS < dvS THEN
             trS = dvS
          ENDIF
       ENDIF
       TrendSlow = trS
       
       //--QQE Fast Trend
       trF = TrendFast[1]
       dvF = trF
       IF rsiMA < trF THEN
          trF = rsiMA + emaf
          IF rsiMA[1] < dvF AND trF > dvF THEN
             trF = dvF
          ENDIF
       ENDIF
       IF rsiMA > trF THEN
          trF = rsiMA - emaf
          IF rsiMA[1] > dvF AND trF < dvF THEN
             trF = dvF
          ENDIF
       ENDIF
       TrendFast = trF
    ENDIF
    
    //===Coloreo===
    IF rsiMA > TrendSlow AND rsiMA > TrendFast THEN
       rC = 45
       gC = 210
       bC = 4
    ELSIF rsiMA < TrendSlow AND rsiMA < TrendFast THEN
       rC = 210
       gC = 4
       bC = 45
    ELSE
       rC = 128
       gC = 128
       bC = 128
    ENDIF
    
    return rsiMA AS "RSI MA" COLOURED(rC, gC, bC) STYLE(line, 3), TrendSlow AS "Slow Trend" COLOURED(220, 200, 0) STYLE(dottedline, 1), TrendFast AS "Fast Trend" COLOURED(255, 255, 255) STYLE(line, 1), 50 AS "Midline" COLOURED(120, 120, 120) STYLE(dottedline), overbought AS "Overbought" COLOURED(0, 200, 200), oversold AS "Oversold" COLOURED(200, 200, 200)
    


    MAR-1-hora.png MAR-1-hora.png
    #260984 quote
    Pedro.lopez
    Participant
    Average

    Muchas gracias, Ivan!!!!


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

TradingView to ProRealTime Translation Center

New Reply
Author
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by Pedro.lopez
4 weeks ago.

Topic Details
Forum: TradingView to ProRealTime Translation Center Forum
Started: 05/11/2026
Status: Active
Attachments: 2 files
Logo Logo
Loading...