Media Mobile Ricorsiva

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #155542 quote
    Emperor.itEmperor.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
    robertogozzirobertogozzi
    Moderator
    Legend

    Si, si possono usare gli array.

    Più tardi te la faccio.

    #155573 quote
    Emperor.itEmperor.it
    Participant
    Average

    Grazie. Quando puoi.

    #155638 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    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.itEmperor.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.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Media Mobile Ricorsiva


ProBuilder: Indicatori & Strumenti Personalizzati

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.itEmperor.it
5 years, 8 months ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 12/29/2020
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...