smallcaps90 ![]() (1022 msg)
Bonsoir Philippulus,
Il y a redondance de variables dans ton programme. Il suffit d'écrire : ------------------------------------ VOLATILITE = 100*(UBOLL-LBOLL)/MBOLL VOLMINI = MIN(VOLATILITE,P1) VOLMAXI = MAX(VOLATILITE,P1) BOLLHISTO = 100*(VOLATILITE-VOLMINI)/(VOLMAXI-VOLMINI) ------------------------------------ Attention, si on ne souhaite pas que la variable VOLATILITE soit une courbe, il faudra l'historiser en écrivant VOLATILITE(0) dans la première instruction. Bon week-end.
philippulus ![]() (1441 msg) philippulus' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
citation : Bonjour Smallcaps, Ben, ce n'est pas mon programme. Je n'ai fait que copier à la suite deux programmes écrits par des tiers. La redondance, je m'en doutais, mais je n'ai rien osé modifié. En tous cas, merci pour ton aide. J'ouvre une autre file ou ton aide pourrait être utile, pour convertir automatiquement des cours. Merci d'y jeter un coup d'oeil.
édité le : 23-05-2004 06:31:50Nicolas
smallcaps90 ![]() (1022 msg)
Bonsoir Philippulus,
Je ne suis pas capable de résoudre ton pb en l'état, en effet je n'ai pas suffisamment travaillé sur les fichiers qu'emploie GrapheAT pour te conseiller utilement. MLOG pourrait peut-être te dire si c'est possible dans GrapheAT ou non. Vu le genre de difficultés que cela pose ne penses-tu pas qu'un programme Excel, donc externe à GrapheAT, pourrait faire l'affaire?
smallcaps90 ![]() (1022 msg)
Pour FOKI,
J'ai la réponse à notre problème de "fiabilité" des statistiques en Mensuel. MLOG que j'ai interrogé m'a précisé que : "Il faut au moins 20 mois d'historiques pour que la Bollinger Mois et sa moyenne soient calculées correctement... Ce qui est évident a posteriori.... MLOG poursuit : "Par défaut le calcul des statistiques se fait sur 370 jours ce qui n'est pas suffisant dans ce cas. Il faut mettre au moins 600 jours (nombre de jours modifiable par le bouton Options dans les statistiques)." Il suffit donc d'aller dans les "Options" de la fenêtre des règles statistiques et de modifier la valeur 370 qui est indiquée par défaut en la remplaçant par 700 par exemple : ![]() Dans le cas qui nous intéressait, le programme trouvait Accor qui n'avait pas lieu d'apparaître dans les résultats au 21/05/2004 puisque la clôture ne passait pas de l'autre côté de la MBOLL. En modifiant le paramètre "Nombre de jours pour calculer les tatistiques.." comme indiqué ci-dessus, on trouve le résultat correct : ------------------------------------- Groupe : cac40 Date : 21/05/2004 Croisement à la hausse de la MBOLL ----> ACHAT Croisement à la baisse de la MBOLL -----> VENTE MBOLL FRANCHIE A LA BAISSE LE 21/05/2004 Casino Guichard MBOLL FRANCHIE A LA BAISSE LE 21/05/2004 France Telecom MBOLL FRANCHIE A LA BAISSE LE 21/05/2004 Thomson ------------------------------------- Accor ne se trouve plus dans les résultats et France Télécom, qui n'y était pas, apparaît. Attention, plus la valeur de N (nombre de mois sur lesquels on lance la statistique) sera grande, plus il faudra choisir un nombre de jours important pour que le calcul soit correct.
édité le : 24-05-2004 18:27:34
FOKI ![]() (2011 msg) FOKI' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
Bonjour Smallcap,
J'ai fait les modifs et Houla la !! que c'est beau maintenant LOL!! Encore merci pour ton aide. Suite à ton info, je suis allé voir la file avec la MAMA / FAMA et je l'ai mis sur Graph AT. Cela a l'air d'être très intéressant, je vais essayer de l'utiliser sur la durée pour voir.
Laisser au marché, nous donner la direction...
xave06 ![]() (2329 msg)
Philippilus,
je confirme ce que t'a dit smallcaps90(puisque c'est moi qui ai donné le script du bollhisto),il y a bien redondance et il convient de supprimer les lignes en rouge qui sont reprises ensuite. //Volatilité VOLATILITE=100*(UBOLL-LBOLL)/MBOLL //Recherche volatilité maxi et mini VOLMINI = MIN(VOLATILITE, P1) VOLMAXI = MAX(VOLATILITE, P1) //Variation bandes bollinger sur historique bollvar(0)=((uboll-lboll)/mboll)*100 varmax(0)=max(bollvar,P1) varmin(0)=min(bollvar,P1) bollhisto(0)=((bollvar-varmin)/(varmax-varmin))*100 J'en profite pour donner à ceux qui s'intéressent à la volatilité un petit script pour mesurer l'accélération de l'écartement des bandes. //on calcule l'écartement en % des bandes bollvar(0)=((uboll-lboll)/mboll)*100 //on calcule la MM 5 périodes de cet écartement bollref(0)=moyenne(bollvar,5) //on construit un oscillateur bandspeed(0)=bollvar-bollref Le passage positif de cet oscillateur signale le début d'écartement des bolls et surtout le pic de l'oscillateur signalera toujours la fin de l'accélération de l'écartement même quand les bolls resteront écartées par simple inertie.Dans le cas d'une "bulle" le pic de l'oscillateur coincide toujours avec le sommet/bas des cours;dans le cas de parallèles c'est à utiliser avec précautions(risque de sortie prématurée). A noter que smallcaps90 a bati un indicateur beaucoup plus sophistiqué mas ses connaissances en programmation sont aussi beaucoup plus "sophistiquées" que les miennes ![]()
édité le : 25-05-2004 11:28:37
xave06 ![]() (2329 msg)
J'en profite pour faire appel aux programmeurs chevronnés,je voudrais intégrer dans les statistiques le bollhisto pour scanner les valeurs qui sont sur une volatilité historiquement basse(en utilisant le calcul du bollhisto),mais je n'arrive pas à le faire fonctionner.
Je vous redonne le script du bollhisto: //Variation bandes bollinger sur historique bollvar(0)=((uboll-lboll)/mboll)*100 varmax(0)=max(bollvar,P1) varmin(0)=min(bollvar,P1) bollhisto(0)=((bollvar-varmin)/(varmax-varmin))*100 merci d'avance, xavier
smallcaps90 ![]() (1022 msg)
Salut Xavier,
Je vois que tu réfléchis toujours à la volatilité...super, je me sens un peu moins seul... Pour ton problème de statistique de basse volatilité voici une solution possible. C'est toujours la même logique de programmation que j'emploie. Programme : A placer sous l'onglet "Jour" ou autre suivant ce que tu veux tester comme période. Attention si tu le mets sous l'onglet "Mois", relis ce que j'ai posté récemment à FOKI... ---------------------------------- //Statistique basse volatilité // NIVEAU_BAS=10 //Pourcentage définissant la volatilité basse ACTION_SELECT=0 N=15 POUR N COURS SI BOLLHISTO.BOLLHISTO<NIVEAU_BAS ALORS ACTION_SELECT=1 COLONNE1 = "VOLATILITE BASSE AU " & DATEHISTO$ & " : " FINSI FINPOUR SI ACTION_SELECT=1 ALORS SELECTION ACTION_SELECT=0 FINSI ---------------------------------- Propriétés : ![]() Avec les valeurs N=15 jours et une LIMITE_BASSE=10% que tu peux évidemment changer à volonté : Groupe : cac40 Date : 24/05/2004 Détecte les valeurs dont la volatilité est basse VOLATILITE BASSE AU 07/05/2004 : Accor VOLATILITE BASSE AU 07/05/2004 : AGF VOLATILITE BASSE AU 24/05/2004 : Aventis VOLATILITE BASSE AU 14/05/2004 : Cap Gemini VOLATILITE BASSE AU 24/05/2004 : L'Oreal VOLATILITE BASSE AU 17/05/2004 : Michelin VOLATILITE BASSE AU 24/05/2004 : Pernod Ricard VOLATILITE BASSE AU 04/05/2004 : Pinault Printemps Redoute VOLATILITE BASSE AU 06/05/2004 : Thales VOLATILITE BASSE AU 07/05/2004 : Thomson VOLATILITE BASSE AU 24/05/2004 : TotalFina VOLATILITE BASSE AU 17/05/2004 : Vinci Pour être complet : - il faut évidemment créer une règle indicateur qui contient les 4 instructions qui donnent BOLLHISTO. C'est la raison pour laquelle tu trouves : BOLLHISTO.BOLLHISTO dans le test de la règle statistique. J'ai nommé cette règle indicateur BOLLHISTO et la variable volatilité en % BOLLHISTO également comme toi. Si tu veux les valeurs à volatilité mini au dernier jour de ton historique, il suffit que donne à N la valeur 1 dans la règle statistique. Si le texte de la colonne1 ne te convient pas, tu peux aussi le changer bien sûr. Bonne fin de journée.
xave06 ![]() (2329 msg)
Merci smallcaps90,
je vais essayer ton script ce soir en rentrant a la maison,ce n'est pas exactement ce que je cherche mais il y a dedans des éléments qui vont me permettre de progresser dans ma recherche. Dès que je trouve un début de solution a ce que je cherche je le mettrais en ligne. xavier
![]() christol ![]() (128 msg)
Bonsoir à tous,
J'essaie de tracer des canaux d'erreur type de part et d'autre d'une droite de régression linéaire (dérivée du prog de smallcaps). J'ai un soucis avec le programme ci-dessous. //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 erreur 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) SOMYY = SOMME(Y*Y,P2) J = (P2*SOMXY-SOMX*SOMY) K = (P2*SOMXX-SOMX*SOMX) A = J/K B = (SOMY-A*SOMX)/P2 C = (P2*SOMYY-SOMY*SOMY) D = 1/P2*(P2-2) ERREURTYPE = racine(D*(C-A^2/B)) ETY=ERREURTYPE POUR P2 COURS DROITE = A * X + B DROITESUP = DROITE + P3*ETY DROITEINF = DROITE - P3*ETY FINPOUR FINSI ![]() Aide bienvenue SVP
Trade small, don\'t be greedy
smallcaps90 ![]() (1022 msg)
Bonjour Chctrader,
On est bien d'accord qu'il s'agit ici de définir un canal avec un certain nombre de fois l'erreur-type (Standard error en anglais) qui est un autre moyen que l'écart-type (Standard deviation) de quantifier la dispersion des cours autour de la droite de régression. En fait ce sont tes coefficients C et D qui ne sont pas corrects. Même chose pour ta formule de calcul de l'ERREURTYPE. Il aurait fallu que tu écrives, J, K, A et B étant corrects : ----------------------------- C = SOMYY - B*SOMY - A*SOMXY D = P2-2 ERREURTYPE = RACINE(C/D) ----------------------------- J'ai réécrit le programme avec mes notations pour pouvoir récupérer la partie du programme qui est commune avec celui du canal utilisant l'écart-type, tu m'en excuseras certainement. 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 erreurs-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) SOMYY = SOMME(Y*Y,P2) A = (P2*SOMXY-SOMX*SOMY)/(P2*SOMXX-SOMX*SOMX) B = (SOMY-A*SOMX)/P2 ERREUR_TYPE = RACINE((SOMYY-B*SOMY-A*SOMXY)/(P2-2)) POUR P2 COURS DROITE = A * X + B DROITE_SUP = DROITE + P3*ERREUR_TYPE DROITE_INF = DROITE - P3*ERREUR_TYPE FINPOUR FINSI ----------------------------- Les propriétés : ![]() Exemple avec le CAC40 : J'ai utilisé la même fenêtre temporelle qu'avec le canal "écart-type" pour pouvoir comparer. ![]() Voici ce que cela donnait le canal tracé à partir de l'écart-type : ![]()
édité le : 26-05-2004 17:27:44
![]() christol ![]() (128 msg)
Hello Smallcaps, On est bien d'accord sur la définition du canal d'erreur type.
Je vais étudier ta formule pour comprendre mon erreur. Merci de m'aider à m'améliorer. Amitiés Chris
Trade small, don\'t be greedy
smallcaps90 ![]() (1022 msg)
RETOUR SUR LE PARABOLIQUE.
Voici une nouvelle version du programme du SAR utilisable en ATD...MF avec les segments "LONG" et "SHORT" de couleurs différentes comme le graphe ci-dessous le montre : ![]() Programme : --------------------------------------------- // Parabolic Stop And Reverse de Wilder // Version bicolore (31/05/2004) // Si RANGHISTO = 1 Alors // Début de l'historique Pos(0) = 1 ValHaut(0) = Haut ValBas(0) = Bas AF = P1 RSAR_TMP_LONG(0)=Cloture RSAR_LONG(0)=Cloture RSAR_TMP_SHORT(0)=0 RSAR_SHORT(0)=0 STOP FinSi ValHaut = ValHaut(1) ValBas = ValBas(1) Pos = Pos(1) Si Haut > ValHaut Alors ValHaut = Haut Si Bas < ValBas Alors ValBas = Bas Si Pos = 1 Alors Si Bas < RSAR_TMP_LONG(1) Alors Pos = -1 FinSi Sinon Si Haut > RSAR_TMP_SHORT(1) Alors Pos = 1 FinSi Si Pos = 1 Alors Si Pos(1) <> 1 Alors RSAR_TMP_LONG = ValBas AF = P1 ValBas = Bas ValHaut = Haut Sinon Si ValHaut > ValHaut(1) ET AF < P2 Alors AF = AF + P1 Si AF > P2 Alors AF = P2 FinSi RSAR_TMP_LONG = RSAR_TMP_LONG(1) + AF * (ValHaut - RSAR_TMP_LONG(1)) FinSi Si RSAR_TMP_LONG > Bas Alors RSAR_TMP_LONG = Bas Si RSAR_TMP_LONG > Bas(1) Alors RSAR_TMP_LONG = Bas(1) FinSi Sinon Si Pos(1) <> -1 Alors RSAR_TMP_SHORT = ValHaut AF = P1 ValBas = Bas ValHaut = Haut Sinon Si ValBas < ValBas(1) ET AF < P2 Alors AF = AF + P1 Si AF > P2 Alors AF = P2 FinSi RSAR_TMP_SHORT = RSAR_TMP_SHORT(1) + AF * (ValBas - RSAR_TMP_SHORT(1)) FinSi Si RSAR_TMP_SHORT < Haut Alors RSAR_TMP_SHORT = Haut Si RSAR_TMP_SHORT < Haut(1) Alors RSAR_TMP_SHORT = Haut(1) FinSi FinSi RSAR_LONG=RSAR_TMP_LONG(1) //pour avoir les tics mieux placés sur les cours RSAR_SHORT=RSAR_TMP_SHORT(1) --------------------------------------------- Dans la fenêtre "Propriétés" il suffit de créer les deux variables RSAR_LONG et RSAR_SHORT et de choisir le type d'affichage "Points" en épaisseur 1. Pour avoir aussi les Bandes de Bollinger et les marques -8 et -24 sur le même graphe, il suffit de modifier la règle "RBoll+RSAR", règle dérivée de la règle "Bollinger" disponible dans le dossier "Classique" de GrapheAT Pro et d'invoquer les deux variables RSAR_LONG et RSAR_SHORT comme indiqué ci-dessous : --------------------------------------------- // Bollinger + SAR bicolore // avec repérage des jours 8 et 24 // RUBOLL = RBOLL.RUBOLL RMBOLL = RBOLL.RMBOLL RLBOLL = RBOLL.RLBOLL RSAR_LONG = RSAR.RSAR_LONG RSAR_SHORT = RSAR.RSAR_SHORT SI RANGHISTO=FINHISTO ALORS J7(7) = -1 J23(23) = -1 FINSI --------------------------------------------- Introduire à nouveau RSAR_LONG et RSAR_SHORT dans le panneau "Propriétés" de cette règle avec le type d'affichage "Points" en épaisseur 1. Bonne journée.
philippulus ![]() (1441 msg) philippulus' style='text-decoration:none;'>PROFIL NON RENSEIGNÉ
Smallcaps,
Merci pour tout tes efforts. On pourrait encore effectuer une modification qui me semble essentielle : la position du SAR lorsqu'il est enfoncé. Je m'explique : * Le SAR est à l'origine un système de STOP. => il est donc inutile qu'il se retourne lorsqu'il est enfoncé, car dès lors la position est débouclée. * Le SAR - en analyse dynamique - sert non-seulement de STOP lorsqu'une position est engagée (et encore, pas das tous les cas), mais aussi d'indicateur dans le choix d'une intervention sur un titre. => si un SAR est enfoncé, sa lecture peut s'avérer difficile, comme le montre l'exemple suivant en UTM (Automa-tech) : ![]() La configuration UTD semble intéressante, et la lecture visuelle UTM met en évidence un test PM en passe de réussir, pas vrai ? FAUX : PM est à 2,63, le plus bas des cours à 2.62 Sur cette base, la prise de position haussière sur une UTW ou UTD est déconseillée. Mon idée est la suivante : Pour satisfaire les deux objectifs, soit : a) SAR en tant que niveau de STOP b) Position du SAR en tant qu'aide décisionnelle à la prise de position, ne pourrait-on pas avoir en cas d'enfoncement deux barres sur un même cours lorsque le SAR est enfoncé, soit l'ancien et le nouveau ? Merci pour tes commentaires.
édité le : 31-05-2004 11:51:49Nicolas
smallcaps90 ![]() (1022 msg)
Bonsoir Philippulus,
Tu as raison, le SAR de W. Wilder était uniquement un système gérant les stops dans l'esprit de son concepteur (STOP and reverse...) Depuis en Analyse Technique Dynamique il a connu une destinée quelque peu différente. C'est également vrai. Si je comprends bien, tu souhaiterais créer un nouveau SAR tel qu'une fois touché par les cours, le segment suivant démarre au même tic de cotation que la fin du segment précédent, comme illustré ci-dessous lors du passage d'une postion longue à une position short, et non pas au tic suivant ? ![]() J'avoue ne pas saisir totalement l'intérêt que cela pourrait présenter, mais tu as tes raisons et je les respecte tes arguments. Le problème est de définir l'algorithme qui permettra de calculer les différents points du nouveau SAR. Je n'ai pas eu le temps d'y réfléchir. As-tu une idée?
édité le : 01-06-2004 18:56:29
28
|