Ajouter AaZ Systeme à vos favoris Me connecter | Plan du site | Liens partenaires | Mon panier
Rechercher : Site | Code valeur | Boutique | Forums
Logiciel boursier  Waldata 
 Code ProBackTest®

 

Page 3
page précédente page suivante
1 2 3 4 5 6

 

Dernière mise à jour: 10/01/2005

 

TRES BIENTOT TOUT LE CODE DE l'ASCENSEUR (ou avalement haussier) AU FORMAT PROREALTIME.

Vous ne pouvez pas attendre?
Inscrivez-vous à notre NewsLetter et recevez le code en avant première

Subscribe to our FREE Newsletter:

 

ou Revenez vite voir les dernières mises à jour...

 

Dans cette partie, nous allons développer le code ProBuilder/ProBackTest qui permet à ProRealTime de générer les ordres d'entrée et de placer les stops de protection et ordres de sortie dès qu'un niveau de profit est atteint.

Nous définirons également des paramètres que nous pourrons modifier à loisir afin d'évaluer la meilleure combinaison possible pour une performance optimale. Voici en résumé ce que notre code ProBuilder/ProBackTest et ProRealTime doivent faire:

Setup

a) Calculer une Moyenne Mobile 8 et 40 barres. Les valeurs 8 et 40 sont des paramètres du système;

b) Calculer le Range de chaque barre: le Range est défini comme la hauteur d'un chandelier c'est à dire le prix le plus haut - le prix le plus bas.

Entrées Longues

a) Valider Ascenseur Haussier: La Barre courante a sa clôture dans le quart haut du Range. La Barre précedente a sa clôture dans le quart bas du range.

b) La Barre Courante doit clôturer au dessus de la moyenne mobile 8 barres et Moyenne Mobile 40 barres. 8 et 40 sont des valeurs de départ que nous optimiserons.

c) Acheter sur et seulement sur la barre suivante à partir d'un point de plus que le plus Haut formé par l'Ascenseur Haussier. Ce plus haut est calculé comme le prix le plus haut entre le plus Haut de la barre Courante et le plus Haut de la barre Précédente.

Entrées Courtes (Vente A Découvert)

a) Valider Ascenseur Baissier: La Barre courante a sa clôture dans le quart bas du Range. La Barre précedente a sa clôture dans le quart haut du range.

b) La Barre Courante doit clôturer au dessus de la moyenne mobile 8 barres et Moyenne Mobile 40 barres. Pour rappel 8 et 40 sont des paramètres que nous optimiserons.

c) Vendre A Découvert sur et seulement sur la barre suivante à partir d'un point de moins que le plus Bas formé par l'Ascenseur Baissier. Ce plus Bas est le prix le plus bas entre le plus bas de la barre Courante et le plus bas de la barre Précédente.

Stop et Sorties

a) Pour une entrée longue, calculer et placer le Stop de protection au plus bas de l'Ascenseur Haussier moins 1 point.
Pour une Entrée Short, calculer et placer le Stop de protection au plus haut de l'Ascenseur Baissier moins 1 point.

b) Calculer et placer l'ordre à Prix Limité pour sortir quand le profit atteint 2 fois le risque; Cet ordre est un ordre d'achat pour une position Courte et un ordre de vente quand la position est longue. Le multiplicateur du risque qui détermine le seuil de profit est un paramètre que l'on pourra optimiser.

Retour 

 

Paramètres

Dans la dénomination ProRealTime, un Input ou Paramètre en Français, permet à l'utilisateur de contrôler le calcul d'un indicateur, stratégie ou fonction sans avoir besoin de "bidouiller" le code. Prenons l'exemple d'une Moyenne Mobile qui est un indicateur des plus classiques. En tant qu'utilisateur vous pouvez être habitués à travailler avec une Moyenne Mobile 10 jours. Un autre utilisateur peut, lui, travailler avec une Moyenne Mobile 40 jours. Pour rendre tout le monde heureux, ProRealTime devrait donc fournir toutes les "longueurs" possibles et imaginable de Moyenne Mobile. Ce serait vite ingérable et ProRealTime serait vite obligé de limiter le nombre de possibilités.
Pour éviter cette limitation, ProRealTime a créé un indicateur générique Moyenne Mobile dont le calcul est contrôlable par l'utilisateur à l'aide du paramètre "longueur" . Ainsi pour afficher une Moyenne Mobile 10 jours, il suffit de spécifier 10 pour le paramètre "longueur" et de spécifier 40 pour afficher une Moyenne Mobile 40 jours.

