Calcolo volatilità in ultime 10 candele
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Calcolo volatilità in ultime 10 candele
- This topic has 6 replies, 2 voices, and was last updated 5 years ago by robertogozzi.
Tagged: true range, Volatilità
-
-
09/22/2019 at 10:23 AM #108142
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
09/22/2019 at 12:05 PM #108152Ho 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)
09/22/2019 at 12:10 PM #10815309/22/2019 at 1:31 PM #108155Prova questo:
12345678910If close > close[1] ThenPlusTrueRange = max ((High-Low), max((High-Close[1]), (Close[1]-Low)))Endif//If close < close[1] ThenMinusTrueRange = max ((High-Low), max((High-Close[1]), (Close[1]-Low)))Endif//PlusTR = summation[10](PlusTrueRange)MinusTR = summation[10](MinusTrueRange)09/22/2019 at 1:54 PM #10815809/22/2019 at 1:59 PM #108159Una 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 🙂
09/22/2019 at 2:17 PM #108161Prova a sostituire i due IF…ENDIF con:
12PlusTrueRange = (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.
-
AuthorPosts
Find exclusive trading pro-tools on