Media Mobile Ricorsiva

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #155542 quote
    Emperor.it
    Participant
    Average

    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):

    //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:

    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 ?

    #155552 quote
    robertogozzi
    Moderator
    Master

    Si, si possono usare gli array.

    Più tardi te la faccio.

    #155573 quote
    Emperor.it
    Participant
    Average

    Grazie. Quando puoi.

    #155638 quote
    robertogozzi
    Moderator
    Master

    Non servono gli array, basta una somma all’interno di un ciclo:

    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.

    Emperor.it thanked this post
    #155655 quote
    Emperor.it
    Participant
    Average

    Perfetto !!!

    Grazie 1000.

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.

Media Mobile Ricorsiva


Supporto ProBuilder

New Reply
Author
author-avatar
Emperor.it @emperor-it Participant
Summary

This topic contains 4 replies,
has 2 voices, and was last updated by Emperor.it
5 years, 1 month ago.

Topic Details
Forum: Supporto ProBuilder
Language: Italian
Started: 12/29/2020
Status: Active
Attachments: No files
Logo Logo
Loading...