Ce qui est valable pour un l'indicateur de type Moyenne Mobile est valable pour tous les autres indicateurs mis à disposition par ProRealTime ... et bien sûr toutes les stratégies que nous développons en ProBuilder/ProBackTest. Ainsi dans tout système de trading, nous pouvons définir autant de paramètres que nous souhaitons puis les modifier pour voir la valeur qui génère le profit maximum. Par exemple, est-ce que le système est plus profitable avec une Moyenne Mobile 10 et 40 ou avec 5 et 30? Ou encore, faut-il attendre un profit égal à 2 fois le risque pour sortir ou bien 1,8 est un meilleur ratio ? Une fois ces paramètres créés dans notre code ProBuilder/ProBackTest, on y accède via l'interface de ProRealTime et on peut non seulement les modifier individuellement, mais également les optimiser. L'optimisation consiste à trouver la valeur du paramètre EN UNE SEULE FOIS (et non pas par approximation successive) qui génère le gain maximum. Ainsi, toujours dans notre exemple, ProRealTime permet de trouver la combinaison de valeur des Moyenne Mobile Court et Long Terme qui génère le profit maximum. ProRealTime fait tout le travail pour vous.
Grosso Modo vous vous dîtes "J"aimerai savoir quelle Moyenne Mobiles CT, entre 5 et 20, ET Moyenne Mobile LT, entre 30 et 50, utiliser dans mon système de trading". ProRealTime teste alors toutes les combinaisons possibles et édite un rapport qui spécifie par exemple "La meilleure combinaison est CT = 17 et LT = 32". Bien sûr tous les détails, tels le DrawDown le pourcentage de profitabilité, etc sont listés. Et ce en une seule opération et en très peu de temps.

Maintenant que nous comprenons l'utilité des paramètres, voyons comment les définir dans notre code ProBuilder/ProBackTest.

Et Voilà. Pour définir nos paramètres, nous utilisons le mot réservé INPUTS: puis nous définissons chaque paramètre du nom désiré. Chaque nouveau paramètre est séparé du précédent par une virgule. On termine la définition des paramètres par une point virgule.
Ci-dessus nous avons défini les paramètres Longueur_CT, Longueur_LT et MultRisque.

Le 1er paramètre, Longueur_CT, servira de base au calcul de la Moyenne Mobile Court terme. Entre parenthèses, nous précisons la valeur initiale prise par ce paramètre, qui comme spécifié dans l'étude de notre exemple Ascenseur, est à 10. Dans la suite du code ProBuilder/ProBackTest nous pourrons utiliser le mot Longueur_CT à la place de la valeur 10. Il faut bien comprendre que Longueur_CT est un nom que l'on choisit et on aurait très bien pû dénommer ce paramètre Pierre, Paul ou Jacques. Cependant il est utile d'utiliser un nom qui soit facile à se remémorer par la suite. Vous pouvez utiliser des underscores '_' des traits d'union des majuscules, des lettres et des chiffres pour le nom dans une limite de 40 caractères. Cependant, faîtes attention à la consistance des noms donnés car cela aidera dans le développement.

Le second paramètre, Longueur_LT, servira de base au calcul de la Moyenne Mobile Long terme. Comme spécifié dans l'étude de notre exemple Ascenseur, sa valeur initiale est 40. Dans la suite du code ProBuilder/ProBackTest nous pourrons utiliser le mot Longueur_LT en lieu et place de la valeur 40.

