sphinx ![]() (91
msg) j'ai une demande si c'est possible:
grapheAT donne la possibilité d'avoir des moyennes mobiles simples, expo, et pondérées.
On défini ce qu'on veut, on choisit la couleur et on peut même faire en sorte
que pour chaque action on utilise les moyennes propres à l'action. Or quand on
affiche le graphe avec les 6 moyennes (voire plus) je ne me rappelle plus des
caractéristiques de celles ci. Ne serait pas possible d'avoir sur la ligne de
la MM un petit texte du genre MMA 7 par exemple ou MME 20. Chose qui pourrait
se faire automatiquement?
lego ![]() (21
msg) lego' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ Bonjour Sphinx, je pense pas que je dit une betise en te répondant, avec la version actuelle de Graphe at on ne peut pas afficher du texte directement sur le graphe je crois que j'aie lu dans la file Smallcap avait répondu à cette question A confirmer pas un ancien du forum. Bonsoir
smallcaps90 ![]() (1022
msg) Bonsoir Michka, Merci pour ta réponse. Pour résoudre le pb des flèches de couleurs qui se superposent je te propose une solution que j'emploie pour repèrer certains cours à l'aide d'indicateurs qui interviennent simultanément. Pour ce faire j'emploie des courbes de style "POINTS" dont je règle les épaisseurs (et les couleurs) sur différentes valeurs. Je place ces points sur et/ou sous les cours selon les valeurs des indicateurs comme sur l'exemple ci-dessous à titre d'illustration : ![]() L'avantage du style "POINTS" est que l'on peut les placer à une distance des cours que l'on souhaite contrairement au style "FLECHES" dont seul GrapheAT Pro contrôle la position sur le graphe des cours (pas sur les indicateurs). Si on examine les possibilités offertes par le style "POINTS", on constate en effet qu'il est possible d'avoir plusieurs symboles en choisissant les "bonnes " épaisseurs : ![]() Les épaisseurs 1, 3 et 4 semblent les plus lisibles et les plus différenciées. Imaginons maintenant que l'on souhaite placer des points sous et sur les cours. On peut utiliser pour celà les expressions suivantes qui calculent, à chaque période considérée, les valeurs de ordonnées de ces points : POINTS_BAS = BAS - ALPHA POINTS_HAUTS = HAUT + ALPHA Avec ALPHA = MOYENNE((HAUT-BAS)/K, 100) par exemple. On peut alors faire varier ces positions en "jouant" sur la valeur de K. J'utilise K=2 et K=5 sur le graphe ci-dessus. On peut aussi choisir K=1. Il est même possible, sans oublier les couleurs, si les variantes des points ne suffisent pas pour représenter nos résultats d'utiliser aussi le style "FLECHES". En effet des points posés avec K=1 coexistent sans pb avec des flèches... Je pense que cela doit suffire pour repèrer les différents types de gaps qui peuvent se produire simultanément, il y en a trois au plus si je me souviens bien. Tu souhaiterais également dis-tu : "donner une info écrite plutôt que des couleurs". C'est tout à fait possible avec GrapheAT Pro en utilisant la fenêtre d'Affichage et la fonction AFFICHER dans le programme. J'ai utilisé cette technique dans mon post sur l'anticipation des croisements de 2 moyennes mobiles récemment. Pour la règle statistique, c'est plus complexe vu la façon dont cela fonctionne dans GrapheAT Pro. Il faut encore approfondir, on parviendra bien à quelque chose de valable... Reste la détermination de la tendance. C'est également une difficulté réelle vu que la plupart des indicateurs disponibles en donnent l'existence une fois qu'elle est confirmée. Peut-être faudrait-il s'orienter du côté des oscillateurs/indicateurs du type "dérivée" qui possèdent peu de lag plutôt qu'utiliser de simples moyennes? J'oublais les figures chartistes dont tu es intéressé par leur reconnaissance. Il faut planter un cahier des charges pour cela... Cordialement.
xave06 ![]() (2329
msg) A tous les programmeurs de génie
sur ce site ![]() j'ai créé sans problème des indicateurs perso utilisant des variables historisées sur graphat pro;là où ça coince est si j'essaie d'utiliser ces scripts dans des règles statistiques où il semble que l'historisation des variables pose un problème. Si vous avez une solution je suis preneur merci par avance xavier Tout trader peut une fois dans sa vie acheter
au plus bas et vendre au plus haut,corollairement la regle ne dit pas combien
de fois le trader achetera au plus haut pour vendre au plus bas...(extrait du
livre de John Bollinger)
michka ![]() (26
msg) michka' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ Bonsoir Smallcaps, Merci pour toutes tes réponses, Je regarde pour modifier le programme. Cordialement
smallcaps90 ![]() (1022
msg) Bonsoir Lego, Ta règle statistique est bien utile pour prolonger l'étude que j'avais postée sur la recherche de l'anticipation des croisements éventuels de 2 moyennes mobiles arithmétiques. Je rappelle qu'il est possible d'utiliser la même démarche avec des moyennes exponentielles ou encore des DEMA. Les formules à employer sont sur le forum. Merci pour ta contribution. Bonsoir Xavier, Normalement, comme l'indique la doc de Mlog, une règle statistique s'applique au jour de l'historique indiqué dans la case "date" située en haut de la fenêtre "Statistiques". Il faut évidemment que les actions du groupe sur lequel on souhaite appliquer la statistique soient définies ce jour là (çà ne marche pas le samedi, ni le dimanche...). D'autre part, il n'est pas interdit d'utiliser les valeurs de ces actions sur des périodes antérieures dans les calculs et comparaisons qu'effectue le programme statistique, autrement dit il est possible d'y utiliser des variables historisées. Afin de contourner la limitation due au jour unique où la stat s'applique, on peut inclure une boucle POUR qui balaiera le nombre de périodes antérieures que l'on souhaite et ainsi de pouvoir connaître les autres périodes où la stat s'appliquait, nous l'avons déjà fait ici même. Peut-être pourrais-tu nous faire part plus précisément des problèmes que tu rencontres? Ceci dit Xavier, le terme de "génie" que tu emploies me paraît être largement disproportionné pour qualifier les nombreux intervenants de cette file. Restons modestes... ![]() édité
le : 08-09-2005 23:40:15
xave06 ![]() (2329
msg) bonjour smallcaps90 quand je dis "génie" il faut bien sûr relativiser,la référence en la matière étant mon(très faible) niveau en programmation,un bambin de 3 ans jouant avec la télécommande du téléviseur familial fait déjà figure de "cador" comparé à moi........... ![]() Plus sérieusement pour ce qui est de mon problème je vais essayer d'être plus clair;j'ai défini des indicateurs perso fonctionnant avec des variables historisées dans leur calcul(du genre oscillateur indic(0)/indic(N)) et qui fonctionnent très bien sur mes graphiques.Quand je crée une règle statistique en incluant leur script dans la règle,quand je lance un contrôle le soft répond qu'il n'y a pas d'erreur,puis si je lance l'éxecution le soft ne détecte aucune valeur remplissant les conditions alors que graphiquement certaines valeurs remplissent les conditions. Puis si je retire de la règle statistique mes scripts "historisés" en ne laissant que les scripts portant sur le jour de la détection tout se passe bien. Alors comment faire pour qu'un indic utilisant des variables historisées dans son script puisse être utilisé?? xavier Tout
trader peut une fois dans sa vie acheter au plus bas et vendre au plus haut,corollairement
la regle ne dit pas combien de fois le trader achetera au plus haut pour vendre
au plus bas...(extrait du livre de John Bollinger)
smallcaps90 ![]() (1022
msg) Re Xavier, J'avais bien compris ton problème. Mais as-tu vraiment besoin d'inclure la totalité de ta règle indicateur qui fonctionne bien dans ta règle statistique? Il suffit pour faire le scan d'un groupe de faire référence dans la stat concernée aux variables utiles (historisées ou non) sous la forme classique : NOM INDICATEUR. NOM VARIABLE , associées vraisemblement à des tests de validation de conditions d'achat ou de vente ou de simple sélection. Tiens je te propose de regarder cet exemple qui me semble plus simple, même pour un béotien en informatique, que la manipulation de la télécommande de ton téléviseur familial ( ![]() Il s'agit de la stat d'achat/vente sur le CCI qui utilise la règle indic RCCI livrée par Mlog. Une règle indicateur de nom RCCI calcule pour chaque chaque période le CCI (nommé aussi RCCI ici) . La règle stat "Stat RCCI" utilise cette variable unique RCCI comme suit : ---------------------------------------------- //Statistique d'achat/vente sur le CCI //On utilise la règle RCCI, pas l'indicateur CCI de GrapheAT // Colonne1 = RCCI.RCCI(1) Colonne2 = RCCI.RCCI Si CROISE(RCCI.RCCI,100)>0 Alors SelectionAchat Si CROISE(RCCI.RCCI,-100)<0 Alors SelectionVente ---------------------------------------------- On ne fait qu'afficher la valeur précédente (donc historisée)du CCI en Colonne1 sous la forme RCCI.RCCI(1), c'est à dire : NOM INDICATEUR. NOM VARIABLE. Puis en Colonne2, on affiche la valeur actuelle RCCI.RCCI. Ensuite deux tests de croisements avec les lignes horizontales 100 et -100 de la valeur actuelle permettent de sélectionner, éventuellement, l'action scannée à l'achat ou à la vente. On aurait très bien pu aussi, si cela avait été nécessaire, faire des calculs incluant valeur actuelle et valeur précédente... Je suppose que le pb que tu rencontres peut venir du fait que tu n'utilises peut-être pas la bonne notation pour récupérer tes variables dans la stat...NOM INDICATEUR.NOM VARIABLE... Cordialement.
xave06 ![]() (2329
msg) smallcaps90, mon problème vient quand sur des critères déjà existants et opérationnels dans la règle je veux ajouter un test sur le bandwidth calculé ainsi: bandwidth(0)=((uboll-lboll)/mboll)*100 test(0)=bandwidth(0)/bandwidth(10) et que j'inclue un test du style SI test(0)<test(1) ALORS SELECTIONACHAT si tu peux me dire comment faire pour que ce put.. de test apparemment simple marche dans la règle statistique je t'en serais reconnaissant. xavier édité
le : 09-09-2005 10:22:04Tout trader peut une fois dans sa vie acheter au
plus bas et vendre au plus haut,corollairement la regle ne dit pas combien de
fois le trader achetera au plus haut pour vendre au plus bas...(extrait du livre
de John Bollinger)
smallcaps90 ![]() (1022
msg) Re Xavier, Ok çà marche. J'ai créé une règle indic TEST_XAVIER qui reprend ton petit mprogramme : ---------------------- //Test pour Xavier le 09/09/2005 // BANDWIDTH(0)=100*((UBOLL-LBOLL)/MBOLL) TEST(0)=BANDWIDTH(0)/BANDWIDTH(10) SI TEST(0)<TEST(1) ALORS ACHAT=1 --------------------- pour visualiser les variables TEST et ACHAT. ![]() Voici ce que cela donnait hier avec Schneider : ![]() J'ai créé une stat qui reprend la variable TEST dans la comparaison que tu fais et qui scanne le CAC 40 : -------------------- //Stat de test pour Xavier //le 09/09/2005 // SI TEST_XAVIER.TEST(0)<TEST_XAVIER.TEST(1) ALORS SELECTIONACHAT FINSI -------------------- ![]() Et voici ce que cela donnait hier avec le CAC40 : Groupe : cac40 Date : 08/09/2005 Sélection des actions dont TEST(0)<TEST(1) ACHAT Accor ACHAT AGF ACHAT Air Liquide ACHAT Alcatel ACHAT Arcelor ACHAT AXA ACHAT Bnp Paribas ACHAT Carrefour ACHAT Casino Guichard ACHAT Credit agricole ACHAT Dexia ACHAT France Telecom ACHAT Lagardere ACHAT Michelin ACHAT Peugeot ACHAT Pinault Printemps Redoute ACHAT Publicis Group ACHAT Renault ACHAT Saint Gobain ACHAT Schneider ACHAT Societe Generale ACHAT Suez ACHAT TF1 ACHAT Thomson ACHAT Vivendi universal Comme tu le vois j'ai récupéré dans la règle stat la variable TEST calculée par la règle indic sous la forme : TEST_XAVIER.TEST(0) ou encore TEST_XAVIER.TEST(1). Elle est bien historisée... Cordialement.
xave06 ![]() (2329
msg) smallcaps90, une fois de plus tu m'as "ébouriffé".........,et de plus ton explication semble claire,même à moi........ la télécommande de la télé familiale n'a plus qu'à bien se tenir ![]() Je te remercie et il me tarde de rentrer ce soir à la maison pour récupérer ton script et le faire tourner sur mon soft. cordialement xavier Tout trader peut une fois dans sa vie acheter
au plus bas et vendre au plus haut,corollairement la regle ne dit pas combien
de fois le trader achetera au plus haut pour vendre au plus bas...(extrait du
livre de John Bollinger)
smallcaps90 ![]() (1022
msg) Allons allons Xavier...il n'y a
pas de vent aujourd'hui...donc pas de quoi se faire ébouriffer pour si peu! Laisse
donc la télécommande de ta télé à ton gamin...nos gosses sont bien plus doués
que nous dans ce domaine là!... Une dernière chose, sérieuse : vérifie que la date située en haut de la fenêtre dans laquelle tu lances l'exécution de la stat correspond bien à des cotations qui existent dans ta base de données. Bonne fin de semaine.
smallcaps90 ![]() (1022
msg) Bonjour Chctrader, Comme promis l'autre jour, je poste les programmes indicateurs de recherche des divergences positives et négatives entre les cours et le Répulse d'Anaphrais qui t'intéressent. J'ai repris la même approche que pour la détermination des divergences cours/MACD, RSI, STOCH postée plus haut dans cette file. Les stats correspondantes viendront un peu plus tard... DIVERGENCES POSITIVES : Il faut respecter la structure suivante pour cela fonctionne sans pb : ![]() Programme de recherche : ------------------------------------ //DIV_POS_REPULSE // //RECHERCHER LA DIVERGENCE POSITIVE EVENTUELLE //LA PLUS RECENTE ENTRE LES COURS ET LE REPULSE //DANS LES LIMITES DEFINIES PAR P1, P2, P3, P4 et P5 //V 1.0 du 07/09/2005 // //---------------------------------------------- //DEFINITION DES ROLES DES PARAMETRES P1 à P5 : // //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA //SE TROUVER P4 PERIODES AU MOINS AVANT LA FINHISTO. // //LE 1ER CREUX SUR LE REPULSE DEVRA SE TROUVER //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4. // //LE 2EME CREUX SUR LE REPULSE DEVRA SE TROUVER //DANS LES P2 PERIODES PRECEDANT LE 1ER. // //CHAQUE CREUX SUR LES COURS POURRA SE TROUVER //DANS LES P3 PERIODES PRECEDANT LES SOMMETS //CORRESPONDANTS SUR LE REPULSE. // //P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES //PRESENTENT DES INTERSECTIONS AVEC LES COURS //ET/OU LE REPULSE. //P5=1 NE LES ACCEPTE PAS. //---------------------------------------------- //Initialisations // INDIC=REPULSE_NJ.REPULSE_NJ MINI=1000 SI RANGHISTO=FINHISTO-P4 //On explore jusqu'à P4 périodes avant la FINHISTO ALORS //Chercher un 1er creux (CI1) et sa date (DATE_CI1) sur l'indicateur // I=0 CI1=MINI TANTQUE I<=P1 FAIRE SI INDIC(I+1)<0 ALORS SI INDIC(I+2)>INDIC(I+1) ET INDIC(I+1)<INDIC(I) ALORS SI INDIC(I+1)<=CI1 ALORS CI1=INDIC(I+1) DATE_CI1=FINHISTO-P4-(I+1) D1=I+1 FINSI FINSI FINSI I=I+1 FINTANTQUE SI D1=0 ALORS AFFICHER "=========PAS DE 1ER CREUX RECENT SUR LE REPULSE========" AFFICHER "================MODIFIEZ P1 ET/OU P4 ==================" STOP FINSI //Chercher un 1er creux (CC1) et sa date (DATE_CC1) //sur les cours avec une tolérance de P3 périodes avant //le 1er creux trouvé sur l'indicateur // CC1=BAS(FINHISTO-P4-DATE_CI1) DATE_CC1=DATE_CI1 K=FINHISTO-P4-DATE_CI1+1 TANTQUE K<=FINHISTO-P4-DATE_CI1+P3 FAIRE SI BAS(K)<=CC1 ALORS CC1=BAS(K) DATE_CC1=FINHISTO-K-P4 FINSI K=K+1 FINTANTQUE //Chercher un 2ème creux (CI2) plus ancien //et sa date (DATE_CI2) sur l'indicateur // J=D1+1 CI2=CI1 TANTQUE J<=P2+D1 FAIRE SI INDIC(J+2)>INDIC(J+1) ET INDIC(J+1)<INDIC(J) ALORS SI INDIC(J+1)<=CI2 ALORS CI2=INDIC(J+1) DATE_CI2=FINHISTO-P4-(J+1) D2=1 FINSI FINSI SI D2=1 //CI2 est un creux possible sur l'indicateur ALORS SI P5=1 //On veut que la droite CI1--CI2 reste sous l'indicateur ALORS PENTE_I=(CI1-CI2)/(DATE_CI1-DATE_CI2) POUR (FINHISTO-P4-DATE_CI2+1) COURS POINT_I(0)= PENTE_I*(RANGPOUR-1)+CI2 SI POINT_I>INDIC ALORS N=1 BREAK FINSI SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK FINPOUR FINSI SI N=0 //Droite de divergence CI1--CI2 correcte ALORS //Chercher le 2ème creux (CC2) et sa date (DATE_CC2) //sur les cours avec une tolérance de P3 périodes //avant le 2ème creux sur l'indicateur // CC2=BAS(FINHISTO-P4-DATE_CI2) DATE_CC2=DATE_CI2 K=FINHISTO-P4-DATE_CI2+1 TANTQUE K<FINHISTO-P4-DATE_CI2+P3 FAIRE SI BAS(K)<=CC2 ALORS CC2=BAS(K) DATE_CC2=FINHISTO-K-P4 FINSI K=K+1 FINTANTQUE SI CC2>=CC1 //CC2 est un creux possible sur les cours ALORS SI P5=1 //On veut que la droite CC1--CC2 reste sous les cours ALORS PENTE_C=(CC1-CC2)/(DATE_CC1-DATE_CC2) POUR (FINHISTO-P4-DATE_CC2+1) COURS POINT_C(0)=PENTE_C*(RANGPOUR-1)+CC2 SI POINT_C>BAS ALORS M=1 BREAK FINSI SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK FINPOUR FINSI SI M=0 //Droite de divergence CC1--CC2 correcte ALORS J=P2+D1+1 SINON D2=0 FINSI SINON D2=0 FINSI SINON D2=0 FINSI FINSI N=0 M=0 J=J+1 FINTANTQUE SI D1<>0 ET D2=0 OU CC2=0 ALORS AFFICHER "============PAS DE DIVERGENCE POTENTIELLE=============" AFFICHER "======AVEC LES VALEURS ACTUELLES DES PARAMETRES=======" AFFICHER "=MAIS IL Y A UN 1ER CREUX SUR LE REPULSE ET LES COURS=" AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2==============" STOP FINSI //Déterminer les points des segments de la divergence potentielle trouvée //s'ils peuvent être tracés sur l'indicateur et sur les cours // SI DATE_CC1-DATE_CC2<2 //La valeur 2 peut être modifiée ALORS AFFICHER "=============DIVERGENCE POTENTIELLE============" AFFICHER "==========TROP PETITE POUR ETRE TRACEE=========" AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4==========" SINON PENTE_I=(CI1-CI2)/(DATE_CI1-DATE_CI2) POUR (FINHISTO-P4-DATE_CI2+1) COURS SEG_P_I(0)=PENTE_I*(RANGPOUR-1)+CI2 SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK FINPOUR PENTE_C=(CC1-CC2)/(DATE_CC1-DATE_CC2) POUR (FINHISTO-P4-DATE_CC2+1) COURS SEG_P_C(0)=PENTE_C*(RANGPOUR-1)+CC2 SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK FINPOUR FINSI FINSI ------------------------------------ ![]() Programme de tracé de la divergence sur les cours : ------------------------------------ //DIV_POS_REP_COURS // //TRACER LE SEGMENT DE LA DIVERGENCE POSITIVE //SUR LES COURS // SEG_P_COURS=SEG_P_C ------------------------------------ ![]() Un exemple : ![]() DIVERGENCES NEGATIVES : ![]() Programme de recherche : ------------------------------------ //DIV_NEG_REPULSE // //RECHERCHER LA DIVERGENCE NEGATIVE EVENTUELLE //LA PLUS RECENTE ENTRE LES COURS ET LE REPULSE //DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4 //V3.2 du 08/09/2004 // //---------------------------------------------- //PARAMETRES P1 à P5 : // //LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA //SE TROUVER P4 PERIODES AU MOINS AVANT LA FINHISTO. // //LE 1ER SOMMET SUR LE REPULSE DEVRA SE TROUVER //DANS LES P1 PERIODES PRECEDANT FINHISTO-P4. // //LE 2EME SOMMET SUR LE REPULSE DEVRA SE TROUVER //DANS LES P2 PERIODES PRECEDANT LE 1ER. // //CHAQUE SOMMET SUR LES COURS POURRA SE TROUVER //DANS LES P3 PERIODES PRECEDANT LES SOMMETS //CORRESPONDANTS SUR LE REPULSE. // //P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES //PRESENTENT DES INTERSECTIONS AVEC LES COURS //ET/OU LE REPULSE. //P5=1 NE LES ACCEPTE PAS. //---------------------------------------------- //Initialisations // INDIC=REPULSE_NJ.REPULSE_NJ MAXI=0 SI RANGHISTO=FINHISTO-P4 //On explore jusqu'à P4 périodes avant la FINHISTO ALORS //Chercher un 1er sommet (SI1) et sa date (DATE_SI1) sur l'indicateur // I=0 SI1=MAXI TANTQUE I<=P1 FAIRE SI INDIC(I+1)>0 ALORS SI INDIC(I+2)<INDIC(I+1) ET INDIC(I+1)>INDIC(I) ALORS SI INDIC(I+1)>=SI1 ALORS SI1=INDIC(I+1) DATE_SI1=FINHISTO-P4-(I+1) D1=I+1 FINSI FINSI FINSI I=I+1 FINTANTQUE SI D1=0 ALORS AFFICHER "=======PAS DE 1ER SOMMET RECENT SUR LE REPULSE=======" AFFICHER "===============MODIFIEZ P1 ET/OU P4 =================" STOP FINSI //Chercher le 1er sommet (SC1) et sa date (DATE_SC1) //sur les cours avec une tolérance de P3 périodes //avant le 1er sommet sur l'indicateur // SC1=HAUT(FINHISTO-P4-DATE_SI1) DATE_SC1=DATE_SI1 K=FINHISTO-P4-DATE_SI1+1 TANTQUE K<=FINHISTO-P4-DATE_SI1+P3 FAIRE SI HAUT(K)>=SC1 ALORS SC1=HAUT(K) DATE_SC1=FINHISTO-K-P4 FINSI K=K+1 FINTANTQUE //Chercher un 2ème sommet plus ancien (SI2) //et sa date (DATE_SI2) sur l'indicateur // J=D1+1 SI2=SI1 TANTQUE J<=P2+D1 FAIRE SI INDIC(J+2)<INDIC(J+1) ET INDIC(J+1)>INDIC(J) ALORS SI INDIC(J+1)>=SI2 ALORS SI2=INDIC(J+1) DATE_SI2=FINHISTO-P4-(J+1) D2=1 FINSI FINSI SI D2=1 //SI2 est un sommet possible sur l'indicateur ALORS SI P5=1 //La droite SI1--SI2 doit être au-dessus de l'indicateur ALORS PENTE_I=(SI1-SI2)/(DATE_SI1-DATE_SI2) POUR (FINHISTO-P4-DATE_SI2+1) COURS POINT_I(0)= PENTE_I*(RANGPOUR-1)+SI2 SI POINT_I<INDIC ALORS N=1 BREAK FINSI SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK FINPOUR FINSI SI N=0 //Droite de divergence SI1--SI2 correcte ALORS //Chercher le 2ème sommet (SC2) et sa date (DATE_SC2) //sur les cours avec une tolérance de P3 périodes //avant le 2ème sommet sur l'indicateur // SC2=HAUT(FINHISTO-P4-DATE_SI2) DATE_SC2=DATE_SI2 K=FINHISTO-P4-DATE_SI2+1 TANTQUE K<=FINHISTO-P4-DATE_SI2+P3 FAIRE SI HAUT(K)>=SC2 ALORS SC2=HAUT(K) DATE_SC2=FINHISTO-K-P4 FINSI K=K+1 FINTANTQUE SI SC2<=SC1 //SC2 est un sommet possible sur les cours ALORS SI P5=1 //La droite SC1--SC2 doit être au-dessus des cours ALORS PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2) POUR (FINHISTO-P4-DATE_SC2+1) COURS POINT_C(0) =PENTE_C*(RANGPOUR-1)+SC2 SI POINT_C<HAUT ALORS M=1 BREAK FINSI SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK FINPOUR FINSI SI M=0 //Droite de divergence SC1--SC2 correcte ALORS J=P2+D1+1 SINON D2=0 FINSI SINON D2=0 FINSI SINON D2=0 FINSI FINSI N=0 M=0 J=J+1 FINTANTQUE SI D1<>0 ET D2=0 OU SC2=0 ALORS AFFICHER "============PAS DE DIVERGENCE POTENTIELLE=============" AFFICHER "======AVEC LES VALEURS ACTUELLES DES PARAMETRES=======" AFFICHER "=MAIS IL Y A UN 1ER SOMMET SUR LE REPULSE ET LES COURS=" AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2==============" STOP FINSI //Déterminer les points de la divergence potentielle trouvée //s'ils peuvent être tracés sur l'indicateur et sur les cours // SI DATE_SC1-DATE_SC2=1 //La valeur 2 peut-être modifiée ALORS AFFICHER "=============DIVERGENCE POTENTIELLE============" AFFICHER "==========TROP PETITE POUR ETRE TRACEE=========" AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4==========" SINON PENTE_I=(SI1-SI2)/(DATE_SI1-DATE_SI2) POUR (FINHISTO-P4-DATE_SI2+1) COURS SEG_N_I(0)=PENTE_I*(RANGPOUR-1)+SI2 SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK FINPOUR PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2) POUR (FINHISTO-P4-DATE_SC2+1) COURS SEG_N_C(0)=PENTE_C*(RANGPOUR-1)+SC2 SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK FINPOUR FINSI FINSI ---------------------------------- ![]() Programme de tracé de la divergence sur les cours : ---------------------------------- //DIV_NEG_REP_COURS // //TRACER LE SEGMENT DE LA DIVERGENCE NEGATIVE //SUR LES COURS // SEG_N_COURS=SEG_N_C ---------------------------------- ![]() Un exemple : ![]() Il est également indispensable que l'indicateur REPULSE_NJ soit installé dans une règle de nom REPULSE_NJ pour que les programmes de recherche ci-dessus puissent récupérer les valeurs de l'indicateur. Je suis conscient du fait que la technique utilisée dans ces programmes n'est pas "idéale" puisque la recherche dépend des valeurs choisies pour les paramètres P1 à P5. Ces derniers ne sont pas toujours très évidents à choisir. Si vous avez d'autres idées, je suis preneur... Cordialement.
xave06 ![]() (2329
msg) smallcaps90 je viens de rentrer chez moi et d'essayer sur mon graphat pro,et ça marche nickel chrome........ encore merci xavier Tout trader peut une
fois dans sa vie acheter au plus bas et vendre au plus haut,corollairement la
regle ne dit pas combien de fois le trader achetera au plus haut pour vendre au
plus bas...(extrait du livre de John Bollinger)
edje ![]() (37
msg) bonjour smallcaps90, Merci à toi et aux autres programmeurs d'indicateurs de Graph AT. Concernant le programme relatif aux divergences sur le Repulse pourrais tu m'indiquer ou à été défini le Repulse_NJ . Merci
Jean
61
|