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

  • Stat sur le franchissement des 0,5 à la hausse ou à la baisse. A priori, ça devrait être juste. (un plaggiat honteux du franchissement du CMO)


    //STATISTIQUE DE FRANCHISSEMENT
    //DE LA LIGNE 0,5 par le ROC_FRAMA
    //valable uniquement pour le jour affiché
    //en haut de la fenêtre "Statistiques"
    //

    SI CROISE(ROC_FRAMA.ROC_FRAMA,0)>=0.5
    ALORS
    COLONNE1 = "LIGNE 0,5 " & " FRANCHIE A LA HAUSSE LE :"
    COLONNE2 = DATEHISTO$
    SELECTION
    FINSI

    SI CROISE(ROC_FRAMA.ROC_FRAMA,0)<= -0.5
    ALORS
    COLONNE1 = "LIGNE -0,5 " & " FRANCHIE A LA BAISSE LE :"
    COLONNE2 = DATEHISTO$
    SELECTION
    FINSI


    dans l'onglet "Propriétés"

    Nom de la règle franchissement du ROC_FRAMA

    Colonnes 2 Trier suivant colonne 1 croissant

    Colonne 1 texte
    Colonne 2 texte


    comme disait notre ami Smallcaps, on doit pouvoir en faire qq chose de pas mal
    Merci à lui

    Commentaire


    • Bonsoir smallcap et sphinx,

      j'ai lu vos derniers messages, J'essai de participer un peu avec mes horaires et mes petits moyens.
      Je suis entrain d'écrire un programme à partir du programme corrigé par smallcap page 62

      Serait t-il pas plus simple de mettre une grande partie des indcateurs choisis dans une regle statistique ?
      Ex : programme suivant "non fini"

      // RSI < 50 ET CROISEMENT AVEC SA MM et CLOTURE AU DESSOUS DE LA BANDE BOLL
      //(achat à vérifier avec d'autres paramètres bien sur) Corrigé par SMALLCAP

      //A remettre impérativement à 0 avant l'examen d'une autre action
      RCARRE=0
      RADX=0
      RTSI=0
      RMACD=0
      VAR_RSI=0
      VAR_MBOLL=0

      // DEBUT DE TENDANCE PAGE 20 (regle indicateur rcarre) PAGE 20
      SI CROISE(RCARRE.R2,0.27)>0 ALORS
      RCARRE=1
      FINSI

      // DEBUT DE TENDANCE
      SI ADX > 20 ET ADX <30 ALORS
      RADX = 1
      FINSI


      NB_PERIODES=15

      POUR NB_PERIODES COURS
      // Cloture au dessous de LBOLL
      SI CLOTURE<MBOLL ALORS VAR_BOLL= 1 FINSI

      // RSI<55 et croisement à la hausse de MRSI par RSI
      SI RSI<55
      ALORS
      VAR_RSI = 1
      SI CROISE(RSI,MRSI)>0
      ALORS
      VAR_RSI = VAR_RSI + 1
      FINSI
      FINSI

      // DEBUT TENDANCE TD_TSI PAGE 24
      SI SD_TSI.SD_TSI > 0 ET SD_TSI.SD_TSI < 1 ALORS
      RTSI = 1
      FINSI

      SI CROISE(MACD,MMACD)>0 ALORS
      RMACD=1
      FINSI

      // Pour le test j'utilise les colonnes pour l'affichage pour l'instant
      // pr suivre les variables je les mets dans les colonnes pour voir la tete du
      // des variables, à enlever après
      // colonne1 en "texte" , les autre colonnes en "nombres"
      SI VAR_RSI = 2 ET VAR_BOLL = 1 ET (RCARRE = 1 OU RADX = 1)
      ALORS
      COLONNE1 = DATEHISTO$
      COLONNE2 = RADX
      COLONNE3 = RCARRE
      COLONNE4 = RTSI
      COLONNE5 = RMACD
      SELECTION //A pour effet de sortir de la boucle POUR quand on passe ici
      FINSI

      FINPOUR

      A bientot et merci

      Commentaire


      • Il doit y avoir une erreur dans la stat de franchissement du 0,5 du ROC_FRAMA. En effet, je viens de constater que Maurel a un ROC_FRAMA à 0,52 et n'est pas sélectionnée?
        Où est le problème?

        Commentaire


        • Bonjour tout le monde,
          Bonjour SMALLCAPS ET SPHINX ,

          J’essaie d’être un peu plus clair que hier soir avec un programme d’exemple suivant :

          //A remettre impérativement à 0 avant l'examen d'une autre action
          RCARRE=0
          RADX=0
          RTSI=0
          RMACD=0
          RBOLL=0

          RCOLL=0 // variable pour savoir quelles colonnes sont déjà occupées

          // DEBUT DE TENDANCE PAGE 20 (regle indicateur rcarre) PAGE 20
          SI CROISE(RCARRE.R2,0.27)>0 ALORS
          RCARRE=1
          FINSI

          // DEBUT DE TENDANCE (ne vient pas des règles indicateurs)
          SI ADX > 20 ET ADX <30 ALORS
          RADX = 1
          FINSI

          // Cloture au dessous de LBOLL (bande inférieure) (ne vient pas des règles indicateurs)
          SI CLOTURE<LBOLL ALORS
          RBOLL= 1
          FINSI

          // DEBUT TENDANCE TD_TSI (règle indicateur TSI.SD) PAGE 24
          SI SD_TSI.SD_TSI > 0 ET SD_TSI.SD_TSI < 1 ALORS
          RTSI = 1
          FINSI

          // croisement de macd avec sa moyenne mobile (ne vient pas des règles indicateurs)
          SI CROISE(MACD,MMACD)>0 ALORS
          RMACD=1
          FINSI


          // déclaration de 9 colonnes
          // on remplit au fur et à mesure les colonnes libres
          SI RCARRE = 1 OU RADX = 1 OU RBOLL= 1 OU RTSI = 1 OU … ALORS

          SI RCARRE = 1 ALORS
          COLONNE 1 = "RCARRE "
          RCOL=1
          FINSI

          // on teste ici pour voir si la première colonne est déjà remplie
          SI RCOL = 0 ALORS
          SI RADX = 1
          COLONNE 1 = "ADX "
          RCOL=1
          SINON
          COLONNE 2 = "ADX "
          RCOL=2
          FINSI
          FINSI

          //
          SI RCOLL = 0 ALORS
          SI RBOLL = 1 ALORS
          // on remplit la première colonne parce que rcarre et radx = zéro
          COLONNE 1 = "COURS <BOLL INFERIEUR "
          RCOL=1
          FINSI
          SINON
          SI RCOL1 = 1 ALORS
          SI RBOLL = 1 ALORS
          // on remplit la duexième colonne parce que la première colonne
          // est déjà occupé par RCARRE ou RADX
          COLONNE 2 = "COURS <BOLL INFERIEUR "
          RCOL=2
          FINSI
          SINON
          // on remplit la troisème colonne parce que RCARRE ET RADX = 1
          // on utilise déjà 3 colonnes, il reste 6 colonnes
          COLONNE 3 = "COURS <BOLL INFERIEUR "
          RCOL=3
          FINSI

          SI RCOL = 0 ALORS
          SI RTSI = 1 ALORS


          SELECTION

          FINSI // FIN DU PREMIER SI

          En faites je ne suis pas sur que c’est ca que vous cherchez , ce programme n’est qu’un exemple, Il ne marche pas

          A bientot

          Commentaire


          • je devais être fatigué, car Maurel est au dessus de 0,5 depuis un moment donc la stat ne peut pas la détecter car cest une détection jour. Pour Lego: je me suis pas encore penché sur le truc, car c'est pas facile du tout. Merci à tous.

            Commentaire


            • Bonsoir Smallcaps et Sphinx

              Peut-être ce programme ressemble un peu mieux à ce que tu recherches Sphinx ?

              Bien sur ce n'est qu'une petite ébauche, manque des tris, lorsque ca dépasse 9 colonnes etc...

              //A remettre impérativement à 0 avant l'examen d'une autre action
              VAR_BOLL=0
              VAR_TSI=0
              VAR_KST=0

              // on lit les historiques d'une action donnée
              POUR RANGHISTO COURS

              // il y a pas de règle indicateur , on cherche les clotures en dessous de
              // du bollinger
              // chaque fois qu'on trouve on ajoute 1 dans var_boll
              SI CLOTURE<MBOLL ALORS
              VAR_BOLL=VAR_BOLL+1
              FINSI

              // REGLE INDICATEUR PAGE 24
              // à chaque croisement on ajoute +1 dans var_tsi
              SI CROISE(TSI.TSI,TSI.MTSI)>0 ALORS
              VAR_TSI=VAR_TSI+1
              FINSI

              // REGLE INDICATEUR KSTCT PAGE 7
              SI CROISE(KSTCT.KST,KSTCT.MKST) > 0 ALORS
              VAR_KST = VAR_KST + 1
              FINSI

              ETC ... (mettez ici les autres règles)

              FINPOUR

              // colonnes à déclarer dans propriétés (1 à 9)
              COLONNE1=VAR_BOLL
              COLONNE2=VAR_TSI
              COLONNE3=VAR_KST
              SELECTION


              Exemple après l'exécution

              Groupe : cac40 Date : 20/09/2005
              STATISTIQUE
              BOLL TSI KST

              161 30 30 AGF
              175 39 29 AXA
              190 34 31 Accor
              187 38 31 Air Liquide
              277 33 25 Alcatel
              194 31 27 Arcelor
              165 37 35 BNP
              171 33 26 Bouygues
              149 34 32 CAC40
              268 33 29 Cap Gemini
              280 38 29 Carrefour
              276 28 22 Casino Guichard
              215 38 35 Credit agricole
              204 37 31 Danone
              186 33 26 Dexia
              197 36 27 EADS
              229 37 33 France Telecom
              224 35 30 L'Oreal
              214 32 28 LVMH Moet Hennessy
              215 38 31 Lafarge
              201 31 28 Lagardere
              189 29 30 Michelin
              189 38 32 Pernod Ricard
              205 34 32 Peugeot
              244 32 26 Pinault Printemps Redoute
              211 34 31 Renault
              309 31 32 STMicroelectronics
              169 42 31 Saint Gobain
              216 37 35 Sanofi Synthelabo
              208 34 31 Schneider
              168 36 34 Societe Generale
              222 33 26 Sodexho Alliance
              171 33 27 Suez Lyonnaise des Eaux
              270 36 29 TF1
              199 32 28 Thales
              228 34 33 Thomson Multimedia
              172 36 38 TotalFina
              118 35 32 Vinci
              161 35 27 Vivendi environne.
              173 35 30 Vivendi universal

              A bientot

              Commentaire


              • Bonsoir Lego,

                Merci pour tes contributions au pb des stats à critère multiples.
                Ton programme du 20/09 à 7h57 ne fonctionnait pas du fait de la présence d'erreurs de syntaxe...

                J'apporte une petite contribution qui permet de trier les résultats en fonction du nombre décroissant de critères satisfaits par chaque action sélectionnée par la stat.
                Je me suis vontairement limité à 4 de tes critères : R2, ADX, BOLL INF et MACD sachant qu'on peut aisément en augmenter le nombre ...

                Programme :
                <pre>
                //ESSAI DE STATISTIQUE MULTIPLE
                //


                // 1- Tests
                //

                // Début de tendance (page 20 règle indicateur RCARRE)
                //
                SI CROISE(RCARRE.R2,0.27)>0 ALORS
                RCARRE=1
                N=1
                FINSI

                // Début de tendance (ne vient pas des règles indicateurs)
                //
                SI ADX > 20 ET ADX <30 ALORS
                RADX = 1
                N=N+1
                FINSI

                // Cloture au dessous de LBOLL (ne vient pas des règles indicateurs)
                //
                SI CLOTURE<LBOLL ALORS
                RBOLL= 1
                N=N+1
                FINSI

                // Croisement de la MACD avec sa moyenne mobile (ne vient pas des règles indicateurs)
                //
                SI CROISE(MACD,MMACD)>0 ALORS
                RMACD=1
                N=N+1
                FINSI

                // 2- N = nombre de tests réussis par chaque action
                //Utilisé pour trier les résultats par ordre décroissant
                //
                COLONNE5 = N


                // 3- Répartition des textes dans les COLONNES
                //compte-tenu des résultats des tests ci-dessus
                //
                SI RCARRE = 1 ALORS
                COLONNE1 = " R2 "
                FINSI

                SI RADX = 1 ALORS
                COLONNE2 = " ADX "
                FINSI

                SI RBOLL = 1 ALORS
                COLONNE3 = " BOLL "
                FINSI

                SI RMACD = 1 ALORS
                COLONNE4 = " MACD "
                FINSI

                // Sélection multi-critères
                //
                SI RCARRE=1 OU
                RADX=1 OU
                RBOLL=1 OU
                RMACD=1
                ALORS
                SELECTION
                FINSI
                </pre>

                Propriétés :
                <center><img src='http://images.pro-at.com/200509/b/prop_stat_multiple.gif' alt='' /></center>

                L'entier N est incrémenté chaque fois qu'une action satisfait un critère. Il est placé, invisible, en colonne5 et les résultats sont triés suivant l'ordre décroissant de N comme indiqué dans la fenêtre Propriérés ci-dessus.
                Autre remarque, inutile de remettre à 0 les variables qui mémorisent les tests sur les 4 critères en début de programme, il n'y a en effet pas de boucle POUR ici.
                Le OU multiple du dernier test est inclusif : quel que soit le nombre de tests réussis par une action, celle-ci sera sélectionnée.

                Résultats :
                <center><img src='http://images.pro-at.com/200509/b/r%e9sultats.gif' alt='' /></center>
                Leur mise en forme est obtenue en affectant à chaque colonne le même nombre de caractères (8 ici).

                On peut imaginer bien d'autres solutions....

                Cordialement.

                Commentaire


                • Bonsoir smallcaps et sphinx,

                  Toujours aussi efficace et serviable
                  Merci aussi sphinx pour les idées.
                  Je vais essayer de comprendre le programme et de le tester.

                  Cordialement.

                  Commentaire


                  • Bonsoir

                    La détection de figure chartiste peut elle être réalisée dans graph AT comme par exemple ... les triangles <img src='http://www.pro-at.com/style/images/icones/icon_smile_evil.gif' border='0' alt='' title='' align='middle' /> qui semblent posséder un bon taux de réussite <img src='http://www.pro-at.com/style/images/icones/icon_smile_evil.gif' border='0' alt='' title='' align='middle' />

                    Lien pour la définition de triangle et autres figures
                    https://<a href='/ref.php?uri=http%3...WoP_Fig...</a>
                    FOKI

                    Commentaire


                    • Bonsoir à tous,
                      comment traduire en langage GrapAt

                      For count = 0 to 40 begin
                      Value4 = Value4 + DP(count)
                      Si Value4 > 360 et IP = 0 then
                      IP = count
                      end;

                      //DP et IP sont des variables//

                      J'essaie d'apprendre à coder, mais il n'y a qu'une explication sommaire des fonction s de graphat.
                      Pouvez vous également m'expliquer les fonctions
                      Pour
                      FinPour et
                      FinSi

                      Je vous remercie,
                      Cordiallement.

                      Commentaire


                      • Bonjour,
                        En page 55 de cette file tu trouveras quelques explications données par Smallcaps sur les variables utilisées dans GrapheAT Pro.

                        Commentaire


                        • Bonjour Katenake,

                          Il existe 2 types de boucles dans GrapheAT Pro : la boucle POUR et la boucle TANTQUE.

                          Solution avec la boucle POUR :
                          <pre>count=41
                          POUR count COURS
                          Value4=Value4+DP(RANGPOUR-1)
                          SI Value4>360 ET IP=0 ALORS IP=RANGPOUR-1
                          FINPOUR</pre>
                          La boucle POUR N COURS remonte de N cours dans l'historique à la période où elle est exécutée. Lors de la première boucle RANGPOUR, son compteur interne, = 1. Après chaque exécution le compteur RANGPOUR est automatiquement incrémenté d'une unité pour atteindre la valeur RANGPOUR = N à la dernière boucle. La boucle est donc exécutée de la période (N-1) en amont à la période (0) actuelle.
                          C'est la raison pour laquelle il faut initialiser count à 41.
                          De plus, comme de toute façon la boucle est exécutée des périodes les plus anciennes vers la période actuelle, pour respecter la logique Easy Language : l'indice = (RANGPOUR-1), permet d'accéder malgré tout aux différentes valeurs de la plus récente vers la plus ancienne.

                          Une dernière chose : à chaque exécution de la boucle, on se trouve réellement à l'endroit qu'elle "pointe" dans l'historique. De ce fait, si tu tolères que la boucle accède aux valeurs qu'elle doit traiter des plus anciennes à la plus récente, le programme s'écrira :
                          <pre>count=41
                          POUR count COURS
                          Value4=Value4+DP
                          SI Value4>360 ET IP=0 ALORS IP= RANGPOUR-1
                          FINPOUR</pre>
                          Le DP de la 3ème ligne est celui du jour où la boucle s'exécute, donc pas besoin d'en préciser l'indice.

                          Solution avec la boucle TANTQUE :

                          Contrairement à la boucle POUR, la boucle TANTQUE maintient le programme au jour de l'historique où elle est exécutée. Pour accéder aux valeurs qui nous intéressent il faut donc utiliser un indice explicite, ton count par exemple, et en gèrer l'évolution.
                          Cette boucle peut être exécutée comme la boucle POUR sur les valeurs auxquelles on accède soit dans le sens des dates croissantes soit dans le sens des dates décroissantes.
                          Pour un parcours dans le sens : dates récentes ----> datesanciennes :
                          <pre>count=0
                          TANTQUE count<=40 FAIRE
                          Value4=Value4+DP(count)
                          SI Value4>360 ET IP=0 ALORS IP=count
                          count=count+1
                          FINTANTQUE</pre>
                          Comme tu le constates, elle est du même type que la boucle FOR du Easy language, hormis le fait qu'il faut incrémenter le compteur ici.

                          Pour un parcours dans le sens inverse :
                          <pre>count=40
                          TANTQUE count>=0 FAIRE
                          Value4=Value4+DP(40-count)
                          SI Value4>360 ET IP=0 ALORS IP=40-count
                          count=count-1
                          FINTANTQUE </pre>

                          Le test peut s'écrire sur plusieurs lignes. Dans ce cas il faut le clore par un FINSI :
                          <pre>SI value4>360 ET IP=40-count
                          ALORS
                          IP=40-count
                          FINSI</pre>

                          Cordialement.

                          Commentaire


                          • Bonsoir FOKI,

                            Pour te répondre je reprends un extrait du post que j'avais adressé le 05/09 dernier à Michka et qui reste d'actualité quant à sa proposition finale :
                            <i>"........Pour ce qui concerne ta dernière question, je ne crois pas que des programmes de reconnaissance automatique des figures chartistes telles que : doubles sommets/creux, ETE directes/inverses, triangles, biseaux, diamants...aient déjà été postées dans la présente file. Il s'agit de problèmes difficiles à programmer avec un langage classique tel que celui de GrapheAT Pro.
                            Pierre Orphelin présente dans son bouquin, p.177 et suivantes, un exemple de programme de détection d'ETE associé à un système de trading écrit en Easy Language. Il emploie pour ce faire la fonction ZigZag à partir de laquelle il reconnait la structure géométrique de l'ETE. Les résultats obtenus dépendent évidemment du paramètre d'amplitude choisi pour définir le ZigZag.
                            Nous disposons dans la présente file de cette fonction ZigZag, il ne reste plus qu'à faire!
                            On pourrait très bien employer la même approche que celle que nous avions mise en oeuvre pour concevoir les programmes sur les divergences...s'il y a des utilisateurs de GrapheAT Pro intéressés..."</i>

                            Par conséquent, si tu es intéressé par la détection des triangles, on peut tenter de démarrer une étude pour voir s'il est possible de le faire avec GrapheAT Pro. Il faut écrire un cahier de s charges...

                            On peut trouver également les formules décrivant les figures chartistes dans le document de Ben Omrane et Van Oppens suivant :
                            <a href='/ref.php?uri=http%3A%2F%2Fwww.isys.ucl.ac.be%2Fworking_papers%2Fdocuments%2FWP95BenOmrane.pdf' target="_blank">http://www.isys.ucl.ac.be/working_papers/documents...</a>

                            Cordialement.

                            Commentaire


                            • Bonsoir Edge, merci pour le renvoi aux explications de la page 55.

                              Bonsoir Smallcaps, merci pour les precieuses explications sur les diverses fonctions de graphat et les différentes traductions proposées.
                              Ta maitrise de la programmation est epoustouflante !

                              A bientot,
                              Cordialemnt,
                              Ketenake.

                              Commentaire


                              • Bonjour Smallcaps

                                Je connaissais ce document et c'est d'ailleurs une des raisons pour laquelle j'en suis venu à parler de la détection des figures triangles <img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />.

                                Je vais voir dans la journée si je peux poser la base d'un "cahier des charges"

                                Commentaire

                                Chargement...
                                X