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

  • Bonsoir Smallcaps,

    Merci pour toutes tes réponses, Je regarde pour modifier le programme.

    Cordialement

    Commentaire


    • Bonsoir Lego,

      Ta règle statistique est bien utile pour prolonger l'étude que j'avais postée sur la recherche de l'anticipation des croisements éventuels de 2 moyennes mobiles arithmétiques.
      Je rappelle qu'il est possible d'utiliser la même démarche avec des moyennes exponentielles ou encore des DEMA. Les formules à employer sont sur le forum.

      Merci pour ta contribution.


      Bonsoir Xavier,

      Normalement, comme l'indique la doc de Mlog, une règle statistique s'applique au jour de l'historique indiqué dans la case "date" située en haut de la fenêtre "Statistiques". Il faut évidemment que les actions du groupe sur lequel on souhaite appliquer la statistique soient définies ce jour là (çà ne marche pas le samedi, ni le dimanche...).
      D'autre part, il n'est pas interdit d'utiliser les valeurs de ces actions sur des périodes antérieures dans les calculs et comparaisons qu'effectue le programme statistique, autrement dit il est possible d'y utiliser des variables historisées.
      Afin de contourner la limitation due au jour unique où la stat s'applique, on peut inclure une boucle POUR qui balaiera le nombre de périodes antérieures que l'on souhaite et ainsi de pouvoir connaître les autres périodes où la stat s'appliquait, nous l'avons déjà fait ici même.

      Peut-être pourrais-tu nous faire part plus précisément des problèmes que tu rencontres?

      Ceci dit Xavier, le terme de "génie" que tu emploies me paraît être largement disproportionné pour qualifier les nombreux intervenants de cette file.
      Restons modestes...<img src='http://www.pro-at.com/style/images/icones/icon_smile_blush.gif' border='0' alt='' title='' align='middle' />...

      Commentaire


      • bonjour smallcaps90
        quand je dis "génie" il faut bien sûr relativiser,la référence en la matière étant mon(très faible) niveau en programmation,un bambin de 3 ans jouant avec la télécommande du téléviseur familial fait déjà figure de "cador" comparé à moi...........<img src='http://www.pro-at.com/style/images/icones/icon_smile_tongue.gif' border='0' alt='' title='' align='middle' />
        Plus sérieusement pour ce qui est de mon problème je vais essayer d'être plus clair;j'ai défini des indicateurs perso fonctionnant avec des variables historisées dans leur calcul(du genre oscillateur indic(0)/indic(N)) et qui fonctionnent très bien sur mes graphiques.Quand je crée une règle statistique en incluant leur script dans la règle,quand je lance un contrôle le soft répond qu'il n'y a pas d'erreur,puis si je lance l'éxecution le soft ne détecte aucune valeur remplissant les conditions alors que graphiquement certaines valeurs remplissent les conditions.
        Puis si je retire de la règle statistique mes scripts "historisés" en ne laissant que les scripts portant sur le jour de la détection tout se passe bien.
        Alors comment faire pour qu'un indic utilisant des variables historisées dans son script puisse être utilisé??
        xavier

        Commentaire


        • Re Xavier,

          J'avais bien compris ton problème. Mais as-tu vraiment besoin d'inclure la totalité de ta règle indicateur qui fonctionne bien dans ta règle statistique?
          Il suffit pour faire le scan d'un groupe de faire référence dans la stat concernée aux variables utiles (historisées ou non) sous la forme classique : <b>NOM INDICATEUR. NOM VARIABLE </b>, associées vraisemblement à des tests de validation de conditions d'achat ou de vente ou de simple sélection.

          Tiens je te propose de regarder cet exemple qui me semble plus simple, même pour un béotien en informatique, que la manipulation de la télécommande de ton téléviseur familial (<img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />....
          Il s'agit de la stat d'achat/vente sur le CCI qui utilise la règle indic RCCI livrée par Mlog.
          Une règle indicateur de nom RCCI calcule pour chaque chaque période le CCI (nommé aussi RCCI ici) .
          La règle stat "Stat RCCI" utilise cette variable unique RCCI comme suit :

          ----------------------------------------------
          //Statistique d'achat/vente sur le CCI
          //On utilise la règle RCCI, pas l'indicateur CCI de GrapheAT
          //

          Colonne1 = <b>RCCI.RCCI(1)</b>
          Colonne2 = <b>RCCI.RCCI</b>

          Si CROISE(RCCI.RCCI,100)>0 Alors SelectionAchat

          Si CROISE(RCCI.RCCI,-100)<0 Alors SelectionVente
          ----------------------------------------------

          On ne fait qu'afficher la valeur précédente (donc historisée)du CCI en Colonne1 sous la forme <b>RCCI.RCCI(1)</b>, c'est à dire : NOM INDICATEUR. NOM VARIABLE.
          Puis en Colonne2, on affiche la valeur actuelle <b>RCCI.RCCI</b>.

          Ensuite deux tests de croisements avec les lignes horizontales 100 et -100 de la valeur actuelle permettent de sélectionner, éventuellement, l'action scannée à l'achat ou à la vente.

          On aurait très bien pu aussi, si cela avait été nécessaire, faire des calculs incluant valeur actuelle et valeur précédente...

          Je suppose que le pb que tu rencontres peut venir du fait que tu n'utilises peut-être pas la bonne notation pour récupérer tes variables dans la stat...NOM INDICATEUR.NOM VARIABLE...
          Cordialement.


          Commentaire


          • smallcaps90,
            mon problème vient quand sur des critères déjà existants et opérationnels dans la règle je veux ajouter un test sur le bandwidth calculé ainsi:
            <font color="blue">bandwidth(0)=((uboll-lboll)/mboll)*100</font id="blue">
            <font color="blue">test(0)=bandwidth(0)/bandwidth(10)</font id="blue">
            et que j'inclue un test du style
            <font color="blue">SI test(0)<test(1) ALORS SELECTIONACHAT</font id="blue">
            si tu peux me dire comment faire pour que ce put.. de test apparemment simple marche dans la règle statistique je t'en serais reconnaissant.
            xavier

            Commentaire


            • Re Xavier,

              Ok çà marche.
              J'ai créé une règle indic TEST_XAVIER qui reprend ton petit mprogramme :
              ----------------------
              //Test pour Xavier le 09/09/2005
              //

              BANDWIDTH(0)=100*((UBOLL-LBOLL)/MBOLL)
              TEST(0)=BANDWIDTH(0)/BANDWIDTH(10)

              SI TEST(0)<TEST(1) ALORS ACHAT=1
              ---------------------
              pour visualiser les variables TEST et ACHAT.
              <center><img src='http://images.pro-at.com/200509/b/propri%e9t%e9s_test.gif' alt='' /></center>
              Voici ce que cela donnait hier avec Schneider :
              <center><img src='http://images.pro-at.com/200509/b/schneider.gif' alt='' /></center>

              J'ai créé une stat qui reprend la variable TEST dans la comparaison que tu fais et qui scanne le CAC 40 :
              --------------------
              //Stat de test pour Xavier
              //le 09/09/2005
              //

              SI <b>TEST_XAVIER.TEST(0)<TEST_XAVIER.TEST(1)</b>
              ALORS
              SELECTIONACHAT
              FINSI
              --------------------
              <center><img src='http://images.pro-at.com/200509/b/prop_stat_test.gif' alt='' /></center>
              Et voici ce que cela donnait hier avec le CAC40 :

              Groupe : cac40 Date : 08/09/2005
              Sélection des actions dont TEST(0)<TEST(1)

              ACHAT Accor
              ACHAT AGF
              ACHAT Air Liquide
              ACHAT Alcatel
              ACHAT Arcelor
              ACHAT AXA
              ACHAT Bnp Paribas
              ACHAT Carrefour
              ACHAT Casino Guichard
              ACHAT Credit agricole
              ACHAT Dexia
              ACHAT France Telecom
              ACHAT Lagardere
              ACHAT Michelin
              ACHAT Peugeot
              ACHAT Pinault Printemps Redoute
              ACHAT Publicis Group
              ACHAT Renault
              ACHAT Saint Gobain
              ACHAT Schneider
              ACHAT Societe Generale
              ACHAT Suez
              ACHAT TF1
              ACHAT Thomson
              ACHAT Vivendi universal

              Comme tu le vois j'ai récupéré dans la règle stat la variable TEST calculée par la règle indic sous la forme :
              <b>TEST_XAVIER.TEST(0)</b> ou encore <b>TEST_XAVIER.TEST(1).</b>
              Elle est bien historisée...

              Cordialement.

              Commentaire


              • smallcaps90,
                une fois de plus tu m'as "ébouriffé".........,et de plus ton explication semble claire,même à moi........ la télécommande de la télé familiale n'a plus qu'à bien se tenir <img src='http://www.pro-at.com/style/images/icones/icon_smile_evil.gif' border='0' alt='' title='' align='middle' />
                Je te remercie et il me tarde de rentrer ce soir à la maison pour récupérer ton script et le faire tourner sur mon soft.
                cordialement
                xavier

                Commentaire


                • Allons allons Xavier...il n'y a pas de vent aujourd'hui...donc pas de quoi se faire ébouriffer pour si peu! Laisse donc la télécommande de ta télé à ton gamin...nos gosses sont bien plus doués que nous dans ce domaine là!...

                  Une dernière chose, sérieuse : vérifie que la date située en haut de la fenêtre dans laquelle tu lances l'exécution de la stat correspond bien à des cotations qui existent dans ta base de données.
                  Bonne fin de semaine.

                  Commentaire


                  • Bonjour Chctrader,

                    Comme promis l'autre jour, je poste les programmes indicateurs de recherche des divergences positives et négatives entre les cours et le Répulse d'Anaphrais qui t'intéressent. J'ai repris la même approche que pour la détermination des divergences cours/MACD, RSI, STOCH postée plus haut dans cette file.
                    Les stats correspondantes viendront un peu plus tard...

                    <b>DIVERGENCES POSITIVES :</b>
                    Il faut respecter la structure suivante pour cela fonctionne sans pb :
                    <center><img src='http://images.pro-at.com/200509/b/structure_pos.gif' alt='' /></center>
                    Programme de recherche :
                    ------------------------------------
                    <font size="1">//DIV_POS_REPULSE
                    //

                    //RECHERCHER LA DIVERGENCE POSITIVE EVENTUELLE
                    //LA PLUS RECENTE ENTRE LES COURS ET LE REPULSE
                    //DANS LES LIMITES DEFINIES PAR P1, P2, P3, P4 et P5
                    //V 1.0 du 07/09/2005
                    //

                    //----------------------------------------------
                    //DEFINITION DES ROLES DES PARAMETRES P1 à P5 :
                    //
                    //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
                    //SE TROUVER P4 PERIODES AU MOINS AVANT LA FINHISTO.
                    //
                    //LE 1ER CREUX SUR LE REPULSE DEVRA SE TROUVER
                    //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
                    //
                    //LE 2EME CREUX SUR LE REPULSE DEVRA SE TROUVER
                    //DANS LES P2 PERIODES PRECEDANT LE 1ER.
                    //
                    //CHAQUE CREUX SUR LES COURS POURRA SE TROUVER
                    //DANS LES P3 PERIODES PRECEDANT LES SOMMETS
                    //CORRESPONDANTS SUR LE REPULSE.
                    //
                    //P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES
                    //PRESENTENT DES INTERSECTIONS AVEC LES COURS
                    //ET/OU LE REPULSE.
                    //P5=1 NE LES ACCEPTE PAS.
                    //----------------------------------------------

                    //Initialisations
                    //
                    INDIC=REPULSE_NJ.REPULSE_NJ
                    MINI=1000


                    SI RANGHISTO=FINHISTO-P4 //On explore jusqu'à P4 périodes avant la FINHISTO
                    ALORS

                    //Chercher un 1er creux (CI1) et sa date (DATE_CI1) sur l'indicateur
                    //
                    I=0
                    CI1=MINI
                    TANTQUE I<=P1 FAIRE
                    SI INDIC(I+1)<0
                    ALORS
                    SI INDIC(I+2)>INDIC(I+1) ET INDIC(I+1)<INDIC(I)
                    ALORS
                    SI INDIC(I+1)<=CI1
                    ALORS
                    CI1=INDIC(I+1)
                    DATE_CI1=FINHISTO-P4-(I+1)
                    D1=I+1
                    FINSI
                    FINSI
                    FINSI
                    I=I+1
                    FINTANTQUE

                    SI D1=0
                    ALORS
                    AFFICHER "=========PAS DE 1ER CREUX RECENT SUR LE REPULSE========"
                    AFFICHER "================MODIFIEZ P1 ET/OU P4 =================="
                    STOP
                    FINSI

                    //Chercher un 1er creux (CC1) et sa date (DATE_CC1)
                    //sur les cours avec une tolérance de P3 périodes avant
                    //le 1er creux trouvé sur l'indicateur
                    //
                    CC1=BAS(FINHISTO-P4-DATE_CI1)
                    DATE_CC1=DATE_CI1
                    K=FINHISTO-P4-DATE_CI1+1
                    TANTQUE K<=FINHISTO-P4-DATE_CI1+P3 FAIRE
                    SI BAS(K)<=CC1
                    ALORS
                    CC1=BAS(K)
                    DATE_CC1=FINHISTO-K-P4
                    FINSI
                    K=K+1
                    FINTANTQUE

                    //Chercher un 2ème creux (CI2) plus ancien
                    //et sa date (DATE_CI2) sur l'indicateur
                    //
                    J=D1+1
                    CI2=CI1
                    TANTQUE J<=P2+D1 FAIRE
                    SI INDIC(J+2)>INDIC(J+1) ET INDIC(J+1)<INDIC(J)
                    ALORS
                    SI INDIC(J+1)<=CI2
                    ALORS
                    CI2=INDIC(J+1)
                    DATE_CI2=FINHISTO-P4-(J+1)
                    D2=1
                    FINSI
                    FINSI

                    SI D2=1 //CI2 est un creux possible sur l'indicateur
                    ALORS

                    SI P5=1 //On veut que la droite CI1--CI2 reste sous l'indicateur
                    ALORS
                    PENTE_I=(CI1-CI2)/(DATE_CI1-DATE_CI2)
                    POUR (FINHISTO-P4-DATE_CI2+1) COURS
                    POINT_I(0)= PENTE_I*(RANGPOUR-1)+CI2
                    SI POINT_I>INDIC
                    ALORS
                    N=1
                    BREAK
                    FINSI
                    SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK
                    FINPOUR
                    FINSI

                    SI N=0 //Droite de divergence CI1--CI2 correcte
                    ALORS
                    //Chercher le 2ème creux (CC2) et sa date (DATE_CC2)
                    //sur les cours avec une tolérance de P3 périodes
                    //avant le 2ème creux sur l'indicateur
                    //
                    CC2=BAS(FINHISTO-P4-DATE_CI2)
                    DATE_CC2=DATE_CI2
                    K=FINHISTO-P4-DATE_CI2+1
                    TANTQUE K<FINHISTO-P4-DATE_CI2+P3 FAIRE
                    SI BAS(K)<=CC2
                    ALORS
                    CC2=BAS(K)
                    DATE_CC2=FINHISTO-K-P4
                    FINSI
                    K=K+1
                    FINTANTQUE

                    SI CC2>=CC1 //CC2 est un creux possible sur les cours
                    ALORS

                    SI P5=1 //On veut que la droite CC1--CC2 reste sous les cours
                    ALORS
                    PENTE_C=(CC1-CC2)/(DATE_CC1-DATE_CC2)
                    POUR (FINHISTO-P4-DATE_CC2+1) COURS
                    POINT_C(0)=PENTE_C*(RANGPOUR-1)+CC2
                    SI POINT_C>BAS
                    ALORS
                    M=1
                    BREAK
                    FINSI
                    SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK
                    FINPOUR
                    FINSI

                    SI M=0 //Droite de divergence CC1--CC2 correcte
                    ALORS
                    J=P2+D1+1
                    SINON
                    D2=0
                    FINSI
                    SINON
                    D2=0
                    FINSI
                    SINON
                    D2=0
                    FINSI
                    FINSI
                    N=0
                    M=0
                    J=J+1
                    FINTANTQUE

                    SI D1<>0 ET D2=0 OU CC2=0
                    ALORS
                    AFFICHER "============PAS DE DIVERGENCE POTENTIELLE============="
                    AFFICHER "======AVEC LES VALEURS ACTUELLES DES PARAMETRES======="
                    AFFICHER "=MAIS IL Y A UN 1ER CREUX SUR LE REPULSE ET LES COURS="
                    AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2=============="
                    STOP
                    FINSI

                    //Déterminer les points des segments de la divergence potentielle trouvée
                    //s'ils peuvent être tracés sur l'indicateur et sur les cours
                    //
                    SI DATE_CC1-DATE_CC2<2 //La valeur 2 peut être modifiée
                    ALORS
                    AFFICHER "=============DIVERGENCE POTENTIELLE============"
                    AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
                    AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
                    SINON
                    PENTE_I=(CI1-CI2)/(DATE_CI1-DATE_CI2)
                    POUR (FINHISTO-P4-DATE_CI2+1) COURS
                    SEG_P_I(0)=PENTE_I*(RANGPOUR-1)+CI2
                    SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK
                    FINPOUR

                    PENTE_C=(CC1-CC2)/(DATE_CC1-DATE_CC2)
                    POUR (FINHISTO-P4-DATE_CC2+1) COURS
                    SEG_P_C(0)=PENTE_C*(RANGPOUR-1)+CC2
                    SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK
                    FINPOUR
                    FINSI

                    FINSI</font id="size1">
                    ------------------------------------
                    <center><img src='http://images.pro-at.com/200509/b/prop_pos.gif' alt='' /></center>

                    Programme de tracé de la divergence sur les cours :
                    ------------------------------------
                    <font size="1">//DIV_POS_REP_COURS
                    //

                    //TRACER LE SEGMENT DE LA DIVERGENCE POSITIVE
                    //SUR LES COURS
                    //

                    SEG_P_COURS=SEG_P_C</font id="size1">
                    ------------------------------------
                    <center><img src='http://images.pro-at.com/200509/b/prop_pos_cours.gif' alt='' /></center>

                    Un exemple :
                    <center><img src='http://images.pro-at.com/200509/b/renault_pos.gif' alt='' /></center>


                    <b>DIVERGENCES NEGATIVES :</b>
                    <center><img src='http://images.pro-at.com/200509/b/structure_neg.gif' alt='' /></center>
                    Programme de recherche :
                    ------------------------------------
                    <font size="1">
                    //DIV_NEG_REPULSE
                    //

                    //RECHERCHER LA DIVERGENCE NEGATIVE EVENTUELLE
                    //LA PLUS RECENTE ENTRE LES COURS ET LE REPULSE
                    //DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4
                    //V3.2 du 08/09/2004
                    //

                    //----------------------------------------------
                    //PARAMETRES P1 à P5 :
                    //
                    //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
                    //SE TROUVER P4 PERIODES AU MOINS AVANT LA FINHISTO.
                    //
                    //LE 1ER SOMMET SUR LE REPULSE DEVRA SE TROUVER
                    //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
                    //
                    //LE 2EME SOMMET SUR LE REPULSE DEVRA SE TROUVER
                    //DANS LES P2 PERIODES PRECEDANT LE 1ER.
                    //
                    //CHAQUE SOMMET SUR LES COURS POURRA SE TROUVER
                    //DANS LES P3 PERIODES PRECEDANT LES SOMMETS
                    //CORRESPONDANTS SUR LE REPULSE.
                    //
                    //P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES
                    //PRESENTENT DES INTERSECTIONS AVEC LES COURS
                    //ET/OU LE REPULSE.
                    //P5=1 NE LES ACCEPTE PAS.
                    //----------------------------------------------

                    //Initialisations
                    //
                    INDIC=REPULSE_NJ.REPULSE_NJ
                    MAXI=0

                    SI RANGHISTO=FINHISTO-P4 //On explore jusqu'à P4 périodes avant la FINHISTO
                    ALORS

                    //Chercher un 1er sommet (SI1) et sa date (DATE_SI1) sur l'indicateur
                    //
                    I=0
                    SI1=MAXI
                    TANTQUE I<=P1 FAIRE
                    SI INDIC(I+1)>0
                    ALORS
                    SI INDIC(I+2)<INDIC(I+1) ET INDIC(I+1)>INDIC(I)
                    ALORS
                    SI INDIC(I+1)>=SI1
                    ALORS
                    SI1=INDIC(I+1)
                    DATE_SI1=FINHISTO-P4-(I+1)
                    D1=I+1
                    FINSI
                    FINSI
                    FINSI
                    I=I+1
                    FINTANTQUE

                    SI D1=0
                    ALORS
                    AFFICHER "=======PAS DE 1ER SOMMET RECENT SUR LE REPULSE======="
                    AFFICHER "===============MODIFIEZ P1 ET/OU P4 ================="
                    STOP
                    FINSI

                    //Chercher le 1er sommet (SC1) et sa date (DATE_SC1)
                    //sur les cours avec une tolérance de P3 périodes
                    //avant le 1er sommet sur l'indicateur
                    //
                    SC1=HAUT(FINHISTO-P4-DATE_SI1)
                    DATE_SC1=DATE_SI1
                    K=FINHISTO-P4-DATE_SI1+1
                    TANTQUE K<=FINHISTO-P4-DATE_SI1+P3 FAIRE
                    SI HAUT(K)>=SC1
                    ALORS
                    SC1=HAUT(K)
                    DATE_SC1=FINHISTO-K-P4
                    FINSI
                    K=K+1
                    FINTANTQUE

                    //Chercher un 2ème sommet plus ancien (SI2)
                    //et sa date (DATE_SI2) sur l'indicateur
                    //
                    J=D1+1
                    SI2=SI1
                    TANTQUE J<=P2+D1 FAIRE
                    SI INDIC(J+2)<INDIC(J+1) ET INDIC(J+1)>INDIC(J)
                    ALORS
                    SI INDIC(J+1)>=SI2
                    ALORS
                    SI2=INDIC(J+1)
                    DATE_SI2=FINHISTO-P4-(J+1)
                    D2=1
                    FINSI
                    FINSI

                    SI D2=1 //SI2 est un sommet possible sur l'indicateur
                    ALORS

                    SI P5=1 //La droite SI1--SI2 doit être au-dessus de l'indicateur
                    ALORS
                    PENTE_I=(SI1-SI2)/(DATE_SI1-DATE_SI2)
                    POUR (FINHISTO-P4-DATE_SI2+1) COURS
                    POINT_I(0)= PENTE_I*(RANGPOUR-1)+SI2
                    SI POINT_I<INDIC
                    ALORS
                    N=1
                    BREAK
                    FINSI
                    SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
                    FINPOUR
                    FINSI

                    SI N=0 //Droite de divergence SI1--SI2 correcte
                    ALORS
                    //Chercher le 2ème sommet (SC2) et sa date (DATE_SC2)
                    //sur les cours avec une tolérance de P3 périodes
                    //avant le 2ème sommet sur l'indicateur
                    //
                    SC2=HAUT(FINHISTO-P4-DATE_SI2)
                    DATE_SC2=DATE_SI2
                    K=FINHISTO-P4-DATE_SI2+1
                    TANTQUE K<=FINHISTO-P4-DATE_SI2+P3 FAIRE
                    SI HAUT(K)>=SC2
                    ALORS
                    SC2=HAUT(K)
                    DATE_SC2=FINHISTO-K-P4
                    FINSI
                    K=K+1
                    FINTANTQUE

                    SI SC2<=SC1 //SC2 est un sommet possible sur les cours
                    ALORS

                    SI P5=1 //La droite SC1--SC2 doit être au-dessus des cours
                    ALORS
                    PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2)
                    POUR (FINHISTO-P4-DATE_SC2+1) COURS
                    POINT_C(0) =PENTE_C*(RANGPOUR-1)+SC2
                    SI POINT_C<HAUT
                    ALORS
                    M=1
                    BREAK
                    FINSI
                    SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK
                    FINPOUR
                    FINSI

                    SI M=0 //Droite de divergence SC1--SC2 correcte
                    ALORS
                    J=P2+D1+1
                    SINON
                    D2=0
                    FINSI
                    SINON
                    D2=0
                    FINSI
                    SINON
                    D2=0
                    FINSI
                    FINSI
                    N=0
                    M=0
                    J=J+1
                    FINTANTQUE

                    SI D1<>0 ET D2=0 OU SC2=0
                    ALORS
                    AFFICHER "============PAS DE DIVERGENCE POTENTIELLE============="
                    AFFICHER "======AVEC LES VALEURS ACTUELLES DES PARAMETRES======="
                    AFFICHER "=MAIS IL Y A UN 1ER SOMMET SUR LE REPULSE ET LES COURS="
                    AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2=============="
                    STOP
                    FINSI

                    //Déterminer les points de la divergence potentielle trouvée
                    //s'ils peuvent être tracés sur l'indicateur et sur les cours
                    //
                    SI DATE_SC1-DATE_SC2=1 //La valeur 2 peut-être modifiée
                    ALORS
                    AFFICHER "=============DIVERGENCE POTENTIELLE============"
                    AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
                    AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
                    SINON
                    PENTE_I=(SI1-SI2)/(DATE_SI1-DATE_SI2)
                    POUR (FINHISTO-P4-DATE_SI2+1) COURS
                    SEG_N_I(0)=PENTE_I*(RANGPOUR-1)+SI2
                    SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
                    FINPOUR

                    PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2)
                    POUR (FINHISTO-P4-DATE_SC2+1) COURS
                    SEG_N_C(0)=PENTE_C*(RANGPOUR-1)+SC2
                    SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK
                    FINPOUR
                    FINSI

                    FINSI</font id="size1">
                    ----------------------------------
                    <center><img src='http://images.pro-at.com/200509/b/prop_neg.gif' alt='' /></center>

                    Programme de tracé de la divergence sur les cours :
                    ----------------------------------
                    <font size="1">//DIV_NEG_REP_COURS
                    //

                    //TRACER LE SEGMENT DE LA DIVERGENCE NEGATIVE
                    //SUR LES COURS
                    //

                    SEG_N_COURS=SEG_N_C</font id="size1">
                    ----------------------------------
                    <center><img src='http://images.pro-at.com/200509/b/prop_neg_cours.gif' alt='' /></center>

                    Un exemple :
                    <center><img src='http://images.pro-at.com/200509/b/dexia_neg.gif' alt='' /></center>


                    Il est également indispensable que l'indicateur REPULSE_NJ soit installé dans une règle de nom REPULSE_NJ pour que les programmes de recherche ci-dessus puissent récupérer les valeurs de l'indicateur.

                    Je suis conscient du fait que la technique utilisée dans ces programmes n'est pas "idéale" puisque la recherche dépend des valeurs choisies pour les paramètres P1 à P5. Ces derniers ne sont pas toujours très évidents à choisir. Si vous avez d'autres idées, je suis preneur...

                    Cordialement.

                    Commentaire


                    • smallcaps90
                      je viens de rentrer chez moi et d'essayer sur mon graphat pro,et ça marche nickel chrome........
                      encore merci
                      xavier

                      Commentaire


                      • bonjour smallcaps90,
                        Merci à toi et aux autres programmeurs d'indicateurs de Graph AT.
                        Concernant le programme relatif aux divergences sur le Repulse pourrais tu m'indiquer ou à été défini le Repulse_NJ .

                        Merci

                        Commentaire


                        • Bonjour Xavier,

                          Ok. Tu vois, on parvient toujours à trouver une solution qui marche...<img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />...
                          Cordialement.

                          ______________________

                          Bonjour Edge,

                          Bienvenue au club...
                          Effectivement j'ai oublié cela,

                          Programme du REPULSE_NJ (signifie Répulse N Jours) :
                          ------------------------------------------
                          <font size="1">//REPULSE d'Anaphraïs à N jours
                          //le 06/09/2005
                          //

                          N=P1 //pas vraiment utile à vrai dire...

                          PH(0) = 100*(3*CLOTURE-2*MIN(BAS,N)-OUVERTURE(N-1))/CLOTURE

                          PB(0) = 100*(OUVERTURE(N-1)+2*MAX(HAUT,N)-3*CLOTURE)/CLOTURE

                          MPH(0) = EXPOSUIV(MPH,PH,N)
                          MPB(0) = EXPOSUIV(MPB,PB,N)

                          REPULSE_NJ =MPH-MPB
                          M = EXPOSUIV(M,REPULSE_NJ,P2)
                          MREPULSE_NJ = 3*M</font id="size1">
                          ------------------------------------------

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

                          C'est ce réglage (à N=3 jours) qui est utilisé dans les exemples de divergences postés ci-dessus et dans lesquels le Répulse est récupéré sans sa moyenne M_REPULSE_NJ.

                          Bon week end.

                          Commentaire


                          • slt a tous
                            pour completer la panoplie d'indicateur, je vous propose un programme sur les stops. il représente des developping stop (introduit par cynthia kase) qui sont basé sur la volatilité (1 ATR, 2 ATR + 10%, 3 ATR+10%)
                            je ne vais pas développer toute la téorie en qq lignes, mais au moins ils ont l'avantage de permettre de suivre une tendance sereinement.
                            Le programme :
                            HT(0)=MAX(HAUT,2)
                            BS(0)=MIN(BAS,2)
                            TR(0) = MAXVAL( MAXVAL(HT-BS,ABSOLU(HT-Cloture(2))), ABSOLU(BS-Cloture(2)) )
                            ATR(0)=MOYENNE(TR,P1)
                            SDEV(0)=ECARTYPE(TR,P1)
                            DEV1(0)=CLOTURE-ATR
                            DEV2(0)=CLOTURE-ATR-SDEV
                            DEV3(0)=CLOTURE-ATR-2.2*SDEV
                            DEV4(0)=CLOTURE-ATR-3.6*SDEV
                            SI DEV1<DEV1(1) et cloture>DEV4(1) alors DEV1=DEV1(1)
                            SI DEV2<DEV2(1) et cloture>DEV4(1) alors DEV2=DEV2(1)
                            SI DEV3<DEV3(1) et cloture>DEV4(1) alors DEV3=DEV3(1)
                            SI DEV4<DEV4(1) et cloture>DEV4(1) alors DEV4=DEV4(1)
                            DEV5(0)=CLOTURE+ATR
                            DEV6(0)=CLOTURE+ATR+SDEV
                            DEV7(0)=CLOTURE+ATR+2.2*SDEV
                            DEV8(0)=CLOTURE+ATR+3.6*SDEV
                            SI DEV5>DEV5(1) et cloture<DEV8(1) alors DEV5=DEV5(1)
                            SI DEV6>DEV6(1) et cloture<DEV8(1) alors DEV6=DEV6(1)
                            SI DEV7>DEV7(1) et cloture<DEV8(1) alors DEV7=DEV7(1)
                            SI DEV8>DEV8(1) et cloture<DEV8(1) alors DEV8=DEV8(1)
                            //SI CLOTURE>=DEV4(1) ALORS
                            //ALERT=DEV1
                            //STD1=DEV2
                            //STD2=DEV3
                            //STD3=DEV4
                            //SINON
                            //ALERT=DEV5
                            //STD1=DEV6
                            //STD2=DEV7
                            //STD3=DEV8
                            //FINSI
                            P1 représente le nombre de jours pour calculer l' aTR


                            pour les courbes le paramétrage est le suivant :<center><a href='http://images.pro-at.com/200509/b/devstop.jpg' target='_blank' style='display:block; width:600px; border:2px dashed #888; padding:10px'><img src="http://images.pro-at.com/200509/b/devstop.jpg" alt='' width='600' height='417' /><em style='display:block; text-align: right'>Cliquez pour agrandir</em></a></center>

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

                            Je n'utilise c'est stop que pour le suivi de tendance et non en stop initial.

                            Commentaire


                            • Merci Smallcaps pour les divergences de REPULSE. Je vais tester différents parametres pour trouver celui qui correspond le mieux à mon style de trading.

                              Bien cordialement

                              Chris

                              Commentaire


                              • Bonsoir tout le monde,

                                Merci Smallcap pour tes précisions

                                "Ta règle statistique est bien utile pour prolonger l'étude que j'avais postée sur la recherche de l'anticipation des croisements éventuels de 2 moyennes mobiles arithmétiques.
                                Je rappelle qu'il est possible d'utiliser la même démarche avec des moyennes exponentielles ou encore des DEMA. Les formules à employer sont sur le forum."

                                Un petit programme suite au lecture du livre de Robert Edwards et John Magee

                                Bien sur on peut mettre RSI à d'autres valeurs (ex : 30)
                                j'ai mis 15 à nb_périodes pour qu'il balaye la base
                                je suis obligé de faire deux fois POUR NB_PERIODES COURS pour qu'il m'efface pas les variables.
                                Pourquoi divisez en deux (ex : croisement rsi le 29/09/2004 et cours en dessous de la bande le 23/09/2004 , il m'efface le var_boll s' il y a une seul boucle POUR NB_PERIODES COURS).

                                Peut-on faire autrement ?

                                règle statistique
                                colonne1 = texte

                                // 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)


                                VAR_SELECT=0
                                NB_PERIODES=15

                                POUR NB_PERIODES COURS
                                // rsi en dessous de 50 et croisement Rsi avec sa Moyenne
                                SI RSI<50 ALORS
                                VAR_RSI = 1
                                SI CROISE(RSI,MRSI)>0 ALORS
                                VAR_RSI = VAR_RSI + 1
                                FINSI
                                FINSI
                                FINPOUR

                                // cherche si la cloture est au dessous de la bande bollinger
                                NB_PERIODES=15
                                POUR NB_PERIODES COURS
                                SI CLOTURE<LBOLL ALORS
                                VAR_BOLL= 1
                                FINSI
                                FINPOUR

                                SI VAR_RSI = 2 ET VAR_BOLL = 1 ALORS
                                COLONNE1 = "RSI - LBOLL " & DATEHISTO$
                                VAR_SELECT=1
                                FINSI

                                SI VAR_SELECT=1 ALORS
                                SELECTION
                                FINSI

                                essai avec la date 29/09/2004

                                Groupe : cac40 Date : 29/09/2004

                                RSI - LBOLL 29/09/2004 Accor
                                RSI - LBOLL 29/09/2004 Air Liquide
                                RSI - LBOLL 29/09/2004 AXA
                                RSI - LBOLL 29/09/2004 Danone
                                RSI - LBOLL 29/09/2004 EADS
                                RSI - LBOLL 29/09/2004 L'Oreal
                                RSI - LBOLL 29/09/2004 Thales

                                Commentaire

                                Chargement...
                                X