smallcaps90 ![]() (1022 msg)
Bonjour Jeff_X,
Merci pour ta très intéressante étude du marché de Toronto. Les rendements que tu obtiens sont tout à fait prometteurs et montrent encore une fois tout l'intérêt qu'il y a à s'intéresser aux divergences même si elles ne constituent qu'un outil parmi d'autres dans la palette d'outils que nous avons à notre disposition pour décider de prendre position ou non. La 1ère version prototype du programme que tu as utilisée introduisait il est vrai un nombre d'erreurs trop important. La dernière version (pas encore en ligne) intègre davantage de contrôles sur la "pureté" des divergences détectées, si je puis dire. Elle devrait être plus fiable, bien que restant encore un produit perfectible. FOKI vient de la tester, elle semble OK. Encore un petit coup de peigne à donner aux différents messages que le programme émet pour l'utilisateur et elle sera prête. Je voudrais encore insister sur le point qui me paraît primordial à bien comprendre puisqu'il a orienté nos recherches et que certains de nos amis on peut-être perdu de vue : des valeurs choisies pour les paramètres P1, P2, P3 et P4 vont dépendre les résultats obtenus. C'est ainsi. Nous ne faisons pas de détection entièrement automatique de toutes les divergences qui sont apparues dans une fenêtre temporelle donnée. Nous ne détectons pour l'instant sur une action donnée que la divergence éventuelle, la plus récente, compte tenu des valeurs des 4 paramètres P1 à P4. Je pense qu'avant d'envisager une détection purement automatique il est plus utile de traiter les divergences cours/RSI et cours/STOCH. Bonne fin de semaine.
smallcaps90 ![]() (1022 msg)
Pour Aiglon,
Il n'y a pas d'astuce, VAL_CONF_DIV_NEG n'est pas encore écrit mais cela ne devrait pas poser de problème. Dès que VAL_CONF_DIV_POS sera finalisé, l'autre le sera aussi. Pour ce qui concerne ta question au sujet d'une règle statistique utilisant les Bandes de Bollinger, dis-moi de quoi il s'agit précisément et j'essaierai de t'aider. Pour Leo_s, Merci pour tes encouragements. Le programme tel qu'il est conçu pour l'instant ne peut pas utiliser le MACD Histo. Il faudra le réécrire pour ce faire. Bon week-end à vous.
édité le : 04-09-2004 12:30:45
smallcaps90 ![]() (1022 msg)
Bonjour,
Voici la dernière version du programme de la règle indicateur "DIV_POS_MACD". 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". ---------------------------------------------- //DIV_POS_MACD // //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 ---------------------------------------------- Les "Propriétés" du programme ci-dessus ainsi que celles des autres programmes sont inchangées. Merci pour vos remarques et critiques.
édité le : 06-09-2004 15:45:46
syrinx ![]() (22 msg)
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.
smallcaps90 ![]() (1022 msg)
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...). ---------------------------------------- .......... //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 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 ---------------------------------------- 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) : ---------------------------------------- ............. 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 ---------------------------------------- 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 : ![]() Pour Thomson, divergence négative détectée avec les valeurs P1=10, P2=50, P3=3 et P4=5 : ![]() A suivre : la règle statistique "VAL_CONF_DIV_NEG"... Bonne soirée.
smallcaps90 ![]() (1022 msg)
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. DIVERGENCES POSITIVES : ----------------------------- //DIV_POS_MACD // //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 ----------------------------- Règle indicateur dérivée : ----------------------------- //DIV_POS_COURS // //TRACER LE SEGMENT DE LA DIVERGENCE POSITIVE //SUR LES COURS // SEG_P_COURS=SEG_P_C ----------------------------- Propriétés : ![]() ![]() Règle statistique : ----------------------------- //VAL_CONF_DIV_POS // //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 ----------------------------- Propriétés : ![]() DIVERGENCES NEGATIVES : ----------------------------- //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 //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 ----------------------------- Règle dérivée : ----------------------------- //DIV_NEG_COURS // //TRACER LE SEGMENT DE LA DIVERGENCE NEGATIVE //SUR LES COURS // SEG_N_COURS=SEG_N_C ----------------------------- Propriétés : ![]() ![]() Règle statistique : ----------------------------- //VAL_CONF_DIV_NEG // //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 ----------------------------- Propriétés : ![]() 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.
édité le : 09-09-2004 11:09:53
FOKI ![]() (2011 msg) FOKI' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
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 ![]() FOKI
Laisser au marché, nous donner la direction...
smallcaps90 ![]() (1022 msg)
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...
FOKI ![]() (2011 msg) FOKI' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
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 ... ![]() Sur le RSI : Je n'utilise pas cet indicateur !! FOKI
Laisser au marché, nous donner la direction...
pwaget ![]() (534 msg) pwaget' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
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 l'indicateur Aroon Description 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 ; Aroon Up mesurant le nombre d’unités de temps écoulées depuis le plus-haut à x unités de temps le plus récent et Aroon Down mesurant le nombre d’unités de temps écoulées depuis le plus-bas à x unités de temps le plus récent. Interprétation 1) 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. 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. 2) 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. Formule : 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); ![]()
RickenBroc ![]() (88 msg)
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: ![]() et le résultat sur le même titre, même période ![]() 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
édité le : 10-09-2004 22:37:46et puis il y eu le Big Bang...
smallcaps90 ![]() (1022 msg)
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. Programme : ------------------------------------------
------------------------------------------ Propriétés : ![]() 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 : ![]() Bien amicalement.
édité le : 02-11-2004 15:41:13
smallcaps90 ![]() (1022 msg)
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.
RickenBroc ![]() (88 msg)
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
et puis il y eu le Big Bang...
philippulus ![]() (1441 msg) philippulus' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
40
|