Bonjour,
Comme je vous l'avais proposé hier, je crée cette nouvelle file pour traiter uniquement des systèmes de trading avec Graphe AT Pro. Cela pourra peut-être paraître présompteux sans doute compte-tenu du caractère limité du logiciel. Nous ferons avec et je suppose que cela pourra intéresser plus d'un de ses utilisateurs. Pour initialiser la file, je vous propose un premier système très simple puisqu'il n'utilise un seul indicateur. Il n'est pas totalement finalisé dans ses moindres détails, mais il fonctionne et reste évidemment perfectible... Je l'ai mis à l'épreuve en Weekly et il donne d'assez bons résultats. Bien sûr certaines valeurs y sont totalement "allergiques" (voir plus loin), d'autres l'acceptent bien. Ce n'est pas un scoop... Je n'ai pas encore eu le temps de déterminer pour quelles raisons ni la possibilité d'en améliorer la logique. Si vous avez des idées n'hésitez surtout pas. Postez... SYSTEME "TURNING_POINTS". J'ai utilisé comme indicateur le très réactif %R de Williams que j'ai lissé sans introduire trop de lag avec une régression linéaire sur un petit nombre de périodes. Le programme "TURNING_POINTS_INDIC" suit ainsi que sa fenêtre Propriétés : //==================== //TURNING_POINTS_INDIC //==================== //V2.1 (finalisé) //le 29/03/2007 //smallcaps90 //==================== //--------------------------Calcul du Williams% // HT=max(Haut,P1) BS=min(Bas, P1) W=100*(Cloture-HT)/(HT-BS) //--------------------------Calcul du lissage // som=0 i=P2 TantQue i>=1 Faire tmp=(i-(P2+1)/3)*W(P2-i) som=som+tmp i=i-1 FinTantQue W_Lisse=6*som/(P2*(P2+1)) //--------------------------Détermination des couleurs // M(0)=W_Lisse //Initialisations Si RangHisto=2 Alors Si M>=M(1) Alors V(0)=1 R(0)=0 Sinon V(0)=0 R(0)=1 FinSi FinSi //Détermination de la tendance Si RangHisto>2 Alors Si M(1)>M Alors R=1 V=0 FinSi Si M(1)<M Alors V=1 R=0 FinSi Si M(1)=M Alors Si V(1)=1 Alors V=V(1) Si R(1)=1 Alors R=R(1) FinSi //Traitement des tracés // //Segments verts // Si V=1 ET V(1)=0 Alors Si A=0 Alors MV1(1)=M(1) MV1=M Sinon MV2(1)=M(1) MV2=M FinSi FinSi Si V=1 ET V(1)=1 Alors Si A=0 Alors MV1=M Si A=1 Alors MV2=M FINSI Si V=0 ET V(1)=1 Alors Si A=0 Alors MV1(1)=M(1) Si A=1 Alors MV2(1)=M(1) A=NON(A) FinSi //Segments rouges // Si R=1 ET R(1)=0 Alors Si B=0 Alors MR1(1)=M(1) MR1=M Sinon MR2(1)=M(1) MR2=M FinSi FinSi Si R=1 ET R(1)=1 Alors Si B=0 Alors MR1=M Si B=1 Alors MR2=M FinSi Si R=0 ET R(1)=1 Alors Si B=0 Alors MR1(1)=M(1) Si B=1 Alors MR2(1)=M(1) B=NON(B) FinSi FinSi //Fin du code ![]() Voici ce que l'on obtient pour Pernod-Ricard en Weekly : ![]() J'ai visualisé les segments ascendants de l'indicateur en vert sur le graphe. Ils correspondent assez bien aux phases ascendantes des cours et démarrent même parfois avant que les cours le fassent eux-mêmes. Pour les besoins de la cause prenons Pernod Ricar en Daily : ![]() Si on se réfère au graphe ci-dessus : au soir de la période 1 on ne sait pas encore qu'un trend haussier va se produire. On en a confirmation à la période 2 seulement sur l'indicateur. On posera un ordre d'ACHAT au niveau de la clôture de cette période, il sera exécuté le lendemain (pour pouvoir utiliser les possibilités du programme de "backtest" de MLOG plus loin). Au soir de la période 3 on ne sait pas que le segment haussier se termine. On en a confirmation à la période 4 suivante. On place un ordre de vente au niveau de la clôture de la période 4 pour le lendemain. A gauche sur le graphe une zone de faux signaux est repèrée et, bien entendu, on ne doit pas tenir compte de la présence des petits segments verts inter-périodes. La programmation devra faire en sorte qu'aucun signal d'achat/vente soit donné dans ce genre de zone. Le programme "TURNING_POINTS_ENTREES_SORTIES", dérivé du précédent, génère les signaux d'Achat/Vente conformément à l'algorithme décrit succinctement ci-dessus. Voici son listing et sa fenêtre Propriétés : //============================== //TURNING_POINTS_Entrees_Sorties //============================== //V0.2 (proto) //le 13/11/2007 //smallcaps90 //============================== //Si RangHisto >= FinHisto-1000 //Alors //--------------------------Entrée position longue (Achat) // Si (MV1<>0 OU MV2<>0) ET (MV1(1)<>0 OU MV2(1)<>0) ET MV1(2)=0 ET MV2(2)=0 ET Flag=0 //permet d'alterner les op d'E/S Alors E=-1 Flag=1 NE=cloture //on achetera en fait à l'ouverture du lendemain NbOp=NbOp+1 FinSi //--------------------------Sortie position longue (Vente) // Si (MV1(1)<>0 OU MV2(1)<>0) ET MV1=0 ET MV2=0 ET Flag=1 Alors S=1 Flag=0 PJ=(cloture-NE) //on vendra en fait à l'ouverture du lendemain Profit=Profit+PJ //calculé sur les positions longues seules pour le moment Si PJ>0 Alors Win=Win+1 Sinon Los=Los+1 FinSi FinSi //FinSi //--------------------------Bilan théorique // //La partie qui suit est à l'état de prototype //Elle utilise des paramètres calculés plus haut //Elle est utilisée par la statistique Si RangHisto=FinHisto Alors Si E<>0 Alors OP$="Entrée LONG à la période actuelle" Si S<>0 Alors OP$="Entrée SHORT à la période actuelle" Si Flag=0 ET E=0 ET S=0 Alors OP$="Position SHORT en cours" Si Flag<>0 ET E=0 ET S=0 Alors OP$="Position LONG en cours" Afficher "===============================================" Afficher NomAction$ & " " & CodeAction$ Afficher "RESULTAT théorique pour l'action (longs seuls et sans frais) = " & ctxt$(Profit,2) Afficher "Nombre Op = " & NbOp Afficher "Nb Op WIN = " & Win Afficher "Nb Op LOS = " & Los Afficher "Type Op en cours : " & op$ Afficher "===============================================" FinSi //Fin du code ![]() Une illustration sur Pernod-Ricard en Weekly : ![]() Pour tester les performances du système j'ai utilisé le programme de "backtest" de MLOG qui ne prend en compte que des système du type "stop and reverse" toujours dans le marché (donc sans nécessité de placer de stop). Ceci peut s'appliquer au système proposé. J'ai scanné ma base SRD et visualisé les "equity curve". En vert épais sur les graphes ci-dessous vous trouverez : - la courbe en paliers des positions "fermées" qui tiennent compte des ordres d'Achat/vente en vert épais, - la courbe des positions "ouvertes" en réactualisant les gaisn/pertes en fonction du cours du jour et de la dernière position détenue, en vert fin, - la courbe qui traduit ce qu'on obtiendrait avec une stratégie de type "buy and hold", en rouge fin. ![]() Après un départ difficile le système se comporte mieux à compter de 2002 mais il ne fait pas mieux que le "Buy and Hold". Le rapport de "backtest" délivré par le programme "TradGains2" est le suivant : ======== RAPPORT DES OPERATIONS D'ACHAT/VENTE ======== Pernod Ricard FR0000120693 Date début backtest : 03/01/1997 Date fin backtest : 09/04/2008 Nombre de barres testées : 589 NOMBRE TOTAL D'OPERATIONS : 146 Nombre d'opérations gagnantes : 70 (soit 47,95%) Nombre d'opérations perdantes : 76 (soit 52,05%) TOTAL DES GAINS : 49,33 Gains des opérations gagnantes : 155,59 Gains des opérations perdantes : -106,26 MOYENNE DES GAINS : 0,34 Moyenne des gains des opérations gagnantes : 2,22 Moyenne des gains des opérations perdantes : -1,4 Meilleure opération gagnante : 8,35 Plus petite opération gagnante : 0,04 Plus grande opération perdante : -7,2 Plus petite opération perdante : -0,07 Maximum d'opérations gagnantes consécutives : 5 Gain : 15,7 Maximum d'opérations perdantes consécutives : 8 Perte : -11,65 MAXDRAWDOWN : -21,74 obtenue le 20/10/2000 ====================================================== Sans entrer dans tous les détails de ce bilan, on constate que malgré le nombre plus élévé d'opérations perdantes que de gagnantes, le bilan reste positif ainsi que le montre "l'equity curve". Evidemment ce n'est pas un véritable backtest et ni les frais d'opérations ni ceux dus au slippage ne sont pris en compte. Quelques autres exemples qui donnent de bons résultats : ![]() ======== RAPPORT DES OPERATIONS D'ACHAT/VENTE ======== Christian DIOR FR0000130403 Date début backtest : 03/01/1997 Date fin backtest : 09/04/2008 Nombre de barres testées : 589 NOMBRE TOTAL D'OPERATIONS : 130 Nombre d'opérations gagnantes : 67 (soit 51,54%) Nombre d'opérations perdantes : 63 (soit 48,46%) TOTAL DES GAINS : 138,65 Gains des opérations gagnantes : 265,58 Gains des opérations perdantes : -126,93 MOYENNE DES GAINS : 1,07 Moyenne des gains des opérations gagnantes : 3,96 Moyenne des gains des opérations perdantes : -2,01 Meilleure opération gagnante : 14,2 Plus petite opération gagnante : 0,01 Plus grande opération perdante : -6,7 Plus petite opération perdante : 0 Maximum d'opérations gagnantes consécutives : 5 Gain : 26,86 Maximum d'opérations perdantes consécutives : 4 Perte : -10,84 MAXDRAWDOWN : -14,37 obtenue le 11/10/2002 ====================================================== ![]() ======== RAPPORT DES OPERATIONS D'ACHAT/VENTE ======== Imerys (ex Imetal) FR0000120859 Date début backtest : 03/09/1999 Date fin backtest : 09/04/2008 Nombre de barres testées : 450 NOMBRE TOTAL D'OPERATIONS : 102 Nombre d'opérations gagnantes : 56 (soit 54,9%) Nombre d'opérations perdantes : 46 (soit 45,1%) TOTAL DES GAINS : 109,86 Gains des opérations gagnantes : 179,86 Gains des opérations perdantes : -69,99 MOYENNE DES GAINS : 1,08 Moyenne des gains des opérations gagnantes : 3,21 Moyenne des gains des opérations perdantes : -1,52 Meilleure opération gagnante : 12,85 Plus petite opération gagnante : 0,05 Plus grande opération perdante : -5,63 Plus petite opération perdante : -0,07 Maximum d'opérations gagnantes consécutives : 12 Gain : 38,05 Maximum d'opérations perdantes consécutives : 6 Perte : -11,96 MAXDRAWDOWN : -13,15 obtenue le 20/07/2007 ====================================================== ![]() ======== RAPPORT DES OPERATIONS D'ACHAT/VENTE ======== SEB FR0000121709 Date début backtest : 03/01/1997 Date fin backtest : 09/04/2008 Nombre de barres testées : 589 NOMBRE TOTAL D'OPERATIONS : 140 Nombre d'opérations gagnantes : 75 (soit 53,57%) Nombre d'opérations perdantes : 65 (soit 46,43%) TOTAL DES GAINS : 322,38 Gains des opérations gagnantes : 581,36 Gains des opérations perdantes : -258,98 MOYENNE DES GAINS : 2,3 Moyenne des gains des opérations gagnantes : 7,75 Moyenne des gains des opérations perdantes : -3,98 Meilleure opération gagnante : 32,78 Plus petite opération gagnante : 0,1 Plus grande opération perdante : -18,28 Plus petite opération perdante : 0 Maximum d'opérations gagnantes consécutives : 5 Gain : 53,5 Maximum d'opérations perdantes consécutives : 6 Perte : -25,78 MAXDRAWDOWN : -34 obtenue le 25/01/2002 ====================================================== Comme tout n'est pas aussi "rose", deux exemples qui ne fonctionnent pas maintenant : TRIGANO çà s'écroule ![]() Ciments Francais çà ne décolle pas ![]() Je posterai une règle statistique qui permettra de scanner automatiquement un groupe donné de valeurs et indiquera quelles sont celles qui doivent être à l'achat ou à la vente. Cordialement.
Bonsoir,
Statistique "STAT_TURNING_POINTS". //================================================= //STAT_TURNING_POINTS //================================================= //V1.0 (finalisée) //09/04/2008 //smallcaps90 //================================================= //Recherche des valeurs à l'achat ou à la vente //à l'aide du programme indicateur "TURNING_POINTS" //================================================= //Fixer le nb de barres à explorer éventuellement //Si pas utilisée, on se place de facto à la derinère //barre de l'historique //N=1 //--------------------------Scanner le groupe de valeurs // //Pour N Cours Si TURNING_POINTS_Entrees_Sorties.E<>0 Alors Colonne1="Passage à l'achat possible demain à : " & Cloture & " sur : " Select=1 FinSi Si TURNING_POINTS_Entrees_Sorties.S<>0 Alors Colonne1="Passage à la vente possible demain à : " & Cloture & " sur : " Select=1 FinSi //FinPour //Affichage valeurs Si Select=1 ALORS Selection //Fin du code Programme à la logique "classique". J'ai indiqué comme niveau d'achat/vente, la valeur de la cloture au jour où le signal est émis c'est à dire à la dernière période de l'historique. Le programme de "backtest" de MLOG permet dans "TradGains2" les options suivantes fonctions des valeurs que vous affecterez aux paramètres P1, P2 et P3 : ======================== P1 = 0 : Opération au cours de Cloture du jour du signal P1 = 1 : Opération au cours d'Ouverture du jour suivant le signal P1 = 2 : Opération au cours moyen du jour suivant le signal P2 : Stop de protection à -P2% de perte P2 = 0 : Pas de stop de protection P3 = 1 : Affichage de chaque opération d'Achat/Vente dans la fenêtre d'affichage des règles P3 = 0 : Affichage réduit dans la fenêtre d'affichage des règles ======================== Le système élémentaire présenté dans le post précédent y est utilisé en Weekly. Rien n'interdit de l'utiliser sur une autre unité de temps si vous préférez. Vous pouvez donc l'installer sous l'onglet "Jour", ou "Semaine" ou "Mois" de la fenêtre "Règle statistique" de Graphe AT Pro suivant votre préférence. je l'ai fait sous l'onglet "Semaine" bien sûr. ![]() En Weekly on devrait attendre vendredi 10/04 au soir pour appliquer la stat. A des fins d'illustration, je l'ai fait tourner ce soir. Voici que cela donne sur le groupe CAC40: =================================== Groupe : cac40 Date : 10/04/2008 Recherche des valeurs à l'achat ou à la vente à l'aide du programme indicateur "TURNING_POINTS_INDIC" Passage à l'achat possible demain à : 25,83 sur : Vivendi Passage à l'achat possible demain à : 44,65 sur : Suez Passage à l'achat possible demain à : 46,32 sur : Peugeot Passage à l'achat possible demain à : 59,82 sur : EDF Passage à l'achat possible demain à : 62,56 sur : Michelin Passage à l'achat possible demain à : 65,91 sur : Renault Passage à la vente possible demain à : 160,61 sur : Vallourec Passage à la vente possible demain à : 163,58 sur : Unibail Passage à la vente possible demain à : 83,26 sur : Schneider Electric =================================== Cordialement.
Je passais juste pour te passer un petit bonjour SmallCaps.
Tu as encore fait fort à ce que je vois... Bon courage !! Arnaud
Bonsoir Arnaud,
merci pour tes encouragements. Boff il s'agit d'un système très très simple. C'est peut-être là son principal "avantage". Il reste cependant pas mal de choses à améliorer. Je voulais lancer le Schmilblick. Il y a tant à faire! Il faut dire que la file [programmation] devenait pléthorique et difficile à utiliser. Cà va l'aérer un peu. Où en es-tu de tes développements sur PRT? Et puis il y a christophe avec sa théorie des vers...qu'en penses-Tu? Bonne soirée. Daniel
Bonjour Smallcaps,
Nouvel utilisateur de GraphATPro je suis impressionnée par le travail collaboratif que vous avez mené sur GraphAt et vais être un assidu lecteur (avant petre de contribuer si mes compétences avancent dans ce domaine)de cette nouvelle file. Pourrais tu stp poster le prog de TradGains 2 que tu utilises pour "turning_points" pour représenter l'equity curve car je n'ai pas du tout les mêmes résultats et affichage que toi? Merci encore jp
Bonjour jpsafe,
Bienvenue au club! N'hésite pas à t'exprimer. Je poste ce que tu me demandes : à savoir l'ensemble des programmes mis à disposition par MLOG qui permettent de faire un "backtest" pour un système du type "Stop And Reverse", tj dans le marché donc. J'ai modifié légèrement la présentation du rapport final du test uniquement dans la règle Trade Gains 2" uniquement. Je te rappelle que ce rapport est accessible en sélectionnant "Fenêtre d'affichage..." dans le menu "Règles" de la fenêtre principale de GrapheAT Pro. Je n'ai pas modifié la logique du programme. Un texte d'aide existe aussi sur ce package dans GrapheAT Pro. La structure des règles qui constituent le package est la suivante : ![]() Le programme principal "Trading system 2" est le suivant avec sa fenêtre Propriétés : //================= // Trading system 2 //================= //V2.2 //Placer ici vos règles qui traduisent vos conditions d'ACHAT et de VENTE //ainsi que la ligne : SIGNAL =ACHAT-VENTE //utilisées par d'autres programmes dérivés de celui-ci //On peut placer directement celles-ci comme dans l'exemple //purement fictif ci-dessous //On sait que le croisement de moyennes mobiles sans filtre //pour éliminer les faux signaux, n'est pas une méthode valable //l'exemple est donc donné à titre de syntaxe admissible. //===================================================== //Croisements de 2 moyennes mobiles // //Achat = CROISE(MOYENNE(CLOTURE,5),MOYENNE(CLOTURE,20))>0 //Vente = CROISE(MOYENNE(CLOTURE,5),MOYENNE(CLOTURE,20))<0 //===================================================== //On peut aussi récupérer les valeurs des variables utiles de règles indicateurs //comme dans le cas qui nous intéresse du système de trading : "TURNING_POINTS" //====================================== //Règle d'achat/vente du SYSTEME TURNING_POINT // ACHAT = TURNING_POINTS_Entrees_Sorties.E<>0 VENTE = TURNING_POINTS_Entrees_Sorties.S<>0 SIGNAL = ACHAT-VENTE //====================================== //Dans la règle ACHAT, //TURNING_POINTS_Entrees_Sorties est le nom de l'indicateur //E est le nom de la variable que l'on veut récupérer de l'indicateur //Fin du code La partie utile pour "TURNING_POINTS" est coloriée en bleu. ![]() Les règles dérivées de la précédente sont : //================= //Trad AchatVente 2 //================= // Position Acheteuse ou Vendeuse ACHATVENTE = GAINS2.POS //Fin du code ![]() //================== //TradAV sur cours 2 //================== // Signal d'achat/Vente sur les cours (flèches) Si SIGNAL = 1 Alors FACHAT = -1 // Achat : flèche haut en dessous des cours Si SIGNAL = -1 Alors FVENTE = 1 // Vente : flèche bas au dessus des cours //Fin du code ![]() //============ //Trad Gains 2 //============ //V3.2 //le 10/09/2006 // Calcul de la courbe des gains du Signal d'Achat/Vente // et des statistiques sur les opérations dans la fenêtre d'Affichage (rapport de backtest) // P1 = 0 : Opération au cours de Cloture du jour du signal // P1 = 1 : Opération au cours d'Ouverture du jour suivant le signal // P1 = 2 : Opération au cours moyen du jour suivant le signal // P2 : Stop de protection à -P2% de perte // P2 = 0 : Pas de stop de protection // P3 = 1 : Affichage de chaque opération d'Achat/Vente dans la fenêtre d'affichage des règles //RENSEIGNEMENTS sur le backtest à : //http://www.pro-at.com/forums-bourse/view-post.php?... GAINS = GAINS(1) GAINSREEL = GAINSREEL(1) BUYANDHOLD = BUYANDHOLD(1) Pos = Pos(1) SIGNALSTOP=SIGNAL // Affichage des statistiques sur les opérations Si RangHisto=1 Alors DateDepart$=DateHisto$ Si RangHisto=FinHisto Alors Afficher "" Afficher "======== RAPPORT DES OPERATIONS D'ACHAT/VENTE ========" Afficher "" Afficher NomAction$ & " " & CodeAction$ Afficher "" Afficher "Date début backtest : " & DateDepart$ Afficher "Date fin backtest : " & Datehisto$ Afficher "Nombre de barres testées : " & FinHisto Afficher "" Afficher "NOMBRE TOTAL D'OPERATIONS : " & Trade Afficher " Nombre d'opérations gagnantes : " & Win & " (soit " & ARRONDI(Win/Trade*100,2) & "%)" Afficher " Nombre d'opérations perdantes : " & Lost & " (soit " & ARRONDI(Lost/Trade*100,2) & "%)" Afficher "" Afficher "TOTAL DES GAINS : " & ARRONDI(GAINSREEL,2) Afficher " Gains des opérations gagnantes : " & ARRONDI(SomWin,2) Afficher " Gains des opérations perdantes : " & ARRONDI(SomLost,2) Afficher "" Afficher "MOYENNE DES GAINS : " & ARRONDI(GAINSREEL/Trade,2) Afficher " Moyenne des gains des opérations gagnantes : " & ARRONDI(SomWin/Win,2) Afficher " Moyenne des gains des opérations perdantes : " & ARRONDI(SomLost/Lost,2) Afficher "" Afficher " Meilleure opération gagnante : " & ARRONDI(MaxWin,2) Afficher " Plus petite opération gagnante : " & ARRONDI(MinWin,2) Afficher " Plus grande opération perdante : " & ARRONDI(MaxLost,2) Afficher " Plus petite opération perdante : " & ARRONDI(MinLost,2) Afficher "" Afficher " Maximum d'opérations gagnantes consécutives : " & ARRONDI(MaxNbConsWin,2) AFFicher " Gain : " & ARRONDI(MaxConsWin,2) Afficher " Maximum d'opérations perdantes consécutives : " & ARRONDI(MaxNbConsLost,2) Afficher " Perte : " & ARRONDI(MaxConsLost,2) Afficher "" Afficher "MAXDRAWDOWN : " & ARRONDI(MaxIntraDrawDown,2) & " obtenue le " & DateMaxIntra$ Afficher "" Afficher "======================================================" Afficher "" FinSi //CALCULS //SI RANGHISTO>=FINHISTO-1000 ALORS //permet de limiter le nb de barres testées // Calcul cours de l'opération Si P1=0 Alors CoursOper = Cloture // Opération au cours de Cloture si P1=0 Sinon Si RANGHISTO=FINHISTO Alors Stop Si P1=1 Alors CoursOper = Ouverture(-1) // Opération au cours d'ouverture du jour suivant si P1=1 Sinon CoursOper = (Haut(-1) + Bas(-1) + Cloture(-1)) / 3 // Opération au cours moyen du jour suivant si P1=2 FinSi Si RANGHISTO = 1 Alors // Début historique Cours0 = CoursOper Pos = SIGNALSTOP CoursDebOper = CoursOper Stop FinSi // Stop de protection Si P2>0 ET Pos<>0 ET SIGNALSTOP=0 Alors Si Pos>0 Alors Perte = (CoursDebOper-Bas)/CoursDebOper Sinon Perte = (Haut-CoursDebOper)/CoursDebOper Si Perte >= P2% Alors SIGNALSTOP = -2 * Pos CoursOper = CoursDebOper * (1-Pos*P2%) Si CoursOper>Haut Alors CoursOper = Haut Si CoursOper<Bas Alors CoursOper = Bas Finsi FinSi // Calcul de la courbe des Gains PlusValue = (CoursOper - CoursDebOper) * Pos GAINS = GAINSREEL + PlusValue BUYANDHOLD = CoursOper - Cours0 // Calcul du MaxIntraDrawDown Si Pos<>0 Alors Si Pos>0 Alors Perte = Bas-CoursDebOper Sinon Perte = CoursDebOper-Haut Si Perte>0 Alors Perte = 0 PerteTotale = (GAINSREEL-MaxGains)+Perte Si PerteTotale<MaxIntraDrawDown Alors MaxIntraDrawDown = PerteTotale DateMaxIntra$ = DateHisto$ FinSi FinSi // Calcul des statistiques de fin d'opération Si Pos<>SIGNALSTOP ET SIGNALSTOP<>0 ET Pos<>0 Alors Trade = Trade+1 Si GAINS>MaxGains Alors MaxGains = GAINS Si PlusValue>0 Alors Win = Win+1 SomWin = SomWin+PlusValue Si Win=1 Alors MinWin = PlusValue Si PlusValue<MinWin Alors MinWin = PlusValue Si PlusValue>MaxWin Alors MaxWin = PlusValue ConsWin = ConsWin+PlusValue Si ConsWin>MaxConsWin Alors MaxConsWin = ConsWin NbConsWin = NbConsWin+1 Si NbConsWin>MaxNbConsWin Alors MaxNbConsWin = NbConsWin ConsLost = 0 NbConsLost = 0 Sinon Lost = Lost+1 SomLost = SomLost+PlusValue Si Lost=1 Alors MinLost = PlusValue Si PlusValue>MinLost Alors MinLost = PlusValue Si PlusValue<MaxLost Alors MaxLost = PlusValue ConsLost = ConsLost+PlusValue Si ConsLost<MaxConsLost Alors MaxConsLost = ConsLost NbConsLost = NbConsLost+1 Si NbConsLost>MaxNbConsLost Alors MaxNbConsLost = NbConsLost ConsWin = 0 NbConsWin = 0 FinSi FinSi // Affichage des opérations si P3=1 Si P3=1 ET Pos<>SIGNALSTOP ET SIGNALSTOP<>0 ET Pos<>0 Alors Si Pos>0 Alors Operation$="ACHAT" Sinon Operation$="VENTE" DateFinOper$ = DateHisto$ Afficher Operation$ & " " & DateDebOper$ & " " & CTXT$(CoursDebOper,2) & " " & DateFinOper$ & " " & CTXT$(CoursOper,2) & " " & CTXT$((CoursOper-CoursDebOper)/CoursDebOper*Pos*100,2) & "%" FinSi // Début d'une nouvelle opération (ou seulement fin de la précédente) Si Pos<>SIGNALSTOP ET SIGNALSTOP<>0 Alors GAINSREEL = GAINS Si ABSOLU(SIGNALSTOP)=1 ALors // Début d'une nouvelle opération Pos = SIGNALSTOP CoursDebOper = CoursOper DateDebOper$ = DateHisto$ Sinon Pos = 0 // Arrêt de l'opération à cause d'un stop loss FinSi Finsi //FINSI //Fin du code ![]() C'est dans cette dernière règle que se trouve l'algorithme de calcul des performances du système sur chaque action que tu sélectionnes. On peut effectuer un backtest en affichant seulement cet indicateur sous les cours comme je l'ai fait plus haut, après avoir entré bien sûr les règles d'achat et de vente dans "Trading system 2". Tu devrais retrouver les mêmes résultats que moi à condition que nos historiques soient identiques... Attention à celà, nous avons vu apparaître de nombreuses différences entre nous sur la file [Programmation] pour cette raison, le plus souvent dues à un manque de données. Cordialement.
édité le : 11-04-2008 15:57:57
Bonjour SmallCaps,
ou j'en suis avec PRT ? Je patauge pour tout dire. Disons aussi que j'ai ralenti ma cadence de codage et de recherches tout azimut. Et puis je trade en réel le FCE maintenant, avec plus ou moins de réussite, plutôt moins que plus d'ailleurs. En plus je dépouille de plus en plus mes graphs des indicateurs, çà me bloquait trop dans mes décisions. Mais je garde les bandes de bollingers et 1 ou 2 MM. Je me fixe plutôt sur le comportement des prix eux-même. Pour les systèmes de trading, je cherche actuellement une manière de découper le marché avec un filtre en période de range ou de tendance, avec quoi je ne sais pas encore (ADX, à base MM de Kaufman ??), pour appliquer une stratégie différente sur chaque période définie. Un filtre de Kalman en tendance par exemple et un SMI pour les ranges. Ce ne sont que des idées en l'air, je verrai bien. Pour la file sur les vers et le Simplexe, j'ai fait des recherches, je comprends à peu près comment çà fonctionne, mais je n'ai aucune idée de la manière de l'appliquer au trading. Je ne sais pas du tout comment Christophe a fait, mais apparement il bosse dessus depuis un paquet de temps. Voilà, bonne continuation dans tes recherches. Arnaud
Bonsoir Smallcaps, un grand merci pour ta réponse ça fonctionne parfaitement
Serait ce abuser que d'avoir le code uniquement de l'equity curve pour des opérations long et cash(ie pas de position short) Merci encore de ton aide Cordialement jp
Bonjour jpsafe,
Je ne suis pas chez moi actuellement et je n'accède pas à GrapheAT Pro. Je dois revenir provisoirement jeudi soir pour repartir vendredi ou samedi. Je regarderai ce qui t'intéresse à ce moment là. Cependant la modification du programme de MLOG n'est pas immédiate. Effectivement ce prog s'applique au cas ou on est constamment ds le marché : long puis vad puis long puis vad... Dans l'indicateur dérivé "TURNING_POINTS-Entrées_Sorties" cependant, il y a un bout de code à la fin, après le titre "Bilan théorique", qui te permet déjà d'avoir une idée de ce qui se passe lorsqu'on ne se place pas en VAD lors d'une vente après une position longue. Mais il n'y a pas de tracé d'equity ni de calcul de la MDD. Il suffit que tu ouvres la fenetre d'affichage pour visualiser qq résultats. Cordialement.
Bonjour Smallcaps et à tous.
Perso j'aime bien rajouter ces lignes (en bleu) ... donc je vous en fait part ... dans le prog de stat car elle permettent de bien voir le comportement des cours (à la date de détection) et de prendre toutes les détections Achat et vente de la journée (ou semaine, mois..). Ces informations peuvent être copiées collées dans excel pour un traitement ou analyse. Nota : Dans le tableau de la stat, la première valeur indique le prix d'ouverture du lendemain de la stat car je prends comme hypothèse que je vais rentrer à l'ouverture le lendemain matin (ce qui est différent de ce que fait Smallcaps car il rentre au cours de cloture du jour de la stat). La 2ème valeur est le cours de cloture le soir où je suis rentré et ensuite les autres valeurs sont les cours de clotures des jours suivants. Citation de : smallcaps90 (au 10-04-2008 18:29:05) Voici la modif du prog Propriété : ![]() Voici comment se présente le tableau pour une recherche du suivi des signaux à la date du 12/03/2008 sur le SRD. Cliquez pour agrandirFOKI
édité le : 14-04-2008 19:10:17Laisser au marché, nous donner la direction...
Citation de : smallcaps90 (au 11-04-2008 14:43:56) Re C'est assez amusant de faire varier les paramètres P1, P2,P3 dans la fenêtre ci-contre, et de voir les conséquences sur la courbe "Trade Gain". Damned, les stop c'est pô bon pour le trading !!! FOKI
Laisser au marché, nous donner la direction...
Bonsoir,
Merci doublement FOKI pour tes modifications de la statistique et pour m'avoir signalé ensuite en PV que l'indicateur unique "TURNING_POINTS_INDIC" sur lequel est basé le système, est du type "repaint le passé" dans certains cas. Effectivement la vérification que j'ai faite du prog et des graphes est sans appel : il repaint bien le passé parfois. Il est donc inutilisable tel quel. "My God!". Pas de panique...c'est la partie effectuant le lissage du "%R" de Williams qui en est la cause. Je remplace cet algorithme par une moyenne de Hull 6 périodes, efficace et toute simple. Evidemmment les performances du système s'en ressentent et c'est en daily qu'il est le plus performant maintenant pour la plupart des actions. Il en reste qui y sont malgré tout "allergiques". Pour répondre également à cnrd qui souhaitait connaître les performances du système dans le cas où ne serait plus en "stop and reverse" mais seulement dans le cas où on ne serait que "long", j'ai aussi modifié le programme dérivé "TURNING_POINTS_Entrées_Sorties" au niveau de l'affichage du bilan final et j'ai ajouté le programme "TURNING_POINTS_PERF" dont le seul rôle est de tracer le graphe des gains théoriques dans ce cas sous les cours. Les résultats obtenus sont partiels pour le moment et il reste plusieurs statistiques de backtest à intégrer au prog, la MDD entre autres. La nouvelle structure d'installation des programmes est : ![]() Pour EDF en daily ce donne : ![]() Voyons les programmes et leurs fenêtres Propriétés : //==================== //TURNING_POINTS_INDIC //==================== //V3.0 (finalisée) //le 18/04/2008 //smallcaps90 //==================== //--------------------------Calcul du Williams% // HT=max(Haut,P1) BS=min(Bas, P1) W=100*(Cloture-HT)/(HT-BS) //--------------------------Lissage de W avec une Hull // W_Lisse = PONDERE(2*PONDERE(W,P2/2)-PONDERE(W,P2),RACINE(P2))//--------------------------Détermination des couleurs // M(0)=W_Lisse //Initialisations Si RangHisto=2 Alors Si M>=M(1) Alors V(0)=1 R(0)=0 Sinon V(0)=0 R(0)=1 FinSi FinSi //Détermination de la tendance Si RangHisto>2 Alors Si M(1)>M Alors R=1 V=0 FinSi Si M(1)<M Alors V=1 R=0 FinSi Si M(1)=M Alors Si V(1)=1 Alors V=V(1) Si R(1)=1 Alors R=R(1) FinSi //Traitement des tracés // //Segments verts // Si V=1 ET V(1)=0 Alors Si A=0 Alors MV1(1)=M(1) MV1=M Sinon MV2(1)=M(1) MV2=M FinSi FinSi Si V=1 ET V(1)=1 Alors Si A=0 Alors MV1=M Si A=1 Alors MV2=M FINSI Si V=0 ET V(1)=1 Alors Si A=0 Alors MV1(1)=M(1) Si A=1 Alors MV2(1)=M(1) A=NON(A) FinSi //Segments rouges // Si R=1 ET R(1)=0 Alors Si B=0 Alors MR1(1)=M(1) MR1=M Sinon MR2(1)=M(1) MR2=M FinSi FinSi Si R=1 ET R(1)=1 Alors Si B=0 Alors MR1=M Si B=1 Alors MR2=M FinSi Si R=0 ET R(1)=1 Alors Si B=0 Alors MR1(1)=M(1) Si B=1 Alors MR2(1)=M(1) B=NON(B) FinSi FinSi //Fin du code ![]() //============================== //TURNING_POINTS_Entrees_Sorties //============================== //V0.4 (proto) //le 19/04/2008 //smallcaps90 //============================== //Si RangHisto >= FinHisto-50 //Alors //--------------------------Entrée position longue (Achat) // Si (MV1<>0 OU MV2<>0) ET (MV1(1)<>0 OU MV2(1)<>0) ET MV1(2)=0 ET MV2(2)=0 ET Flag=0 //permet d'alterner les op d'E/S Alors E=-1 Flag=1 NE=cloture //on achetera en fait à l'ouverture du lendemain NbOp=NbOp+1 FinSi //--------------------------Sortie position longue (Vente) // Si (MV1(1)<>0 OU MV2(1)<>0) ET MV1=0 ET MV2=0 ET Flag=1 Alors S=1 Flag=0 PJ=(cloture-NE) //on vendra en fait à l'ouverture du lendemain Profit=Profit(1)+PJ //calculé sur les positions longues seules pour le moment Si PJ>0 Alors Win=Win+1 Sinon Los=Los+1 FinSi FinSi Etat_position = Flag //FinSi //--------------------------Bilan théorique // //La partie qui suit est à l'état de prototype //Elle utilise des paramètres calculés plus haut //Elle est utilisée par la statistique Si RangHisto=FinHisto Alors Si E<>0 Alors OP$="Entrée position LONG à la période actuelle" Si S<>0 Alors OP$="Sortie position LONG à la période actuelle" Si Flag=0 ET E=0 ET S=0 Alors OP$="Aucune position en cours" Si Flag<>0 ET E=0 ET S=0 Alors OP$="Une position LONG en cours" Afficher "============RAPPORT DES OPERATIONS D'ACHAT============" Afficher "RESULTATS simplifiés pour l'action (longs seuls et sans frais)" Afficher NomAction$ & " " & CodeAction$ Afficher "" Afficher "Bilan : " & ctxt$(TURNING_POINTS_PERF.Perf,2) Afficher "Nombre Op d'achat = " & NbOp Afficher "Nb Achats WIN = " & Win Afficher "Nb Achats LOS = " & Los Afficher "Type Op en cours : " & op$ Afficher "=========================================================" FinSi //Fin du code ![]() Nouveau programme : //=================== //TURNING_POINTS_PERF //=================== //V0.1 (proto) //le 18/04/2008 //smallcaps90 //=================== Prof(0)=TURNING_POINTS_Entrees_Sorties.Profit Perf=Perf(1)+ Prof ![]() Les programmes de backtests ne sont pas modifiés. Dans le cas d'EDF, en date d'hier soir, les fenêtres d'affichage crées par "Trad Gains 2" dans le cas "Sop And Reverse" et "TURNING_POINTS_PERF" pour le cas "long seulement" sont : ======== RAPPORT DES OPERATIONS D'ACHAT/VENTE ======== ==================Strategie 'Stop And Reverse'================ EDF FR0010242511 Date début backtest : 21/11/2005 Date fin backtest : 17/04/2008 Nombre de barres testées : 610 NOMBRE TOTAL D'OPERATIONS : 141 Nombre d'opérations gagnantes : 69 (soit 48,94%) Nombre d'opérations perdantes : 72 (soit 51,06%) TOTAL DES GAINS : 35,9 Gains des opérations gagnantes : 128,86 Gains des opérations perdantes : -92,96 MOYENNE DES GAINS : 0,25 Moyenne des gains des opérations gagnantes : 1,87 Moyenne des gains des opérations perdantes : -1,29 Meilleure opération gagnante : 10,25 Plus petite opération gagnante : 0,04 Plus grande opération perdante : -7,91 Plus petite opération perdante : 0 Maximum d'opérations gagnantes consécutives : 6 Gain : 18,11 Maximum d'opérations perdantes consécutives : 6 Perte : -7,91 MAXDRAWDOWN : -15,64 obtenue le 13/02/2008 ====================================================== et : ============RAPPORT DES OPERATIONS D'ACHAT============ RESULTATS simplifiés pour l'action (longs seuls et sans frais) EDF FR0010242511 Bilan : 44,88 Nombre Op d'achat = 71 Nb Achats WIN = 42 Nb Achats LOS = 29 Type Op en cours : Aucune position en cours ========================================================= Cette dernière stratégie est meilleure que la précédente dans le cas d'EDF. Remarque : l'étude précédente, qui n'est qu'un exemple d'emploi de GrapheAT Pro pour concevoir réaliser et tester une stratégie de trading volontairement très simple, reste bien entendu limitée, amendable, modifiable, criticable, n'hésitez pas à apporter votre pierre à l'édifice comme l'on fait quelques amis ici. Il est tj à l'état de prototype même si certaines composantes sont finalisées et il y a danger à l'employer tel quel pour le moment... Cordialement.
édité le : 18-04-2008 18:45:15
Merci Smallcaps pour avoir lancé cette file et pour toute ta contribution...je vais essaye d'apporter à ton édifice, malgré mes maigres connaissances, ma pierre.
Je vous présente un petit systeme en contre tendance, qui ne demande qu'à etre amelioré, testé.... La base de celui ci est de prendre une position inverse sur un titre lorsqu'il est en fonction de certains critères en exces IL n'est valable que sur les actions du SRD (pour de l'AT court terme et surtout pour du contre tendance à mon avis seul les actions à tres fort volume son valables, cela est du à la prise benef, la VAD possible, et la concordance des ateistes). Ce n'est que pour des prises de position de quelques jours Le placement des stops est logique et aisé Par contre il n'y a pas beaucoup de signaux L'idée du système est de chercher un titre dont le DX est à son apogée, sa volatilité élevée le tout cumulés avec un signal "probable" de retournement de la Hull Il est composé de trois indicateurs INDICATEUR N°1 (Hull pic creux) La hull utilisee dans l'indic "hull pic creux" de smallcaps est un KST inverse avec comme valeur 5-10-20 //Moyenne de Hull //DF le 18/06/2005 //v1.0 // A(0) = 2*PONDERE(CLOTURE,P1/2) B(0) = PONDERE(CLOTURE,P1) HULL1 = PONDERE(A-B,RACINE(P1)) A1(0) = 2*PONDERE(CLOTURE,P2/2) B1(0) = PONDERE(CLOTURE,P2) HULL2 = PONDERE(A1-B1,RACINE(P2)) A2(0) = 2*PONDERE(CLOTURE,P3/2) B2(0) = PONDERE(CLOTURE,P3) HULL3= PONDERE(A2-B2,RACINE(P3)) M_HULL=(HULL1*3 + HULL2*2 + HULL3*1)/6 La fenetre propriete http://img90.imageshack.us/img90/4396/hullproej4.jpg Donc le programme de la hull pric creux devient //=============== //HULL_PICS_CREUX //=============== //Détermination des pics et creux de la moyenne de Hull du prog HULL //par interpolation à l'aide de splines cubiques naturelles et //approximation de la vitesse de variation de la moyenne de Hull. //smallcaps.90 le 23/05/2006 // //Moyenne de Hull // MOY_HULL(0)=HULL.M_HULL SI RANGHISTO=FINHISTO //Après calcul global de la moyenne(?) ALORS POUR FINHISTO COURS SI (RANGHISTO>1) ET (RANGHISTO<FINHISTO) ALORS ALPHA(0)=3*(MOY_HULL(-1)-2*MOY_HULL(0)+MOY_HULL(1)) FINSI FINPOUR POUR FINHISTO COURS SI RANGHISTO=1 ALORS L(0)=1 U(0)=0 Z(0)=0 FINSI SI (RANGHISTO>1) ET (RANGHISTO<FINHISTO) ALORS L(0)=4-U(1) U(0)=1/L(0) Z(0)=(ALPHA(0)-Z(1))/L(0) FINSI SI RANGHISTO=FINHISTO ALORS L(0)=1 Z(0)=0 C(0)=Z(0) FINSI FINPOUR POUR FINHISTO COURS SI RANGHISTO=1 ALORS J=-FINHISTO+RANGHISTO+1 FINSI SI RANGHISTO<=FINHISTO //rétropropagation ALORS C(J)=Z(J)-U(J)*C(J-1) B(J)=MOY_HULL(J-1)-MOY_HULL(J)-(C(J-1)+2*C(J))/3 D(J)=(C(J-1)-C(J))/3 J=J+2 FINSI FINPOUR POUR FINHISTO COURS //Dérivées première et seconde SI RANGHISTO<FINHISTO ALORS FPRIME(0)=B(0) FSECONDE(0)=2*C(0) FINSI SI RANGHISTO=FINHISTO ALORS FPRIME(0)=B(1)+2*C(1)+3*D(1) FSECONDE(0)=2*C(1)+6*D(1) FINSI FINPOUR FINSI //Traitement de la dérivée par triple lissage de son momentum SI RANGHISTO=FINHISTO ALORS POUR FINHISTO COURS MomP(0)=FPRIME-FPRIME(P5) //MomS(0) = FSECONDE-FSECONDE(P5) //Triple lissage exponentiel du momentum de la dérivée première // M1(0)=EXPOSUIV(M1,MomP,P1) M2(0)=EXPOSUIV(M2,M1,P2) M3(0)=EXPOSUIV(M3,M2,P3) ABSMomP=ABSOLU(MomP) M4(0)=EXPOSUIV(M4,ABSMomP,P1) M5(0)=EXPOSUIV(M5,M4,P2) M6(0)=EXPOSUIV(M6,M5,P3) HULL_PICS_CREUX=100*(M3/M6) DERPREMIERE=FPRIME DERSECONDE(0)=FSECONDE M_DERPREM=PONDERE(2*PONDERE(DERPREMIERE,P1/2)- PONDERE(DERPREMIERE,P1),RACINE(P1)) //M_DERSEC=PONDERE(2*PONDERE(DERSECONDE,P1/2)- //PONDERE(DERSECONDE,P1),RACINE(P1)) //-----------------Extremas de HULL_PICS_CREUX // SI M_DERPREM(2)<M_DERPREM(1) et M_DERPREM(1)>M_DERPREM(0) ALORS SOMMETS_HAUTS(1) = 1 FLECHE_BLEUE(1)=(SOMMETS_HAUTS(1)*M_DERPREM(1))*(M_DERPREM(1)>0) *(CONV_CONC_HULL.HAUSSE_DEBUT(1)<>0 OU CONV_CONC_HULL.HAUSSE_FIN(1)<>0) FINSI SI M_DERPREM(2)>M_DERPREM(1) et M_DERPREM(1)<M_DERPREM(0) ALORS SOMMETS_BAS(1) = 1 FLECHE_ROUGE(1)= SOMMETS_BAS(1)*M_DERPREM(1)*(M_DERPREM(1)<0) *(CONV_CONC_HULL.BAISSE_DEBUT(1)<>0 OU CONV_CONC_HULL.BAISSE_FIN(1)<>0) FINSI FINPOUR FINSI la fenetre propriete de la hull pic creux http://img153.imageshack.us/img153/3531/hpcproxf7.jpg INDICATEUR N°2 le DX Jour...c'est un systeme KST inversé pour favoriser le court terme en 5-10-20 jours(1 semaine; 2 semaines; 20 jours qui correspond à un mois) dont voici la programmation // DMI DMP = Haut-Haut(1) Si DMP<0 alors DMP=0 DMM = Bas(1)-Bas Si DMM<0 alors DMM=0 Si DMM=DMP Alors DMM=0 DMP=0 Sinon Si DMM>DMP alors DMP=0 sinon DMM=0 FinSi TR = MAXVAL(ABSOLU(Haut-Bas),ABSOLU(Haut-Cloture(1))) TR = MAXVAL(TR,ABSOLU(Bas-Cloture(1))) // True Range Si RANGHISTO<=20 Alors TR20 = TR20+TR DMP20 = DMP20+DMP DMM20 = DMM20+DMM Sinon TR20 = TR20-(TR20/20)+TR DMP20 = DMP20-(DMP20/20)+DMP DMM20 = DMM20-(DMM20/20)+DMM FinSi // DI+ et DI- DIPLUS20 = DMP20/TR20*100 DIMOINS20 = DMM20/TR20*100 // DMI DMP = Haut-Haut(1) Si DMP<0 alors DMP=0 DMM = Bas(1)-Bas Si DMM<0 alors DMM=0 Si DMM=DMP Alors DMM=0 DMP=0 Sinon Si DMM>DMP alors DMP=0 sinon DMM=0 FinSi TR = MAXVAL(ABSOLU(Haut-Bas),ABSOLU(Haut-Cloture(1))) TR = MAXVAL(TR,ABSOLU(Bas-Cloture(1))) // True Range Si RANGHISTO<=5 Alors TR5 = TR5+TR DMP5 = DMP5+DMP DMM5 = DMM5+DMM Sinon TR5 = TR5-(TR5/5)+TR DMP5 = DMP5-(DMP5/5)+DMP DMM5 = DMM5-(DMM5/5)+DMM FinSi // DI+ et DI- DIPLUS5 = DMP5/TR5*100 DIMOINS5 = DMM5/TR5*100 // DMI DMP = Haut-Haut(1) Si DMP<0 alors DMP=0 DMM = Bas(1)-Bas Si DMM<0 alors DMM=0 Si DMM=DMP Alors DMM=0 DMP=0 Sinon Si DMM>DMP alors DMP=0 sinon DMM=0 FinSi TR = MAXVAL(ABSOLU(Haut-Bas),ABSOLU(Haut-Cloture(1))) TR = MAXVAL(TR,ABSOLU(Bas-Cloture(1))) // True Range Si RANGHISTO<=10 Alors TR10 = TR10+TR DMP10 = DMP10+DMP DMM10 = DMM10+DMM Sinon TR10 = TR10-(TR10/10)+TR DMP10 = DMP10-(DMP10/10)+DMP DMM10 = DMM10-(DMM10/10)+DMM FinSi // DI+ et DI- DIPLUS10 = DMP10/TR10*100 DIMOINS10 = DMM10/TR10*100 ADX5=ABSOLU((DIPLUS5-DIMOINS5)/(DIPLUS5+DIMOINS5))*100 ADX10=ABSOLU((DIPLUS10-DIMOINS10)/(DIPLUS10+DIMOINS10))*100 ADX20=ABSOLU((DIPLUS20-DIMOINS20)/(DIPLUS20+DIMOINS20))*100 KADX5=ADX5*3 KADX10=ADX10*2 KADX20=ADX20*1 DXESJ=(KADX5+KADX10+KADX20)/6 L1=65 La fenetre des propriétés http://img501.imageshack.us/img501/1158/dxessg3.jpg INDICATEUR N°3 C'est un indicateur de volatilite en systeme KST inverse comme le DX TR1=((HAUT(0)-BAS(0))/BAS(0))*100 TR2=absolu((HAUT(0)-CLOTURE(1))/cloture(1))*100 TR3=ABSOLU((BAS(0)-CLOTURE(1))/cloture(1))*100 PH2=MAXVAL(TR1,TR2) TR(0)=MAXVAL(PH2,TR3) MTR5(0)=EXPOSUIV(MTR5,TR,5) MTR10(0)=EXPOSUIV(MTR10,TR,10) MTR20(0)=EXPOSUIV(MTR20,TR,20) VOLAES=(MTR5*3 + MTR10*2 + MTR20*1)/6 MTR50(0)=EXPOSUIV(MTR50,TR,50) MTR150(0)=EXPOSUIV(MTR150,TR,100) MTR250(0)=EXPOSUIV(MTR250,TR,200) MVOLAES=(MTR50*1 + MTR150*2 + MTR250*3)/6 La fenetre des proprietes http://img167.imageshack.us/img167/1043/volaessn3.jpg LA REGLE STAT: à afficher sur les cours un retournement de la hull lorsque le Dx est à son maximum (>65) et lorsque la volatilite est forte cad volatilite court terme >à la volatilite longt terme SI ((DXESJOUR.DXESJ(0))>65 OU (DXESJOUR.DXESJ(1))>65) ET HULL_PICS_CREUX.FLECHE_ROUGE(0)<0 ET (VOLAESCTMT.VOLAES(0))>(VOLAESCTMT.MVOLAES(0)) ALORS ACHAT=1 FINSI SI ((DXESJOUR.DXESJ(0))>65 OU (DXESJOUR.DXESJ(1))>65) ET HULL_PICS_CREUX.FLECHE_BLEUE(0)>0 ET (VOLAESCTMT.VOLAES(0))>(VOLAESCTMT.MVOLAES(0)) ALORS VENTE=1 FINSI Un graphique pour ilustrer le tout http://img91.imageshack.us/img91/4127/suezdx2yt1.gif
Bonjour crnd,
Merci beaucoup pour ta contribution. Le système est intéressant dans son principe en contre-tendance, nous en avions parlé en PV d'ailleurs. A ce sujet en comparant de plus près mes graphes Suez aux tiens je viens de voir que je n'ai pas tout à fait les mêmes signaux d'A/V que toi. Je pensais que cela pouvait être du à une différence au niveau des historiques comme cela arrive parfois mais en examinant ton graphe de "HULL_PICS_CREUX" je me suis aperçu qu'il ne donne pas tous les pics ni tous les creux de la Hull pondérée. Cela se voit bien sur ton graphe sous les cours. Regarde début et fin février 2008, il manque les flèches bleues des deux pics. Même chose pour le pic de mi-mars… Je pense que la cause en est la suivante : si je reprends le paragraphe //-----------------Extremas de HULL_PICS_CREUX de l’indicateur, les conditions marquées en rouge dans l'extrait ci-dessous font appel dans mon programme à quatre variables récupérées dans la règle "CONV_CONC_HULL" que sont "HAUSSE_DEBUT(1)", "HAUSSE_FIN(1)", "BAISSE_DEBUT(1)" et "BAISSE_FIN(1)". Si tu ne places pas le programme "CONV_CONC_HULL" dans ta base de règles ces variables sont inconnues. //-----------------Extremas de HULL_PICS_CREUX // SI M_DERPREM(2)<M_DERPREM(1) et M_DERPREM(1)>M_DERPREM(0) ALORS SOMMETS_HAUTS(1) = 1 FLECHE_BLEUE(1)=(SOMMETS_HAUTS(1)*M_DERPREM(1))*(M_DERPREM(1)>0) *(CONV_CONC_HULL.HAUSSE_DEBUT(1)<>0 OU CONV_CONC_HULL.HAUSSE_FIN(1)<>0) FINSI SI M_DERPREM(2)>M_DERPREM(1) et M_DERPREM(1)<M_DERPREM(0) ALORS SOMMETS_BAS(1) = 1 FLECHE_ROUGE(1)= SOMMETS_BAS(1)*M_DERPREM(1)*(M_DERPREM(1)<0) *(CONV_CONC_HULL.BAISSE_DEBUT(1)<>0 OU CONV_CONC_HULL.BAISSE_FIN(1)<>0) FINSI "CONV_CONC_HULL" est disponible sur la file à : http://www.pro-at.com/forums-bourse/topic.php?TOPI... post du 27/06/2005 à 18h49. Il faut que tu introduises cette règle dans ta base. Je n'ai pas encore eu le temps d'entrer en profondeur dans ton système pour voir comment on peut augmenter le nombre de signaux qu'il donne, je le ferai à mon retour début mai. D'ici là je ne doute pas que cela se fasse... Cordialement.
édité le : 19-04-2008 11:40:38
Hello smallcaps
peut etre est ce du au fait que j'ai modifier la hull... la hull que j'utilids est une KST 5-10-20 de ta hull de base...je t joins mon prog "conv_conc_hull" que j'ai dans ma base: //============== //CONV_CONC_HULL //============== //Recherche des zones convexes/concaves et ascendantes/descendantes //sur une moyenne de Hull //le 30/06/2005 |


