EXPONENTIAL Average True Range

Forums ProRealTime forum Italiano Supporto ProBuilder EXPONENTIAL Average True Range

Currently, there are 0 users and 1 guest visiting this topic.
View all attachments
Viewing 15 posts - 1 through 15 (of 18 total)
  • #144044 Report

    Salve,

    l’indicatore contenuto su Pro Real Time (AverageTrueRange[n](close)) viene calcolato come MEDIA SEMPLICE dei True Range del periodo scelto.

     

    E’ possibile averne una versione dell’Average True Range calcolato come MEDIA ESPONENZIALE dei True Range?

     

    Grazie,

    Giordano

    #144045 Report

    Lunedì posto il codice, così puoi modificarlo come vuoi.

     

    #144166 Report

    Grazie!!!

    #144167 Report

    Buongiorno, questo è il codice:

    Però non c’è un riferimento specifico a nessuna media, è semplicemente la formula standard di calcolo.

    Puoi modificarla come vuoi.

     

    #144302 Report

    Ciao, e grazie per il riscontro.

    In realtà,  il riferimento alla MEDIA SEMPLICE c’è, ed è dopo “ELSE”: ((MyATR[1] * (p 1)) + MyTR) / p

    Non capisco molto il linguaggio (ecco perchè ti chiedo aiuto), ma direi che si tratta di una sommatoria di 10 osservazioni “diviso” 10 (quindi una media semplice).

    Per ottenere una EMA (es. 21, come vorrei utilizzare io) si dovrebbe utilizzare questa formula:

    Multiplo= 2 /(1+21)

    EMA= ultimo prezzo chiusura x Multiplo + EMA(giorno precedente) x (1 – Multiplo)

     

    ….riesci a “tradurre” questa formula e utilizzarla nel codice precedente (al posto di quella “semplice”)?

     

    Grazie!

    Giordano

     

    #144312 Report

    …forse bisogna aggiungere un riferimento alla EMA(giorno precedente).

    Di fatto, in una successione di valori (in questo caso TrueRange), la MEDIA SEMPLICE dei primi 21 valori (nel caso di una EMA21) diventa la EMA(giorno precedente) da utilizzare nel calcolo della prima EMA21.

    Quindi, la prima EMA21 è calcolabile solo alla chiusura del 22esimo giorno come: Prezzo chiusura (del 22esimo giorno) X Multiplo + SMA(dei primi 21 valori) X  (1 – Multiplo)

     

    Ce la facciamo?!

    Grazie ancora,

    Giordano

    #144315 Report

    L’espressione

    non è esattamente la sommatoria dei valori precedenti, ma IL valore precedente moltiplicato per PERIODI-1, a cui viene aggiunto il valore attuale, dopodiché viene tutto diviso per i PERIODI.

    Credo sia già una forma di calcolo esponenziale (o forse ponderato), perché se fosse una semplice sommatoria sarebbe:

     

    #144316 Report

    Una EMA è:

     

    #144338 Report

    Una EMA è:

     

    …questa è esattamente la formula che riportavo sopra (solo che è scomposta diversamente)!!

    Prezzo chiusura (del 22esimo giorno) X Multiplo + SMA(dei primi 21 valori) X  (1 – Multiplo)

    — > close * Alpha + Ema*(1-Alpha)             (sopra c’era la SMA perchè stavo parlando di come calcolare la PRIMA EMA di una seria)

    —>close * Alpha + Ema – Ema * Alpha

    –> (close – Ema) * Alpha + Ema              (ovviamente le Ema in queste formule sono quelle note, del giorno prima)

     

    Detto questo, fermo restando che al posto del prezzo di chiusura dobbiamo inserire l’ultimo True Range (visto che vogliamo una media esponenziale di True Range, e non di prezzi come nell’esempio sopra),  come si può procedere per calcolare la media esponenziale a 21 periodi del True Range?

    Del True Range abbiamo la definizione che hai riportato sopra…

    E abbiamo anche la formula della sua media esponenziale: (UltimoTrueRange – EmaPrecedente) * (2/(1+21))    +  EmaPrecedente

     

    Quello che a me non riesce è “far girare” la cosa nel linguaggio della PRT… forse basta solo sostituire nella formala di EMA che hai postato la definizione di TrueRange a quella di prezzo (close)?

    Grazie per l’aiuto,

    Giordano

     

    #144346 Report

    Scusa, ma se al posto di close inserisci la seguente riga, dovresti ottenere quello che cerchi, cioè l’ema del true range (scusa ma anche io sono poco pratico di codifiche). Roberto potrà confermare o meno, per sicurezza

     

    #144423 Report

    Se parte del codice che ho postato lo modifichiamo così, non va bene?

    in pratica calcoliamo semplicemente la media esponenziale di P periodi (o meno, quando < P) del TR e lo aggiungiamo ad ATR precedente ottenendo un ATR calcolato in modo esponenziale.

     

    #144425 Report

    Scusa luxrun, ho visto il tuo post in ritardo.

    Non sono un esperto di matematica (la programmazione ha più a che fare con la logica), però visto il calcolo della EMA (che mi sono ricreato semplicemente cercando la formula su internet) non credo la tua proposta renda il calcolo esponenziale.

    Non sono sicuro neppure della mia, forse Neromaori potrà confermarlo, o meno.

     

    #144442 Report

    La mia proposta non funziona, mi spiace aver contribuito in maniera erronea. Ho provato a montare i diversi pezzi dei codici di Roberto, ma neanche lì ho ottenuto risultati degni di nota. Lascio a voi commenti e soluzioni

    1 user thanked author for this post.
    #144605 Report

    Ciao a tutti, e grazie veramente per l’interessamento.

    A livello matematico le proposte fornite sopra non sono medie esponenziali (manca per esempio il fattore di “lisciatura”, cioè il coefficiente “Alpha”).

    Detto questo, ho ben chiaro la formula matematica per arrivare ad ottenere l’ATR (calcolato in maniera esponenziale, così come introdotta da Wilder) e la conferma può essere trovata qui:

    https://school.stockcharts.com/doku.php?id=technical_indicators:average_true_range_atr

     

    In definitiva, quello che vorrei che il linguaggio facesse per creare una ATR(esponenziale) a 21 periodi è:

    1. deve “capire” che i primi 20 True Range (a partire dalla candela n.1 in assoluto, la più a sinistra insomma), NON generano alcun ATR,
    2. che il primo ATR viene calcolato alla chiusura della 21esima candela ed è una MEDIA SEMPLICE dei primi 21 TR,
    3. che i successivi ATR vengono calcolati come: TR(del giorno appena chiuso) * Alpha + ATR (del giorno precedente) * (1- Alpha)

    Alpha = 2/(1+p), quindi nel nostro caso = 2/(1+21) = 2/22

    Non so se queste istruzioni possono bastare per creare il codice…spero di si!

    Grazie ancora se vorrete provarci!

    Neromaori

    #144606 Report

    …come non detto…sono ritornato da capo alla prima risposta…in realtà quel tipo di formale è la stessa che ho riportato io (solo scomposta diversamente)…quindi è esponenziale…faccio qualche verifica ancora…

Viewing 15 posts - 1 through 15 (of 18 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login