Annonce
Réduire
Aucune annonce.
Ads
Réduire
[Graphe AT PRo : programmation]
Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Volatilité Dynamique :

    Xave06 a publié ici un histogramme de volatilité calculé sur 150 périodes :
    <a href='/ref.php?uri=http%3A%2F%2Fwww.pro-at.com%2Ffrm%2Ftopic.asp%3FTOPIC_ID%3D11342%26whichpage%3D5' target="_blank">http://www.pro-at.com/frm/topic.asp?TOPIC_ID=11342...</a>

    On peut l'associer à la volatilité calculée sur 150 périodes comme publié ici même.

    Pour simplification, cette combinaison d'indicateur s'exprime de la façon suivante (je n'ai fait que des copiés-collés):

    //Volatilité
    VOLATILITE=100*(UBOLL-LBOLL)/MBOLL

    <font color="blue">//Recherche volatilité maxi et mini
    VOLMINI = MIN(VOLATILITE, P1)
    VOLMAXI = MAX(VOLATILITE, P1)

    //Variation bandes bollinger sur historique
    bollvar(0)=((uboll-lboll)/mboll)*100

    varmax(0)=max(bollvar,P1)
    varmin(0)=min(bollvar,P1)
    bollhisto(0)=((bollvar-varmin)/(varmax-varmin))*100</font id="blue">

    <center><img src='http://upload.pro-at.com/02/vol-histo.jpg' alt='' /></center>

    <center><em style='border:2px dashed #888; padding:10px'>image : <a href='/ref.php?uri=http%3A%2F%2Fupload.pro-at.com%2F02%2Fcac40-volhisto.jpgintrouvable' target="_blank">http://upload.pro-at.com/02/cac40-volhisto.jpgintr...</a> ou format inconnu</em></center>







    Commentaire


    • Bonsoir Philippulus,

      Il y a redondance de variables dans ton programme.
      Il suffit d'écrire :

      ------------------------------------
      VOLATILITE = 100*(UBOLL-LBOLL)/MBOLL
      VOLMINI = MIN(VOLATILITE,P1)
      VOLMAXI = MAX(VOLATILITE,P1)
      BOLLHISTO = 100*(VOLATILITE-VOLMINI)/(VOLMAXI-VOLMINI)
      ------------------------------------

      Attention, si on ne souhaite pas que la variable VOLATILITE soit une courbe, il faudra l'historiser en écrivant VOLATILITE(0) dans la première instruction.

      Bon week-end.

      Commentaire


      • <blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citation :<hr height="1" noshade id="quote"><i>Citation de smallcaps90</i>
        <br />Bonsoir Philippulus,

        Il y a redondance de variables dans ton programme.<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

        Bonjour Smallcaps,

        Ben, ce n'est pas mon programme.
        Je n'ai fait que copier à la suite deux programmes écrits par des tiers.
        La redondance, je m'en doutais, mais je n'ai rien osé modifié.
        En tous cas, merci pour ton aide.

        J'ouvre une autre file ou ton aide pourrait être utile, pour convertir automatiquement des cours.
        Merci d'y jeter un coup d'oeil.

        Commentaire


        • Bonsoir Philippulus,

          Je ne suis pas capable de résoudre ton pb en l'état, en effet je n'ai pas suffisamment travaillé sur les fichiers qu'emploie GrapheAT pour te conseiller utilement.
          MLOG pourrait peut-être te dire si c'est possible dans GrapheAT ou non.
          Vu le genre de difficultés que cela pose ne penses-tu pas qu'un programme Excel, donc externe à GrapheAT, pourrait faire l'affaire?

          Commentaire


          • Pour FOKI,

            J'ai la réponse à notre problème de "fiabilité" des statistiques en Mensuel.
            MLOG que j'ai interrogé m'a précisé que :

            <i>"Il faut au moins 20 mois d'historiques pour que la Bollinger Mois et sa moyenne soient calculées correctement...</i>
            Ce qui est évident a posteriori....
            MLOG poursuit :
            <i>"Par défaut le calcul des statistiques se fait sur 370 jours ce qui n'est pas suffisant dans ce cas. Il faut mettre au moins 600 jours (nombre de jours modifiable par le bouton Options dans les statistiques)."</i>

            Il suffit donc d'aller dans les "Options" de la fenêtre des règles statistiques et de modifier la valeur 370 qui est indiquée par défaut en la remplaçant par 700 par exemple :

            <center><img src='http://upload.pro-at.com/02/para_stats.gif' alt='' /></center>

            Dans le cas qui nous intéressait, le programme trouvait Accor qui n'avait pas lieu d'apparaître dans les résultats au 21/05/2004 puisque la clôture ne passait pas de l'autre côté de la MBOLL.

            En modifiant le paramètre "Nombre de jours pour calculer les tatistiques.." comme indiqué ci-dessus, on trouve le résultat correct :

            -------------------------------------
            Groupe : cac40 Date : 21/05/2004
            Croisement à la hausse de la MBOLL ----> ACHAT
            Croisement à la baisse de la MBOLL -----> VENTE
            MBOLL FRANCHIE A LA BAISSE LE 21/05/2004 Casino Guichard
            MBOLL FRANCHIE A LA BAISSE LE 21/05/2004 France Telecom
            MBOLL FRANCHIE A LA BAISSE LE 21/05/2004 Thomson
            -------------------------------------

            Accor ne se trouve plus dans les résultats et France Télécom, qui n'y était pas, apparaît.
            Attention, plus la valeur de N (nombre de mois sur lesquels on lance la statistique) sera grande, plus il faudra choisir un nombre de jours important pour que le calcul soit correct.

            Commentaire


            • Bonjour Smallcap,

              J'ai fait les modifs et Houla la !! que c'est beau maintenant LOL!!

              Encore merci pour ton aide.

              Suite à ton info, je suis allé voir la file avec la MAMA / FAMA et je l'ai mis sur Graph AT. Cela a l'air d'être très intéressant, je vais essayer de l'utiliser sur la durée pour voir.

              Commentaire


              • Philippilus,
                je confirme ce que t'a dit smallcaps90(puisque c'est moi qui ai donné le script du bollhisto),il y a bien redondance et il convient de supprimer les lignes en rouge qui sont reprises ensuite.

                //Volatilité
                <font color="red">VOLATILITE=100*(UBOLL-LBOLL)/MBOLL</font id="red">

                //Recherche volatilité maxi et mini
                <font color="red">VOLMINI = MIN(VOLATILITE, P1)
                VOLMAXI = MAX(VOLATILITE, P1)</font id="red">

                //Variation bandes bollinger sur historique
                bollvar(0)=((uboll-lboll)/mboll)*100

                varmax(0)=max(bollvar,P1)
                varmin(0)=min(bollvar,P1)
                bollhisto(0)=((bollvar-varmin)/(varmax-varmin))*100


                J'en profite pour donner à ceux qui s'intéressent à la volatilité un petit script pour mesurer l'accélération de l'écartement des bandes.

                //on calcule l'écartement en % des bandes
                bollvar(0)=((uboll-lboll)/mboll)*100

                //on calcule la MM 5 périodes de cet écartement
                bollref(0)=moyenne(bollvar,5)

                //on construit un oscillateur
                bandspeed(0)=bollvar-bollref

                Le passage positif de cet oscillateur signale le début d'écartement des bolls et surtout le pic de l'oscillateur signalera toujours la fin de l'accélération de l'écartement même quand les bolls resteront écartées par simple inertie.Dans le cas d'une "bulle" le pic de l'oscillateur coincide toujours avec le sommet/bas des cours;dans le cas de parallèles c'est à utiliser avec précautions(risque de sortie prématurée).
                A noter que smallcaps90 a bati un indicateur beaucoup plus sophistiqué mas ses connaissances en programmation sont aussi beaucoup plus "sophistiquées" que les miennes <img src='http://www.pro-at.com/style/images/icones/icon_smile_sad.gif' border='0' alt='' title='' align='middle' />

                Commentaire


                • J'en profite pour faire appel aux programmeurs chevronnés,je voudrais intégrer dans les statistiques le bollhisto pour scanner les valeurs qui sont sur une volatilité historiquement basse(en utilisant le calcul du bollhisto),mais je n'arrive pas à le faire fonctionner.
                  Je vous redonne le script du bollhisto:
                  //Variation bandes bollinger sur historique
                  bollvar(0)=((uboll-lboll)/mboll)*100

                  varmax(0)=max(bollvar,P1)
                  varmin(0)=min(bollvar,P1)
                  bollhisto(0)=((bollvar-varmin)/(varmax-varmin))*100

                  merci d'avance,
                  xavier

                  Commentaire


                  • Salut Xavier,

                    Je vois que tu réfléchis toujours à la volatilité...super, je me sens un peu moins seul...

                    Pour ton problème de statistique de basse volatilité voici une solution possible.
                    C'est toujours la même logique de programmation que j'emploie.

                    <u>Programme :</u>
                    A placer sous l'onglet "Jour" ou autre suivant ce que tu veux tester comme période.
                    Attention si tu le mets sous l'onglet "Mois", relis ce que j'ai posté récemment à FOKI...

                    ----------------------------------
                    <font size="1">//Statistique basse volatilité
                    //

                    NIVEAU_BAS=10 //Pourcentage définissant la volatilité basse

                    ACTION_SELECT=0
                    N=15

                    POUR N COURS

                    SI BOLLHISTO.BOLLHISTO<NIVEAU_BAS
                    ALORS
                    ACTION_SELECT=1
                    COLONNE1 = "VOLATILITE BASSE AU " & DATEHISTO$ & " : "
                    FINSI

                    FINPOUR

                    SI ACTION_SELECT=1
                    ALORS
                    SELECTION
                    ACTION_SELECT=0
                    FINSI</font id="size1">
                    ----------------------------------

                    <u>Propriétés :</u>

                    <center><img src='http://upload.pro-at.com/02/propri%e9t%e9s3.gif' alt='' /></center>


                    Avec les valeurs N=15 jours et une LIMITE_BASSE=10% que tu peux évidemment changer à volonté :

                    Groupe : cac40 Date : 24/05/2004
                    Détecte les valeurs dont la volatilité est basse

                    VOLATILITE BASSE AU 07/05/2004 : Accor
                    VOLATILITE BASSE AU 07/05/2004 : AGF
                    VOLATILITE BASSE AU 24/05/2004 : Aventis
                    VOLATILITE BASSE AU 14/05/2004 : Cap Gemini
                    VOLATILITE BASSE AU 24/05/2004 : L'Oreal
                    VOLATILITE BASSE AU 17/05/2004 : Michelin
                    VOLATILITE BASSE AU 24/05/2004 : Pernod Ricard
                    VOLATILITE BASSE AU 04/05/2004 : Pinault Printemps Redoute
                    VOLATILITE BASSE AU 06/05/2004 : Thales
                    VOLATILITE BASSE AU 07/05/2004 : Thomson
                    VOLATILITE BASSE AU 24/05/2004 : TotalFina
                    VOLATILITE BASSE AU 17/05/2004 : Vinci


                    Pour être complet :
                    - il faut évidemment créer une règle indicateur qui contient les 4 instructions qui donnent BOLLHISTO. C'est la raison pour laquelle tu trouves : BOLLHISTO.BOLLHISTO dans le test de la règle statistique. J'ai nommé cette règle indicateur BOLLHISTO et la variable volatilité en % BOLLHISTO également comme toi.
                    Si tu veux les valeurs à volatilité mini au dernier jour de ton historique, il suffit que donne à N la valeur 1 dans la règle statistique.
                    Si le texte de la colonne1 ne te convient pas, tu peux aussi le changer bien sûr.

                    Bonne fin de journée.

                    Commentaire


                    • Merci smallcaps90,
                      je vais essayer ton script ce soir en rentrant a la maison,ce n'est pas exactement ce que je cherche mais il y a dedans des éléments qui vont me permettre de progresser dans ma recherche.
                      Dès que je trouve un début de solution a ce que je cherche je le mettrais en ligne.
                      xavier

                      Commentaire


                      • Bonsoir à tous,

                        J'essaie de tracer des canaux d'erreur type de part et d'autre d'une droite de régression linéaire (dérivée du prog de smallcaps). J'ai un soucis avec le programme ci-dessous.

                        //Droite de régression linéaire se termine à P1 périodes
                        // de la période actuelle, et commence à P1+P2 périodes de celle-ci.
                        // Canaux de régression linéaire tracés à + ou moins P3 erreur types
                        //de part et d'autre de la droite de régression linéaire.
                        //

                        SI RANGHISTO = FINHISTO - P1
                        ALORS

                        POUR P2 COURS
                        X(0) = RANGPOUR
                        Y(0) = CLOTURE
                        FINPOUR

                        SOMX = SOMME(X,P2)
                        SOMY = SOMME(Y,P2)
                        SOMXX = SOMME(X*X,P2)
                        SOMXY = SOMME(X*Y,P2)
                        SOMYY = SOMME(Y*Y,P2)

                        J = (P2*SOMXY-SOMX*SOMY)
                        K = (P2*SOMXX-SOMX*SOMX)
                        A = J/K
                        B = (SOMY-A*SOMX)/P2
                        C = (P2*SOMYY-SOMY*SOMY)
                        D = 1/P2*(P2-2)

                        ERREURTYPE = racine(D*(C-A^2/B))

                        ETY=ERREURTYPE

                        POUR P2 COURS
                        DROITE = A * X + B
                        DROITESUP = DROITE + P3*ETY
                        DROITEINF = DROITE - P3*ETY
                        FINPOUR

                        FINSI

                        <center><img src='http://upload.pro-at.com/02/dret.jpg' alt='' /></center>

                        Aide bienvenue SVP

                        Commentaire


                        • Bonjour Chctrader,

                          On est bien d'accord qu'il s'agit ici de définir un canal avec un certain nombre de fois l'erreur-type (Standard error en anglais) qui est un autre moyen que l'écart-type (Standard deviation) de quantifier la dispersion des cours autour de la droite de régression.

                          En fait ce sont tes coefficients C et D qui ne sont pas corrects. Même chose pour ta formule de calcul de l'ERREURTYPE.
                          Il aurait fallu que tu écrives, J, K, A et B étant corrects :

                          -----------------------------
                          C = SOMYY - B*SOMY - A*SOMXY
                          D = P2-2
                          ERREURTYPE = RACINE(C/D)
                          -----------------------------


                          J'ai réécrit le programme avec mes notations pour pouvoir récupérer la partie du programme qui est commune avec celui du canal utilisant l'écart-type, tu m'en excuseras certainement.

                          <u>Programme :</u>

                          -----------------------------
                          <font size="1">// Droite de régression linéaire se termine à P1 périodes
                          // de la période actuelle, et commence à P1+P2 périodes de celle-ci.
                          // Canaux de régression linéaire tracés à + ou moins P3 erreurs-types
                          //de part et d'autre de la droite de régression linéaire.
                          //

                          SI RANGHISTO = FINHISTO - P1
                          ALORS

                          POUR P2 COURS
                          X(0) = RANGPOUR
                          Y(0) = CLOTURE
                          FINPOUR

                          SOMX = SOMME(X,P2)
                          SOMY = SOMME(Y,P2)
                          SOMXX = SOMME(X*X,P2)
                          SOMXY = SOMME(X*Y,P2)
                          SOMYY = SOMME(Y*Y,P2)

                          A = (P2*SOMXY-SOMX*SOMY)/(P2*SOMXX-SOMX*SOMX)
                          B = (SOMY-A*SOMX)/P2

                          ERREUR_TYPE = RACINE((SOMYY-B*SOMY-A*SOMXY)/(P2-2))

                          POUR P2 COURS
                          DROITE = A * X + B
                          DROITE_SUP = DROITE + P3*ERREUR_TYPE
                          DROITE_INF = DROITE - P3*ERREUR_TYPE
                          FINPOUR

                          FINSI</font id="size1">
                          -----------------------------

                          <u>Les propriétés :</u>

                          <center><img src='http://upload.pro-at.com/02/propri%e9t%e9s_erreur_type1.gif' alt='' /></center>

                          <u>Exemple avec le CAC40 :</u>

                          J'ai utilisé la même fenêtre temporelle qu'avec le canal "écart-type" pour pouvoir comparer.

                          <center><em style='border:2px dashed #888; padding:10px'>image : <a href='/ref.php?uri=http%3A%2F%2Fupload.pro-at.com%2F02%2Fcac4_reg%252lin1.gifintrouvable' target="_blank">http://upload.pro-at.com/02/cac4_reg%2lin1.gifintr...</a> ou format inconnu</em></center>


                          Voici ce que cela donnait le canal tracé à partir de l'écart-type :

                          <center><em style='border:2px dashed #888; padding:10px'>image : <a href='/ref.php?uri=http%3A%2F%2Fupload.pro-at.com%2F02%2Fcac40_reg%25_ecart_type.gifintrouvable' target="_blank">http://upload.pro-at.com/02/cac40_reg%_ecart_type....</a> ou format inconnu</em></center>



                          Commentaire


                          • Hello Smallcaps, On est bien d'accord sur la définition du canal d'erreur type.

                            Je vais étudier ta formule pour comprendre mon erreur. Merci de m'aider à m'améliorer.

                            Amitiés

                            Chris

                            Commentaire


                            • <b>RETOUR SUR LE PARABOLIQUE.</b>

                              Voici une nouvelle version du programme du SAR utilisable en ATD...MF avec les segments "LONG" et "SHORT" de couleurs différentes comme le graphe ci-dessous le montre :


                              <center><img src='http://upload.pro-at.com/02/cac149.gif' alt='' /></center>


                              <b>Programme :</b>

                              ---------------------------------------------
                              <font size="1">// Parabolic Stop And Reverse de Wilder
                              // Version bicolore (31/05/2004)
                              //

                              Si RANGHISTO = 1 Alors // Début de l'historique
                              Pos(0) = 1
                              ValHaut(0) = Haut
                              ValBas(0) = Bas
                              AF = P1
                              RSAR_TMP_LONG(0)=Cloture
                              RSAR_LONG(0)=Cloture
                              RSAR_TMP_SHORT(0)=0
                              RSAR_SHORT(0)=0
                              STOP
                              FinSi

                              ValHaut = ValHaut(1)
                              ValBas = ValBas(1)
                              Pos = Pos(1)

                              Si Haut > ValHaut Alors ValHaut = Haut
                              Si Bas < ValBas Alors ValBas = Bas

                              Si Pos = 1 Alors
                              Si Bas < RSAR_TMP_LONG(1) Alors Pos = -1 FinSi
                              Sinon
                              Si Haut > RSAR_TMP_SHORT(1) Alors Pos = 1
                              FinSi

                              Si Pos = 1 Alors
                              Si Pos(1) <> 1 Alors
                              RSAR_TMP_LONG = ValBas
                              AF = P1
                              ValBas = Bas
                              ValHaut = Haut
                              Sinon
                              Si ValHaut > ValHaut(1) ET AF < P2 Alors
                              AF = AF + P1
                              Si AF > P2 Alors AF = P2
                              FinSi
                              RSAR_TMP_LONG = RSAR_TMP_LONG(1) + AF * (ValHaut - RSAR_TMP_LONG(1))
                              FinSi

                              Si RSAR_TMP_LONG > Bas Alors RSAR_TMP_LONG = Bas
                              Si RSAR_TMP_LONG > Bas(1) Alors RSAR_TMP_LONG = Bas(1) FinSi

                              Sinon
                              Si Pos(1) <> -1 Alors
                              RSAR_TMP_SHORT = ValHaut
                              AF = P1
                              ValBas = Bas
                              ValHaut = Haut
                              Sinon
                              Si ValBas < ValBas(1) ET AF < P2 Alors
                              AF = AF + P1
                              Si AF > P2 Alors AF = P2
                              FinSi
                              RSAR_TMP_SHORT = RSAR_TMP_SHORT(1) + AF * (ValBas - RSAR_TMP_SHORT(1))
                              FinSi

                              Si RSAR_TMP_SHORT < Haut Alors RSAR_TMP_SHORT = Haut
                              Si RSAR_TMP_SHORT < Haut(1) Alors RSAR_TMP_SHORT = Haut(1) FinSi

                              FinSi

                              RSAR_LONG=RSAR_TMP_LONG(1) //pour avoir les tics mieux placés sur les cours
                              RSAR_SHORT=RSAR_TMP_SHORT(1)</font id="size1">
                              ---------------------------------------------

                              Dans la fenêtre "Propriétés" il suffit de créer les deux variables RSAR_LONG et RSAR_SHORT et de choisir le type d'affichage "Points" en épaisseur 1.
                              Pour avoir aussi les Bandes de Bollinger et les marques -8 et -24 sur le même graphe, il suffit de modifier la règle "RBoll+RSAR", règle dérivée de la règle "Bollinger" disponible dans le dossier "Classique" de GrapheAT Pro et d'invoquer les deux variables RSAR_LONG et RSAR_SHORT comme indiqué ci-dessous :

                              ---------------------------------------------
                              <font size="1">// Bollinger + SAR bicolore
                              // avec repérage des jours 8 et 24
                              //

                              RUBOLL = RBOLL.RUBOLL
                              RMBOLL = RBOLL.RMBOLL
                              RLBOLL = RBOLL.RLBOLL
                              RSAR_LONG = RSAR.RSAR_LONG
                              RSAR_SHORT = RSAR.RSAR_SHORT


                              SI RANGHISTO=FINHISTO
                              ALORS
                              J7(7) = -1
                              J23(23) = -1
                              FINSI</font id="size1">
                              ---------------------------------------------

                              Introduire à nouveau RSAR_LONG et RSAR_SHORT dans le panneau "Propriétés" de cette règle avec le type d'affichage "Points" en épaisseur 1.

                              Bonne journée.

                              Commentaire


                              • Smallcaps,

                                Merci pour tout tes efforts.
                                On pourrait encore effectuer une modification qui me semble essentielle : la position du SAR lorsqu'il est enfoncé.
                                Je m'explique :

                                * Le SAR est à l'origine un système de STOP.
                                => il est donc inutile qu'il se retourne lorsqu'il est enfoncé, car dès lors la position est débouclée.

                                * Le SAR - en analyse dynamique - sert non-seulement de STOP lorsqu'une position est engagée (et encore, pas das tous les cas), mais aussi d'indicateur dans le choix d'une intervention sur un titre.
                                => si un SAR est enfoncé, sa lecture peut s'avérer difficile, comme le montre l'exemple suivant en UTM (Automa-tech) :

                                <center><img src='http://upload.pro-at.com/02/automa-tech.jpg' alt='' /></center>

                                La configuration UTD semble intéressante, et la lecture visuelle UTM met en évidence un test PM en passe de réussir, pas vrai ?

                                FAUX : PM est à 2,63, le plus bas des cours à 2.62

                                Sur cette base, la prise de position haussière sur une UTW ou UTD est déconseillée.

                                Mon idée est la suivante :
                                Pour satisfaire les deux objectifs, soit :
                                a) SAR en tant que niveau de STOP
                                b) Position du SAR en tant qu'aide décisionnelle à la prise de position,
                                ne pourrait-on pas avoir en cas d'enfoncement deux barres sur un même cours lorsque le SAR est enfoncé, soit l'ancien et le nouveau ?

                                Merci pour tes commentaires.

                                Commentaire

                                Chargement...
                                X