Le troisième paramètre enfin, MultRisque, servira de base au calcul du Profit à atteindre avant de sortir d'une position. Il correspond au coefficient de multiplication du risque d'où son nom. Comme spécifié dans l'étude de notre exemple Ascenseur, sa valeur initiale est 2. Dans la suite du code ProBuilder/ProBackTest nous utiliserons le mot MultRisque en lieu et place de la valeur 2.

Retour

 

Setup

Pour comprendre le code que nous allons développer dans cette partie, nous allons préalablement introduire le concept de Variables. Les variables sont un réceptacle de valeurs que l'on utilisera dans le code en utilisant le nom de la variable au lieu de la valeur. Comme avec les Inputs, toutes nos variables seront déclarés à la suite du mot réservé VARIABLES: Prenons l'analogie d'un Verre pour mieux comprendre ce qu'est une variable.

Avant d'utiliser un verre il faut l'acheter. Avant d'utiliser une variable il faut la définir à l'aide du mot réservé VARIABLES: Ma_Variable.

Avant d'utiliser votre Verre pour la 1ère fois, il faut en général le nettoyer (chose pas forcément évidente pour nous les hommes, mais bon !!). Avant d'utiliser une variable il faut soit l'initialiser à 0 - Ma_Variable(0) - si on souhaite stocker des valeurs numériques soit l'initialiser avec des guillemets ouverts/fermés - Ma_Variable(" ") - pour stocker du texte. On peut enfin l'initialiser à Vrai ou Faux - Ma_Variable(False) -si on souhaite l'utiliser pour stocker le résultat d'une comparaison de type Vrai/Faux.

Une fois prêt à l'emploi, on peut remplir notre verre avec n'importe quoi comme par exemple 250ml d'eau. Une fois initialisée on peut stocker ce qu'on veut dans notre variable comme par exemple la valeur 250. Pour cela il suffit d'assigner 250 à notre variable de la façon suivante Ma_Variable = 250 ;

Si l'on veut se référer à un litre d'eau on peut alors dire que c'est équivalent à 4 verres pleins. Pour 1/2 litre, 2 Verres, etc. Vous voyez où je veux en venir. Pour référencer la valeur 1000, on peut alors dire que c'est égal à 4 fois notre variable. De même pour 500, égal à 2 fois notre variable. Ainsi, une fois déclarée, on ne référence plus la valeur 500 mais tout simplement le nom de la variable à la place. 1000 = 4 x Ma_Variable;

Finissons notre analogie. Tant que vous ne buvez pas l'eau du verre celui-ci est toujours plein. Pour y mettre du vin, vous devez d'abord vider son contenu (étape douloureuse s'il s'agissait d'eau!) puis le remplir à nouveau. Et bien c'est (presque) pareil avec une variable. Une fois qu'on lui assigne une valeur (exemple 250) elle la stocke à moins qu'on lui dise de stocker autre chose. La différence avec un verre est que vous n'êtes pas obligés de vider la variable avant de l'utiliser avec une autre valeur. Il suffit de lui assigner directement la nouvelle valeur à l'aide du signe égal. Ma_Variable = 500 ;

La différence d'une variable avec un paramètre est que l'on ne contrôle la valeur d'une variable uniquement dans le code ProBuilder/ProBackTest. On n'y accède pas de l'extérieur comme avec un paramètre. Par contre vous pouvez assigner différentes valeurs à votre variable tout qu long du code ProBuilder/ProBackTest (stocker d'abord 1000 puis 200, etc.) ce qui est impossible avec un paramètre. On utilise donc les variables pour stocker le résultat de calculs intermédiaires et les paramètres comme constantes dont la valeur est spécifiée à l'extérieur du code.

Maintenant que nous comprenons le concept des variables, voyons un peu ce que nous devons calculer pour notre SetUp. D'abord nous devons calculer la Moyenne Mobile Court et Long terme. Nous devons ensuite vérifier que la clôture du chandelier courant est au-dessus de chacune d'entre elles pour un Achat, et en dessous pour une Vente A découvert. Voyons un peu à quoi ressemble le code ProBuilder/ProBackTest dans ProRealTime

La première chose à faire est de déclarer et initialiser nos variables qui serviront tout au long de nos calculs.
Comme nous devons calculer une Moyenne Mobile Court et Long terme, nous déclarons 2 variables MoyM_CT (CT pour Court Terme) et MoyM_LT (LT pour Long Terme), initialisés à 0 car elles doivent stocker des valeurs numériques. Ces 2 variables stockeront nos 2 moyennes mobiles.
Comme nous devons vérifier que la clôture du chandelier est supérieure/inférieure aux Moyenne Mobiles, nous déclarons 2 variables conditionnelle SetUp_L et SetUp_S pour la Vente A Découvert. Pour préciser à ProBuilder/ProBackTest que ce sont des variables conditionnelles, nous les initialisons à False. SetUp_L (L pour Long) passera à Vrai si la clôture est supérieure aux Moyennes Mobiles. SetUp_S (S pour Short) passera à Vrai si la clôture est inférieure aux Moyennes Mobiles.

Maintenant que nos variables MoyM_CT et MoyM_LT sont déclarées, nous allons y assigner le résultat du calcul de leur Moyenne Mobile respective via les instructions suivantes

MoyM_CT = average (close, Longueur_CT);
MoyM_LT = average (close, Longueur_LT);

La fonction Average retourne le calcul d'une Moyenne Mobile avec les arguments passés entre parenthèses. Nous voulons une Moyenne Mobile sur des prix de clôture donc nous passons Close comme 1er argument. Puis, remarquez l'utilisation du paramètre Longueur_CT à la place de la valeur 10 en tant que 2ème argument. Même chose pour MoyM_LT.

Remarque: Maintenant que nos 2 variables stockent le résultat du calcul des Moyennes Mobiles, il nous suffit d'utiliser les noms MoyM_CT et MoyM_LT pour faire référence aux valeurs de chacune d'entre elles.

L'étape suivante consiste à vérifier que la clôture du chandelier courant est au-dessus/en-dessous des Moyennes Mobiles. Nous allons stocker le résultat de la comparaison dans nos variables conditionnelles SetUp_L et SetUp_S via les instructions suivantes

SetUp_L = Close > MoyM_CT AND Close > MoyM_LT;
SetUp_S = Close < MoyM_CT AND Close < MoyM_LT;

Ainsi SetUp_L est Vrai si et seulement si la Clôture est supérieure à la Moyenne Mobile Court Terme (Close > MoyM_CT) ET (AND) que la Clôture est également supérieure à la Moyenne Mobile Long Terme (Close > MoyM_LT). Dans tous les autres cas SetUp_L est Faux.
De même SetUp_S est Vrai si et seulement si la Clôture est inférieure à la Moyenne Mobile Court Terme (Close < MoyM_CT) ET (AND) que la Clôture est également supérieure à la Moyenne Mobile Long Terme (Close < MoyM_LT). Dans tous les autres cas SetUp_S est Faux.

Remarque: Toute instruction ProBuilder/ProBackTest se termine toujours par un point-virgule ';'. Les accolades permettent d'inclure des commentaires dans votre code.

Retour

 

Entrée Longue

Voyons maintenant comment entrer en position. Pour entrer en position longue, il faut vérifier en ProBuilder/ProBackTest que la combinaison du chandelier courant et du chandelier précédent forment un Ascenseur Haussier.

Puis si nous sommes en présence d'un Ascenseur Haussier et que la condition de SetUp pour une Entrée Longue est respectée alors nous passons un Ordre à Seuil de déclenchelement un point au dessus du plus Haut de l'Ascenseur Haussier.

Pour se faire, notre code ProBuilder/ProBackTest doit calculer le Range de la barre courante et de la barre précédente puis stocker dans une variable lerésultat de la condition Ascenseur Haussier. Nous devons également définir une variable qui stockera le Prix de seuil pour notre ordre à seuil de déclenchement. Voici le code

