sto tentando di implementare un filtro ricorsivo in una Media Mobile detta appunto Ricorsiva (RMA), a seguire il codice che ho creato (per un RMA a 10 periodi):
Il codice sopra riportato può anche essere scritto nel seguente modo (da A a J) a titolo di esempio:
1
2
3
4
5
A=close[N]
B=(A+close[N-1])/2
C=(B+close[N-2])/3
D=(C+close[N-3])/4
// e continua ...
Ora il problema da sottoporvi è:
Se io volessi aggiungere una RMA a 15 periodi con il codice che ho creato sarei costretto ad aggiungere un nuovo indicatore, in quanto quello creato nell’esempio vale solo per la variabile N=9 periodi, aggiungendo nuove righe di codice per l’adattamento al nuovo periodo.
Esiste la possibiltà di creare qualcosa di automatico, definendo la sola variabile N, a prescindere dal periodo che uno sceglie ?
Non servono gli array, basta una somma all’interno di un ciclo:
1
2
3
4
5
6
7
8
9
10
N=10//Periodo RMA (10)
P=6//Periodo SMA di RMA (6)
Somma=0
FORi=N-1DOWNTO0
j=N-i
Somma=Somma+(summation[j](close[i])/j)
NEXT
Somma=Somma/N
Y=average[P](Somma)
RETURNSommaas"RMA",Yas"AVERAGE RMA"
ovviamente puoi cambiare entrambi i periodi come preferisci e magari aggiungere le variabili in modo da poterne variare i periodi dalle proprietà dell’indicatore. Questa a 10 e 6 periodi è identica alla tua sopra.
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.Ok