INDICATORE “CHOPPY”
Forums › ProRealTime forum Italiano › Supporto ProBuilder › INDICATORE “CHOPPY”
- This topic has 5 replies, 3 voices, and was last updated 3 months ago by
brian gilbert.
-
-
09/17/2025 at 6:13 PM #251065
Salve a tutti, ho trovato in rete un indicatore di tendenza chiamato “Choppiness” o “Choppy” che riporto qui sotto:
123456100 * LOG10( SUM(ATR(1), n) / ( MaxHi(n) - MinLo(n) ) ) / LOG10(n)n = periodo definito dall'utenteLOG10(n) = logaritmo base-10 di nATR(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 esamePoichè 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
109/18/2025 at 7:03 AM #251073ecco:
123456789n=10atr1=averagetruerange[1](close)sumAtr=summation[n](atr1)maxhin=highest[n](high)minlon=lowest[n](low)chopi = 100*log(sumAtr)/(maxhin-minlon)/log(n)return chopi2 users thanked author for this post.
09/18/2025 at 7:55 AM #251075Penso che l’idea sia quella di prendere il logaritmo del “rapporto” e non solo del “percorso”…
chopi = 100*log((sumAtr)/(maxhin-minlon))/log(n)
2 users thanked author for this post.
09/18/2025 at 8:15 AM #251076Leggendo 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.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859// --- INPUTSn = 10// --- DAILY RESETONCE idx = 0IF intradaybarindex = 0 THENUnSet($tr)UnSet($hi)UnSet($lo)idx = 0ENDIF// --- TRUE RANGEtrClassic = MAX(high - low, MAX(ABS(high - close[1]), ABS(low - close[1])))IF intradaybarindex = 0 THENtrBar = high - lowELSEtrBar = trClassicENDIF$tr[idx] = trBar$hi[idx] = high$lo[idx] = lowidx = idx + 1cnt = MIN(idx, n)sumTR = 0IF cnt > 0 THENhh = $hi[idx - 1]ll = $lo[idx - 1]FOR k = 0 TO cnt - 1 DOj = idx - 1 - ksumTR = sumTR + $tr[j]IF $hi[j] > hh THENhh = $hi[j]ENDIFIF $lo[j] < ll THENll = $lo[j]ENDIFNEXTrango = hh - ll// --- CHOPPINESS ---IF cnt >= n AND rango > 0 AND n > 1 THENchopi = 100 * ( LOG(sumTR / rango) / LOG(10) ) / ( LOG(n) / LOG(10) )ELSEchopi = chopiENDIFELSEchopi = 0ENDIFRETURN chopi COLOURED(0,0,255) AS "Choppiness (without open gap)"3 users thanked author for this post.
09/18/2025 at 8:39 AM #251081Questo è 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)…
2 users thanked author for this post.
09/19/2025 at 9:06 PM #251166Grazie mille a tutti, siete bravissimi!!!
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on