IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Moyenne mobile de Hull et autre Moyenne mobile


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut Moyenne mobile de Hull et autre Moyenne mobile
    Bonjour,
    Quelqu'un aurait-il la formule mathématique de la moyenne mobile de Hull ?

    J'ai déjà cherché sur le Web mais, soit j'obtiens le code dans un langage que je ne comprends pas, soit j'obtiens une formule qui réclame la Moyenne mobile que je ne connais pas.

    Je cherche donc également la formule de la Moyenne mobile

    Merci Random... ou à tout autre

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Bonjour,
    Tu te mets à la bourse ?

    la formule :
    MM(2*MM(close,period/2)-MM(close,period), Period^0.5)
    soit
    Moyenne Mobile ayant pour période la racine carrée de la période de base et pour argument la différence du double de la MM des cours de cloture de période, la 1/2 période de base, avec la MM de cours de cloture sur la période.

    Une moyenne mobile est une moyenne de n arguments (n=période) glissante sur l'ensemble d'un historique.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Ousk
    Hulk je connais mais pas Hull
    Mais la formule de la moyenne mobile je l'ai trouvée sur wikipedia.org
    A+

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Pour le fun ( à vérifier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Function HMA(Histo(), period As Long)
        Dim x As Long, sum1 As Single, sum2 As Single, sum3 As Single, MM1() As Single, MM2() As Single, MM3() As Single
     
        ReDim MM1(LBound(Histo) To UBound(Histo))
        ReDim MM2(LBound(Histo) To UBound(Histo))
        ReDim MM3(LBound(Histo) To UBound(Histo))
     
        For x = period To UBound(Histo)
            sum1 = 0: sum2 = 0: sum3 = 0
            For y = 1 To period \ 2
                sum1 = sum1 + Histo(x - period + y, 1)
            Next
            For y = (period \ 2) + 1 To period
                sum2 = sum2 + Histo(x - period + y, 1)
            Next
            MM1(x) = (sum1 + sum2) / (period / 2)
            MM2(x) = sum2 / period
            MM3(x) = ((2 * MM1(x)) - MM2(x)) / Int(period ^ (1 / 2))
        Next
     
        HMA = MM3
    End Function

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci Dark,
    Je vais apprendre ça par coeur.

    Tu es un amour tout plein


    Merci Louis, (j'avais vu sur wikipedia)

    PS - Dark, je teste ça demain et je dis.

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    En y repensant, cette version optimisée devrait être beaucoup plus rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Function HMA2(Histo(), period As Long)
        Dim x As Long, sum1 As Single, sum2 As Single, sum3 As Single, MM1() As Single, MM2() As Single, MM3() As Single
     
        ReDim MM1(LBound(Histo) To UBound(Histo))
        ReDim MM2(LBound(Histo) To UBound(Histo))
        ReDim MM3(LBound(Histo) To UBound(Histo))
     
        For x = 1 To period \ 2
            sum1 = sum1 + Histo(x, 1)
        Next
        For x = period \ 2 + 1 To period
            sum2 = sum2 + Histo(x, 1)
            sum3 = sum1 + sum2
     
            MM1(x) = sum3 / (period / 2)
            MM2(x) = sum2 / period
            MM3(x) = ((2 * MM1(x)) - MM2(x)) / Int(period ^ (1 / 2))
        Next
        For x = period + 1 To UBound(Histo)
            sum2 = sum2 + Histo(x, 1) - Histo(x - (period \ 2), 1)
            sum3 = sum3 + Histo(x, 1) - Histo(x - period, 1)
     
            MM1(x) = sum3 / (period / 2)
            MM2(x) = sum2 / period
            MM3(x) = ((2 * MM1(x)) - MM2(x)) / Int(period ^ (1 / 2))
        Next
     
        HMA2 = MM3
    End Function
    Pour peu que l'histo soit un peu long, l'utilisation de boucles imbriquées nécessaire au calcul des MM est à éviter
    notamment si la fonction est appliquée à du temps réel induisant des recalculs permanents.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci, Dark
    C'est effectivement en dynamique. J'essaie d'appliquer ça à deux plages de cellules passées en paramètres. Si je n'y parviens pas, j'utiliserai ta fonction telle quelle.
    Les deux plages :
    Histo(1) = Plage de la première moitié de la période
    Histo(2) = " seconde " "
    (je cherche au maximum à économiser la mémoire (au détriment de l'uc, je sais)
    Une question dont tu dois connaître la réponse : Qu'est-ce qui est le plus rapide, utiliser une variable objet ou des variables numériques ?
    Encore merci
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2014, 15h56
  2. Réponses: 0
    Dernier message: 01/12/2011, 11h04
  3. Réponses: 8
    Dernier message: 06/07/2009, 14h28
  4. Réponses: 0
    Dernier message: 02/07/2009, 16h39
  5. Moyenne mobile de Hull et autre Moyenne mobile
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/01/2008, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo