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

  • Bonsoir Fabrice,


    Non je n'ai pas encore eu le temps de voir si d'autres types pivots "collent" aux limites des zones de Kosta.
    AMHA il s'agit d'autre chose...

    Cordialement.

    Commentaire


    • Bonsoir Jeff_X,


      Merci pour l'info concernant la v3.10.
      Je suis sous Win XP, je ne peux te répondre pour Win 7. Voir avec MLOG peut-être?
      Oui les plus de cette nouvelle version sont surtout intéressants pour ceux qui travaillent sous Vista.
      Pour ce qui concerne les commentaires OK pour les "ancrer" sur l'écran mais dommage qu'on ne puisse pas les générer par programmation. On a droit qu'à un seul caractère avec le type Histogramme...
      Bon on a aussi le marché Trackers qui apparaît dans le téléchargement des cours et celui des devises qui refonctionne.

      A propos où en es-tu avec les droites de tendance?
      Chez moi c'est resté au point mort.

      Bonne soirée à toi dans la "Belle Province".








      Commentaire


      • Bonsoir à tous si c'est indiqué sur la page du site graphe AT Pro en dessous des graphiques les 3 versions de windows marchent avec notre logiciel favori: xp , vista et 7.

        Perso mon nouveau PC est sous vista pas eu de problème d'installation alors que j'ai d'autres logiciels qui ne fonctionnent pas.
        Pour Windows 7 j'attendrais que tous le monde essuie un peu les plâtres vu tous les plantages que j'ai eu sous vista jusqu'à présent c'était d'autant pire que je ne pouvais pas charger de mise à jour avec le bas débit <img src='http://www.pro-at.com/style/images/icones/icon_smile_dead.gif' border='0' alt='' title='' align='middle' />

        Mlog m'a indiqué la même procédure que toi pour migrer mes paramètres donc j'attends mon code utilisateur pour poursuivre



        Pour Kosta plus qu'à attendre qu'il nous fasse une nouvelle vidéo <img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />

        Commentaire


        • Merci Frillat pour ce renseignement concernant Windows 7. Je n'avais pas vu ça sur le site de MLOG.

          SmallCap, en ce qui a trait à la programmation de droites de tendance, la dernière fois que nous en avions discuté (et tenter de programmer quelque chose de convenable !), eh bien il en résulte quelques ratées occasionnelles. Bref, je n'ose même pas penser à la programmation de droites de tendance fondées sur 3 points de support ou résistance !!

          Je me suis plutôt contenté de travailler sur la mise au point de la reconnaissance des Phases de Weinstein et sur l'établissement de "scores-maison" me permettant de classer les cies selon différents critères techniques.

          Ceci dit, je n'ai pas abandonné cette idée de programmation de droites de tendance. Si jamais nous réussissons ça, nous aurons là un "indicateur" de premier choix dans la boîte d'outils GrapheATPro.

          PS: Pas encore le moindre flocon de neige au Québec ... YESSS !!!

          Commentaire


          • Hello,

            Voici un programme vu sur le site de Gerard lefeuvre

            Qui a les connaissances pour le passer sur at-pro..

            ( il est programmé sur Metatrader....)


            merci par avance





            //+------------------------------------------------------------------+
            //| CycleIdentifier.mq4 |
            //| |
            //+------------------------------------------------------------------+
            #property copyright ""
            #property link ""
            //----
            #property indicator_separate_window
            #property indicator_buffers 6
            //----
            #property indicator_color1 DarkGray
            #property indicator_color2 Lime
            #property indicator_color3 Red
            #property indicator_color4 DarkGreen
            #property indicator_color5 Brown
            //----
            #property indicator_minimum -1.2
            #property indicator_maximum 1.2
            //----
            extern int PriceActionFilter=1;
            extern int Length=3;
            extern int MajorCycleStrength=4;
            extern bool UseCycleFilter=false;
            extern int UseFilterSMAorRSI=1;
            extern int FilterStrengthSMA=12;
            extern int FilterStrengthRSI=21;
            //----
            double LineBuffer[];
            double MajorCycleBuy[];
            double MajorCycleSell[];
            double MinorCycleBuy[];
            double MinorCycleSell[];
            double ZL1[];
            //----
            double CyclePrice=0.0, Strength =0.0, SweepA=0.0, SweepB=0.0;
            int Switch=0, Switch2=0, SwitchA=0, SwitchB=0, SwitchC=0, SwitchD=0, SwitchE=0, SwitchAA=0, SwitchBB=0;
            double Price1BuyA=0.0, Price2BuyA=0.0;
            int Price1BuyB=1.0, Price2BuyB=1.0;
            double Price1SellA=0.0, Price2SellA=0.0;
            int Price1SellB=0.0, Price2SellB=0.0;
            bool ActiveSwitch=True, BuySwitchA=FALSE, BuySwitchB=FALSE, SellSwitchA=FALSE, SellSwitchB=FALSE;
            int BuySellFac=01;
            bool Condition1, Condition2, Condition3, Condition6;
            //+------------------------------------------------------------------+
            //| |
            //+------------------------------------------------------------------+
            int init()
            {
            SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
            SetIndexBuffer(0,LineBuffer);
            SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,3);
            SetIndexBuffer(1,MajorCycleBuy);
            SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,3);
            SetIndexBuffer(2,MajorCycleSell);
            SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,1);
            SetIndexBuffer(3,MinorCycleBuy);
            SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,1);
            SetIndexBuffer(4,MinorCycleSell);
            SetIndexStyle(5,DRAW_NONE);
            SetIndexBuffer(5,ZL1);
            SetIndexEmptyValue(1,0.0);
            SetIndexEmptyValue(2,0.0);
            SetIndexEmptyValue(3,0.0);
            SetIndexEmptyValue(4,0.0);
            SetIndexEmptyValue(5,0.0);
            return(0);
            }
            //+------------------------------------------------------------------+
            //| |
            //+------------------------------------------------------------------+
            int deinit() {return(0);}
            //+------------------------------------------------------------------+
            //| |
            //+------------------------------------------------------------------+
            int start()
            {
            int counted_bars=IndicatorCounted();
            if(counted_bars<0) return(-1);
            // if(counted_bars>0) counted_bars--;
            // int position=Bars-1;
            int position=Bars-counted_bars;
            if (position<0) position=0;
            //----
            int rnglength=250;
            double range=0.0, srange=0.0;
            for(int pos=position; pos >=0; pos--)
            {
            srange=0.0;
            int j=0;
            for(int i=0;i<rnglength;i++)
            {
            j++;
            int posr=pos + i;
            if (posr>=Bars)
            break;
            srange=srange + (High[posr] - Low[posr]);
            }
            range=srange/j * Length;
            int BarNumber=Bars-pos; //??????????
            if (BarNumber < 0)
            BarNumber=0;
            CyclePrice=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos);
            if (UseFilterSMAorRSI==1)
            ZL1[pos]=ZeroLag(CyclePrice,FilterStrengthSMA, pos);
            if (UseFilterSMAorRSI==2)
            ZL1[pos]=ZeroLag( iRSI(NULL, 0, 14, CyclePrice, FilterStrengthRSI ), FilterStrengthRSI, pos);
            if (ZL1[pos] > ZL1[pos+1])
            SwitchC=1;
            if (ZL1[pos] < ZL1[pos+1])
            SwitchC=2;
            if (BarNumber<=1)
            {
            if (Strength==0)
            SweepA =range;
            else
            SweepA=Strength;
            Price1BuyA =CyclePrice;
            Price1SellA =CyclePrice;
            }
            /* ***************************************************************** */
            if (BarNumber > 1)
            {
            if (Switch > -1)
            {
            if (CyclePrice < Price1BuyA)
            {
            if (UseCycleFilter && (SwitchC==2) && BuySwitchA )
            {
            MinorCycleBuy[pos + BarNumber - Price1BuyB]=0; //MinorBuySell
            LineBuffer[pos + BarNumber - Price1BuyB ]=0; //line
            }
            if (!UseCycleFilter && BuySwitchA)
            {
            MinorCycleBuy[pos +BarNumber - Price1BuyB]=0;
            LineBuffer[pos +BarNumber - Price1BuyB]=0;
            }
            Price1BuyA=CyclePrice;
            Price1BuyB=BarNumber;
            BuySwitchA=TRUE;
            }
            else if (CyclePrice > Price1BuyA)
            {
            SwitchA=BarNumber - Price1BuyB;
            if (!UseCycleFilter)
            {
            MinorCycleBuy[pos +SwitchA]=-1;//MinorBuySell - DarkGreen
            LineBuffer[pos +SwitchA]=-1;//line
            }
            if (UseCycleFilter && SwitchC ==1)
            {
            MinorCycleBuy[pos +SwitchA]=-1; //MinorBuySell
            LineBuffer[pos +SwitchA]=-1; //line
            SwitchD=1;
            }
            else
            {
            SwitchD=0;
            }
            BuySwitchA=TRUE;
            double cyclePrice1=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);
            if (ActiveSwitch)
            {
            Condition1=CyclePrice - cyclePrice1>=SweepA;
            }
            else
            {
            Condition1=CyclePrice>=cyclePrice1 * (1 + SweepA/1000);
            }
            if (Condition1 && SwitchA>=BuySellFac)
            {
            Switch= - 1;
            Price1SellA=CyclePrice;
            Price1SellB=BarNumber;
            SellSwitchA=FALSE;
            BuySwitchA=FALSE;
            }
            }
            }
            if(Switch < 1)
            {
            if (CyclePrice > Price1SellA)
            {
            if (UseCycleFilter && SwitchC==1 && SellSwitchA )
            {
            MinorCycleSell[pos +BarNumber - Price1SellB]=0; //MinorBuySell
            LineBuffer[pos +BarNumber - Price1SellB ]=0; //line
            }
            if (!UseCycleFilter && SellSwitchA )
            {
            MinorCycleSell[pos +BarNumber - Price1SellB]=0;//MinorBuySell
            LineBuffer[pos +BarNumber - Price1SellB]=0;//line
            }
            Price1SellA=CyclePrice;
            Price1SellB=BarNumber;
            SellSwitchA=TRUE;
            }
            else if (CyclePrice < Price1SellA)
            {
            SwitchA=BarNumber - Price1SellB;
            if (!UseCycleFilter)
            {
            MinorCycleSell[pos +SwitchA]=1; // MinorBuySell darkRed
            LineBuffer[pos +SwitchA]=1; //"CycleLine"
            }
            if (UseCycleFilter && (SwitchC==2))
            {
            MinorCycleSell[pos +SwitchA]=1;//MinorBuySell darkRed
            LineBuffer[pos +SwitchA]=1;//CycleLine
            SwitchD =2;
            }
            else
            SwitchD =0;
            SellSwitchA=TRUE;
            double cyclePrice2=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);
            if (ActiveSwitch)
            Condition1=(cyclePrice2 - CyclePrice)>=SweepA;
            else
            Condition1=CyclePrice<=(cyclePrice2 * (1 - SweepA/1000));
            if (Condition1 && SwitchA>=BuySellFac)
            {
            Switch=1;
            Price1BuyA=CyclePrice;
            Price1BuyB=BarNumber;
            SellSwitchA=FALSE;
            BuySwitchA=FALSE;
            }
            }
            }
            }
            LineBuffer[pos]=0;
            MinorCycleBuy[pos]=0;
            MinorCycleSell[pos]=0;
            //----
            if (BarNumber==1)
            {
            if (Strength==0)
            SweepB =range * MajorCycleStrength;
            else
            SweepB=Strength * MajorCycleStrength;
            Price2BuyA=CyclePrice;
            Price2SellA=CyclePrice;
            }
            if (BarNumber > 1)
            {
            if (Switch2 > - 1)
            {
            if (CyclePrice < Price2BuyA)
            {
            if (UseCycleFilter && SwitchC==2 && BuySwitchB )
            {
            MajorCycleBuy [pos +BarNumber - Price2BuyB]=0; //MajorBuySell,green
            // LineBuffer[pos + BarNumber - Price2BuyB ] = 0; //line -----
            }
            if (!UseCycleFilter && BuySwitchB )
            {
            MajorCycleBuy [pos +BarNumber - Price2BuyB]=0;//MajorBuySell,green
            // LineBuffer[pos + BarNumber - Price2BuyB ] = 0; //line-----------
            }
            Price2BuyA=CyclePrice;
            Price2BuyB=BarNumber;
            BuySwitchB=TRUE;
            }
            else if (CyclePrice > Price2BuyA)
            {
            SwitchB=BarNumber - Price2BuyB;
            if (!UseCycleFilter)
            {
            MajorCycleBuy [pos +SwitchB]=-1; //MajorBuySell green
            // LineBuffer[pos + SwitchB] = -1; //line--------------
            }
            if (UseCycleFilter && SwitchC ==1)
            {
            MajorCycleBuy [pos +SwitchB]=-1; //MajorBuySell green
            // LineBuffer[pos + SwitchB] = -1; //line-----------------
            SwitchE =1;
            }
            else
            SwitchE =0;
            BuySwitchB=TRUE;
            double cyclePrice3=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchB);
            if (ActiveSwitch)
            Condition6=CyclePrice - cyclePrice3>=SweepB;
            else
            Condition6=CyclePrice>=cyclePrice3 * (1 + SweepB/1000);
            if (Condition6 && SwitchB>=BuySellFac)
            {
            Switch2= - 1;
            Price2SellA=CyclePrice;
            Price2SellB=BarNumber;
            SellSwitchB=FALSE;
            BuySwitchB=FALSE;
            }
            }
            }
            if (Switch2 < 1)
            {
            if (CyclePrice > Price2SellA )
            {
            if (UseCycleFilter && SwitchC ==1 && SellSwitchB )
            {
            MajorCycleSell [pos +BarNumber - Price2SellB]=0; //"MajorBuySell",red
            // LineBuffer[pos + BarNumber - Price2SellB ] = 0; //line -----
            }
            if (!UseCycleFilter && SellSwitchB )
            {
            MajorCycleSell [pos +BarNumber - Price2SellB]=0;//"MajorBuySell",red
            // LineBuffer[pos + BarNumber - Price2SellB ] = 0; //line -----
            }
            Price2SellA=CyclePrice;
            Price2SellB=BarNumber;
            SellSwitchB=TRUE;
            }
            else if (CyclePrice < Price2SellA)
            {
            SwitchB=BarNumber - Price2SellB ;
            if (!UseCycleFilter)
            {
            MajorCycleSell[pos + SwitchB]=1; //"MajorBuySell",red
            // LineBuffer[pos + SwitchB ] = 1; //line -----
            }
            if (UseCycleFilter && SwitchC ==2)
            {
            MajorCycleSell [pos + SwitchB]=1; //"MajorBuySell",red
            // LineBuffer[pos + SwitchB ] = 1; //line -----
            SwitchE =2;
            }
            else
            SwitchE =0;
            SellSwitchB=TRUE;
            double cyclePrice4=iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchB);
            if (ActiveSwitch)
            Condition6=cyclePrice4 - CyclePrice>=SweepB;
            else
            Condition6=CyclePrice<=cyclePrice4 * (1.0 - SweepB/1000.0);
            if (Condition6 && SwitchB>=BuySellFac)
            {
            Switch2=1;
            Price2BuyA=CyclePrice;
            Price2BuyB=BarNumber;
            SellSwitchB=FALSE;
            BuySwitchB=FALSE;
            }
            }
            }
            }
            LineBuffer[pos]=0;
            MajorCycleSell[pos]=0;
            MajorCycleBuy[pos]=0;
            }
            return(0);
            }
            //+------------------------------------------------------------------+
            //| |
            //+------------------------------------------------------------------+
            double ZeroLag(double price, int length, int pos)
            {
            if (length < 3)
            {
            return(price);
            }
            double aa=MathExp(-1.414*3.14159/length);
            double bb=2*aa*MathCos(1.414*180/length);
            double CB=bb;
            double CC=-aa*aa;
            double CA=1 - CB - CC;
            double CD=CA*price + CB*ZL1[pos+1] + CC*ZL1[pos+2];
            return(CD);
            }
            //+------------------------------------------------------------------+

            Commentaire


            • Bonjour Jeff_X,


              Mille excuses pour le retard mis à te répondre. J'étais absent de chez moi ces 15 derniers jours.

              Exact, nous n'avions pas abouti à grand chose pour tracer des droites de tendance en auto.
              Faire passer une droite par 3 points n'est pas toujours évident, sauf s'ils sont alignés...ce qu'aux cours ne plaise <img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />.
              Ou il faudrait définir une "zône" de tolérance qui les contiendrait.
              Au fait n'est-ce pas un cahier des charges qui nous aurait manqué?
              Alors si tu as des idées pour en fixer quelques contraintes, je suis preneur et prêt à m'y remettre avec tous les amis ici qui voudraient bien s'y coller aussi.
              Il suffit de faire r'partir le char...et d'bosser.

              Bien cordialement.

              Commentaire


              • <br /><blockquote>Faire passer une droite par 3 points n'est pas toujours évident, sauf s'ils sont alignés.</blockquote>

                à tout hasard ....

                Quid de la droite de régression linéaire calculée sur ces trois points ? ça ne devrait pas être trop nul surtout si vous retenez un coeff. de régression proche de 1.

                Juste un avis,

                à+

                Commentaire


                • Bonjour ybm,


                  Le "Cycle Identifier" est un indicateur propriétaire et la version MT4 que tu postes repeint le passé. Ceci est attesté et prouvé sur de nombreux forums.
                  L'original est conçu par Roy Kelly de Pro Trend Inc (cf <a href='/ref.php?uri=http%3A%2F%2Fwww.trendpro.com%2Fpdfs%2Ftm.pdf' target="_blank">http://www.trendpro.com/pdfs/tm.pdf</a>). Il ne repeint pas le passé d'après ce que l'on peut lire de ses utilisateurs.
                  Le code MT4 n'est donc manifestement pas conforme à cet original.

                  On peut lire aussi :
                  <em>"
                  Kelly's Cycle Identifier™

                  You may have seen what looks like this indicator on other web sites,
                  or that make such a claim; however, <strong>you can be assured that it is not
                  authentic.</strong> I am the designer, and developer of this indicator, and
                  the way it plots the Chevrons (peaks and valleys). <strong>Others have made
                  poor attempts of copying it.</strong> The way this indicator plots, and the
                  name of it "Cycle Identifier" are Trademarks of Roy Kelly, and this
                  indicator is copyrighted by Roy Kelly...."</em>

                  Voir ceci sur :
                  <a href='/ref.php?uri=http%3A%2F%2Fwww.forexforums.org%2Fyahoo-metatrader-experts-indicators%2F102714-kellys-cycle-identifier-re-mt_e-i-gbpjpy.html' target="_blank">http://www.forexforums.org/yahoo-metatrader-expert...</a>

                  Alors voilà.
                  Si tu veux vraiment l'utiliser avec GrapheAT Pro on peut essayer de le traduire tel quel avec quelques allégements.

                  Cordialement.

                  Commentaire


                  • Bonjour ggo,


                    Merci pour ta proposition, elle semble intéressante.
                    Je pensais introduire un peu de logique floue pour m’en sortir et tu le fais déjà en préconisant un Rcarré <em>proche</em> de 1.
                    Utilises-tu GrapheAT Pro?

                    Cordialement.

                    Commentaire


                    • <br />Bonjour ggo et SmallCap,

                      Je prend quelques instants afin de faire une petite récapitulation et un "léger Brain Storming" au sujet des droites de tendance automatiques.

                      Les principales conditions suivantes avaient été respectées dans le premier programme (préparé par SmallCap):

                      - 2 points pour former une droite automatique;
                      - 2 périodes (1 courte ex: 15 derniers jrs; une longue ex: les 30 jrs précédents ie. les 45 derniers jrs);
                      - Recherche des plus hauts pour chaque période;
                      - Calcul de la pente à partir des 2 plus hauts trouvés;
                      - Tracé automatique de la droite grâce aux résultats de la pente;
                      - Même procédé avec la recherche des plus bas;
                      - Obtention finale de 2 droites de tendance automatiques (1 sur les plus hauts; l'autre sur les plus bas);

                      Ces droites pouvaient notamment servir à mettre en évidence les break out, break down, fuseaux, triangles, etc. Bref le paradis sur terre pour un analyste technique!!!!
                      Cependant, il arrivait d'obtenir des résultats bizaroides, découlant pê de la présence de plus hauts (plus bas) dans les cours les plus récents (à revérifier) ou de paramètres ajoutés (non mentionné ci-haut) concernant les cours les plus récents.


                      L'idée d'une droite de régression est bonne; mais ce calcul serait fait sur 2 points, 3 points ou sur "x" points ?

                      Là où je veux en venir est que nous savons tous qu'une droite de tendance tracée sur plusieurs points bien alignés peut être considérée comme disons plus "fiable" qu'une droite qui serait tracée sur seulement 2 points. On a déjà vu des droites de tendance qui "touchaient" parfaitement bien 8, 9, 10 points. Alors je me questionne sur le nombre de points à choisir !

                      A- On peut paramétrer cette condition (ex: on aurait à choisir le nombre de points désirés dans un paramètre Px). Mais encore là, il nous faudrait répéter le calcul pour les 3, 4, x points "bien alignés" afin de mettre en évidence les droites les plus "fiables".

                      B- On peut faciliter les choses en optant pour 3 points seulement; donc pas de paramètre (Px). Ainsi on opte pour le gros bon sens de l'analyse technique de nos amis J.Murphy, R.Meisel, et al. !!! J'opte pour B !

                      Autre chose, il me semble que le résultat du coeff. de régression basé sur d'aussi petits nombres (3, 4, ... points) pourrait nous donner certains résultats bizarres; il faudrait qu'il soit de 1.0, rien de moins. Avec, je présume, très peu de résultats. Et c'est ça qui me tracasse !

                      Cependant, ça vaut la peine d'être essayé !

                      Enfin, je crois que de cette façon, il ne restera plus qu'à paramétrer 1 seule période (au lieu de 2, tel que programmé précédemment) dans laquelle la droite serait traçée.

                      J'ai écris tout ça pour que tout le monde participe, sous forme de Brain Storming ou autres !! N'hésitez pas à apporter l'eau au moulin ... "lâchez-vous lousse" !!


                      PS: SmallCap, "Il suffit de faire r'partir le char...et d'bosser. "
                      ... c'est ti du québécois ça ?? <img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />

                      "lâchez-vous lousse" ... ça c'est québécois ! <img src='http://www.pro-at.com/style/images/icones/icon_smile_big.gif' border='0' alt='' title='' align='middle' />

                      Commentaire


                      • Bonjour Jeff_X,



                        Merci pour ton intéressant brainstorming. Il a eu le mérite de bien reposer le pb et d'amorcer l'écriture du cahier des charges.
                        Car il est évident que si cahier des charges il n'y a pas, il ne faudra pas que nous nous étonnions qu'il apparaisse parfois des résultats bizarroïdes comme tu le dis, i.e. l'algorithme qui sera développé devra prévoir tous les cas de figures et quoi faire face à eux.

                        La question du nombre de points qui doivent être alignés pour considérer que la ligne de tendance est viable est la question centrale en effet et va déterminer la complexité de l'algorithme.
                        Il me semble difficile de prendre 3 points à moins de nous tourner vers une droite de régression comme le conseillait récemment ggo.
                        Tu exigerais dans ce cas un coeff de régression=1 dis-tu. Est-ce vraiment indispensable? Si on exige ceci cela veut dire que les 3 points sont alignés et c'est tant mieux. Ne pourrait-on pas autoriser un petit intervalle de tolérance? Un R2 >= 0.98 ou 0.97 ne serait-il pas suffisant? On aurait là un processus flexible pas très difficile à programmer. A essayer c'est sûr.

                        Si on abandonne l'idée de ggo maintenant, il se trouve, belle coïncidence, que j'ai déniché dans mes docs un article de Giorgos Siligardos paru dans TASC en novembre 2006 (v24:11) et qui est intitulé :
                        "<em>A Computerized Approach To A Fundamental Analysis Tool, <strong>Building Automatic Tendlines</strong></em>"! Article dans lequel il développe une méthode pour tracer des droites de tendance.
                        Peut-être serait-il intéressant que j'en donne quelques éléments? Peut-être pas besoin de réinventer la roue...

                        Je tiens à ta disposition un pdf de l'article en question si cela t'intéresse d'y jeter un coup d'oeil. Même proposition pour les amis qui seraient intéressés. Une adresse email en PV et je te l'envoie, je vous l'envoie.

                        Pour résumer sommairement l'approche de Siligardos :
                        - il se place dans une approche à 2 points;
                        - il considère 3 stades pour une ligne de tendance : la ligne potentielle, la ligne propre et la ligne propre/active.

                        Les figures qui suivent sont tirées de son article.

                        <center><img src='http://images.pro-at.com/forums-bourse/1109/3668_261010.png' alt='' /></center>
                        Une ligne de tendance haussière joignant les deux plus bas successifs L1 et L2 n'est que <em>POTENTIELLE</em> si son tracé est effectué sans regarder ce qui se passe après L2 par rapport au niveau plus haut qu'atteignent les cours entre L1 et L2 (noté High(L1,L2) sur la figure.

                        <center><img src='http://images.pro-at.com/forums-bourse/1109/3668_261011.png' alt='' /></center>
                        La ligne de tendance devient <em>PROPRE</em> lorsqu'on s'est assuré que sa prolongation au delà de L2 ne coupe pas la courbe des cours et que le plus haut entre L1 et L2 (High(L1,L2) peut très bien être dépassé (point D).
                        C'est peut-être ce critère, non pris en compte dans le proto précédent, qui conduisait à des figures bizarres dans certains cas.

                        <center><img src='http://images.pro-at.com/forums-bourse/1109/3668_261011_4868de05a3f6cd8785d20c9cece4cd9e.png' alt='' /></center>
                        Même chose pour la ligne de tendance baissière H1-H2 qui est propre car elle n'intersecte pas les cours au delà de H2, le plus bas entre H1 et H2 (Low(H1,H2) étant dépassé.


                        Enfin pour Siligardos la ligne de tendance devient <em>PROPRE/ACTIVE </em>si les conditions énoncées ci-dessus pour que la ligne de tendance soit propre sont satisfaites jusqu'à la fin de l'historique.

                        <center><img src='http://images.pro-at.com/forums-bourse/1109/3668_261037.png' alt='' /></center>

                        On voit sur les figures 1, 2 et 3 ci-dessus la progression de son algorithme pour aboutir finalement à une ligne de tendance haussière viable en fin d'historique. Les gros points verts sont des points de swing déterminés par un zigzag à x% de seuil. Les points rouges étant les points des cours de cloture. On peut imaginer, comme nous l'avions fait, une recherche par une méthode différente de ces points de swing.

                        Serais-tu d'accord pour qu'on s'inspire de cette étude pour établir le cahier des charges ?

                        Ceci posé je suis d'accord pour ne conserver qu'un paramètre pour définir la zone en fin d'historique dans laquelle l'éventuelle droite de tendance sera tracée. Sa valeur numérique est à définir.

                        Comme toi Jeff je souhaite un travail coopératif et bien sûr ce voeux s'adresse à tous les amis intéressés et aussi aux "silencieux" qui visitent cette file...
                        Merci par avance pour vos remarques et propositions.

                        Cordialement.

                        PS : Mon québecois est superficiel je le reconnais <img src='http://www.pro-at.com/style/images/icones/icon_smile_blush.gif' border='0' alt='' title='' align='middle' />... réminiscence de deux voyages effectués là-bas en 1996 et 2002 et comme je n'ai pas retrouvé le petit carnet dans lequel j'avais consigné les expressions les plus "colorées", ma mémoire défaille. Mais je suis sûr qu'avec cette étude on ne va pas...flagosser et qu'on aura beaucoup de fun même si on pitonne dur!

                        Commentaire


                        • Bonjour SmallCaps, Bonjour Jeff X,

                          c'est effectivement un sujet intéressant.

                          Je voudrais apporter 2 pierres à l'édifice.

                          Dans son livre Profit Magic of Transaction Timing et dans son cours J.M. HURST développe la notion de VALID TREND LINE (VTL).

                          Pour lui Une Valid Trend Line n'est pas autre chose que la ligne passant par 2 points bas ou 2 sommets appartenant au même cycle.

                          Ces droites de tendances sont dites Valides parcequ'elles relient des points de même NATURE, de même degré.

                          Ce qui est tout aussi intéressant ce sont les conséquences que l'on peut en tirer quand elles sont "cassées" par les prix.

                          La cassure valide définitivement le plus bas ou le sommet précédent de même nature.

                          En terme Elliottiste on pourrait dire que la cassure valide le nouveau mouvement (haussier ou baissier) non plus comme correctif au sein de la tendance précédente mais comme impulsif.

                          Ci dessous le CAC 4O et ses VTL

                          <center><a href='http://images.pro-at.com/forums-bourse/1109/25237_261205.jpg' target='_blank' style='display:block; width:600px; border:2px dashed #888; padding:10px'><img src="http://images.pro-at.com/forums-bourse/1109/25237_261205.jpg" alt='' width='600' height='272' /><em style='display:block; text-align: right'>Cliquez pour agrandir</em></a></center>

                          Commentaire


                          • Bonjour Parisboy,


                            Merci pour l'intérêt que tu manifestes pour le pb qui nous occupe actuellement.

                            J'ai le grand bouquin bleu de Hurst dans sa réédition de 2000 depuis 2005 et je l'avais oublié! Pourrais-tu m'indiquer les n° des pages où se trouvent les définitions que tu nous donnes?
                            J'ai aussi un pdf de celui de Millar : "Channel and cycles : a tribute to J.M. Hurst" de 1999, qui reprend et surtout approfondit les travaux de Hurst qui datent de 1970.

                            Si nous suivions ta proposition cela voudrait dire qu'il faudrait changer d'approche en privilégiant celle de Hurst préalablement à la recherche des points par lesquels il faudrait tracer les lignes de tendance...
                            Qu'en pense Jeff_X dans sa "Belle Province"? Je suppose qu'il nous le dira sous peu.
                            Pour ce qui concerne l'approche elliotiste, pour ma part je ne l'utilise pas.

                            J'avais écrit un petit programme qui devait tracer les canaux de Hurst avec GAP (GrapheAT Pro), il est toujours à l'état de proto...assez bugué...
                            A propos qu'utilises-tu comme soft?

                            Cordialement.

                            PS : Je t'envoie le pdf dans l'après-midi car je dois m'absenter un moment là.

                            Commentaire


                            • Bonjour Smallcaps,

                              Au Chapitre 3 page 52,HURST a un paragraphe intitulé,

                              " <strong>Why Trend Lines and Channels Form and repeat </strong>"

                              Au chapitre 4 page 78 et 79 HURST donne la définition d'une Valid Trend Line (VTL) dans le paragraphe intitulé " <strong>Recognizing the Valid Trend Line </strong>"

                              Je te conseille la lecture des paragraphes suivants :

                              - Edge Band Transaction Timing
                              - et Mid-Band Transaction Timing

                              où HURST explique comment utiliser les VTL en combinaison avec les points bas potentiels des cycles pour déterminer un point d'entrée

                              Enfin l'ensemble du Chapitre 8 où HURST utilise l'ensemble de ses outils et où il décrit le suivi d'une transaction

                              - quand entrer
                              - comment entrer
                              - comment suivre l'évolution de la transaction en utilisant les différentes VTL
                              - quand et comment sortir en utilisant les Trailing Loss Level (TLL) ( Chapitre 5 page 86 à 91)

                              J'ai aussi le livre de MILLARD. En fait ce dernier travaille quasi exclusivement sur les Enveloppes, Canaux / Channels, Dominancy Enveloppes quelque soient le nom qui leur est attribué.

                              Etant un petit artisan investisseur <img src='http://www.pro-at.com/style/images/icones/icon_smile_big.gif' border='0' alt='' title='' align='middle' /> j'utilise principalement EXCEL.

                              Par ailleurs tu peux consulter ma file sur INVEST-AT où j'explique en détail (page 24 et suivantes) comment on construit une VTL, et comment l'utiliser.

                              Le tout avec des exemples variés et utilisant un passé récent, voire actuel.

                              <a href="http://http://www.invest-at.com/forums-bourse/bourse-24-277.html" target="_blank">http://www.invest-at.com/forums-bourse/bourse-24-2...</a>

                              En ce qui concerne l'approche Elliottiste il ne faut pas (à mon avis) jeter le bébé avec l'eau du bain.

                              La notion de Vague est essentielle.

                              HURST y fait référence dans son petit livre <strong>Cyclic Analysis</strong>.

                              Il décrit sa théorie sous le nom de <em>The Wave Theory of Price Action.</em>

                              Il explique page 9 à 11 <strong>The Quantification of Trends using Wave Concepts.</strong>

                              Il y définit la notion <strong>d'Underlying Trend </strong>(Tendance Sous-jacente) et celle de <strong>Valid Trend Line (VTL)</strong>

                              Ensuite j'ai intégré à mes analyses les notions de Vagues Impulsives et de Vagues Correctives.

                              Là on rejoint l'Analyse Cyclique et la notion de Tendance sous-jacente.

                              Commentaire


                              • Smallcaps, Jeff X,

                                je ne voudrais pas polluer cette file avec mes dadas favoris.

                                Mais en ce qui me concerne la méthode générale de HURST (enfin ce que j'en ai compris <img src='http://www.pro-at.com/style/images/icones/icon_smile.gif' border='0' alt='' title='' align='middle' />) c'est le truc le plus performant que je connaisse.

                                Je vais vous détailler un exemple avec le DAX.

                                <center><a href='http://images.pro-at.com/forums-bourse/1109/25237_261646.jpg' target='_blank' style='display:block; width:600px; border:2px dashed #888; padding:10px'><img src="http://images.pro-at.com/forums-bourse/1109/25237_261646.jpg" alt='' width='600' height='272' /><em style='display:block; text-align: right'>Cliquez pour agrandir</em></a></center>

                                Pour ce faire j'utilise 3 Canaux différents (parfois 4) basés sur une moyenne mobile centrée en leur ajoutant un valeur fixe définie par une autre méthode ( on reviendra dessus si vous êtes intéressé);

                                Mon modèle nominal (moyen, théorique) est basé sur 32, 128 et 256 jours de bourse (Trading Days).

                                Ce modèle donne d'excellents résultats pour la grande majorité des valeurs et indices que je suis (environ 150).

                                Le principe est simple :

                                - quand un sommet ou un plus bas a lieu <strong>à l'intérieur </strong>du canal 32, on le note 0

                                -quand un sommet ou un plus bas coupe le canal 32, on le note 1

                                -quand un sommet ou un plus bas ou un canal 32 coupe le canal 128, on le note 2

                                -quand un sommet ou un plus bas ou un canal 32 ou 128 coupe le canal 256, on le note 3

                                Tu as un exemple sur le graphique du DAX mis à jour au mercredi 25 novembre 2009.

                                On observe :

                                - une VTL d'Ordre 3 Descendante (ROUGE) qui relie les 2 Sommets successifs notés T3

                                - une VTL d'Ordre 2 Ascendante (BLEUE) qui relie le Plus Bas noté B3 et le Plus Bas noté B2

                                Quand le DAX franchira à la hausse la VTL d'Ordre 3 Descendante (ROUGE) le mouvement haussier sera confirmé, on ne pourra plus le cataloguer comme un rebond (même important).

                                En attendant ce moment cette VTL constitue une solide RESISTANCE.

                                Ce croisement des cours avec la VTL d'Ordre 3 Descendante (ROUGE) sera la confirmation définitive du Plus Bas B3 (rouge) comme point d'inflexion majeur, ce que n'était pas le précédent Plus Bas B3.

                                On observe aussi que la VTL d'Ordre 2 Ascendante (BLEUE) constitue A LA FOIS la Ligne de Tendance haussière du DAX ET un solide SUPPORT.

                                Support d'autant plus solide qu'on aurait pu tirer une VTL d'Ordre 1 reliant les Plus Bas notés B2 et B1.

                                Mais tous ces Plus Bas sont alignés et les 2 VTL se confondent, ce qui renforcent leur rôle de Résistance et leur Rôle Directionnel.

                                On notera qu'un plus Bas d'Ordre 3 est AUSSI un Plus Bas d'Ordre 2, d'Ordre 1 et d'Ordre 0.

                                <strong>Situation actuelle du DAX :</strong>

                                On voit que les Cours du DAX sont confinés entre 2 puissantes résistances les 2 VTL examinées.

                                <strong>Pronostic :</strong>

                                à très court terme une congestion des cours jusqu'au croisement des 2 VTL

                                à ce moment

                                - soit un franchissement direct de la VTL descendante d'Ordre 3 ouvrant la voie à un puissant mouvement haussier

                                - soit une baisse court terme allant éventuellement jusqu'à la limite in férieure du Canal 128 suivie par un franchissement direct de la VTL descendante d'Ordre 3 ouvrant la voie au même puissant mouvement haussier.

                                <center><a href='http://images.pro-at.com/forums-bourse/1109/25237_261743.jpg' target='_blank' style='display:block; width:600px; border:2px dashed #888; padding:10px'><img src="http://images.pro-at.com/forums-bourse/1109/25237_261743.jpg" alt='' width='600' height='272' /><em style='display:block; text-align: right'>Cliquez pour agrandir</em></a></center>

                                Sur le graphique ci dessus on voit comment on aurait pu utiliser les VTL dans le passé.

                                Dès mi-janvier 2009 on sait que l'on a fait un Sommet T2, on peut donc construire une VTL d'Ordre 2 reliant les Sommets T3 et T2.

                                Le 6 Mars 2009 on fait un Plus Bas B3. Mais on a déjà fait un Plus Bas B3 le 21 Novembre 2009.

                                Va-t'on aller encore plus bas ? Impossible à dire à ce moment là.

                                Courant mars 2009, on remonte, mais est-ce un rebond correctif ou une impulsion haussière ?

                                Ce n'est que quand les cours franchiront la VTL Descendante d'Ordre 2 (construite dès la mi-janvier 2009) que le plus Bas noté B3 du 6 Mars 2009 sera validé comme un plus bas définitif.

                                Par la même, le "Rebond " au sein d'une tendance baissière sera requalifié en franche tendance haussière.

                                Enfin on pourra l'esprit plus libre passer un ordre d'achat juste au-dessus du croisement de la VTL Descendante d'Ordre 2 et des cours.

                                De plus on placera un Trailing Stop au niveau du plus Bas B3 du 6 Mars 2009.

                                En effet si (il y a peu de chances) les cours du DAX venait casser ce stop, cela voudrait dire que la tendance baissière du DAX ne serait pas terminée et que le plus bas B3 du 6 Mars 2009 ne serait pas le point le plus bas de la Baisse.

                                Commentaire

                                Chargement...
                                X