smallcaps90 ![]() (1022 msg)
Bonsoir,
Voici un programme possible pour le tracé de la droite de régression linéaire et de ses canaux associés. J'ai complèté le programme fourni par MLOG. Programme : ---------------------------- Droite de régression linéaire se termine à P1 périodes // de la période actuelle, et commence à P1+P2 périodes de celle-ci. // Canaux de régression linéaire tracés à + ou moins P3 écarts types //de part et d'autre de la droite de régression linéaire. // SI RANGHISTO = FINHISTO - P1 ALORS POUR P2 COURS X(0) = RANGPOUR Y(0) = CLOTURE FINPOUR SOMX = SOMME(X,P2) SOMY = SOMME(Y,P2) SOMXX = SOMME(X*X,P2) SOMXY = SOMME(X*Y,P2) A = (P2*SOMXY-SOMX*SOMY)/(P2*SOMXX-SOMX*SOMX) B = (SOMY-A*SOMX)/P2 ETYPE = ECARTYPE(CLOTURE,P2) ETY=ETYPE POUR P2 COURS DROITE = A * X + B DROITESUP = DROITE + P3*ETY DROITEINF = DROITE - P3*ETY FINPOUR FINSI ---------------------------- PROPRIETES : Rien de particulier. On déclare les courbes : DROITE, DROITESUP ET DROITEINF comme "Segments". Les paramètres prennent les valeurs suivantes dans le tracé ci-dessous : P1 = 15 P2 = 60 P3 = 1.5 Cela veut donc dire que le tracé commence à P1+P2 = 15+60 = 75 jours avant le jour actuel et se termine P1 = 15jours avant. J'ai choisi (1.5*écart-type) sur P2 cours comme intervalle entre la droite de régression linéaire et les droites supérieure et inférieure du canal. On peut bien sûr choisir d'autres valeurs. Graphe : ![]() Bonne soirée à tous.
édité le : 04-04-2004 19:32:28
providence ![]() (14121 msg)
Merci une nouvelle fois Smallcaps90 de nous faire partager tes indicateurs.
smallcaps90 ![]() (1022 msg)
Dans le même genre, on peut aussi s'intéresser aux canaux de RAFF.
Ceux-ci sont également tracés parallèlement à la droite de régression linéaire mais à la différence des canaux de régression linéaire, ils sont situés à une distance égale au maximum des écarts mesurés entre les HAUTS du cours et la droite de régression linéaire d'une part et cette même droite et les BAS du cours d'autre part. Cette distance maxi est déterminée sur la durée du tracé des canaux. Programme : ----------------------- // Droite de régression linéaire se termine à P1 périodes // de la période actuelle, et commence à P1+P2 périodes de celle-ci. // Canaux de RAFF // SI RANGHISTO = FINHISTO - P1 ALORS POUR P2 COURS X(0) = RANGPOUR Y(0) = CLOTURE FINPOUR SOMX = SOMME(X,P2) SOMY = SOMME(Y,P2) SOMXX = SOMME(X*X,P2) SOMXY = SOMME(X*Y,P2) A = (P2*SOMXY-SOMX*SOMY)/(P2*SOMXX-SOMX*SOMX) B = (SOMY-A*SOMX)/P2 POUR P2 COURS DROITE = A * X + B FINPOUR ECARTHAUT = MAX(HAUT-DROITE,P2) EH = ECARTHAUT ECARTBAS = MAX(DROITE-BAS,P2) EB = ECARTBAS ECART = MAXVAL(EH,EB) POUR P2 COURS RAFFSUP = DROITE + ECART RAFFINF = DROITE - ECART FINPOUR FINSI ------------------------- Propriétés : Deux paramètres suffisent ici : P1 et P2 identiques aux P1 et P2 des canaux de régression linéaire. Graphe avec P1=15 et P2=60 : ![]() Graphe avec P1=20 et P2=60 : ![]() Il existe un système d'utilisation des canaux de régression linéaire ou de Raff, dans lequel on prend position à la cassure de l'une des lignes extrêmes du canal par les cours. A suivre...
sphinx ![]() (91 msg)
suis dans la panade: après avoir téléchargé la nouvelle version, grapheAT pro me fait une misère à rpopos du coppock que j'avais paramétré au début comme indiqué sur le lien : frm/topic.asp?TOPIC_ID=&... - voici la copie du programme founi par Orion que je remercie:
// ROC ROC11 = 100*((Cloture-Cloture(11))/Cloture(11)) ROC14 = 100*((Cloture-Cloture(14))/Cloture(14)) // Indicateur de Coppock : marché bull quand IC sup SROC = ROC11 + ROC14 IndiceCoppock = PONDERE(SROC,10) Or maintenant, j'ai rien sur la courbe. L'indic est plat. Je suis allé dans le programme et il m'indique quand je clique sur "controler" : Error: l'argument doit être historisé (tableau) Puis le curseur se place là sur la derniere ligne: juste après SROC:(j'ai mis ce sigle @) IndiceCoppock = PONDERE(SROC@,10) Ben je ne comprend pas ce qu'il faut faire pour régler le problème: si une âme charitable pouvait m'aider, ce serait sympa. Merci
xave06 ![]() (2329 msg) citation : essaies avec SROC(0)=ROC11+ROC14
smallcaps90 ![]() (1022 msg)
Bonjour Sphinx,
Oui Xavier a raison, dorénavant GrapheAT Pro teste si une variable qui doit être historisée l'est bien au moment de la compilation d'une règle et nous signale par un message d'erreur si elle ne l'est pas quand on teste cette règle. Pratique non? C'est souvent le cas du premier argument d'une fonction statistique de devoir être historisée. Effectivement, comment le logiciel pourrait-il calculer une moyenne par exemple, qu'elle soit pondérée comme la tienne ou pas, si on ne lui fournissait pas l'ensemble des valeurs dont il a besoin pour çà? Il faut donc que tu écrives SROC(0) dans la règle qui calcule cette valeur pour que ta moyenne pondérée puisse ensuite être calculée. Il y a une autre façon de procéder, qui peut brouiller un peu les cartes, pour déclarer historisée une variable qui ne l'est pas dans le programme : il suffit de la déclarer comme "Courbe" dans le tableau des Propriétés. C'est normal puisqu'une variable dont on place l'identificateur dans le tableau des "Courbe", sans pour autant tracer cette courbe, sera considérée bien comme historisée. Résumons-nous. 1/ Tu écris : ROC11 = 100*((Cloture-Cloture(11))/Cloture(11)) ROC14 = 100*((Cloture-Cloture(14))/Cloture(14)) SROC(0) = ROC11 + ROC14 IndiceCoppock = PONDERE(SROC,10) Tu déclares juste "IndiceCoppock" comme courbe. Et tout se passe bien. 2/ Tu écris : ROC11 = 100*((Cloture-Cloture(11))/Cloture(11)) ROC14 = 100*((Cloture-Cloture(14))/Cloture(14)) SROC = ROC11 + ROC14 IndiceCoppock = PONDERE(SROC,10) Et tu déclares non seulement "IndiceCoppock" comme courbe, mais aussi "SROC". Tu peux ne tracer que la courbe "IndiceCoppock" (dans la colonne "Affichage" de la courbe SROC tu coches "Aucun"). Et tout se passe bien aussi. Il est évidemment plus logique d'utiliser la technique 1/. Bonne journée.
sphinx ![]() (91 msg)
merci smallcaps pour tes explications. Dès que j'ai le temps , je vais brasser les autres indicateurs que j'ai et j'essaye de corriger les problèmes. Je sais que si j'ai une difficulté, je trouverai une personne sympa ici (comme vous tous) pour m'aider. Merci à vous.
sphinx ![]() (91 msg)
il y avait les MM triangulaires qui coincaient et gràce à vous , j'ai réglé le problème . Merci
![]() christol ![]() (128 msg) citation : Re-salut Euh, ya franchement personne qui sait?
Trade small, don\'t be greedy
smallcaps90 ![]() (1022 msg)
Comme promis voici la version "beta" du programme permettant de tracer des canaux de régression linéaires sur les cours.
--------------------- //BreakOut sur les canaux de régression linéaire // SI RANGHISTO = 1 ALORS DEPART=0 FLAG=0 CPT1=0 CPT2=0 FINSI //--------------------------1ère partie SI FLAG = 0 ALORS SI (RANGHISTO=DEPART+P1) ALORS POUR P1 COURS X1(0) = RANGPOUR Y1(0) = CLOTURE FINPOUR SX1 = SOMME(X1,P1) SY1 = SOMME(Y1,P1) SXX1 = SOMME(X1*X1,P1) SXY1 = SOMME(X1*Y1,P1) A1 = (P1*SXY1-SX1*SY1)/(P1*SXX1-SX1*SX1) B1 = (SY1-A1*SX1)/P1 ETYPE1 = ECARTYPE(CLOTURE,P1) ETY1=ETYPE1 POUR P1 COURS DROITE1 = A1 * X1 + B1 DROITESUP1 = DROITE1 + P2*ETY1 DROITEINF1 = DROITE1 - P2*ETY1 FINPOUR FINSI SI (RANGHISTO>P1+DEPART) ALORS XX1(0)=P1+1+CPT1 DROITE1 = A1 * XX1 + B1 DROITESUP1 = DROITE1 + P2*ETY1 DROITEINF1 = DROITE1 - P2*ETY1 COND1 = (Cloture<DROITESUP1) COND2 = (Cloture>DROITEINF1) CPT1=CPT1 + 1 SI (COND1=0 OU COND2=0) //alors dernier point des droites ALORS FLAG=1 DEPART = RANGHISTO-1 CPT1=0 FINSI FINSI FINSI //--------------------------------2ème partie SI FLAG=1 ALORS SI (RANGHISTO=DEPART+P1) ALORS POUR P1 COURS X2(0) = RANGPOUR Y2(0) = CLOTURE FINPOUR SX2 = SOMME(X2,P1) SY2 = SOMME(Y2,P1) SXX2 = SOMME(X2*X2,P1) SXY2 = SOMME(X2*Y2,P1) A2 = (P1*SXY2-SX2*SY2)/(P1*SXX2-SX2*SX2) B2 = (SY2-A2*SX2)/P1 ETYPE2 = ECARTYPE(CLOTURE,P1) ETY2=ETYPE2 POUR P1 COURS DROITE2 = A2 * X2 + B2 DROITESUP2 = DROITE2 + P2*ETY2 DROITEINF2 = DROITE2 - P2*ETY2 FINPOUR FINSI SI (RANGHISTO>DEPART+P1) ALORS XX2(0)=P1+1+CPT2 DROITE2 = A2 * XX2 + B2 DROITESUP2 = DROITE2 + P2*ETY2 DROITEINF2 = DROITE2 - P2*ETY2 COND3 = (Cloture<DROITESUP2) COND4 = (Cloture>DROITEINF2) CPT2=CPT2+1 SI (COND3=0 OU COND4=0) //alors dernier point des droites ALORS FLAG=0 DEPART = RANGHISTO-1 CPT2=0 FINSI FINSI FINSI ----------------------- Propriétés : Sont déclarées les courbes : DROITE1, DROITE2, DROITESUP1, DROITEINF1, DROITESUP2 et DROITEINF2 avec le nouveau style "Segments". Deux paramètres P1 = durée mini de tracé de chaque canal (20 dans l'exemple ci-dessous) et P2 nombre d'écart-types utilisés pour tracer les canaux (2 ici). Cocher l'option "Affichage sur les cours". Exemple : ![]() On voit bien ci-dessus les changements de canaux aux différents break out : 1,2,3... Un seul problème subsiste dans cette version : on ne change pas de canal lorsque le nombre de périodes fixé pour sa durée (paramètre P1) n'est pas atteint même si le cours sort du canal pendant cette durée. Le canal a donc au moins une longueur de P1 périodes. Les canaux de Raff suivent...
édité le : 07-04-2004 17:41:22
smallcaps90 ![]() (1022 msg)
Voici le programme final pour les canaux de Raff.
------------------------ //BreakOut sur les canaux de RAFF // SI RANGHISTO = 1 ALORS DEPART=0 FLAG=0 CPT1=0 CPT2=0 FINSI //--------------------------1ère partie SI FLAG = 0 ALORS SI (RANGHISTO=DEPART+P1) ALORS POUR P1 COURS X1(0) = RANGPOUR Y1(0) = CLOTURE FINPOUR SX1 = SOMME(X1,P1) SY1 = SOMME(Y1,P1) SXX1 = SOMME(X1*X1,P1) SXY1 = SOMME(X1*Y1,P1) A1 = (P1*SXY1-SX1*SY1)/(P1*SXX1-SX1*SX1) B1 = (SY1-A1*SX1)/P1 POUR P1 COURS DROITE1 = A1 * X1 + B1 FINPOUR ECARTHAUT1 = MAX(HAUT-DROITE1,P1) EH1 = ECARTHAUT1 ECARTBAS1 = MAX(DROITE1-BAS,P1) EB1 = ECARTBAS1 ECART1 = MAXVAL(EH1,EB1) POUR P1 COURS RAFFSUP1 = DROITE1 + ECART1 RAFFINF1 = DROITE1 - ECART1 FINPOUR FINSI SI (RANGHISTO>P1+DEPART) ALORS XX1(0)=P1+1+CPT1 DROITE1 = A1 * XX1 + B1 RAFFSUP1 = DROITE1 + ECART1 RAFFINF1 = DROITE1 - ECART1 COND1 = (Cloture<RAFFSUP1) COND2 = (Cloture>RAFFINF1) CPT1=CPT1 + 1 SI (COND1=0 OU COND2=0) //alors dernier point des droites ALORS FLAG=1 DEPART = RANGHISTO-1 CPT1=0 FINSI FINSI FINSI //--------------------------------2ème partie SI FLAG=1 ALORS SI (RANGHISTO=DEPART+P1) ALORS POUR P1 COURS X2(0) = RANGPOUR Y2(0) = CLOTURE FINPOUR SOMX2 = SOMME(X2,P1) SOMY2 = SOMME(Y2,P1) SOMXX2 = SOMME(X2*X2,P1) SOMXY2 = SOMME(X2*Y2,P1) A2 = (P1*SOMXY2-SOMX2*SOMY2)/(P1*SOMXX2-SOMX2*SOMX2) B2 = (SOMY2-A2*SOMX2)/P1 POUR P1 COURS DROITE2 = A2 * X2 + B2 FINPOUR ECARTHAUT2 = MAX(HAUT-DROITE2,P1) EH2 = ECARTHAUT2 ECARTBAS2 = MAX(DROITE2-BAS,P1) EB2 = ECARTBAS2 ECART2 = MAXVAL(EH2,EB2) POUR P1 COURS RAFFSUP2 = DROITE2 + ECART2 RAFFINF2 = DROITE2 - ECART2 FINPOUR FINSI SI (RANGHISTO>DEPART+P1) ALORS XX2(0)=P1+1+CPT2 DROITE2 = A2 * XX2 + B2 RAFFSUP2 = DROITE2 + ECART2 RAFFINF2 = DROITE2 - ECART2 COND3 = (Cloture<RAFFSUP2) COND4 = (Cloture>RAFFINF2) CPT2=CPT2+1 SI (COND3=0 OU COND4=0) //alors dernier point des droites ALORS FLAG=0 DEPART = RANGHISTO-1 CPT2=0 FINSI FINSI FINSI ------------------- Propriétés : 6 courbes type "Segments" à déclarer : DROITE1, RAFFSUP1,RAFFINF1, DROITE2, RAFFSUP2, RAFFINF2. 1 paramètre P1 (=20 ici) Ne pas oublier de cocher l'option "Affichage sur les cours". Exemple : ![]() Les points 1, 2, 3 et 4 sont des points de Break Out. Bonne soirée.
![]() christol ![]() (128 msg)
Pour Smallcaps: Hip, Hip, Hip, Hourra !!!
Trade small, don\'t be greedy
17
|