Sans surprise, la première étape consiste à définir les variables qui vont servir à stocker des calculs intérmédiaires ou une valeur booléenne de type Vrai/Faux.
Ainsi, on définit BarRange variable qui servira à stocker le range du chandelier courant, c'est à dire la différence entre le prix le Plus Haut et le plus Bas. Cette variable est initialisée à 0 puisqu'elle stockera une valeur numérique.
On définit ensuite Ascenseur_L (L pour Long), variable qui servira à déterminer si les 2 derniers chandeliers forment un Ascenseur Haussier. Comme cette variable une valeur booléenne, elle est intialisée à False.
Enfin, on définit Seuil_L, variable qui stockera le Prix de Seuil fixé au plus Haut de l'Ascenseur Haussier + 1. Cette variable est numérique. Une fois ces variables définies, utilisons les comme indiqué ci-dessous.

1) D'abord calculons le Range et assignons le résultat à la variable BarRange. Calculer le Range avec ProBuilder/ProBackTest et ProRealTime est on ne peut plus simple. Il suffit d'écrire

BarRange = High - Low;

C'est tout ! Non seulement c'est très simple mais on peut en plus accéder très facilement au Range de n'importe quelle barre précédente en utilisant les crochets ouverts/fermés. Ainsi le Range du chandelier précédent se référencera via BarRange[1].

2) Maintenant qu'on est capable d'accéder au Range du chandelier courant et précedent, il est assez simple de vérifier que les 2 derniers chandeliers forment un Ascenseur Long par l'instruction suivante

Ascenseur_L =
Close > High - (0.25 x BarRange)
AND

Close[1] < Low[1] + (0.25 x BarRange[1])

La première expression retourne Vrai si la clôture du chandelier courant est située entre 0 et 25% de son plus Haut.
La seconde expression retourne Vrai si la clôture du chandelier précédent est située entre 0 et 25% de son plus Bas.
Comme les 2 expressions sont séparées par le mot réservé AND, Ascenseur_L est Vrai si et seulement les 2 expressions sont vraies.

3) La troisième étape consiste à stocker dans la variable Seuil_L le niveau de prix à partir duquel on peut acheter la valeur. La seule difficulté consiste à trouver quel chandelier a son le prix Haut le plus élevé. En utilisant les mots réservés IF ... THEN (Si ... ALORS) nous pourrions écrire:

Seuil_L = 0 ;
IF High[1] > High Then Seuil_L = High[1] ;
IF High> High[1] Then Seuil_L = High ;

Cela est (assez) aisé quand il n'y a que 2 chandeliers. Mais si l'on doit déterminer le prix le plus élevé des Plus Haut des 10 derniers chandeliers, tout de suite ça se complique! ProRealTime et ProBuilder/ProBackTest proposent une librairie de fonction utiles dans ces cas précis. Nous avons déjà utilisé la fonction Average, et ici nous allons utiliser la fonction HIGHEST. Cette fonction retourne le prix le plus élevé d'une série de chiffres pour un nombre spécifié de chandeliers. Ainsi pour connaître le prix le plus élevé parmi les prix de Clôture des 10 derniers chandeliers, il suffit d"écrire:

HIGHEST (CLOSE, 10) ;

Dans notre exemple, nous avons besoin de connaître le prix le plus élevé entre le prix le Plus Haut du chandelier précédent et courant. On écrit donc HIGHEST (HIGH, 2) et on assigne ce résultat à Seuil_L à l'aide du signe égal.

4) Dernière étape et non des moindres, l'Achat. Enfin, me direz-vous! C'est bien beau tout ce qu'on a fait jusqu'à présent mais il faudrait voir à rentrer en position sinon on a travaillé pour rien. A présent qu'on a mis en place toutes les briques cela va être très simple. Une fois encore on va avoir besoin d'utiliser une instruction réservée de ProRealTime qui s'appelle BUY. Même si vous n'aimez pas l'anglais je crois que vous arriverez à retenir ce mot, traduction exacte d'Achat. Décortiquons donc l'instruction d'achat

IF Ascenseur_L=True And SetUp_L=True THEN
BUY ("Asc_L") 1 share Next Bar at Seuil_L stop;

