Buongiorno,
ho cercato sul PRT e sul forum e non l’ho trovato, ma provo a chiedere nel casa sia identificato con un nome differente.
Esiste questo indicatore in PRT?
Grazie
https://www.milanofinanza.it/news/trading-operativo-il-relative-volatility-index-202005281023213153
P.S.
Se non esiste provo a scriverlo io non dovrebbe essere complicatissimo ma mi occorrera un vostro parere sul risultato 😛
Forse l’hai scritto male (hai usato la casella di ricerca che si apre quando passi col mouse sopra il tuo avatar?), perché cercando RVI ne ho trovati diversi:
https://www.prorealcode.com/prorealtime-indicators/builderrvi/
https://www.prorealcode.com/topic/rvi-relative-vigor-index/#post-41266
Eppure avevo cercato mmmh
Grazie
P.S.
Scusami Roberto, non so se posso chiedere qui, ma non comprendo queste stringhe
upward = (CLOSE > CLOSE[1]) * STD[10]
downward = (CLOSE < CLOSE[1]) * STD[10]
upward è uguale a ???? per deviazione standard di periodo 10
mi sarei aspettato un
IF CLOSE>CLOSE[1] then
upward=upward+STD[10]
ENDIF
//Questo indicatore calcola l'RVI
IF BARINDEX>p THEN
IF Close=>Close[1] THEN
UP = STD[p](close)
DN = 0
ELSE
UP= 0
DN= STD[p](close)
ENDIF
ENDIF
UPMED= (UPMED * (p-1) + UP)/p
DNMED= (DNMED * (p-1) + DN)/p
RVI= 100* UPMED/(UPMED+DNMED)
DRAWHLINE (80)
DRAWHLINE (20)
RETURN RVI
Dunque, ho scritto questo codice utilizzando la formula proposta qui
https://www.fmlabs.com/reference/default.htm?url=RVI.htm
che mi pare essere quella più conforme alla versione originale
il risultato è soddisfacente ma noto che il valore non è identico a quello calcolato su piattaforme free quali investing (ho provato con vari periodi ma nulla da fare di poco ma il valore è sempre o poco sopra o poco sotto a quello “reale”)
Posto anche il file dell’indicatore (ho inserito una variabile p del periodo da utilizzare sia per l’RVI che per la Deviazione Standard) sono ovviamente aperto ad osservazioni, critiche e suggerimenti.
Grazie
Il tuo indicatore da lo stesso risultato di quello che hai trovato tu, solo che te lo da identico per 10 periodi in quanto è stato messo 10 come costante con STD invece di mettere la variabile dei periodi, per cui se nel tuo metti come periodi un valore diverso da 10, vengono fuori dati diversi.
Basta mettere p nelle due righe dove c’è STD e saranno perfettamente identici.
Cosa fanno queste righe?
upward = (CLOSE > CLOSE[1]) * STD[10]
downward = (CLOSE < CLOSE[1]) * STD[10]
è un modo comune (io lo uso spesso) per non dovere scrivere righe IF…ENDIF, sostituendole moltiplicando un valore numerico per uno logico che sia VERO (zero) o FALSO (uno).
Tu hai scritto:
IF Close=>Close[1] THEN
UP = STD[p](close)
DN = 0
ELSE
UP= 0
DN= STD[p](close)
ENDIF
quindi assegni ad UP il valore di STD quando la differenza tra le due chiusure è positiva (cioà oggi la chiusura è maggiore di ieri). La relazione CLOSE => CLOSE[1] può restituire un valore 1 se vera, oppure 0 se falsa. Moltiplicando questo valore per STD significa assegnare ad UP zero, oppure il valore di STD (STD*0 fa 0, STD*1 fa STD), che è quello che tu fai con IF…ENDIF. Così anche per l’altro caso, quando la differenza è negativa.
Tu fai con 7 righe quello che l’altro codice fa con solo 2.
fichissimo
molto molto interessante l’utilizzo dei valori 0 o 1 della condizione
si risparmiano un sacco di righe di codice
grazie mille per la spiegazione
p.s. sui risultati differenti mi riferivo non tanto all’indicatore postato nel forum (con il quale ho verificato i valori sono sostanzialmente identici – cambiano di poco a causa del tipo di media utilizzata) ma all’indicatore (preconfezionato) di siti di analisi tecnica gratuita (tradingview, investing etc…) per i quali i risultati sono, seppur di poco (ma cmq di più che rispetto al codice del forum), differenti