indicatore Varianza

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • masterci
    Senior Member

    • Feb 2013
    • 154

    #1

    indicatore Varianza

    Visto che stavo seguendo il post molto interessante di Thalos, ho provato a creare la funzione e il relativo script per ottenere la varianza......

    Sono andato a cercarmi in rete la formula per il suo calcolo che risulta essere questa:

    ................n
    s² = 1/n * ∑ (xi - x°)²
    ................i = 1

    Ove con x° si intende la media campionaria. Con xi si indica invece la i-esima osservazione.

    Ho quindi provato a realizzare il relativo script:

    funzione

    Codice:
    # Funzione per il calcolo della varianza
    #
    # dati n valori (Xi......Xn) si calcola prima la media (Xm) di questi valori nel periodo considerato
    #
    # la varianza è pari a 1/n*sommatoria da 1 a n di (Xi-Xm)^2
    
    INPUTS: @periods(14)
    
    SET valmed = SMA(CLOSE, @periods)
    SET n = @periods
    SET k = SQUARE(CLOSE - valmed)
    SET somma = SUM(k, @periods)
    
    SET Varianza = 1 / n * somma
    indicatore

    Codice:
    INPUTS: @periods(14)
    
    SET PLOT1 = Varianza(@periods)
    Provate a darci un occhiata per vedere se risulta corretto!!!
    Io comunque ci ho provato......

    Beppe

    p.s.

    peccato che i plot possano essere solo a linee e non a istogrammi.....
    Last edited by masterci; 19-11-13, 21:25.
  • masterci
    Senior Member

    • Feb 2013
    • 154

    #2
    Mi ammonisco da solo!!!!

    L\'indicatore c\'è già e si chiama Variance................

    Vabbè ma io ho voluto fare esercizio ok?!?!?!?!?

    A tal proposito chiedo a Tiziano o Andrea: perchè se plotto il mio indicatore mi restituisce risultati diversi da quello di BT???
    Ho provato sia la formula relativa alla varianza di un campione (con n-1) sia quella relativa alla popolazione (con n) ma entrambi i risultati non coincidono......
    Dove sbaglio?

    Inoltre, perchè voi fate gli indicatori a istogramma e io non posso????

    Comment

    • Sig.Bollinger
      Senior Member

      • Dec 2012
      • 186

      #3
      Originariamente Scritto da masterci
      Mi ammonisco da solo!!!!

      L\'indicatore c\'è già e si chiama Variance................

      Vabbè ma io ho voluto fare esercizio ok?!?!?!?!?

      A tal proposito chiedo a Tiziano o Andrea: perchè se plotto il mio indicatore mi restituisce risultati diversi da quello di BT???
      Ho provato sia la formula relativa alla varianza di un campione (con n-1) sia quella relativa alla popolazione (con n) ma entrambi i risultati non coincidono......
      Dove sbaglio?

      Inoltre, perchè voi fate gli indicatori a istogramma e io non posso????
      l\'istogramma lo trovi nelle proprietà della finestra di inserimento dell\'indicatore
      File Allegati

      Comment

      • Andrea Cagalli
        Senior Member
        • Oct 2010
        • 3995

        #4
        Originariamente Scritto da Sig.Bollinger
        l\'istogramma lo trovi nelle proprietà della finestra di inserimento dell\'indicatore
        ..e anche in EasyScript Editor
        File Allegati
        Manuale beeTrader

        Comment

        • Smash
          Senior Member

          • Feb 2012
          • 351

          #5
          Originariamente Scritto da masterci
          Mi ammonisco da solo!!!!

          L\'indicatore c\'è già e si chiama Variance................

          Vabbè ma io ho voluto fare esercizio ok?!?!?!?!?

          A tal proposito chiedo a Tiziano o Andrea: perchè se plotto il mio indicatore mi restituisce risultati diversi da quello di BT???
          Ho provato sia la formula relativa alla varianza di un campione (con n-1) sia quella relativa alla popolazione (con n) ma entrambi i risultati non coincidono......
          Dove sbaglio?
          Ciao Beppe,

          sbagli perchè quando calcoli la varianza a n periodi dovresti usare per n volte lo stesso valore medio da sottrarre;
          mentre invece il vettore "valmed" che hai definito te è sistematicamente composto da n elementi diversi!

          Comment

          • maxmax68
            Senior Member

            • Sep 2013
            • 186

            #6
            Originariamente Scritto da Smash
            Ciao Beppe,

            sbagli perchè quando calcoli la varianza a n periodi dovresti usare per n volte lo stesso valore medio da sottrarre;
            mentre invece il vettore "valmed" che hai definito te è sistematicamente composto da n elementi diversi!
            Ottima osservazione Smash.

            [High]
            INPUTS: @periods(14)

            SET valmed = SMA(CLOSE, @periods)
            SET n = @periods
            SET somma = SUM(SQUARE(CLOSE), @periods) - (SQUARE(valmed)*@periods)

            SET Varianza = 1 / n * somma
            SET PLOT1 = Varianza

            [/High]


            Saluti
            Massimo
            Last edited by maxmax68; 20-11-13, 14:50.

            Comment

            • masterci
              Senior Member

              • Feb 2013
              • 154

              #7
              Grazie Andrea e sig. Bollinger!!!! Non lo avevo notato!!!

              Comment

              • masterci
                Senior Member

                • Feb 2013
                • 154

                #8
                Originariamente Scritto da Smash
                Ciao Beppe,

                sbagli perchè quando calcoli la varianza a n periodi dovresti usare per n volte lo stesso valore medio da sottrarre;
                mentre invece il vettore "valmed" che hai definito te è sistematicamente composto da n elementi diversi!
                Ciao Smash!

                Non mi trovo.......

                Faccio un esempio pratico che forse riesco a capire meglio!

                Prendiamo il calcolo della varianza a 5 periodi di questo campione di 7 elementi:

                1 = 3
                2 = 5
                3 = 9
                4 = 2
                5 = 4
                -------------
                6 = 7
                7 = 5

                la var(5) relativa all\'elemento n. 5 prenderà come media gli elementi da 1 a 5: (3+5+9+2+4)/5 = 4.6
                e quindi (sempre riferita all\'elemento 5) sarà pari a 1/5 * (3-4.6)^2+(5-4.6)^2+(9-4.6)^2+(2-4.6)^2+(4-4.6)^2 = 27.152

                la var(5) relativa allemente n. 6 prenderà come media gli elementi da 2 a 6: (5+9+2+4+7)/5 = 5.4
                e quindi (sempre riferita all\'elemento 6) sarà pari a 1/5 * (5-5.4)^2+(9-5.4)^2+(2-5.4)^2+(4-5.4)^2+(7-5.4)^2 = 29.072
                e così via....

                Quindi il valore di valmed, giustamente, deve variare perchè deve fare la media degli ultimi 5 elementi e spostare in avanti di un elemento la media man mano che procede nell\'elemento successivo.....

                Non so se mi sono spiegato!!!!

                Valmed è un vettore che dovrebbe avere al suo interno tante medie dei 5 elementi precedenti....

                Comment

                • masterci
                  Senior Member

                  • Feb 2013
                  • 154

                  #9
                  Capito l\'inghippo!!!!!!

                  Grazie Max!

                  Comment

                  • Smash
                    Senior Member

                    • Feb 2012
                    • 351

                    #10
                    Originariamente Scritto da masterci
                    Ciao Smash!

                    Non mi trovo.......

                    Faccio un esempio pratico che forse riesco a capire meglio!

                    Prendiamo il calcolo della varianza a 5 periodi di questo campione di 7 elementi:

                    1 = 3
                    2 = 5
                    3 = 9
                    4 = 2
                    5 = 4
                    -------------
                    6 = 7
                    7 = 5

                    la var(5) relativa all\'elemento n. 5 prenderà come media gli elementi da 1 a 5: (3+5+9+2+4)/5 = 4.6
                    e quindi (sempre riferita all\'elemento 5) sarà pari a 1/5 * (3-4.6)^2+(5-4.6)^2+(9-4.6)^2+(2-4.6)^2+(4-4.6)^2 = 27.152

                    la var(5) relativa allemente n. 6 prenderà come media gli elementi da 2 a 6: (5+9+2+4+7)/5 = 5.4
                    e quindi (sempre riferita all\'elemento 6) sarà pari a 1/5 * (5-5.4)^2+(9-5.4)^2+(2-5.4)^2+(4-5.4)^2+(7-5.4)^2 = 29.072
                    e così via....

                    Quindi il valore di valmed, giustamente, deve variare perchè deve fare la media degli ultimi 5 elementi e spostare in avanti di un elemento la media man mano che procede nell\'elemento successivo.....

                    Non so se mi sono spiegato!!!!

                    Valmed è un vettore che dovrebbe avere al suo interno tante medie dei 5 elementi precedenti....

                    Il problema è che il vettore valmed lo volevi utilizzare per calcolare questa sommatoria (al posto di x°):

                    ...n
                    ∑ (xi - x°)²
                    ...i = 1


                    in questo modo:

                    Codice:
                    SET k = SQUARE(CLOSE - valmed)
                    SET somma = SUM(k, @periods)
                    e non poteva andare bene perchè avresti dovuto calcolare la sommatoria di n elementi (xi - x°)² dove gli xi cambiano per n volte mentre gli x° hanno sempre lo stesso valore.

                    Nell\'esempio numerico che hai citato:
                    per la varianza(5) relativa all\'elemento n. 5 che prende come media gli elementi da 1 a 5;

                    la media è
                    (3+5+9+2+4)/5 = 4.6

                    mentre la sommatoria richiesta è
                    (3 - 4.6)² + (5 - 4.6)² + (9 - 4.6)² + (2 - 4.6)² + (4 - 4.6)²

                    Nel tuo codice invece i vettori CLOSE e valmed variano entrambi ad ogni elemento.
                    Last edited by Smash; 21-11-13, 14:44.

                    Comment

                    Working...