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

  • <br />Bonjour Offramp,

    On peut effectuer des mises à jour facilement de deux manières différentes sur l'intégralité du marché français.

    Bonjour Pallas,

    On ne peut effectuer de backtest avec Graphe AT

    Cordialemen

    Commentaire


    • Bonjour LONGWAY,
      On peut quand-même effectuer une ébauche de backtest avec GrapheAT Pro ...
      Voir entre autres :
      <a href='/ref.php?uri=http%3A%2F%2Fwww.pro-at.com%2Fforums%2Ftopic.asp%3FTOPIC_ID%3D19855' target="_blank">http://www.pro-at.com/forums/topic.asp?TOPIC_ID=19855</a>
      Voir également l'aide complètée par MLOG à ce sujet dans le fenêtre "Règle Indicateur".
      Cordialement.

      Commentaire


      • Bonjour Smallcaps,

        Effectivement mais Graphe AT n'offre pas un réel outil de backtest comme d'autre programmes. J'aurai du être plus précis.

        Cordialement

        Commentaire


        • Bonjour à vous tous

          Je viens d'envoyer un petit message à Small pour une règle statistique

          Efficace le gars longway

          A bientôt

          Commentaire


          • Bonjour Gilda,
            Regarde tes messages privés...
            Cordialement.

            Commentaire


            • Bonjour,

              A la demande d'Alexandre voici un programme qui calcule "ULTIMATE OSCILLATOR" de Larry Williams.

              -----------------------------

              //============
              //Ultimate_Osc
              //============

              //Larry Williams Ultimate Oscillator
              //le 27/05/2006
              //

              TrueLow(0)=MinVal(Bas,Cloture(1))
              Pre_Ach(0) = Cloture-TrueLow
              X1=Moyenne(Pre_Ach,P1)
              X2=Moyenne(Pre_Ach,P2)
              X3=Moyenne(Pre_Ach,P3)

              TrueRange(0)=MAXVAL(Haut,Cloture(1)) - MINVAL(Bas,Cloture(1))
              Y1=Moyenne(TrueRange,P1)
              Y2=Moyenne(TrueRange,P2)
              Y3=Moyenne(TrueRange,P3)

              Si Y1=0 OU Y2=0 OU Y3=0
              Alors
              Ultimate_Osc=0
              Sinon
              Ultimate_Osc=100*(4*(X1/Y1)+2*(X2/Y2)+(X3/Y3))/7
              FinSi

              L30=30
              L50=50
              L70=70
              -----------------------------
              Fenêtre Propriétés :
              <center><img src='http://images.pro-at.com/200605/b/proprietes_uo.gif' alt='' /></center>
              Un exemple de divergence positive :
              <center><img src='http://images.pro-at.com/200605/b/div_positiveuo.gif' alt='' /></center>
              Un exemple de divergence négative :
              <center><img src='http://images.pro-at.com/200605/b/div_negativeuo.gif' alt='' /></center>

              Commentaire


              • <blockquote id="quote"><font size="1" id="quote">citation :<hr height="1" noshade id="quote"><i>Citation de smallcaps90</i>
                <br />Bonjour,

                A la demande d'Alexandre voici un programme qui calcule "ULTIMATE OSCILLATOR" de Larry Williams.

                -----------------------------

                //============
                //Ultimate_Osc
                //============

                //Larry Williams Ultimate Oscillator
                //le 27/05/2006
                //

                TrueLow(0)=MinVal(Bas,Cloture(1))
                Pre_Ach(0) = Cloture-TrueLow
                X1=Moyenne(Pre_Ach,P1)
                X2=Moyenne(Pre_Ach,P2)
                X3=Moyenne(Pre_Ach,P3)

                TrueRange(0)=MAXVAL(Haut,Cloture(1)) - MINVAL(Bas,Cloture(1))
                Y1=Moyenne(TrueRange,P1)
                Y2=Moyenne(TrueRange,P2)
                Y3=Moyenne(TrueRange,P3)

                Si Y1=0 OU Y2=0 OU Y3=0
                Alors
                Ultimate_Osc=0
                Sinon
                Ultimate_Osc=100*(4*(X1/Y1)+2*(X2/Y2)+(X3/Y3))/7
                FinSi

                L30=30
                L50=50
                L70=70
                -----------------------------
                Fenêtre Propriétés :
                <center><img src='http://images.pro-at.com/200605/b/proprietes_uo.gif' alt='' /></center>
                Un exemple de divergence positive :
                <center><img src='http://images.pro-at.com/200605/b/div_positiveuo.gif' alt='' /></center>
                Un exemple de divergence négative :
                <center><img src='http://images.pro-at.com/200605/b/div_negativeuo.gif' alt='' /></center>
                <hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

                Cela ne pouvait pas mieux tomber. Le marché nous a fourni deux belles divergences. Un vrai plaisir pour les yeux.

                Encore merci smallcaps
                <img src='http://www.pro-at.com/style/images/icones/icon_smile.gif' border='0' alt='' title='' align='middle' />

                Commentaire


                • Bonjour à tous et bravo pour ce forum passionnant.

                  Je suis tout nouveau et j'avoue que je n'ai pas encore pris le temps de parcourir les 77 pages du forum consacré à Graphe AT PRO, mais le peu que j'ai parcouru m'a semblé réellement intéressant.

                  Bref, ma question : je m'intéresse à la moyenne mobile "EPMA". Le sujet a peut être déjà été traité ? Dans ce cas, vous voudrez bien me dire à quel endroit.

                  Si non, j'ai récupéré l'algorithme en code Walbasic :

                  'Moyenne EPMA (End Point Moving Average)

                  ' Déclaration des variables
                  Dim var as integer
                  Var=LONGUEUR
                  dim r as variant ' résultat intermédiaire
                  dim i as integer ' contrôle de boucle
                  dim c as double ' coefficient de pondération

                  ' on initialise la valeur de 'r' avec le premier élément

                  c = 2 / LONGUEUR * ( 3 * LONGUEUR / ( LONGUEUR + 1 ) - 1 )
                  r = c * tcrs()

                  ' on calcule l'EPMA en fonction de la longueur demandée
                  for i = 1 to LONGUEUR - 1
                  c = 2 / LONGUEUR * ( 3 * ( LONGUEUR - i ) / ( LONGUEUR + 1 ) - 1 )
                  r = r + c * tref( tcrs(), (-i))
                  next

                  ' on retourne le résultat
                  result = r

                  Est-il possible de le "traduire" en langage de programmation Graphe AT (vraissemblablement oui) ?

                  Cordialement
                  <img src='http://www.pro-at.com/style/images/icones/icon_smile.gif' border='0' alt='' title='' align='middle' />

                  Commentaire


                  • Bonjour glave79 et bienvenue...çà vient, çà vient...


                    Commentaire


                    • <b>Bonjour à Toutes et Tous</b>

                      Voici un petit programme permettant de tracer les divergences négatives et positives sur l'indicateur du MACD de Hemel pour une période déterminée (paramêtre P4=150 j pour l'exemple). Les paramêtres P1 P2 P3 étant ceux du MACD.

                      Merci de faire vos commantaires.

                      <u>Le programme</u>

                      //MACD de Hemel et tracé des divergences

                      //P1 Période de la moyenne 1
                      //P2 Période de la moyenne 2
                      //P3 Période de l'oscillateur
                      //P4 péride étudiée pour les divergence
                      //T_RH() Table du rang de l'historique
                      //T_TY() Table donnant le type
                      //T_D() Table du rang historique de la divergence
                      //T_RT() Table du rang du tableau

                      //init des variables
                      si ranghisto=1 alors
                      i=0
                      finsi

                      // calcul du MACD de Hemel
                      me1=exposuiv(me1,cloture,p1)
                      me2=exposuiv(me2,cloture,p2)
                      macd_hemel=me1-me2
                      // Moyenne du MACD
                      mmacd_hemel=exposuiv(mmacd_hemel,macd_hemel,p3)
                      //Oscillateur du MACD
                      osc=macd_hemel-mmacd_hemel
                      si osc>=0 alors
                      osc_vert=osc
                      sinon
                      osc_rouge=osc
                      finsi

                      //Création du tableau de récupération des divergerces
                      si ranghisto>finhisto-p4 alors
                      si macd_hemel(2)>=macd_hemel(1) et macd_hemel(1)<macd_hemel alors
                      t_rh((ranghisto-finhisto)+i)=finhisto-(ranghisto-1) t_ty((ranghisto-finhisto)+i)=-1
                      t_d((ranghisto-finhisto)+i)=0 t_rt((ranghisto-finhisto)+i)=0
                      i=i+1
                      finsi
                      si macd_hemel(2)<=macd_hemel(1) et macd_hemel(1)>macd_hemel alors
                      t_rh((ranghisto-finhisto)+i)=finhisto-(ranghisto-1) t_ty((ranghisto-finhisto)+i)=1
                      t_d((ranghisto-finhisto)+i)=0 t_rt((ranghisto-finhisto)+i)=0
                      i=i+1
                      finsi
                      finsi

                      si ranghisto=finhisto alors
                      j=0
                      tantque j<i faire

                      // détection des divergences négatives
                      si macd_hemel(t_rh(j))>=0 et t_ty(j)>0 alors
                      k=1 m_pt=-100
                      tantque k<20 faire
                      si macd_hemel(t_rh(j+k))>=0 et t_ty(j+k)>0 alors
                      si macd_hemel(t_rh(j+k))>macd_hemel(t_rh(j)) alors
                      k=21
                      sinon
                      i1=macd_hemel(t_rh(j)) i2=macd_hemel(t_rh(j+k))
                      c1=haut(t_rh(j)) c2=haut(t_rh(j+k))
                      si i2<i1 et c2>c1 alors
                      pt=(i2-i1)/(t_rh(j)-t_rh(j+k))
                      si pt>m_pt alors
                      m_pt=pt m_k=k
                      finsi
                      t_d(j)=t_rh(j+m_k) t_d(j+m_k)=t_rh(j) t_rt(j)=j+m_k t_rt(j+m_k)=j
                      finsi
                      finsi
                      finsi
                      si j+k+1>i alors
                      k=21
                      sinon
                      k=k+1
                      finsi
                      fintantque
                      finsi

                      // détection des divergences positives
                      si macd_hemel<0 et t_ty(j)<0 alors
                      k=1 m_pt=0
                      tantque k<20 faire
                      si macd_hemel<0 et t_ty(j+k)<0 alors
                      si macd_hemel(t_rh(j+k))<macd_hemel(t_rh(j)) alors
                      k=21
                      sinon
                      i1=macd_hemel(t_rh(j)) i2=macd_hemel(t_rh(j+k))
                      c1=bas(t_rh(j)) c2=bas(t_rh(j+k))
                      si i2>i1 et c2<c1 alors
                      pt=(i2-i1)/(t_rh(j)-t_rh(j+k))
                      si pt>m_pt alors
                      m_pt=pt m_k=k
                      finsi
                      t_d(j)=t_rh(j+m_k) t_d(j+m_k)=t_rh(j) t_rt(j)=j+m_k t_rt(j+m_k)=j
                      finsi
                      finsi
                      finsi
                      si j+k+1>i alors
                      k=21
                      sinon
                      k=k+1
                      finsi
                      fintantque
                      finsi

                      j=j+1
                      fintantque

                      // tracer des divergences
                      j=0
                      tantque j<i faire
                      si t_d(j)<>0 et t_rt(j)<>0 alors
                      si t_ty(j)>0 alors
                      i1=macd_hemel(t_rh(j)) i2=macd_hemel(t_rh(t_rt(j))) tps=t_rh(j)-t_d(j)
                      pente=(i2-i1)/tps
                      k=0
                      tantque k<=tps faire
                      div_neg(t_rh(j)-k)=(pente*k)+i1
                      k=k+1
                      fintantque
                      finsi
                      si t_ty(j)<0 alors
                      i1=macd_hemel(t_rh(j)) i2=macd_hemel(t_rh(t_rt(j))) tps=t_rh(j)-t_d(j)
                      pente=(i2-i1)/tps
                      k=0
                      tantque k<=tps faire
                      div_pos(t_rh(j)-k)=(pente*k)+i1
                      k=k+1
                      fintantque
                      finsi
                      si t_rt(j)>j alors
                      j=(t_rt(j))-1
                      finsi
                      finsi
                      j=j+1
                      fintantque
                      finsi

                      <u>Les paramêtres</u>

                      <center><img src='http://images.pro-at.com/200606/b/afone_pr.jpg' alt='' /></center>

                      <u>Un exemple sur AFONE</u>

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

                      Bonne journée

                      Michka

                      Commentaire


                      • Bonjour glave79,

                        Il y aurait beaucoup de choses à dire sur l'EPMA (EndPoint Moving Average)!
                        En principe il s'agit de la courbe obtenue en conservant uniquement le dernier point d'une régression linéaire glissante sur P1 périodes. L'algorithme utilisé est celui de la méthode classique des moindres carrés qui ajuste une droite aux cours sur les P1 périodes retenues comme paramètre en minimisant la somme des carrés de distances des cours à cette droite.
                        Le programme peut-être obtenu dans les exemples fournis par MLOG (Reglin), je te le rappelle ci-dessous.

                        Il revient à Patrick E. Lafferty (voir TASC oct 95 et juin 99) d'avoir tenté d'obtenir la même courbe en utilisant à chaque période une somme pondérée sur P1 cours , y compris le cours actuel.
                        Si on raisonne sur les cours de clôture C, cela donne quelque chose du genre :

                        EPMA(0)=k(0)*C(0)+ k(1)*C(1)+k(2)*C(2)+...+k(P1-1)*C(P1-1)

                        On obtient une bonne approximation de la courbe obtenue par régression linéaire.

                        L'expression donnée par Lafferty, réadaptée aux notations de GrapheAT Pro, est :
                        <center><img src='http://images.pro-at.com/200606/b/%e9quation_lafferty.gif' alt='' /></center>
                        Elle se programme facilement sous la forme :

                        //====
                        //EPMA
                        //====

                        //EndPoint Moving Average
                        //d'après P.E. Lafferty
                        //le 15/06/2006
                        //

                        Som=0
                        i=1
                        TantQue i<=P1 Faire
                        Tmp=(3*i-P1-1)*Cloture(P1-i)
                        Som=Som+Tmp
                        i=i+1
                        FinTantQue

                        EPMA=2*Som/(P1*(P1+1))



                        Je te rappelle ci-dessous le programme de l'indicateur de régression linéaire :
                        //=======
                        //REGLIN
                        //======

                        // Régression linéaire
                        //d'après exemples MLOG
                        //

                        somx = 0
                        somy = 0
                        somxx = 0
                        somxy = 0
                        somx2 = 0
                        somy2 = 0
                        somxx2 = 0
                        somxy2 = 0
                        Pour P1 Cours
                        somx = somx+RangPour
                        somy = somy+Cloture
                        somxx = somxx+ RangPour* RangPour
                        somxy = somxy+ RangPour*Cloture
                        FinPour

                        a = (P1*somxy-somx*somy)/(P1*somxx-somx*somx) //pente de la reg lin
                        b = (somy-a*somx)/P1 //ordonnée à l'origine
                        REGLIN = a*P1+b

                        J'ai regroupé les deux indicateurs dans le même programme pour comparer les tracés obtenus.
                        <center><img src='http://images.pro-at.com/200606/b/prpri%e9t%e9s1.gif' alt='' /></center>

                        EXEMPLE COMPARATIF
                        <center><img src='http://images.pro-at.com/200606/b/renault.gif' alt='' /></center>

                        L'écart relatif entre les deux courbes dépasse rarement 1%.

                        Cordialement...

                        Commentaire


                        • Afin de complèter la comparaison précédente, je vous soumets ce graphe qui comporte, outre l'EPMA, la moyenne arithmétique, la moyenne exponentielle, la moyenne pondérée et la moyenne de Hull, toutes calculées sur 10 périodes glissantes.
                          On remarque nettement que la moyenne de Hull possède de très bonnes qualités de lissage avec un lag mini et des points de retournement qui apparaissent souvent simultanément avec ceux de l'EPMA, voire parfois1 à 2 periodes avant ceux-ci.
                          <center><img src='http://images.pro-at.com/200606/b/comparaison1.gif' alt='' /></center>

                          Peut-on envisager une anticipation de ceux-ci sur une Hull...?
                          FOKI où en es-tu?
                          A suivre...

                          Commentaire


                          • Bonjour Smallcaps

                            MP dans ta bal.

                            Commentaire


                            • Bonsoir Smallcaps,

                              Bien évidemment un grand merci et vraiment bravo pour ton érudition.

                              1) effectivement la moyenne EPMA et l'indicateur de régression linéaire sont très proches;
                              2) la moyenne de HULL donne également des résultats intéressants, qui méritent d'être comparés avec ceux de l'EPMA (le Pb est de savoir comment les comparer); Au fait cette moyenne de HULL, comment l'obtient t-on (excuse mon ignorance) ?

                              En fait mon idée de départ est toute simple : l'EPMA me semblant réaliser un bon lissage avec, et surtout une bonne anticipation, je voulais l'utiliser pour détecter au plus tôt les changements de tendance : au moment ou la dérivée de la courbe EPMA est nulle, pour celà j'affectais une moyenne mobile exponentielle à l'EPMA, de période nettement plus courte (2 pour 10 par ex.), le croisement étant censé répondre à peu prêt à mon objectif.

                              Bref, voilà, est-ce vraiment une bonne idée ?

                              J'en profite pour me présenter : je teste en ce moment la version de démo de Graphe AT PRO, mais sans aucune hésitation je vais en faire l'achat, ses possibilités de programmation sont très intéressantes, quant au prix, il est sans concurrence. Jusqu'à maintenant j'utilisais une vieille version de Waldata, que je laisse tomber (ne gère pas les codes ISIN).

                              Cordialement et à bientôt.

                              Commentaire


                              • Bonsoir Glave79

                                Tu trouveras des infos sur la Moyenne de Hull en page 57 de cette même file

                                FOKI

                                Commentaire

                                Chargement...
                                X