INDICATORE “CHOPPY”

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #251065 quote
    brian gilbert
    Participant
    New

    Salve a tutti, ho trovato in rete un indicatore di tendenza chiamato “Choppiness” o “Choppy” che riporto qui sotto:

    100 * LOG10( SUM(ATR(1), n) / ( MaxHi(n) - MinLo(n) ) ) / LOG10(n)
    
    n = periodo definito dall'utente
    LOG10(n) = logaritmo base-10 di n
    ATR(1) = Average True Range (con periodo 1)
    SUM(ATR(1), n) = Somma dell'Average True Range per le n barre passare MaxHi(n) = il massimo più alto della serie in esame

    Poichè sono poco pratico di programmazione non sono riuscito a tradurlo in linguaggio Prorealtime; c’è qualcuno che potrebbe darmi una mano?  Inoltre, visto che faccio operazioni intraday sul Dax, se è possibile vorrei che l’indicatore NON tenesse conto del gap notturno (che se significativo “sballa” tutti i valori degli indicatori) e iniziasse a elaborare i suoi valori con l’apertura giornaliera.

    Grazie in anticipo per il vostro aiuto.

    Paolo Bonsanti

     

     

    
    
            
        
    #251073 quote
    Iván González
    Moderator
    Master

    ecco:

    n=10
    atr1=averagetruerange[1](close)
    sumAtr=summation[n](atr1)
    maxhin=highest[n](high)
    minlon=lowest[n](low)
    
    chopi = 100*log(sumAtr)/(maxhin-minlon)/log(n)
    
    return chopi
    
    robertogozzi and brian gilbert thanked this post
    #251075 quote
    JS
    Participant
    Senior

    Penso che l’idea sia quella di prendere il logaritmo del “rapporto” e non solo del “percorso”…

    chopi = 100*log((sumAtr)/(maxhin-minlon))/log(n)

    Iván González and brian gilbert thanked this post
    #251076 quote
    Iván González
    Moderator
    Master

    Leggendo di nuovo il tuo messaggio ora vedo che non ho tenuto conto dei gap di apertura. Ho modificato il codice e nel frattempo ho effettuato i calcoli con i logaritmi in base 10.

    // --- INPUTS
    n = 10
    
    // --- DAILY RESET
    ONCE idx = 0
    IF intradaybarindex = 0 THEN
       UnSet($tr)
       UnSet($hi)
       UnSet($lo)
       idx = 0
    ENDIF
    
    // --- TRUE RANGE
    trClassic = MAX(high - low, MAX(ABS(high - close[1]), ABS(low - close[1])))
    
    IF intradaybarindex = 0 THEN
       trBar = high - low
    ELSE
       trBar = trClassic
    ENDIF
    
    $tr[idx] = trBar
    $hi[idx] = high
    $lo[idx] = low
    idx = idx + 1
    
    cnt = MIN(idx, n)
    
    sumTR = 0
    
    IF cnt > 0 THEN
       
       hh = $hi[idx - 1]
       ll = $lo[idx - 1]
       
       FOR k = 0 TO cnt - 1 DO
          j = idx - 1 - k
          sumTR = sumTR + $tr[j]
          IF $hi[j] > hh THEN
             hh = $hi[j]
          ENDIF
          IF $lo[j] < ll THEN
             ll = $lo[j]
          ENDIF
       NEXT
       
       rango = hh - ll
       
       // --- CHOPPINESS ---
       IF cnt >= n AND rango > 0 AND n > 1 THEN
          chopi = 100 * ( LOG(sumTR / rango) / LOG(10) ) / ( LOG(n) / LOG(10) )
       ELSE
          chopi = chopi
       ENDIF
    ELSE
       chopi = 0
    ENDIF
    
    RETURN chopi COLOURED(0,0,255) AS "Choppiness (without open gap)"
    
    JS, robertogozzi and brian gilbert thanked this post
    #251081 quote
    JS
    Participant
    Senior

    Questo è un indicatore interessante e utile, che merita una spiegazione più approfondita…

    Con AverageTrueRange[1](Close) si misura la volatilità per barra (inclusi i gap)…

    Con Summation[n](ATR1) si somma tale volatilità per ottenere il percorso “tortuoso” compiuto dal prezzo…

    Con Highest[n](High) - Lowest[n](Low) si misura il percorso rettilineo (netto) nello stesso intervallo…

    Il rapporto è quindi: percorso tortuoso ÷ percorso rettilineo

    Applicando il logaritmo a questo rapporto (e normalizzandolo rispetto a n) si ottiene una scala stabilizzata…

    L’indicatore Choppy, su una scala 0–100, mostra quanto il movimento sia “tortuoso”: valori bassi indicano un movimento relativamente rettilineo (spesso di trend), mentre valori più alti segnalano una dinamica più laterale/rumorosa…

    Nell’ultima versione il gap overnight non è considerato (ancora un ottimo contributo di Iván)…

    Iván González and brian gilbert thanked this post
    #251166 quote
    brian gilbert
    Participant
    New

    Grazie mille a tutti, siete bravissimi!!!

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

INDICATORE “CHOPPY”


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
Summary

This topic contains 5 replies,
has 3 voices, and was last updated by brian gilbert
4 months, 2 weeks ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 09/17/2025
Status: Active
Attachments: No files
Logo Logo
Loading...