Media Mobile Ricorsiva
- This topic has 4 replies, 2 voices, and was last updated 3 years ago by .
Viewing 5 posts - 1 through 5 (of 5 total)
Viewing 5 posts - 1 through 5 (of 5 total)
Similar topics:
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Media Mobile Ricorsiva
Tagged: MA, Media, Media Mobile, media mobile ricorsiva, media ricorsiva, moving average, recursive, recursive moving average, ricorsivo, rma
Buongiorno,
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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//Variabili //N = Periodo RMA (9) //P = Periodo SMA di RMA (6) A=close[N] B=(close[N]+close[N-1])/2 C=(close[N]+close[N-1]+close[N-2])/3 D=(close[N]+close[N-1]+close[N-2]+close[N-3])/4 E=(close[N]+close[N-1]+close[N-2]+close[N-3]+close[N-4])/5 F=(close[N]+close[N-1]+close[N-2]+close[N-3]+close[N-4]+close[N-5])/6 G=(close[N]+close[N-1]+close[N-2]+close[N-3]+close[N-4]+close[N-5]+close[N-6])/7 H=(close[N]+close[N-1]+close[N-2]+close[N-3]+close[N-4]+close[N-5]+close[N-6]+close[N-7])/8 I=(close[N]+close[N-1]+close[N-2]+close[N-3]+close[N-4]+close[N-5]+close[N-6]+close[N-7]+close[N-8])/9 J=(close[N]+close[N-1]+close[N-2]+close[N-3]+close[N-4]+close[N-5]+close[N-6]+close[N-7]+close[N-8]+close)/10 X=(A+B+C+D+E+F+G+H+I+J)/10 Y=average[P](X) RETURN X as "RMA", Y as "AVERAGE RMA" |
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 ?
Si, si possono usare gli array.
Più tardi te la faccio.
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 FOR i = N-1 DOWNTO 0 j = N - i Somma = Somma + (summation[j](close[i]) / j) NEXT Somma = Somma / N Y = average[P](Somma) RETURN Somma as "RMA", Y as "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.
Perfetto !!!
Grazie 1000.
Find exclusive trading pro-tools on