Calcolo volatilità in ultime 10 candele

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #108142 quote
    carlo__
    Participant
    Average

    Buongiorno, devo eseguire uno script che per me è ancora troppo complesso.

     

    Praticamente si tratta di identificare nelle ultime 10 candele 2 “tipi” di TrueRange separati. Un TrueRange (chiamiamolo PlusTrueRange) si estrae solo se (close [n] > close [n-1]), altrimenti l’altro valore (MinusTrueRange) si estrae se (close [n] < close [n-1]).

    Il calcolo del TrueRange (Plus e Minus) è basato sempre sulla solita formula: max [(H-L), (H-(C-1)), ((C-1)-L)]

    Questo calcolo deve essere fatto a ritroso sulle ultime 10 candele, quindi si tratta di mettere a confronto ogni candela con la sua precedente per estrarre uno o l’altro valore.

    Alla fine, lo script deve restituirmi la somma di tutti i PlusTrueRange e la somma di tutti i MinusTrueRange identificati.

    Avevo pensato ad un ciclo di loop, ma è ancora troppo complicato per me che sono veramente ancora alle basi, quindi necessito di un aiuto.

     

    Grazie

    #108152 quote
    robertogozzi
    Moderator
    Master

    Ho spostato il topic da ProOrder a ProBuilder perché non è una strategia.

    Si può fare, ma tieni presente che PlusTrueRange e MinusTrueRange non possono avere “vuoti” nel senso che quando calcoliamo PlusTrueRange, MinusTrueRange manterrà anche per quella candela.

    In un periodo di 10 candele avrai 20 valori, 10 per entrambe le variabili. Quando una delle due variabili non viene calcolata manterrà il valore della candela precedente, perché PRT non supporta vettori (array).

    Va bene? (se non ti va bene allora non si può fare ciò che chiedi)

    #108153 quote
    carlo__
    Participant
    Average

    Va bene, poi assemblerò io meglio i valori di output in un successivo codice. Anzi, eventualmente se puoi anche aggiungere il valore sommatorio come richiesto completeresti al meglio la mia richiesta.

    #108155 quote
    robertogozzi
    Moderator
    Master

    Prova questo:

    If close > close[1] Then
       PlusTrueRange = max ((High-Low), max((High-Close[1]), (Close[1]-Low)))
    Endif
    //
    If close < close[1] Then
       MinusTrueRange = max ((High-Low), max((High-Close[1]), (Close[1]-Low)))
    Endif
    //
    PlusTR   = summation[10](PlusTrueRange)
    MinusTR = summation[10](MinusTrueRange)
    #108158 quote
    carlo__
    Participant
    Average

    Grazie, adesso implemento tutto in un altro script e ti faccio sapere.

     

    PS

    Messa cosi era più facile di quanto immaginassi….senza loops 🙂

    #108159 quote
    carlo__
    Participant
    Average

    Una domanda, data la semplicità del codice a questo punto Plus/MinusTrueRange non poteva essere semplicemente sostituito dalla funzione “True Range” del sistema invece di eseguirla col calcolo max (…. ecc)?

    La domanda ha scopo didattico 🙂

    #108161 quote
    robertogozzi
    Moderator
    Master

    Prova a sostituire i due IF…ENDIF con:

    PlusTrueRange = (close > close[1]) * max ((High-Low), max((High-Close[1]), (Close[1]-Low)))
    MinusTrueRange = (close < close[1]) * max ((High-Low), max((High-Close[1]), (Close[1]-Low)))

    Ovviamente puoi usare TR anche qui al posto della formula.

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

Calcolo volatilità in ultime 10 candele


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
carlo__ @carlo__ Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by robertogozzi
6 years, 6 months ago.

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