Avant d'acheter on doit s'assurer que l'on est en présence d'un Ascenseur Haussier et que notre condition de SetUp Long est respectée. Comme les variables Ascenseur_L et SetUp_L stockent le résultat des conditions (voire détails ci-dessus), on s'assure que les 2 variables sont vraies grâce à l'utilisation de IF ... THEN.
Si les 2 variables sont Vraies alors on achète (BUY) 1 action/contrat Future (Share ou Contract) sur la barre suivante (Next Bar) à partir du prix Seuil_L (at Seuil_L). Le type d'ordre est à seuil de déclenchement (Stop).

Et voilà, vous venez de suivre pas à pas tous les éléments pour créer un système de trading qui passe à l'achat suite à un ascenseur Haussier si la clôture du chandelier est au dessus de sa Moyenne Mobile court et Long terme. En plus grâce aux fonctionnalités d'optimisation de ProRealTime, on va être capable de déterminer la combinaison de Moyennes Mobiles qui amène au profit maximum.

Retour

 

Entrée Short (VAD)

Maintenant que vous avez tout compris sur l'entrée longue, il est préférable que vous essayiez vous-mêmes de développer le code pour une entrée Short. Voici quelques indications:

  •  Créer une variable Ascenseur_S initialisée à False pour déterminer si les 2 derniers chandeliers forment un Ascenseur Baissier.
  •  Créer une variable Seuil_S initialisée à 0 pour stocker le niveau d'achat pour l'ordre de Vente A Découvert
  •  Utiliser la fonction LOWEST et le mot réservé LOW pour trouver le prix le plus bas entre le plus Bas du chandelier courant et précédent. La fonction LOWEST est similaire en tout point à la fonction HIGHEST
  •  Utiliser le mot réservé SELLSHORT pour passer un ordre de Vente A Découvert. Ce mot réservé est similaire au mot réservé BUY.

Ne vous inquiétez pas si vous n'y arrivez pas du premier coup et avez besoin d'aide. Vous pouvez choisir de télécharger le code complet via le menu sur la gauche.

Page 3
1 2 3 4 5 6

 

Gagnez de 80 à 90% grâce avec ce vieil indicateur! Ce sont des stratégies de Long Terme. Elles ont été testées sur les 20 dernières années pour les principaux marches: CAC 40, Futures US, DAX, etc
Les "turtles" représentent encore aujourd'hui la plus grande expérience de trading jamais réalisée. Cette expérience a permis à ses participants de gagner 200 millions de dollars.
Extrapolée par Samuel Rondot auprès d'un trader devenu millionnaire en quatre ans, cette technique de day trading 'type break out' fonctionne sur les indices boursiers.
Pas un seul jour ne se passe sans lire la description de méthodes de trading plus miraculeuses les unes que les autres. Il suffit d’y penser pour voir son compte en banque progresser.
Avec une performance de 380% sur 5 ans et 45% pour le seul mois de janvier 2008 , MCI est une méthode de Swing Trading qui fait ses preuves quotidiennement.
C'est LA technique de Day Trading. Le Docteur vous permettra de prendre position plusieurs fois par jour sur n'importe quel support (Actions, Futures, Forex) et sur tous les marchés (CAC, DAX, NASDAQ, SP500 etc.)
Un trader accepte de transmettre en toute transparence son expérience. Bénéficiez en quelques heures de lecture de dix ans de recherches et d'erreurs. Découvrez la méthode MTA (Matrice Trading Action) !
Le livre témoignage de l'homme qui a repoussé les limites des performances en trading au concours CortalConsors : 8000% en six mois ! Zoom sur ses techniques et son approche. 500 pages !
Ce livre s’adresse à tous ceux qui souhaitent découvrir la logique du swing trading et la manière dont elle peut être exploitée avec efficacité sur les actions françaises.
Une à deux heures chaque we, pas plus pour appliquer cette approche de l'achat sur repli dans les marchés haussiers. Les critères sont précis. Du prêt à l'emploi. L'une de nos meilleurs ventes.
Extrapolée par Samuel Rondot auprès d'un trader devenu millionnaire en quatre ans, cette technique de day trading 'type break out' fonctionne sur les indices boursiers.
Day trading bourse en ligne