Medie mobili centrate in vba



  • Medie mobili centrate in vba
    di Gaietta data: 22/12/2011

    Ciao a tutti, mi chiamo gaia e sono piuttosto nuova di programmazione vba. sto cercando di costruire una funzione che mi calcoli un indicatore di analisi tecnica per cui ho bisogno delle medie mobili centrate, che non sono altro che le medie mobili straslate indietro di metà periodo. faccio un esempio, la mmc a 30gg è la media mobile a 30gg traslata indietro di 15 gg. ho iniziato costruendo una funzione che mi calcolasse la media mobile normale e ho trovato un aiuto sul web (codice sotto). il problema ora è che non so come fare a traslarlo indietro... qlc mi sa aiutare? grazie in anticipo e buone feste!!
     
    Function oscill1(prices As Variant, N1 As Long) As Variant
        Dim oscillA() As Variant, MA1 As Variant, MA2 As Variant, R As Long, C As Long
        Dim i As Long, j As Long, k As Long, sum1 As Double, sum2 As Double
    
        prices = prices.Value2
        R = UBound(prices)
        C = UBound(prices, 2)
        'ReDim oscillA(1 To R, 1 To C)
        ReDim MA1(1 To R, 1 To C)
        'ReDim MA2(1 To R, 1 To C)
        For j = 1 To C
         sum1 = 0
         'sum2 = 0
            For i = 1 To N1
                sum1 = sum1 + prices(i, j)
                MA1(i, j) = CVErr(xlErrNA)
            Next i
                MA1(i - 1, j) = sum1 / N1
            For i = N1 + 1 To R
                sum1 = sum1 + (prices(i, j) - prices(i, j))
                MA1(i, j) = (sum1) / N1
            Next i
           
            
        Next j
        oscill1 = MA1



  • di Baz data: 28/12/2011

    Ciao,
    oremetto che non mi è molto chiaro il codice e come lavora, nel senso che sono state dichiarate 2 matrici ma1 e ma2 ma solamente sulla matrice 1 vengono eseguite delle "modifiche".

    credo sarebbe utile sapere come sono strutturati i tuoi dati, visto che il tuo problema è "solamente" quello di modificare l'intervallo dei dati da analizzare.

    fai sapere
    ciao



  • di Gaietta (utente non iscritto) data: 29/12/2011

    Sì, ne modifico solo una perchè l' altra è uguale ha solo un input temporale diverso ( quindi se capisco come trattare m1 tratto anche m2)
    in pratica ho un foglio con le date e i prezzi che è il foglio di input e io con questa funzione vorrei calcolare 2 diverse medie mobili centrate. l' arco temporale delle medie mbili è un input che si trova nel foglio dove le mm sono calcolate. il mio problema poi è "traslare indietro di metà periodo" le medie mobili, spero che sia un pochino più chiaro



  • di Baz (utente non iscritto) data: 29/12/2011


    la funzione da te postata, se non erro, lavora con dei dati caricati altrove (prices ed n1), da ciò non si capisce nè il formato ne il tipo di dato.

    personalmente ti chiederei di fare un file di test dove indicare i tuoi dati (ovviamente senza dati personali ...) e poi quello che vorresti ottenere cone le relative possibilei variazioni.

    ciao