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.
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