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

  • Smallcaps90..

    Sur ton programme..j'ai une erreur "parametre P8 non défini "....!!!

    Et j'ai un trou de mémoire car il me semble qu'il s'agit du réglage de la profondeur de l'historique...???

    Oui...non ??

    merci de m'éclairer..
    a+

    Commentaire


    • Re ybm,


      Exact P8 n'existe plus dans la version simplifiée.
      Il fixe le nombre de périodes situées en début d'historique qui sont éliminées des calculs.

      Voici le bug prog corrigé :

      //================
      //Cycle_Identifier
      //================

      //v0.1 PROTOTYPE
      //29/12/2009
      //transcodé par smallcaps90
      //à partir de Cycle_Identifier.mq4
      //=================================


      //==================Ingrédients
      //
      // Range sur P4 barres
      srange=0
      Pour P4 Cours
      srange=srange+haut-bas
      FinPour
      Range=srange/P4*P2

      //Prix pour l'étude
      //ici on peut choisir une zerolag aussi
      //sur les clotures ou sur un RSI des clotures
      //
      CyclePrice(0)=Moyenne(Cloture,P1)

      //==================Cycles mineurs
      //
      Si RangHisto><strong><font color='#FF0000'>P4</font></strong> Alors

      Si Switch>-1 Alors
      Si CyclePrice<Price1BuyA Alors
      Si BuySwitchA=1 Alors
      MinorCycleBuy(RangHisto-Price1BuyB)=0
      LineBuff(RangHisto-Price1BuyB)=0
      FinSi
      Price1BuyA=CyclePrice
      Price1BuyB=RangHisto
      BuySwitchA=1
      Sinon //ici CyclePrice>=Price1BuyA
      SwitchA=RangHisto-Price1BuyB
      MinorCycleBuy(SwitchA)=-1
      LineBuff(SwitchA)=-1
      BuySwitchA=1
      CyclePrice1=CyclePrice(SwitchA)
      Cond1= CyclePrice-CyclePrice1>=Range //SweepA
      Si Cond1=1 ET SwitchA>=1 Alors
      Switch=-1
      Price1SellA=CyclePrice
      Price1SellB=RangHisto
      SellSwitchA=0
      BuySwitchA=0
      FinSi
      FinSi
      FinSi

      Si Switch<1 Alors
      Si CyclePrice>Price1SellA Alors
      Si SellSwitchA=1 Alors
      MinorCycleSell(RangHisto-Price1SellB)=0
      LineBuff(RangHisto-Price1SellB)=0
      FinSi
      Price1SellA=CyclePrice
      Price1SellB=RangHisto
      SellSwitchA=1
      Sinon
      SwitchA=RangHisto-Price1SellB
      MinorCycleSell(SwitchA)=1
      LineBuff(SwitchA)=1
      SellSwitchA=1
      CyclePrice2=CyclePrice(SwitchA)
      Cond1=(CyclePrice2-CyclePrice)>=Range
      Si Cond1=1 ET SwitchA>=1 Alors
      Switch=1
      Price1BuyA=CyclePrice
      Price1BuyB=RangHisto
      SellSwitchA=0
      BuySwitchA=0
      FinSi
      FinSi
      FinSi

      FinSi

      LineBuff=0
      MinorCycleBuy=0
      MinorCycleSell=0


      //==================Cycles majeurs
      //
      Si RangHisto><strong><font color='#FF0000'>P4</font></strong> Alors

      Si Switch2>-1 Alors
      Si CyclePrice<Price2BuyA Alors
      Si BuySwitchB=1 Alors
      MajorCycleBuy(RangHisto-Price2BuyB)=0
      //LineBuff(RangHisto-Price2BuyB)=0
      FinSi
      Price2BuyA=CyclePrice
      Price2BuyB=RangHisto
      BuySwitchB=1
      Sinon
      SwitchB=RangHisto-Price2BuyB
      MajorCycleBuy(SwitchB)=-1
      //LineBuff(SwitchB)=-1
      BuySwitchB=1
      CyclePrice3=CyclePrice(SwitchB)
      Cond6= CyclePrice-CyclePrice3>=Range*P3
      Si Cond6 ET SwitchB>=1 Alors
      Switch2=-1
      Price2SellA=CyclePrice
      Price2SellB=RangHisto
      SellSwitchB=0
      BuySwitchB=0
      FinSi
      FinSi
      FinSi

      Si Switch2<1 Alors
      Si CyclePrice>Price2SellA Alors
      Si SellSwitchB=1 Alors
      MajorCycleSell(RangHisto-Price2SellB)=0
      //LineBuff(RangHisto-Price2SellB)=0
      FinSi
      Price2SellA=CyclePrice
      Price2SellB=RangHisto
      SellSwitchB=1
      Sinon
      SwitchB=RangHisto-Price2SellB
      MajorCycleSell(SwitchB)=1
      //LineBuff(SwitchB)=1
      SellSwitchB=1
      CyclePrice4=CyclePrice(SwitchB)
      Cond6=(CyclePrice4-CyclePrice)>=Range*P3 //SweepB
      Si Cond6=1 ET SwitchB>=1 Alors
      Switch2=1
      Price2BuyA=CyclePrice
      Price2BuyB=RangHisto
      SellSwitchB=0
      BuySwitchB=0
      FinSi
      FinSi
      FinSi

      FinSi

      LineBuff=0
      MajorCycleBuy=0
      MajorCycleSell=0


      //fin du code

      Si tu veux plutôt utiliser la profondeur de l'historique qui serait examinée, tu pourrais remplacer les deux instructions qui contiennent P4 en rouge gras dans le listing ci-dessus par :

      <strong>Si RangHisto>=Finhisto-P4 Alors</strong>

      A ce moment là tu donnerais à P4 le nombre de périodes sur lesquelles le calcul serait fait en fin d'historique.

      Bon courage avec le bouquin de B. Williams...

      Cordialement.

      Commentaire


      • OK....

        j'avais corrigé ce bug...mais tu m'as devancé...!!

        A combien de barres " Maximun " estimes-tu l'effet "Repeindre"....généré par ton programme ??

        Commentaire


        • Re Ybm,


          Difficile à dire.
          J'ai fait un petit essai très simple sur Michelin que tu peux reproduire.

          J'ai arrêté le processus de calcul des "cycles" en modifiant les 2 instructions :

          Si RangHisto>P4 Alors
          ...
          en :

          Si RangHisto>P4 ET RangHisto<=P5 Alors
          ...

          J'introduis un paramètre P5 que je décrémente par exemple de la valeur 30 à la valeur 0.
          Avec la dernière version de GrapheAT Pro on peut modifier la valeur de P5 dans la fenêtre Propriétés de proche en proche et on utilise la touche "Appliquer" pour visualiser l'effet obtenu.

          Sur Michelin voilà ce que j'obtiens.
          Je ne te joins pas les courbes car je manque de temps.

          Lorsque P5=25, au 24/11/09, il apparaît un "MinorCycleBuy" 2 périodes avant le 20/11/09 donc.
          Celui-ci se maintient pour P5=24 puis 23 et il disparaît pour P5=22 donc le 26/11/09.

          Pour P5=21, le 27/11/09, un "MajorCycleSell" apparaît une période avant le 26/11/09.
          Celui-ci ne disparaîtra plus.

          Lorsque P5=14, le 08/12/09, il apparaît un "MinorCycleSell" un jour avant soit le 07/11/09.
          Il se maintient jusqu'à ce que P5=8 le 16/12/09 où il disparaît.

          Puis lorsque P5=7, le 17/12/09, un nouveau "MajorCycleSell" apparaît une période avant le 16/12/09 . Il ne disparaît plus.


          Bon ce n'est qu'un petit essai dont il est difficile de tirer des conclusions définitives.
          Néanmoins un signal n'apparaît jamais à la dernière période apparemment. Il vient une période avant au moins.

          Les "MajorCycle..." semblent plus stables que les "MinorCycle...".
          Une fois établis il ne semblent pas changer (sur l'exemple de Michelin uniquement pour le moment). Faut-il en conclure qu'il ne faille s'intéreser qu'aux "MojorCycle..."?

          Ce que l'on peut voir sur la vidéo du blog indonésien est semblable.

          Cordialement.

          Commentaire


          • Vais passer aux backtests..

            avec ces P4 et P5....

            Merci de nous faire partager ton Expérience...

            Bonne fiesta pour cette fin d'Année 2009....!!!

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

            Commentaire


            • Bonsoir,

              Ayant perdu la programmation du KVO, pouvez vous m'aider à retrouver celle-ci dans la file?

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

              //Le KVO est basé sur les principes suivants:

              //· Le range des prix (i.e. plus haut – plus bas) est une mesure du mouvement, et les volumes sont la force derrière le mouvement. La somme plus haut + plus bas + clôture définit la tendance.
              // Une accumulation se produit quand la somme du jour est supérieure à celle de la séance précédente. A l’opposé, une distribution se produit quand la somme du jour est inférieure
              // à celle de la séance précédente. Quand les sommes sont égales, la tendance existante continue.

              //· Les volumes donnent naissance aux changements continuels des prix en intra-day qui sont le reflet des pressions d’achat et de vente.
              // Le KVO quantifie la différence entre le nombre d’actions étant accumulées et distribuées sous le nom de "volume force/force des volumes".
              // Une force des volumes puissante et en hausse devrait accompagner une tendance ascendante et puis graduellement se contracter avec le temps dans le cadre des étapes finales
              // d’une tendance haussière et des premières étapes
              //de la tendance baissière qui lui succédera. Cette action devrait être suivie d’une augmentation de la force des volumes reflétant une certaine accumulation avant
              //qu’un plus-bas ne se développe.

              //· En convertissant la force des volumes en un oscillateur représentant la différence entre une moyenne mobile exponentielle à 34 et une autre à 55 unités de temps,
              // avec une ligne de déclenchement qui sera la moyenne mobile exponentielle à 13 unités de temps de cette différence, la force des volumes qui rentre et ressort du titre peut être
              // facilement suivie. Ensuite, il suffira de comparer cette force à l’action des prix pour vous aider à identifier des divergences sur des sommets et des creux.

              Commentaire


              • Bonjour Alexandre,


                Je ne crois pas que le KVO ait été posté dans la file.
                J'ai dans ma biblio perso une version qui date de 2004. Elle n'est pas optimisée mais elle fonctionne. Je te la poste telle quelle.

                <strong>Programme :</strong>

                //Klinger Volume Oscillator (KVO) de Stephen Klinger
                //smallcaps90 le 09 juin 2004

                //Variables :
                //P=Prix
                //T=tendance
                //MQ=mesure quotidienne
                //MC=mesure cumulée
                //FV=force volume
                //R=moyenne expo rapide
                //L=moyenne expo lente

                //Paramètres :
                //P1=recul de calcul de la moyenne expo rapide R
                //P2=recul de calcul de la moyenne expo lente L
                //P3=recul de calcul de la moyenne expo du signal MKVO
                //====================================================

                P(0)=Haut+Bas+Cloture

                Si P>P(1)
                Alors
                T(0)=1
                Sinon
                T(0)=-1
                FinSi

                Si P=P(1) Alors T=T(1)

                MQ(0)=Haut-Bas

                Si T=1 ET T(1)=1 Alors MC(0)=MC(1)+MQ
                Si T=1 ET T(1)=-1 Alors MC(0)=MQ(1)+MQ
                Si T=-1 ET T(1)=1 Alors MC(0)=MQ(1)+MQ
                Si T=-1 ET T(1)=-1 Alors MC(0)=MC(1)+MQ

                FV(0)=Volume*Absolu(2*(MQ/MC)-1)*T*100

                R(0)=Exposuiv(R,FV,P1)
                L(0)=Exposuiv(L,FV,P2)

                KVO=R-L
                MKVO=Exposuiv(MKVO,KVO,P3)

                //fin du code

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

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

                <strong>Un exemple :</strong>

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

                Comme c'est un oscillateur, on l'utilise (pas seul) de façon classique : divergences (baissière en mai 09, haussière fin juin début juillet 09) et croisements avec sa ligne de signal, voire avec la ligne 0.

                Cordialement.

                Commentaire


                • Bonjour Smallcaps,

                  Cela me convient fort bien. Je n'aurais pas pu le retrouver .


                  Bonne journée.

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

                  Commentaire


                  • bonjour à tous,

                    sur grapheat peut-on faire apparaitre la valeur d'un indic jour sur un graphique intraday
                    par exemple, la valeur RSI jour sur un graphe 2H
                    est-ce possible ?

                    merci beaucoup

                    Commentaire


                    • Bonjour la file

                      Une petite question de programmation

                      <strong>Comment faire pour changer la couleur de la courbe d'un indicateur ?</strong>

                      Par exemple pour que la courbe du RSI soit verte au-dessus de 50 et rouge en dessous.
                      J'ai essayé avec des SI et ALORS mais je me retrouve avec des résultats qui ne ressemble pas à grand chose.

                      Merci de vos suggestions <img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />

                      Commentaire


                      • Bonjour rocabaz,


                        Impossible sans programmation...

                        Cordialement.

                        Commentaire


                        • Bonjour Bambi,



                          Avec les types de tracé des courbes dont nous disposons il est impossible de faire cela, sauf exception...

                          Par exemple, si on choisit le type "Segments", on ne peut joindre que des points dont la valeur est différente de 0.
                          Donc si tu écris le bout de programme concerné de la façon suivante :

                          //...
                          Si RSI>=50
                          Alors
                          RSI_Vert=RSI
                          Sinon
                          RSI_Rouge=RSI
                          FinSi
                          //...

                          Et que tu définisses RSI_Vert comme segment vert et RSI_Rouge comme segment rouge, voici ce que tu obtiendras :

                          <center><img src='http://images.pro-at.com/forums-bourse/0210/3668_131638.jpg' alt='' /></center>

                          C'est normal car il y a peu de chances que le RSI soit=50 juste lors d'une période et comme l'axe des temps est discrétisé avec une période jour ici, il apparaît une discontinuité dans le tracé du RSI(14 par exemple) entre A (le 19/01/10 où RSI_Vert=57.16 et RSI_Rouge=0) et B (le 20/01/10 où RSI_Vert=0 et RSI_Rouge=47.86). Le croisement à 50 ayant lieu entre ces deux dates, ne pourra pas être visualisé de cette façon.

                          Autre solution possible avec le type de courbes "Points" :

                          <center><img src='http://images.pro-at.com/forums-bourse/0210/3668_131642.jpg' alt='' /></center>

                          On pourrait aussi utiliser le type "Histogramme" :

                          <center><img src='http://images.pro-at.com/forums-bourse/0210/3668_131643.jpg' alt='' /></center>

                          Ce n'est au final qu'une question de visualisation.
                          A toi de choisir celle qui te "parlera" le mieux...

                          Cordialement.

                          Commentaire


                          • Merci smallcaps
                            Effectivement, j'obtiens quelque chose dans lequel il y a un trou dans la courbe comme sur ton 1er graph
                            La représentation en point se rapproche peut être de ce que je cherche. Je vais y jeter un oeil.
                            Sinon, petit question complémentaire
                            Quel serait le code pour visualiser par une fléche verte ou rouge sur ou sous les cours lorsque le rsi franchi à la hausse ou à la baisse cette ligne de 50 ?
                            Merci de ton aide

                            Commentaire


                            • Bonjour Bambi,



                              Pas de pb, c'est très simple.

                              <strong>Programme :</strong>

                              //=========
                              //RSI_BAMBI
                              //=========
                              //Croisements du RSI(14) avec l'horizontale 50
                              //
                              Si Croise(RSI,50)>0 Alors RSI_V=-1
                              Si Croise(RSI,50)<0 Alors RSI_R=1
                              //

                              <strong>Fenêtre Propriétés :</strong>

                              <center><img src='http://images.pro-at.com/forums-bourse/0210/3668_141451.jpg' alt='' /></center>

                              Il suffit comme tu peux le voir, d'utiliser l'instruction "Croise".
                              Les deux variables RSI_V et RSI_R seront tracées sous forme de flèches sur les cours (voir la fenêtre Propriétés de l'indic ci-dessus).
                              Le premier test ci-dessus sera validé si le RSI croise la ligne 50 vers le haut.
                              La valeur conventionnelle -1 donnée à la variable RSI_V signifie que l'on veut une flèche sous les cours.
                              Nous choisirons le type "Flèche haut" et la couleur vert pour la représenter.

                              De même, le second test sera validé si le RSI croise la ligne 50 vers le bas et la variable RSI_R, affectée de la valeur conventionnelle 1, sera représentée par une "Flèche bas" de couleur rouge sur les cours.

                              Ainsi tu obtiendras ce que tu souhaites :

                              <center><img src='http://images.pro-at.com/forums-bourse/0210/3668_141452.jpg' alt='' /></center>

                              L'indic RSI n'est mis sur le graphe qu'à titre indicatif. Sa présence n'est pas indispensable bien sûr.

                              Bien sûr, tu peux récupèrer les valeurs des variables RSI_V et RSI_R dans une règle statistique par exemple ou encore dans un backtest.

                              Tu peux encore remplacer la valeur 50 par un paramètre P1 auquel tu peux donner d'autres valeurs pour voir son influence.
                              Etc

                              Bien cordialement.

                              Commentaire


                              • <img src='http://www.pro-at.com/style/images/icones/Merci.gif' border='0' alt='' title='' align='middle' /> smallcaps, c'est parfait.
                                Je regrette que l'aide de graphAT ne soit pas plus complète pour la partie programmation.

                                Commentaire

                                Chargement...
                                X