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

  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
    Points : 15 546
    Points
    15 546
    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 130
    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 130
    Points : 3 118
    Points
    3 118
    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
    Points : 2 416
    Points
    2 416
    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 130
    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 130
    Points : 3 118
    Points
    3 118
    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
    Points : 15 546
    Points
    15 546
    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 130
    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 130
    Points : 3 118
    Points
    3 118
    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
    Points : 15 546
    Points
    15 546
    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+

  8. #8
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Par ordre
    numérique>string/variant>matrice>object
    rapport
    1>5>100-10 000>20 000-30 000 selon typage ou non(liaison tardive)

  9. #9
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok, je sais ce qu'il me reste à faire... Ta fonction restera telle qu'elle est.
    Une fois encore un grand merci.

  10. #10
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello Dark,
    J'ai une difficulté avec les termes period (ou bien Histo)
    Pour moi, l'historique correspond aux données antèrieures à "maintenant" et period, la dimension de l'antériorité de l'historique pris en compte. Or, cette interprétation est nécessairement fausse puisque tu réalises une boucle de Period à Ubound(Histo) qui, selon mon interprétation première, indiquait le même "élément"
    For x = Period To UBound(Histo)
    Peux-tu m'éclairer ?
    Par avance, merci de ta réponse.

  11. #11
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    On ne peut initialiser la MM d'une population (ici Histo) sur une période p
    qu'à partir de p éléments -
    Ainsi la MM des élements 1 à p-1 n'existe pas ou alors à l'aide de bricolage.

    Ta difficulté de compréhension vient peut être du fait que j'ai écrit la fonction
    en fixant l'élément 1 comme le plus ancien.

  12. #12
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    En effet, c'est pourquoi j'avais prévu un temps t avant de démarrer la MM.
    Dans mon hypothèse, Si MM démarre à l'instant t + n on a period = n (en dynamique)
    Mon raisonnement tient-il la route ? (je saurai adapter)
    Merci de ta réponse

    Edit
    Je me demande : period est négatif ?

  13. #13
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Désolé, je ne comprends pas :
    pour faire simple, un exemple http://basic-exchange.com/HMA.xls

  14. #14
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok, j'ai (enfin) compris.
    Dans mon application, la récupération dynamique de données provoque l'événement Calculate de la Sheet. Comme j'utilise cet événement dans mon appli, l'utilisation de formules faisant appel à fonction m'est interdit dans la feuille de calculs. Sinon avec des formules dans la feuille, le code passerait son temps dans Worksheet_Calculate sans poursuivre le code de la procédure principale. Or la récupération dynamique des données m'empêche de neutraliser la propriété EbableEvents de l'application ni la méthode .Calculate de la feuille. (NB)
    Je compte donc effectuer le calcul de la MMH en dynamique, sans formule.
    J'espère que j'ai été plus clair et que ça t'explique mes questions.
    Je regarde ça de plus près et essaierai de l'adapter mais d'après ce que j'ai compris, je devrais y parvenir.
    Merci pour ton fichier, je vais tâcher d'en tirer le meilleur profit.
    Bon week-end, je te tiens au courant.

    NB - Sauf si tu as une solution à m'offrir sur un plateau

  15. #15
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    J'imagine que la récupération des données est effectuée via des formules DDE du type « =Server|topics!topicitems » concernant chaque transaction
    ou il s'agit del'envoi d'un historique complet (via DDE) ?

    Mais que t'est-il demandé :
    un calcul de la valeur instantanée de la HMA au moment de la réception des données pour toutes les liens reçus (filtrage) ?
    ou un affichage complet sur un historique choisi comme l'exemple je t'ai fourni ?

  16. #16
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Bonjour,
    Désolé si ma question de départ était incomplète mais je n'imaginais pas que la HMA soit calculée sur des données "statiques".
    C'est bien un recueil de données par DDE.
    Il m'est effectivement demandé un calcul de la valeur instantanée de la HMA au moment de la réception de ces données que je reçois une par une.
    L'affichage aussi bien de la MM que de la courbe de données est effectué en temps réel.
    J'ai en outre un certain nombre de calculs, effectués entre réception et affichage (non un simple filtrage) Pour ça je neutralise EnableEvents pour les effectuer sans qu'intervienne _Calculate. Mais cela influe déjà sur le flux.
    Je ne souhaite donc pas en abuser.
    Enfin, j'avais jusque là réussi à n'avoir aucune boucle dans la procédure, ce qui ne va naturellement plus être le cas.
    Cependant, l'une de tes précédentes réponse m'a déjà permis d'alléger l'UC et à accélérer la procédure en utilisant des variables numériques plutôt que des objets Range. Ceci compensera-t-il cela ? Je l'espère. Tout comme j'espère avoir été plus clair...
    Déjà merci, chacune de tes réponses m'a apporté un élément manquant.

    Edit
    Je complète ma réponse précédente.
    Pour ce qui concerne la MMH, je compte donc la réaliser sur un historique correspondant à
    "maintenant" - "antériorité"
    et l'afficher en "instantané"
    Dans la fonction que tu m'as donnée, j'en déduis que l'antériorité correspond à la période.
    D'où ma question posée ici.
    Si les éclaircicements précédents te permettaient de me répondre, je crois que je serais tout à fait sorti d'affaire.
    Merci.

  17. #17
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Il va probablement falloir poursuivre par MP car on entre dans le domaine du particulier, toutefois quelques précisions
    Citation Envoyé par ouskel'n'or Voir le message
    Bonjour,
    Désolé si ma question de départ était incomplète mais je n'imaginais pas que la HMA soit calculée sur des données "statiques".
    Dès lors que tu n'utilises que la dernière valeur (le but est donc bien de récupérer un signal (par filtrage) mais c'est secondaire 8) )
    il te suffit de ne conserver que le nombre d'éléments correspondant à la période étudiée (P=20 => on conserve seulement les 20 derniers éléments )
    => le soucis pour ce cas est de savoir si l'utilisateur peut modifier la période en cours d'utilisation ?

    Citation Envoyé par ouskel'n'or Voir le message
    C'est bien un recueil de données par DDE.
    Quel est le fournisseur de flux, le nombre d'éléments recueillis par valeurs, le nombre de valeurs surveillées et le marché sous-jacent ?
    (C'est l'ensemble des facteurs qui vont déterminer la limite de saturation du système)

    Citation Envoyé par ouskel'n'or Voir le message
    Il m'est effectivement demandé un calcul de la valeur instantanée de la HMA au moment de la réception de ces données que je reçois une par une.
    L'affichage aussi bien de la MM que de la courbe de données est effectué en temps réel.
    Dans ce cas tu conserves l'intégralité des transactions recueillies ?
    Comment ? Sauvegarde dans une base de données ou autrement ?
    Ou sauvegarde des résultats de la HMA ?


    Citation Envoyé par ouskel'n'or Voir le message
    J'ai en outre un certain nombre de calculs, effectués entre réception et affichage (non un simple filtrage) Pour ça je neutralise EnableEvents pour les effectuer sans qu'intervienne _Calculate. Mais cela influe déjà sur le flux.
    Je ne souhaite donc pas en abuser.
    Il y a d'autres alternatives mais on en reparlera après que tu ais fourni les précisions demandées


    Citation Envoyé par ouskel'n'or Voir le message
    Enfin, j'avais jusque là réussi à n'avoir aucune boucle dans la procédure, ce qui ne va naturellement plus être le cas.
    L'exemple fourni dans HMA2 permet de supprimer les boucles - il suffit de sauvegarder les résultats de sum2 et sum3 et de les modifier en fonction du la transaction.

  18. #18
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Merci de ta réponse.
    Je viens de regarder plus en détail le fichier que tu m'as transmis et je m'aperçois que les formules matricielles ne provoque pas l'événement Calculate de la feuille. J'ai peut-être là une alternative. Mais ça pose un autre problème, l'écriture en dynamique des formules et là je n'ai encore rien testé.

    Je réponds à tes questions :
    L'utilisateur n'intervient pas, il se contente de regarder (heureusement !)
    Le flux ? Aléatoire, de 1 à 10 par seconde ~
    Nombre d'éléments recueillis ? 1 seul. Aucun "parasite".
    La base de donnée ? En un premier temps, Excel. Pour le moment suffisant pour ce que j'ai réalisé.

    Mes contraintes ("pour le moment") :
    Je suis tenu de conserver un historique "suffisant", estimé à 20000 lignes.
    A partir de 20000 lignes, je fige le nombre de lignes en supprimant la première pour chaque nouvelle entrée. A partir de 20000 lignes j'ai donc une plage fixe et un historique constant (situation normale puisqu'il n'y a aucune interruption dans le flux de données)
    La MMH :
    On avait envisagé empiriquement une MM calculée sur un antérieur de 150 lignes. Tu sembles penser que p = 20 est suffisant... Là, j'adapterai.
    Enfin la MMH doit être sauvegardée dans la feuille de calculs avec affichage "instantané" dans le graphe.
    A l'initialisation de la feuille, son calcul ne commencerait qu'à p + 1 (!)

    Voilà. Je pense avoir répondu à tes questions.
    Merci de ton attention soutenue (!!!)

    PS -
    L'exemple fourni dans HMA2 permet de supprimer les boucles - il suffit de sauvegarder les résultats de sum2 et sum3 et de les modifier en fonction de la transaction.
    Je peux en effet mémoriser sum2 et sum3 dans la feuille... (je devais penser à autre chose car je ne voyais pas la solution...)
    Je précise : L'exécution de la procédure principale est tributaire du flux de données (sortie de procédure entre chaque donnée) Je n'ai donc pas la possibilité de mémoriser (dans VBA) les valeurs antérieures. Pas de variable public pouvant me venir en aide.

  19. #19
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Merci de ta réponse.
    Je viens de regarder plus en détail le fichier que tu m'as transmis et je m'aperçois que les formules matricielles ne provoque pas l'événement Calculate de la feuille. J'ai peut-être là une alternative. Mais ça pose un autre problème, l'écriture en dynamique des formules et là je n'ai encore rien testé.
    !!! Quel problème ? => formulaArray

    Citation Envoyé par ouskel'n'or Voir le message
    Je réponds à tes questions :
    L'utilisateur n'intervient pas, il se contente de regarder (heureusement !)
    Le flux ? Aléatoire, de 1 à 10 par seconde ~
    Nombre d'éléments recueillis ? 1 seul.
    Uniquement le dernier cours, sans même l'heure de transactions !?


    Combien de valeurs surveillées ?
    1, 5000 valeurs ?
    Tu parles d'un flux de 1 à 10 par secondes au total pour toutes les valeurs surveillées ?
    si c'est le cas, tu as de la marge (encore qu'il faudrait connaître ce flux en période de forte activité, ce qui n'est pas vraiment le cas actuellement dumoins sur les marchés actions)
    En général le réglage des serveurs est réglé 1 transaction/10ms ce qui sous entend
    que l'intégralité de ton code doit s'exécuter sur cette période de 10ms ce qui permet pas mal de chose.

    Citation Envoyé par ouskel'n'or Voir le message
    Mes contraintes ("pour le moment") :
    Je suis tenu de conserver un historique "suffisant", c'est à dire d'environ 20000 lignes.

    Aucun "parasite".
    La base de donnée ? En un premier temps, Excel. Pour le moment suffisant pour ce que j'ai réalisé.
    Pour une grande quantité utilse une base de données, en cas de crash, ton client appréciera de ne pas se retrouver dans le vide.


    Citation Envoyé par ouskel'n'or Voir le message
    .../...
    La MMH :
    HMA (Hull Moving Average)

    Citation Envoyé par ouskel'n'or Voir le message
    On avait envisagé empiriquement une MM calculée sur un antérieur de 150 lignes. Tu sembles penser que p = 20 est suffisant... Là, j'adapterai.
    J'ai fixé 20 pour l'exemple mais ce n'est en rien une obligation
    Citation Envoyé par ouskel'n'or Voir le message
    Enfin la MMH doit être sauvegardée dans la feuille de calculs avec affichage "instantané".
    A l'initialisation de la feuille, son calcul ne commencerait qu'à p + 1 (!)
    Exact, c'est une erreur
    Citation Envoyé par ouskel'n'or Voir le message
    .../...
    Je précise : L'exécution de la procédure principale est tributaire du flux de données (sortie de procédure entre chaque donnée) Je n'ai donc pas la possibilité de mémoriser (dans VBA) les valeurs antérieures. Pas de variable public pouvant me venir en aide.
    Je ne vois pas bien pourquoi mais tu dois avoir tes raisons.

  20. #20
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    C'est ok !
    Avec ta fonction, j'ai enfin obtenu la fameuse Moyenne Mobile de Hull (HMA en anglais, si tu préfères)
    Jusque là, Youki content.
    Effectivement, p = 20 est trop faible, avec 50 c'est très beau.
    Me reste à obtenir ça en dynamique mais ce ne devrait plus être qu'une question de quelques minutes.
    Grâce à tes explications, j'ai compris le principe et saurai désormais me débrouiller sans béquille.
    Je te remercie infiniment, tu m'as sorti une sacrée épine du pied. (comme d'ab')
    A+ pour une prochaine question tordue.
    Bon week-end.
    .................................................................


    Pour répondre à tes questions
    Citation Envoyé par moi
    Mais ça pose un autre problème, l'écriture en dynamique des formules et là je n'ai encore rien testé.
    Citation Envoyé par toi
    !!! Quel problème ? => formulaArray
    le pb n'est pas là. L'écriture par soft d'une formule provoque l'événement Calculate de la feuille.
    Citation Envoyé par moi
    Nombre d'éléments recueillis ? 1 seul.
    Citation Envoyé par toi
    Uniquement le dernier cours, sans même l'heure de transactions !?
    Non, comme j'obtiens en instantané une mise à jour des données, j'utilise l'heure PC. En outre elle n'a pas une importance "vitale" ici.
    Citation Envoyé par toi
    En général le réglage des serveurs est réglé 1 transaction/10ms ce qui sous entend que l'intégralité de ton code doit s'exécuter sur cette période de 10ms ce qui permet pas mal de chose.
    En effet le problème, pour moi, n'est pas tant le tps d'exécution mais celui de l'affichage du graphe (20000 lignes...)
    Citation Envoyé par toi
    Pour une grande quantité utilse une base de données, en cas de crash, ton client appréciera de ne pas se retrouver dans le vide.
    Tu as raison et c'est bien sûr envisagé après mise au point de l'ensemble.

    Ai-je bien répondu

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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