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

  • Bonjour,

    Voici la dernière version du programme de la règle indicateur "<b>DIV_POS_MACD</b>".

    Le principe de détection reste pour l'instant globalement le même que celui qui a été présenté dans les posts précédents à une différence mineure près :

    - On ne cherche les creux sur les cours que dans un laps de temps de O à P3 périodes AVANT les dates des creux correspondants sur la MACD et non plus P3 périodes de part et d'autre de ces dernières.

    La détection n'est pas automatique, elle dépend essentiellement des valeurs que vous choisirez pour les 4 paramètres P1, P2, P3 et P4. N'hésitez pas à les modifier et à faire plusieurs essais.

    Le programme de la règle indicateur dérivée : "DIV_POS_COURS" est inchangé.
    Il en est de même du programme de la règle statistique associée : "VAL_CONF_DIV_POS".

    ----------------------------------------------
    <font size="1">//<b>DIV_POS_MACD</b>
    //
    //RECHERCHER LA DIVERGENCE POSITIVE EVENTUELLE
    //LA PLUS RECENTE ENTRE LES COURS ET LA MACD
    //DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4
    //V 3.2 DU 05/09/2004
    //

    //----------------------------------------------
    //PARAMETRES :
    //
    //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
    //SE TROUVER P4 PERIODES AVANT LA FINHISTO.
    //
    //LE 1ER CREUX SUR LA MACD DEVRA SE TROUVER
    //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
    //
    //LE 2EME CREUX SUR LA MACD 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 LA MACD.
    //
    //----------------------------------------------

    //INITIALISATIONS
    //
    COURBE1=MACD
    COURBE2=MMACD
    MINI=1000
    D1=0
    D2=0
    N=0
    M=0

    //SE PLACER P4 PERIODES AVANT FINHISTO
    //POUR COMMENCER LA RECHERCHE
    //

    SI RANGHISTO=FINHISTO-P4
    ALORS

    //CHERCHER UN 1ER CREUX (CI1) ET SA DATE (DATE_CI1) SUR LA MACD
    //
    I=0
    CI1=MINI
    TANTQUE I<=P1 FAIRE
    SI MACD(I+1)<0
    ALORS
    SI MACD(I+2)>MACD(I+1) ET MACD(I+1)<MACD(I)
    ALORS
    SI MACD(I+1)<=CI1 ET MACD(I+1)<MMACD(I+1)
    ALORS
    CI1=MACD(I+1)
    DATE_CI1=FINHISTO-P4-(I+1)
    D1=I+1
    I=P1
    FINSI
    FINSI
    FINSI
    I=I+1
    FINTANTQUE

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

    //CHERCHER LE 1ER CREUX (CC1) ET SA DATE (DATE_CC1)
    //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
    //AVANT LE 1ER CREUX SUR LA MACD
    //
    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 LE 2EME CREUX PLUS ANCIEN (CI2)
    //ET SA DATE (DATE_CI2) SUR LA MACD
    //
    J=D1+1
    CI2=CI1
    TANTQUE J<=P2+D1 FAIRE
    SI MACD(J+2)>MACD(J+1) ET MACD(J+1)<MACD(J)
    ALORS
    SI MACD(J+1)<=CI2 ET MACD(J+1)<MMACD(J+1)
    ALORS
    CI2=MACD(J+1)
    DATE_CI2=FINHISTO-P4-(J+1)
    D2=1
    FINSI
    FINSI

    SI D2=1
    ALORS
    //VERIFIER QUE LA DROITE DE DIVERGENCE (CI1--CI2)
    //RESTE EN DESSOUS DE LA MACD
    //
    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>MACD
    ALORS
    N=1
    BREAK
    FINSI
    SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK
    FINPOUR

    SI N=0
    ALORS
    //CHERCHER LE 2EME CREUX (CC2) ET SA DATE (DATE_CC2)
    //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
    //AVANT LE 2EME CREUX SUR LA MACD
    //
    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 possible
    ALORS
    //VERIFIER QUE LA DROITE DE DIVERGENCE (CC1--CC2)
    //RESTE AU DESSUS DES COURS DES COURS
    //
    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

    SI M=0 //Droite 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
    ALORS
    AFFICHER "=========PAS DE DIVERGENCE POTENTIELLE========="
    AFFICHER "===AVEC LES VALEURS ACTUELLES DES PARAMETRES==="
    STOP
    FINSI

    //TRACER LES SEGMENTS DE LA DIVERGENCE POTENTIELLE
    //
    SI DATE_CC1-DATE_CC2<2
    ALORS
    AFFICHER "=============DIVERGENCE POTENTIELLE============"
    AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
    AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
    SINON
    SI CC2>=CC1
    ALORS
    POUR (FINHISTO-P4-DATE_CI2+1) COURS
    SEG_P_I(0)= POINT_I
    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) =POINT_C
    SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK
    FINPOUR
    FINSI
    FINSI
    FINSI</font id="size1">
    ----------------------------------------------

    Les "Propriétés" du programme ci-dessus ainsi que celles des autres programmes sont inchangées.

    Merci pour vos remarques et critiques.

    Commentaire


    • Bonjour,
      Je me suis permis d'utiliser le pgm de Smallcaps90 ci-dessous pour concevoir la version "Divergence négative" DIV_NEG_MACD.
      Seuls changements à opérer dans les propriétés / DIV_POS_MACD:
      courbe3 s'appelle SEG_N_I (au lieu de SEG_P_I)
      courbe4 s'appelle SEG_N_C (au lieu de SEG_P_C)

      pour DIV_NEG_COURS (équivalent de DIV_POS_COURS)
      courbe1 s'appelle SEG_N_COURS (au lieu de SEG_P_COURS)


      Code de DIV_NEG_MACD:
      //DIV_NEG_MACD
      //
      //RECHERCHER LA DIVERGENCE NEGATIVE EVENTUELLE
      //LA PLUS RECENTE ENTRE LES COURS ET LA MACD
      //DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4
      //DU 06/09/2004
      //

      //----------------------------------------------
      //PARAMETRES :
      //
      //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
      //SE TROUVER P4 PERIODES AVANT LA FINHISTO.
      //
      //LE 1ER SOMMET SUR LA MACD DEVRA SE TROUVER
      //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
      //
      //LE 2EME SOMMET SUR LA MACD 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 LA MACD.
      //
      //----------------------------------------------

      //INITIALISATIONS
      //
      COURBE1=MACD
      COURBE2=MMACD
      MAXI=0
      D1=0
      D2=0
      N=0
      M=0

      //SE PLACER P4 PERIODES AVANT FINHISTO
      //POUR COMMENCER LA RECHERCHE
      //

      SI RANGHISTO=FINHISTO-P4
      ALORS

      //CHERCHER UN 1ER SOMMET (SI1) ET SA DATE (DATE_SI1) SUR LA MACD
      //
      I=0
      SI1=MAXI
      TANTQUE I<=P1 FAIRE
      SI MACD(I+1)>0
      ALORS
      SI MACD(I+2)<MACD(I+1) ET MACD(I+1)>MACD(I)
      ALORS
      SI MACD(I+1)>=SI1 ET MACD(I+1)>MMACD(I+1)
      ALORS
      SI1=MACD(I+1)
      DATE_SI1=FINHISTO-P4-(I+1)
      D1=I+1
      I=P1
      FINSI
      FINSI
      FINSI
      I=I+1
      FINTANTQUE

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

      //CHERCHER LE 1ER SOMMET (SC1) ET SA DATE (DATE_SC1)
      //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
      //AVANT LE 1ER SOMMET SUR LA MACD
      //
      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 LE 2EME SOMMET PLUS ANCIEN (SI2)
      //ET SA DATE (DATE_SI2) SUR LA MACD
      //
      J=D1+1
      SI2=SI1
      TANTQUE J<=P2+D1 FAIRE
      SI MACD(J+2)<MACD(J+1) ET MACD(J+1)>MACD(J)
      ALORS
      SI MACD(J+1)>=SI2 ET MACD(J+1)>MMACD(J+1)
      ALORS
      SI2=MACD(J+1)
      DATE_SI2=FINHISTO-P4-(J+1)
      D2=1
      FINSI
      FINSI

      SI D2=1
      ALORS
      //VERIFIER QUE LA DROITE DE DIVERGENCE (SI1-SI2)
      //RESTE AU DESSUS DE LA MACD
      //
      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<MACD
      ALORS
      N=1
      BREAK
      FINSI
      SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
      FINPOUR

      SI N=0
      ALORS
      //CHERCHER LE 2EME SOMMET (SC2) ET SA DATE (DATE_SC2)
      //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
      //AVANT LE 2EME SOMMET SUR LA MACD
      //
      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 possible
      ALORS
      //VERIFIER QUE LA DROITE DE DIVERGENCE (SC1-SC2)
      //RESTE EN DESSOUS DES COURS
      //
      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

      SI M=0 //Droite 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
      ALORS
      AFFICHER "=========PAS DE DIVERGENCE POTENTIELLE========="
      AFFICHER "===AVEC LES VALEURS ACTUELLES DES PARAMETRES==="
      STOP
      FINSI

      //TRACER LES SEGMENTS DE LA DIVERGENCE POTENTIELLE
      //
      SI DATE_SC1-DATE_SC2<2
      ALORS
      AFFICHER "=============DIVERGENCE POTENTIELLE============"
      AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
      AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
      SINON
      SI SC2<=SC1
      ALORS
      POUR (FINHISTO-P4-DATE_SI2+1) COURS
      SEG_N_I(0)= POINT_I
      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) =POINT_C
      SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK
      FINPOUR
      FINSI
      FINSI
      FINSI
      //FIN CODE DIV_NEG_MACD

      ------------------------------------------------------------------
      Code de DIV_NEG_COURS
      //TRACER LE SEGMENT DE LA DIVERGENCE NEGATIVE
      //SUR LES COURS
      //

      SEG_N_COURS=SEG_N_C
      //FIN CODE DIV_NEG_COURS
      ------------------------------------------------------------

      Merci pour vos remarques.
      Cordialement.

      Commentaire


      • Merci pour ton adaptation Syrinx.
        Je viens de vérifier ton listing et je pense que tu as recopié une instruction qui ne sert plus à rien puisqu'elle est déjà présente plus haut, sans pour autant que cela entraîne une erreur rédhibitoire là où elle est recopiée.
        L'instruction barrée en rouge gras ci-dessous est superflue (un effet non désiré du copier/coller sans doute...).

        ----------------------------------------
        <font size="1">..........

        //TRACER LES SEGMENTS DE LA DIVERGENCE POTENTIELLE
        //
        SI DATE_SC1-DATE_SC2<2
        ALORS
        AFFICHER "=============DIVERGENCE POTENTIELLE============"
        AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
        AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
        SINON
        SI SC2<=SC1
        ALORS
        POUR (FINHISTO-P4-DATE_SI2+1) COURS
        SEG_N_I(0)= POINT_I
        SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
        FINPOUR

        <font color="red"><s><b>PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2)</b> </s></font id="red">
        POUR (FINHISTO-P4-DATE_SC2+1) COURS
        SEG_N_C(0) =POINT_C
        SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK
        FINPOUR
        FINSI
        FINSI
        FINSI
        //FIN CODE DIV_NEG_MACD

        </font id="size1">
        ----------------------------------------


        Je profite de ce post pour corriger un petit oubli au niveau du TANTQUE du module de recherche du 2ème sommet (SC2) et de sa date (DATE_SC2) :

        ----------------------------------------
        <font size="1">.............

        SI N=0
        ALORS
        //CHERCHER LE 2EME SOMMET (SC2) ET SA DATE (DATE_SC2)
        //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
        //AVANT LE 2EME SOMMET SUR LA MACD
        //
        SC2=HAUT(FINHISTO-P4-DATE_SI2)
        DATE_SC2=DATE_SI2
        K=FINHISTO-P4-DATE_SI2+1
        TANTQUE K<font color="red"><b><=</b></font id="red">FINHISTO-P4-DATE_SI2+P3 FAIRE
        SI HAUT(K)>=SC2
        ALORS
        SC2=HAUT(K)
        DATE_SC2=FINHISTO-K-P4
        FINSI
        K=K+1
        FINTANTQUE</font id="size1">
        ----------------------------------------

        Il faut en effet transformer le signe "<" qui se trouvait dans le TANTQUE en "<=" pour faire la recherche de SC2 pendant les P3 jours pleins qui précèdent le sommet SI2 sur la MACD.
        La même correction est à faire dans le programme de la règle indicateur "DIV_POS_MACD".

        Deux petits exemples d'application des règles "DIV_NEG_MACD" et "DIV_NEG_COURS" pour terminer :

        Pour Beneteau, divergence négative détectée avec les valeurs P1=25, P2=50, P3=4 et P4=0 :

        <center><img src='http://upload.pro-at.com/200409/beneteau.gif' alt='' /></center>

        Pour Thomson, divergence négative détectée avec les valeurs P1=10, P2=50, P3=3 et P4=5 :


        <center><img src='http://upload.pro-at.com/200409/thomson.gif' alt='' /></center>

        A suivre : la règle statistique "VAL_CONF_DIV_NEG"...

        Bonne soirée.

        Commentaire


        • Bonjour,

          Voici les versions définitives des programmes des règles indicateurs et statistiques :

          DIV_POS_MACD : détecte et trace la droite de la divergence positive la plus récente sur l'indicateur,
          DIV_POS_COURS : trace la droite de la divergence sur les cours,

          DIV_NEG_MACD et DIV_NEG_COURS : idem pour la divergence négative la plus récente,

          VAL_CONF_DIV_POS : statistique associée à DIV_POS_MACD,
          VAL_CONF_DIV_NEG : statistique associée à DIV_NEG_MACD.


          <b>DIVERGENCES POSITIVES :</b>
          -----------------------------
          <font size="1">//<b>DIV_POS_MACD</b>
          //
          //RECHERCHER LA DIVERGENCE POSITIVE EVENTUELLE
          //LA PLUS RECENTE ENTRE LES COURS ET LA MACD
          //DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4
          //V 3.2 du 08/09/2004
          //

          //----------------------------------------------
          //PARAMETRES :
          //
          //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
          //SE TROUVER P4 PERIODES AVANT LA FINHISTO.
          //
          //LE 1ER CREUX SUR LA MACD DEVRA SE TROUVER
          //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
          //
          //LE 2EME CREUX SUR LA MACD 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 LA MACD.
          //
          //P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES
          //PRESENTENT DES INTERSECTIONS AVEC LES COURS
          //ET/OU LA MACD.
          //P5=1 NE LES ACCEPTE PAS.
          //----------------------------------------------

          //INITIALISATIONS
          //
          COURBE1=MACD
          COURBE2=MMACD
          MINI=1000

          //SE PLACER P4 PERIODES AVANT FINHISTO
          //POUR EFFECTUER LA RECHERCHE
          //
          SI RANGHISTO=FINHISTO-P4
          ALORS

          //CHERCHER UN 1ER CREUX (CI1) ET SA DATE (DATE_CI1) SUR LA MACD
          //
          I=0
          CI1=MINI
          TANTQUE I<=P1 FAIRE
          SI MACD(I+1)<0
          ALORS
          SI MACD(I+2)>MACD(I+1) ET MACD(I+1)<MACD(I)
          ALORS
          SI MACD(I+1)<=CI1 ET MACD(I+1)<MMACD(I+1)
          ALORS
          CI1=MACD(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 LA MACD========="
          AFFICHER "===============MODIFIEZ P1 ET/OU P4 ================="
          STOP
          FINSI

          //CHERCHER LE 1ER CREUX (CC1) ET SA DATE (DATE_CC1)
          //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
          //AVANT LE 1ER CREUX SUR LA MACD
          //
          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 2EME CREUX PLUS ANCIEN (CI2)
          //ET SA DATE (DATE_CI2) SUR LA MACD
          //
          J=D1+1
          CI2=CI1
          TANTQUE J<=P2+D1 FAIRE
          SI MACD(J+2)>MACD(J+1) ET MACD(J+1)<MACD(J)
          ALORS
          SI MACD(J+1)<=CI2 ET MACD(J+1)<MMACD(J+1)
          ALORS
          CI2=MACD(J+1)
          DATE_CI2=FINHISTO-P4-(J+1)
          D2=1
          //VERIFIER QUE LA MACD NE RESTE PAS TOUJOURS<MMACD
          //ENTRE CI1 ET CI2
          POUR FINHISTO-P4+1-DATE_CI2 COURS
          SI MACD>MMACD
          ALORS
          R=1 //La MACD croise son signal entre CC1 etCC2
          BREAK
          FINSI
          SI RANGPOUR>DATE_CI1-DATE_CI2 ALORS BREAK
          FINPOUR
          FINSI
          FINSI

          SI D2=1 ET R=1 //On a un creux CI2 possible
          ALORS
          //VERIFIER QUE LA DROITE DE DIVERGENCE (CI1--CI2)
          //RESTE EN DESSOUS DE LA MACD
          //
          SI P5=1
          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>MACD
          ALORS
          N=1
          BREAK
          FINSI
          SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK
          FINPOUR
          FINSI

          SI N=0 //Droite CC1--CC2 correcte
          ALORS
          //CHERCHER LE 2EME CREUX (CC2) ET SA DATE (DATE_CC2)
          //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
          //AVANT LE 2EME CREUX SUR LA MACD
          //
          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 //Creux CC2 possible
          ALORS
          //VERIFIER QUE LA DROITE DE DIVERGENCE (CC1--CC2)
          //RESTE AU DESSUS DES COURS DES COURS
          //
          SI P5=1
          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 CC1--CC2 correcte
          ALORS
          J=P2+D1+1
          SINON
          D2=0
          R=0
          FINSI
          SINON
          D2=0
          R=0
          FINSI
          SINON
          D2=0
          R=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 LA MACD ET LES COURS=="
          AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2=============="
          STOP
          FINSI

          //DETERMINER LES POINTS DES SEGMENTS DE LA DIVERGENCE POTENTIELLE
          //
          SI DATE_CC1-DATE_CC2<2 //La valeur peut être modifiée
          ALORS
          AFFICHER "=============DIVERGENCE POTENTIELLE============"
          AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
          AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
          SINON
          SI CC2>=CC1
          ALORS
          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

          FINSI</font id="size1">
          -----------------------------

          <b>Règle indicateur dérivée :</b>
          -----------------------------
          <font size="1">//<b>DIV_POS_COURS</b>
          //
          //TRACER LE SEGMENT DE LA DIVERGENCE POSITIVE
          //SUR LES COURS
          //

          SEG_P_COURS=SEG_P_C</font id="size1">
          -----------------------------

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

          <center><img src='http://images.pro-at.com/200409/b/prop_div_pos.gif' alt='' /></center>

          <center><img src='http://images.pro-at.com/200409/b/prop_div_pos_2.gif' alt='' /></center>

          <b>Règle statistique :</b>
          -----------------------------
          <font size="1">//<b>VAL_CONF_DIV_POS</b>
          //
          //STATISTIQUE DE VALIDATION/CONFIRMATION
          //DES DIVERGENCES POSITIVES POTENTIELLES
          //DETECTEES PAR LE PROGRAMME : DIV_POS_MACD
          //V2.0 du 06/09/2004
          //

          //--------------------------------------------------------------
          //PARAMETRES A DEFINIR CI-DESSOUS
          //
          //EI : SEUIL RELATIF MINI DES ECARTS ENTRE CREUX SUR LA MACD
          //EC : SEUIL RELATIF MINI DES ECARTS ENTRE CREUX SUR LES COURS
          //EM : SEUIL RELATIF MINI DES ECARTS ENTRE MACD ET MMACD
          //
          //CHOIX=1 : SELECTIONNE LES DIVERGENCES POSITIVES POTENTIELLES
          // CE SONT CELLES QUI SONT DETECTEES PAR "DIV_POS_MACD".
          //
          //CHOIX=2 : SELECTIONNE LES DIVERGENCES POSITIVES VALIDEES
          // CE SONT LES DIVERGENCES POSITIVES POTENTIELLES
          // QUI RESPECTENT LES ECARTS IMPOSES : EI, EC, EM.
          //
          //CHOIX=3 : SELECTIONNE LES DIVERGENCES POSITIVES CONFIRMEES
          // CE SONT LES DIVERGENCES POSITIVES POTENTIELLES
          // VALIDEES DONT LA MACD VIENT DE CROISER SON SIGNAL
          // A LA HAUSSE.
          //--------------------------------------------------------------

          EI=0.01
          EC=0.01
          EM=0.01
          CHOIX = 3

          POUR 100 COURS //LE NB DE BOUCLES DOIT ETRE>=P1+P2+P4

          //RECUPERER LE CREUX LE PLUS RECENT SUR LA MACD
          //RECUPERER LA MACD ET SON SIGNAL EN CE CREUX
          //
          SI DIV_POS_MACD.SEG_P_I(1)<>0 ET DIV_POS_MACD.SEG_P_I=0
          ALORS
          C1_INDIC=DIV_POS_MACD.SEG_P_I(1)
          MACD_C1=DIV_POS_MACD.COURBE1(1)
          MMACD_C1=DIV_POS_MACD.COURBE2(1)
          FINSI

          //RECUPERER LE CREUX LE PLUS RECENT SUR LES COURS
          //
          SI DIV_POS_MACD.SEG_P_C(1)<>0 ET DIV_POS_MACD.SEG_P_C=0
          ALORS
          C1_COURS=DIV_POS_MACD.SEG_P_C(1)
          FINSI

          //RECUPERER LE CREUX LE PLUS ANCIEN SUR LA MACD
          //
          SI DIV_POS_MACD.SEG_P_I(1)=0 ET DIV_POS_MACD.SEG_P_I<>0
          ALORS
          C2_INDIC=DIV_POS_MACD.SEG_P_I
          FINSI

          //RECUPERER LE CREUX LE PLUS ANCIEN SUR LES COURS
          //
          SI DIV_POS_MACD.SEG_P_C(1)=0 ET DIV_POS_MACD.SEG_P_C<>0
          ALORS
          C2_COURS=DIV_POS_MACD.SEG_P_C
          FINSI


          //CHERCHER LES DIVERGENCES POSITIVES POTENTIELLES EVENTUELLES
          //
          SI C1_INDIC<>0 ET C1_COURS<>0 ET C2_INDIC<>0 ET C2_COURS<>0
          ALORS

          SI CHOIX = 1
          ALORS
          COLONNE1 = "DIV POSITIVE POTENTIELLE SUR :"
          VARSELECT = 1
          BREAK
          FINSI

          //SELECTIONNER LES DIVERGENCES POSITIVES VALIDEES
          //
          SI ((C2_INDIC-C1_INDIC)/C2_INDIC)>=EI ET ((C2_COURS-C1_COURS)/C2_COURS)>=EC
          ALORS
          SI ((MACD_C1-MMACD_C1)/MACD_C1)>=EM
          ALORS
          SI CHOIX = 2
          ALORS
          COLONNE1 = "DIV POSITIVE VALIDEE SUR :"
          VARSELECT = 1
          BREAK
          FINSI

          //SELECTIONNER LES DIVERGENCES POSITIVES CONFIRMEES
          //
          SI CROISE(MACD,MMACD)>0
          ALORS
          SI CHOIX = 3
          ALORS
          COLONNE1 = "DIV POSITIVE CONFIRMEE LE " & DATEHISTO$ & " SUR :"
          VARSELECT = 1
          FINSI
          FINSI
          FINSI
          FINSI
          FINSI
          FINPOUR

          SI VARSELECT=1
          ALORS
          SELECTION
          FINSI</font id="size1">
          -----------------------------

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

          <center><img src='http://images.pro-at.com/200409/b/prop_stat_pos.gif' alt='' /></center>


          <b>DIVERGENCES NEGATIVES </b>:

          -----------------------------
          <font size="1">//<b>DIV_NEG_MACD</b>
          //
          //RECHERCHER LA DIVERGENCE NEGATIVE EVENTUELLE
          //LA PLUS RECENTE ENTRE LES COURS ET LA MACD
          //DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4
          //V3.2 du 08/09/2004
          //

          //----------------------------------------------
          //PARAMETRES :
          //
          //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
          //SE TROUVER P4 PERIODES AVANT LA FINHISTO.
          //
          //LE 1ER SOMMET SUR LA MACD DEVRA SE TROUVER
          //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
          //
          //LE 2EME SOMMET SUR LA MACD 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 LA MACD.
          //
          //P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES
          //PRESENTENT DES INTERSECTIONS AVEC LES COURS
          //ET/OU LA MACD.
          //P5=1 NE LES ACCEPTE PAS.
          //----------------------------------------------

          //INITIALISATIONS
          //
          COURBE1=MACD
          COURBE2=MMACD
          MAXI=0

          //SE PLACER P4 PERIODES AVANT FINHISTO
          //POUR EFFECTUER LA RECHERCHE
          //
          SI RANGHISTO=FINHISTO-P4
          ALORS

          //CHERCHER UN 1ER SOMMET (SI1) ET SA DATE (DATE_SI1) SUR LA MACD
          //
          I=0
          SI1=MAXI
          TANTQUE I<=P1 FAIRE
          SI MACD(I+1)>0
          ALORS
          SI MACD(I+2)<MACD(I+1) ET MACD(I+1)>MACD(I)
          ALORS
          SI MACD(I+1)>=SI1 ET MACD(I+1)>MMACD(I+1)
          ALORS
          SI1=MACD(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 LA MACD========="
          AFFICHER "===============MODIFIEZ P1 ET/OU P4 ================="
          STOP
          FINSI

          //CHERCHER LE 1ER SOMMET (SC1) ET SA DATE (DATE_SC1)
          //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
          //AVANT LE 1ER SOMMET SUR LA MACD
          //
          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 2EME SOMMET PLUS ANCIEN (SI2)
          //ET SA DATE (DATE_SI2) SUR LA MACD
          //
          J=D1+1
          SI2=SI1
          TANTQUE J<=P2+D1 FAIRE
          SI MACD(J+2)<MACD(J+1) ET MACD(J+1)>MACD(J)
          ALORS
          SI MACD(J+1)>=SI2 ET MACD(J+1)>MMACD(J+1)
          ALORS
          SI2=MACD(J+1)
          DATE_SI2=FINHISTO-P4-(J+1)
          D2=1

          POUR FINHISTO-P4+1-DATE_SI2 COURS //Vérifier position MACD/MMACD
          SI MACD<MMACD
          ALORS
          R=1 //La MACD croise son signal entre SI1 et SI2
          BREAK
          FINSI
          SI RANGPOUR>DATE_SI1-DATE_SI2 ALORS BREAK
          FINPOUR

          FINSI
          FINSI

          SI D2=1 ET R=1 //On a un sommet SI2 possible
          ALORS

          //VERIFIER QUE LA DROITE DE DIVERGENCE (SI1-SI2)
          //RESTE AU DESSUS DE LA MACD
          //
          SI P5=1
          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<MACD
          ALORS
          N=1
          BREAK
          FINSI
          SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
          FINPOUR
          FINSI

          SI N=0 //Droite SI1--SI2 correcte
          ALORS
          //CHERCHER LE 2EME SOMMET (SC2) ET SA DATE (DATE_SC2)
          //SUR LES COURS AVEC UNE TOLERANCE DE P3 PERIODES
          //AVANT LE 2EME SOMMET SUR LA MACD
          //
          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 sommet possible
          ALORS
          //VERIFIER QUE LA DROITE DE DIVERGENCE (SC1-SC2)
          //RESTE EN DESSOUS DES COURS
          //
          SI P5=1
          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 SC1--SC2 correcte
          ALORS
          J=P2+D1+1
          SINON
          D2=0
          R=0
          FINSI
          SINON
          D2=0
          R=0
          FINSI
          SINON
          D2=0
          R=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 LA MACD ET LES COURS=="
          AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2=============="
          STOP
          FINSI

          //DETERMINER LES POINTS DES SEGMENTS DE LA DIVERGENCE POTENTIELLE
          //
          SI DATE_SC1-DATE_SC2<2 //La valeur 2 peut-être modifiée
          ALORS
          AFFICHER "=============DIVERGENCE POTENTIELLE============"
          AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
          AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
          SINON
          SI SC2<=SC1
          ALORS
          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

          FINSI</font id="size1">
          -----------------------------

          <b>Règle dérivée :</b>
          -----------------------------
          <font size="1">//<b>DIV_NEG_COURS</b>
          //
          //TRACER LE SEGMENT DE LA DIVERGENCE NEGATIVE
          //SUR LES COURS
          //

          SEG_N_COURS=SEG_N_C</font id="size1">
          -----------------------------

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

          <center><img src='http://images.pro-at.com/200409/b/prop_div_neg.gif' alt='' /></center>

          <center><img src='http://images.pro-at.com/200409/b/prop_div_neg_2.gif' alt='' /></center>

          <b>Règle statistique :</b>
          -----------------------------
          <font size="1">//<b>VAL_CONF_DIV_NEG</b>
          //
          //STATISTIQUE DE VALIDATION/CONFIRMATION
          //DES DIVERGENCES NEGATIVES POTENTIELLES
          //DETECTEES PAR LE PROGRAMME : DIV_NEG_MACD
          //V2.0 du 06/09/2004
          //

          //--------------------------------------------------------------
          //PARAMETRES A DEFINIR CI-DESSOUS
          //
          //EI : SEUIL RELATIF MINI DES ECARTS ENTRE SOMMETS SUR LA MACD
          //EC : SEUIL RELATIF MINI DES ECARTS ENTRE SOMMETS SUR LES COURS
          //EM : SEUIL RELATIF MINI DES ECARTS ENTRE MACD ET MMACD
          //
          //CHOIX=1 : SELECTIONNE LES DIVERGENCES NEGATIVES POTENTIELLES
          // CE SONT CELLES QUI SONT DETECTEES PAR "DIV_NEG_MACD".
          //
          //CHOIX=2 : SELECTIONNE LES DIVERGENCES POSITIVES VALIDEES
          // CE SONT LES DIVERGENCES NEGATIVES POTENTIELLES
          // QUI RESPECTENT LES ECARTS IMPOSES : EI, EC, EM.
          //
          //CHOIX=3 : SELECTIONNE LES DIVERGENCES NEGATIVES CONFIRMEES
          // CE SONT LES DIVERGENCES NEGATIVES POTENTIELLES
          // VALIDEES DONT LA MACD VIENT DE CROISER SON SIGNAL
          // A LA BAISSE.
          //--------------------------------------------------------------

          EI=0.01
          EC=0.01
          EM=0.01
          CHOIX = 3

          POUR 100 COURS //LE NB DE BOUCLES DOIT ETRE>=P1+P2+P4

          //RECUPERER LE SOMMET LE PLUS RECENT SUR LA MACD
          //RECUPERER LA MACD ET SON SIGNAL EN CE SOMMET
          //
          SI DIV_NEG_MACD.SEG_N_I(1)<>0 ET DIV_NEG_MACD.SEG_N_I=0
          ALORS
          S1_INDIC=DIV_NEG_MACD.SEG_N_I(1)
          MACD_S1=DIV_NEG_MACD.COURBE1(1)
          MMACD_S1=DIV_NEG_MACD.COURBE2(1)
          FINSI

          //RECUPERER LE SOMMET LE PLUS RECENT SUR LES COURS
          //
          SI DIV_NEG_MACD.SEG_N_C(1)<>0 ET DIV_NEG_MACD.SEG_N_C=0
          ALORS
          S1_COURS=DIV_NEG_MACD.SEG_N_C(1)
          FINSI

          //RECUPERER LE SOMMET LE PLUS ANCIEN SUR LA MACD
          //
          SI DIV_NEG_MACD.SEG_N_I(1)=0 ET DIV_NEG_MACD.SEG_N_I<>0
          ALORS
          S2_INDIC=DIV_NEG_MACD.SEG_N_I
          FINSI

          //RECUPERER LE SOMMET LE PLUS ANCIEN SUR LES COURS
          //
          SI DIV_NEG_MACD.SEG_N_C(1)=0 ET DIV_NEG_MACD.SEG_N_C<>0
          ALORS
          S2_COURS=DIV_NEG_MACD.SEG_N_C
          FINSI


          //CHERCHER LES DIVERGENCES NEGATIVES POTENTIELLES EVENTUELLES
          //
          SI S1_INDIC<>0 ET S1_COURS<>0 ET S2_INDIC<>0 ET S2_COURS<>0
          ALORS

          SI CHOIX = 1
          ALORS
          COLONNE1 = "DIV NEGATIVE POTENTIELLE SUR :"
          VARSELECT = 1
          BREAK
          FINSI

          //SELECTIONNER LES DIVERGENCES NEGATIVES VALIDEES
          //
          SI ((S2_INDIC-S1_INDIC)/S2_INDIC)>=EI ET ((S1_COURS-S2_COURS)/S1_COURS)>=EC
          ALORS
          SI ((MACD_S1-MMACD_S1)/MACD_S1)>=EM
          ALORS
          SI CHOIX = 2
          ALORS
          COLONNE1 = "DIV NEGATIVE VALIDEE SUR :"
          VARSELECT = 1
          BREAK
          FINSI

          //SELECTIONNER LES DIVERGENCES NEGATIVES CONFIRMEES
          //
          SI CROISE(MACD,MMACD)<0
          ALORS
          SI CHOIX = 3
          ALORS
          COLONNE1 = "DIV NEGATIVE CONFIRMEE LE " & DATEHISTO$ & " SUR :"
          VARSELECT = 1
          FINSI
          FINSI
          FINSI
          FINSI
          FINSI
          FINPOUR

          SI VARSELECT=1
          ALORS
          SELECTION
          FINSI</font id="size1">
          -----------------------------

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

          <center><img src='http://images.pro-at.com/200409/b/prop_stat_neg.gif' alt='' /></center>


          Les versions présentées permettent dorénavant de sélectionner ou non les droites des divergences qui présentent des intersections avec la MACD et/ou les cours (voir paramètre P5).

          En choisissant des valeurs nulles pour EI ou (exclusif) pour EC dans les règles statistiques, il est possible de sélectionner des divergences dont la droite est horizontale sur la MACD ou (exclusif) sur les cours.

          Le nombre de boucles POUR effectuées dans les règles statistiques est fixé à 100 dans chaque programme. Cette valeur doit être adaptée (>) à celles des paramètres P1, P2, P4 des règles indicateurs.

          Merci pour vos remarques.

          Commentaire


          • <br />Merci SMALLCAPS et aussi à JEFF, pour ce travail,

            vous nous avez fait un beau joujou.

            Dire qu'il reste encore le STOCH et le RSI <img src='http://www.pro-at.com/style/images/icones/icon_smile_tongue.gif' border='0' alt='' title='' align='middle' /> !!

            FOKI

            Commentaire


            • Bonjour FOKI,

              Je dois dire que tu as aussi ta part dans la réussite du projet. Merci pour ta collaboration si active et tes nombreux messages privés d'alarme quand cela s'est avèré nécessaire.

              Pour ce qui concerne les divergences cours/RSI et cours/STOCH cela ne devrait pas être très compliqué à mettre en place.
              Je lance le débat sur une question que je me pose : nous limiterons-nous aux divergences qui ont lieu en période de surachat/survente? Et si oui, que retiendrons-nous comme valeurs pour ces niveaux? Je pense qu'ils dépendent des valeurs des paramètres de calcul des indicateurs...

              Commentaire


              • <br />Bonjour Smallcaps,

                Je te donne mon Point de vue :

                Sur le Stoch :
                Je ne pense pas qu'il faille introduire les niveaux de SA ou SV (que personnellement je positionne à 80 et 20).
                Dans un premier temps je partirai sur la base du dernier prog de la MACD + stat tel qu'ils sont actuellement. Puis, avec une rapide étude des divergences de stoch détectées, on devrait rapidement qualifier l'introduction de cette notion de SA et SV dans le système.
                Si cela pose problème d'introduire après coup cette notion dans le prog ... c'est à toi de voir sur ce point, mais je suis d'avis de partir large pour optimiser ... ensuite ... mais après une petite étude.

                J'ai bien conscience que ce mode de développement te donne beaucoup de travail ...<img src='http://www.pro-at.com/style/images/icones/icon_smile_blush.gif' border='0' alt='' title='' align='middle' />

                Sur le RSI :
                Je n'utilise pas cet indicateur !!

                FOKI


                Commentaire


                • Une petite pause dans la recherche de divergences...

                  Pour Smallcaps, ce serait très sympa si tu pouvais m'aider à convertir ce code en GraphAt, avec un grand merci bien évidemment ...

                  Il s'agit de <b>l'indicateur Aroon</b>

                  <u>Description</u>
                  L'indicateur d'Aroon a été développé par Tushar Chande. Aroon est un nom qui en Sanskrit veut dire "premières lueurs de l’aurore" ou le passage de la nuit au jour.
                  Ces changements de nature de l’action des prix sont anticipés en mesurant le nombre d’unités de temps qui se sont écoulées depuis le plus récent plus-haut à x unités de temps ou plus-bas à x unités de temps. Par conséquent , l’indicateur d’Aroon est constitué de deux courbes ; <b>Aroon Up </b> mesurant le nombre d’unités de temps écoulées depuis le plus-haut à x unités de temps le plus récent et <b>Aroon Down </b> mesurant le nombre d’unités de temps écoulées depuis le plus-bas à x unités de temps le plus récent.

                  <u>Interprétation</u>
                  <b>1) </b>L'indicateur balaye un range allant de 0 à 100. Si nous prenons l'hypothèse d'un intervalle de temps choisi par défaut de 14 jours, quand une valeur marque un nouveau plus haut sur 14 jours, l'Aroon Up sera égal à 100 ; quand la valeur marque un plus bas de 14 jours, l'Aroon Down sera égal à 100. Quand une valeur n'a pas fait de nouveau plus haut en 14 jours, son Aroon Up sera égal à 0 ; quand une valeur n'a pas fait un nouveau plus bas en 14 jours, son Aroon Down sera égal à 0. <b>L'indicateur aide donc à déterminer le type d'évolution des cours et définir s'il faut utiliser des indicateurs de suivi de tendance ou des indicateurs de surachat/survente.</b><b>

                  2) </b>Une forte tendance haussière est indiquée quand la ligne de Aaron Up reste constamment entre 70 et 100 tandis que la ligne de Aaron Down reste constamment entre 0 et 30. De même, une forte tendance baissière est indiquée quand la ligne de Aaron Down reste constamment entre 70 et 100 tandis que la ligne de Aaron up reste constamment entre 0 et 30.

                  <u>Formule :</u>
                  AroonUp = 100 * (Period - PeriodHigh) / Period
                  PeriodHigh = Number of bars since highest high of the Period
                  AroonDown = 100 * (Period - PeriodLow) / Period
                  PeriodLow = Number of bars since lowest low of the Period

                  Ou encore :

                  Period = 30;
                  LLVBarsSince = LLVBars(L, Period) + 1;
                  HHVBarsSince = HHVBars(H, Period) + 1;

                  Aroon_Down = 100 * (Period - LLVBarsSince) / (Period - 1);
                  Aroon_Up = 100 * (Period - HHVBarsSince) / (Period - 1);


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

                  Commentaire


                  • Bonjour,

                    Un exemple de programmation pourrait être:
                    (ATTENTION: CODE ERRONNÉ)
                    // P1= periode
                    si bas=min(bas, P1) alors
                    PBAS = ranghisto
                    finsi

                    si haut=max(haut, P1) alors
                    PHAUT = ranghisto
                    finsi

                    AROON_DN = 100 * (P1 - minval(Ranghistoregle - PBAS, P1)) / P1
                    AROON_UP = 100 * (P1 - minval(Ranghistoregle - PHAUT, P1)) / P1

                    avec la fenêtre de propriétés:
                    <center><img src='http://images.pro-at.com/200409/b/aroon_prop.png' alt='' /></center>

                    et le résultat sur le même titre, même période
                    <center><img src='http://images.pro-at.com/200409/b/sr_teleperformance.gif' alt='' /></center>


                    La différence entre la courbe de pwaget et la mienne s'explique par un ajout de règles à celles décrites dans le texte.
                    En effet, en nov-dec , il n'y a pas de plus bas à 30j, donc la courbe rouge ne peut pas avoir une autre valeur que 0. Manifestement, ce n'est pas le cas, donc d'autres règles doivent exister.

                    Cordialement,
                    RickenBroc<b></b><b></b><b></b><b></b><b></b><b></b><b></b><i></i>

                    Commentaire


                    • Bonsoir Pwaget,

                      Merci pour cette pause obligée...
                      Voici une solution qui marche je pense.
                      Je n'ai pas encore eu le temps d'analyser la solution proposée par RickenBroc.

                      <b>Programme :</b>
                      ------------------------------------------
                      <pre>
                      //INDICATEUR DE AROON
                      //V2.0 (correction 02/11/04)
                      //

                      //RAZ à chaque période
                      //
                      NB_UP=0
                      NB_DOWN=0
                      PLUS_HAUT=0
                      PLUS_BAS=1000000

                      //Recherche des nb de jours écoulés depuis
                      //le plus haut et le plus bas les plus récents
                      //
                      POUR P1+1 COURS
                      SI HAUT>PLUS_HAUT
                      ALORS
                      PLUS_HAUT=HAUT
                      NB_UP=P1-RANGPOUR+1
                      FINSI
                      SI BAS<PLUS_BAS
                      ALORS
                      PLUS_BAS=BAS
                      NB_DOWN=P1-RANGPOUR+1
                      FINSI
                      FINPOUR

                      //Calcul des courbes
                      //
                      AROON_UP=100*(P1-NB_UP)/P1
                      AROON_DOWN=100*(P1-NB_DOWN)/P1

                      //Limites intéressantes
                      //
                      L30=30
                      L70=70
                      </pre>
                      ------------------------------------------

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

                      <center><img src='http://images.pro-at.com/200409/b/prop_aroon.gif' alt='' /></center>


                      Un autre indicateur peut aussi être intéressant : je veux parler de l'oscillateur obtenu en faisant la différence : AROON-UP-AROON_DOWN à chaque période.
                      Je l'ai créé comme indicateur dérivé du précédent. Pas de problème avec son programme, ni avec ses Propriétés.

                      Pour "SR Teleperformance" que tu avais choisi comme exemple, et P1=30 périodes, cela donne pour la même fenêtre temporelle :

                      <center><img src='http://images.pro-at.com/200411/b/aroon1.gif' alt='' /></center>

                      Bien amicalement.

                      Commentaire


                      • Bonsoir FOKI,

                        Merci pour ta réponse.
                        Je ne pense pas qu'introduire dès le départ les niveaux de surachat et de survente pose beaucoup de problème.

                        On pourrait même envisager que le programme offre plusieurs variantes sans que cela complique vraiment les choses :
                        - imposer par exemple aux deux creux (ou aux deux sommets) de la droite de divergence sur l'indicateur d'être situés dans ces zones,
                        - ou encore tolérer que l'un des deux seulement s'y trouve,
                        - ou enfin admettre qu'aucun des deux n'y soit.
                        C'est uniquement une question de ">" ou de "<".

                        Bon week-end.

                        Commentaire


                        • Je viens de regarder le programme de SmallCaps90.
                          Il est juste; le mien non. Ou plutôt, j'ai fait un non sens.
                          J'ai interpréré le dernier cours connu comme devant être le plus haut(/bas).
                          Alors qu'il faut comprendre le temps écoulé depuis le cours le plus haut(/bas) pendant la période observée.

                          Désolé.

                          Je laisse quand même mon code à des fins didactiques, je vais juste préciser qu'il est erronné.

                          Sinon quelqu'un peut me dire quels sont les changements de la V3.07a par rapport à la V3.07 (à part un exemple zigzag qui a généré un doublon avec mon indicateur du même nom...)
                          Le fichier upgrade.txt ne dit rien là-dessus.

                          Cordialement,
                          RickenBroc

                          Commentaire


                          • Pouvez-vous regarder ici :
                            <a href='/ref.php?uri=http%3A%2F%2Fwww.pro-at.com%2Ffrm%2Ftopic.asp%3FTOPIC_ID%3D13361%26whichpage%3D1' target="_blank">http://www.pro-at.com/frm/topic.asp?TOPIC_ID=13361...</a>

                            Le Sto GrapheAT pro, même correctement configuré, ne donne pas les mêmes rsultats que celui utilisé en analyse dynamique.

                            Erico me confirme qu'il est programmé différemment.

                            Y a-t-il un moyen de définir le bon paramétrage ?

                            Merci,

                            Commentaire


                            • bonjour, peut on afficher le jour de la semaine de façon automatique sur les graphes (en dessous ou au dessus des bougies).
                              L pour lundi
                              Ma pour mardi etc...
                              l'intéret (à vérifier par une éventuelle statistique) est le suivant: je pars de l'hypothèse qu'en trend haussier, le vendredi est rouge (les traders ne voulant rester en pose le WE) et en trend baissier, le vendredi( ou veille de jours fermés) est positif (les shorteurs rachetant leur pose la veille du WE.
                              Ceci ayant pour corrolaire de confirmer un éventuel trend.
                              Merci

                              Commentaire


                              • Bonsoir Philippulus,

                                Problème récurrent, çà me rappelle celui du Parabolique...
                                Il suffirait que nos amis utilisateurs de ProReal Time nous communiquent la formule du STOCH qu'ils utilisent et nous pourrons la programmer sur GrapheAT Pro. Je suppose qu'ils la connaissent.
                                A suivre...

                                Commentaire

                                Chargement...
                                X