Centered moving average – media mobile centrata

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #22876 quote
    Ermitage
    Participant
    Average

    Buongiorno, vorrei sapere se e’ possibile creare una media mobile centrata su PRO REAL TIME?

    Good evening, I would like to ask you how ca be obtained a centered moving average in PRT?

    #22896 quote
    Nicolas
    Keymaster
    Master

    Si prega di fornire maggiori informazioni su questo tipo di media mobile: il codice da altre piattaforme, le immagini o forse una descrizione. Grazie

    #22949 quote
    Ermitage
    Participant
    Average

    Buongiorno…grazie per l’interesse

    Allego codice per metastock si tratta di una media mobile semplice ma traslata indietro di un certo numero di periodi.

    Es media mobile semplice a 20 periodi traslata sul grafico del prezzo di 10 periodi quindi viene centrata sul grafico del prezzo.

     

    StorkBite

    Posted : 11 years 

    Here’s a concept I thought about whilst on holidays:

    Forward reference (shift backwards on charts) and center a Moving Average, then extend and project the last known MA direction into the future.

    This method gets around the no-plot in null (N/A) zone limitation in MetaStock, and can apply to any indicator or oscillator on charts or separate windows.

    MetaStock -> Tools -> Indicator Builder -> New ->
    Copy and paste complete formula between “—8<—” lines.

    =============
    MA – centered
    =============
    —8<————————–

    { Centered Moving Average – v3.0 }
    { Uses forward-referencing to center Mov Avg
    and project future direction.}
    { Uses hindsight – do not trade! }

    { ©Copyright 2005 Jose Silva
    For personal use only.
    }

    { User inputs }
    fwPds:=Input(“Forward-referencing periods (automatic = -1)”,-1,2600,-1);
    proj:=Input(“Project last known MA: [1]Direction, [2]Value”,1,2,1);
    pds:=Input(“Mov Avg periods”,1,2600,21);
    type:=Input(“[1]EMA [2]SMA [3]TmSr [4]Tri [5]Var [6]Vol [7]Wght”,1,7,2);

    { Choose MovAvg type:
    1 – Exponential MA
    2 – Simple MA
    3 – Time Series MA
    4 – Triangular MA
    5 – Variable MA
    6 – Volume adjusted MA
    7 – Weighted MA }
    ma:=
    If(type=1,Mov(C,pds,E),
    If(type=2,Mov(C,pds,S),
    If(type=3,Mov(C,pds,T),
    If(type=4,Mov(C,pds,TRI),
    If(type=5,Mov(C,pds,VAR),
    If(type=6,Mov(C,pds,VOL),
    Mov(C,pds,W)))))));

    { Automatic period-centering }
    center:=LastValue(If(fwPds<0,Int(pds/2),fwPds));

    { Forward-referenced MovAvg }
    fwd:=Ref(ma,center);

    { Last valid MovAvg plot point }
    lastVal:=IsUndefined(fwd)
    AND Alert(IsUndefined(fwd)=0,2);

    { Extend MovAvg plot into future null zone }
    xtend:=LastValue(fwd+PREV-PREV);

    { Restrict invalid initial MovAvg plot }
    movAvg:=Ref(Ref(xtend,pds-1),-pds+1);

    { Last MA known direction & future projection }
    init:=Cum(IsDefined(movAvg))=1;
    direction:=movAvg+
    ( ValueWhen(1,init OR lastVal,Ref(movAvg,-1))
    -ValueWhen(1,init OR lastVal,Ref(movAvg,-2)))
    *(BarsSince(init OR lastVal)+1);

    { Plot MovAvg on price chart }
    If(proj=1,direction,movAvg)

    —8<————————–

    #22951 quote
    Ermitage
    Participant
    Average

    Buongiorno allego questo link dove è spiegato bene cosa è una media mobile centrata

    http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:detrended_price_osci

    #23007 quote
    tatankayotanka
    Participant
    Senior

    Interessante

    #23083 quote
    Nicolas
    Keymaster
    Master

    Grazie è molto chiaro ora, ma il disegno futuro proiezione nel destra del grafico non è possibile mi dispiace.

    #23089 quote
    Ermitage
    Participant
    Average

    Ciao Nicolas

    sono riuscito ad ottenere questo, con la funzione traslazione_mod

    REM traslazione_mod
    det=dpo[indietro*2](close)
    if flag=0 then
    if det=det[1] and det[1]=det[2] and det[2]<>det[3] then
    flag=1
    else
    flag=0
    endif
    endif
    if (barindex > indietro) and flag=0 then
    if indietro = 0 then
    ind = close
    elsif indietro = 1 then
    ind = -DPO[1](close)+close
    elsif indietro = 2 then
    ind = 2*(-DPO[2](close)+close) - (-DPO[1](close)+close)
    else
    ind = (2*indietro-2)*(-DPO[2*indietro-2](close)+close) - (2*indietro-4)*(-DPO[2*indietro-4](close)+close)-close[indietro-3]
    endif
    ind1=round(ind)
    endif
    if barindex<= indietro or flag then
    ind1 = undefined
    endif
    return ind1 as "traslazione_mod"

    Ho ottenuto la traslazione del grafico a sinistra mettendo gli ultimi valori uguali (valori futuri) all’ultimo valore di chiusura

    poi con il codice mmc_mod

    REM mmc_mod
    
    if n mod 2 = 0 then
    t = n/2
    else
    t = (n -1)/2
    endif
    mytraslazione = CALL "traslazione_mod"[t]
    ind = Average[n](mytraslazione)
    return ind as "mmc"

    ho ottenuto la media mobile centrata, in pratica ho prima traslato il grafico dei prezzi a sinistra di n/2 periodi (nell’esempio allegato n=16) e ho calcolato la mmc a 32 periodi, tuttavia la parte finale del grafico è piatto.

    Se invece inserisco, direttamente sul grafico dei prezzi traslato “traslazione_mod”, la media mobile semplice, ottengo la mmc con l’ultima parte del grafico non piatto, ossia ho la proiezione corretta.

    Il mio scopo finale è quello di calcolare un indicatore di ciclo = differenza tra medie mobile centrate su due periodo diversi.
    Spero di essere stato chiaro ti allego anche una foto di un grafico

    CMA.png CMA.png
    #23093 quote
    Ermitage
    Participant
    Average

    Ciao Nicolas

    ho anche trovato  sul sito questo codice è una media mobile centrata traingolare

    // parameters
    // HalfLength = 50
    // AtrLength = 100
    // AtrMultiplier = 2.0
    
    avg = average[1](close)
    
    sum = (HalfLength+1)*avg
    sumw = (HalfLength+1)
    k = HalfLength
    
    for j = 1 to HalfLength do
      k = k-1
      sum = sum+(k*avg[j])
      sumw = sumw+k
    next
    
    buffer1 = sum/sumw
    
    myrange = AverageTrueRange[AtrLength](close)*AtrMultiplier
    
    buffer2 = buffer1+myrange
    buffer3 = buffer1-myrange
    
    RETURN buffer1 coloured(0,220,0) as "TMA", buffer2 coloured(220,0,0)  as "upper band", buffer3 coloured(0,220,0) as "lower band"
     
    

    non so se riesci ad ottenere da questo codice una media mobile semplice centrata

    #23419 quote
    Nicolas
    Keymaster
    Master

    Scusate ma io sono un po ‘perso ora circa la vostra richiesta iniziale?
    Il codice si registra nel messaggio precedente di “traslazione_mod” non è attendibile in quanto utilizza l’indicatore DPO che non è buono nel trading reale (ridipingere precedente dato informazioni ..).
    Il codice dal tuo post sopra questo è il TMA (screenshot allegato), è già un MA centrato .. Ma, per definizione, una media mobile è già al centro del prezzo, è possibile modificare il suo periodo di vederlo come più chiaramente nella mia foto allegata.

    tma-prorealtime.png tma-prorealtime.png
    #25653 quote
    domeniko
    Participant
    New

    Buonasera,

    poi siete riusciti a implementarla, sarei interessato anche io anche a collaborarci . Grazie

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

Centered moving average – media mobile centrata


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
Ermitage @ermitage Participant
Summary

This topic contains 9 replies,
has 4 voices, and was last updated by domeniko
9 years ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 01/28/2017
Status: Active
Attachments: No files
Logo Logo
Loading...