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.
To help us continually offer you the best experience on ProRealCode, we use cookies. By clicking on "Continue" you are agreeing to our use of them. You can also check our "privacy policy" page for more information.Continue