|
Ceci est la suite de la section Code EasyLanguage commencé en
page 3. Nous avons développé les entrées et
allons nous attacher à expliciter
coment sortir d'un trade soit pour limiter une perte (et oui cela
rrivera!) soit pour prendre vos profits qui doivent permettre à
ce système d'être profitable. Pour rappel, nous avons
défini que les règles pour les stops devaient être
les suivants
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.
b) Pour une Entrée Short, calculer et placer le Stop
de protection au plus haut de l'Ascenseur Baissier moins 1
point.
c) 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. Comme évoqué en page 3, le multiplicateur
du risque, qui détermine
le seuil de profit, est un paramètre que
l'on peut optimiser.
Un stop dans la terminologie TradeStation permet de clôturer une position
ouverte. Il existe 2 types de stop: les stops de protection
dont l'utilité est de limiter la perte et les stops de profit
dont l'utilité est de vous sortir quand un niveau de gain choisi
au préalable est atteint.
Les stops de protection préintégrés à TradeStation
sont au nombre de 2. A tout seigneur tout honneur parlons d'abord
du Stop
Loss qui
est le stop fixe de protection classique. Classique dans la mesure
où son niveau n'évolue jamais. Il est fixé par
l'utilisateur et ne suit pas les variations du trade. Ce stop
loss peut être
défini soit
en dollars par rapport à votre position, comme par exemple 10%
du montant engagé soit en dollars par rapport à 1 action
ou contrat. Dans ce cas on peut préciser de ne pas perdre plus
de 2 dollars par action. Quel que soit le nombre d'actions achetés
TradeStation fera les mathématiques à votre place.
Le deuxième stop de protection est le trailing stop ou
stop suiveur. Il faut penser à ce stop comme un stop fixe qui
va se déplacer en fonction du profit maximum en
cours. Quand le profit augmente, le stop se déplace vers le
haut (dans le cas d'une position longue) ; quand le profit diminue
le stop ne se déplace plus. Le stop ne se déplace donc
que pour limiter de plus en plus votre perte. Illustrons ce propos
avec
l'exemple ci-dessous: 
Fig 3. Stop fixe et stops suiveurs dans TradeStation
Dans l'exemple illustratif ci-dessus, on imagine passer à l'achat à la
clôture
du chandelier No1. Le prix d'entrée est de 970. Admettons que l'on
place un stop de protection fixe à 20 points en dessous de notre
point d'entrée. Ce stop fixe est donc une vente à Seuil de Déclenchement
à partir
de 950, 970 - 20. Admettons maintenant que l'on place
un stop de protection suiveur à 35 points en dessous de notre
point d'entrée intial. Ce stop suiveur est donc placé intialement
à 970 - 35 soit 935. Maintenant qu'il est en place ce stop suiveur
va se déplacer avec le marché haussier.
A la clôture du chandelier 2, notre stop suiveur est à 955 qui
correspond au Prix pour le profit maximum enregistré lorsque
le marché est à 990, moins 35.
A la clôture du chandelier 3, notre stop suiveur est à 980
ce qui correspond au Prix pour le profit maximum enregistré lorsque
le marché est à 1015, moins 35. Notez que sur ce chandelier
le plus haut est un plus haut en séance et non un prix de clôture.
Les stops suiveurs sont
réactualisés en temps réel par
TradeStation.
A partir de ce chandelier, notre prix le plus haut depuis notre
entrée (donc le profit maximum) ne sera jamais dépassé, DONC
notre stop suiveur reste bloqué à 980. Rappelons nous qu'il monte
uniquement sur de nouveaux Plus Haut. Il ne PEUT PAS BAISSER.
Nous
sortirions de ce trade à 980 sur le chandelier No8.
Important: Même si le stop suiveur est un stop qui, initialement
est destiné à limiter vos pertes, nous remarquons qu'il peut,
selon l'évolution
du marché, vous
sortir sur un gain. Dans notre exemple
c'est ce qu'il se serait passé puisque nous serions sortis
avec un gain de 10 (980 - 970).
Les stops de protection sont toujours réactualisés en temps réel
par TradeStation alors que les stratégies ou systèmes sont
recalculés uniquement en clôture de barre.
Revenons à notre système de l'Ascenseur pour
une entrée longue. Nous devons placer un stop de protection (fixe)
1 point en dessous du plus bas de l'Ascenseur comme illustré ci-dessous.

Fig 4. Niveau d'entrée et de stops pour entrée Longue
sur S&P 500
Comme indiqué, le stop doit être placé à 964, c'est à dire à notre
point d'entrée moins le range de l'ascenseur moins 1 point ce qui est
équivalent au range de l'ascenseur + 2 points. Notre code EasyLanguage
dans TradeStation va donc devoir:
- Calculer le range de l'Ascenseur,
- Placer un stop de protection situé à Range
+ 2 de notre point d'entrée
Regardons maintenant à quoi ressemble le code EasyLanguage

Contrairement à ce que l'on pouvait craindre, placer un Stop est un
jeu d'enfant grâce à la puissance de TradeStation et la simplicité
d'EasyLanguage.
En effet, qu'avons-nous précisé dans notre code EasyLanguage?
D'abord nous avons calculé le Range de l'ascenseur, différence
entre le Plus Haut des 2 derniers chandeliers et le plus
Bas des 2 derniers chandeliers.
Puis nous avons calculé le niveau de stop. D'abord nous avons ajouté
2 points au Range de l'Ascenseur comme spécifié dans notre "cahier
des charges". Enfin, comme notre exemple est basé sur le contrat
Future eMini S&P 500, nous avons multiplié le nombre de points
par $50/point. En effet les stops doivent toujours être déclarés
en dollars et non pas en point. Si nous avions travaillé sur
une action (IBM, Microsoft, ...) nous n'aurions pas eu à multiplier.
Si on se réfère au cas de la figure 4, EasyLanguage calculerait
un niveau de stop à 27 points x $50/point soit 1350 dollars.
Nous pourrions perdre cette somme dans ce cas très précis ,ais
pas plus (sauf Gap à l'ouverture mais ce n'est pas notre propos
ici). Nous nous sommes bien sûr assurés que nous étions dans
une configuration d'entrée en position grâce à l'instruction
IF ... THEN et la validation des conditions Ascenseur_L
set SetUp_L.
Enfin nous avons placé le stop et là TradeStation / EasyLanguage font
très bien les choses. En effet il n'est pas besoin de préciser
si ce stop est subséquent à un Achat ou à une Vente A Découvert.
Il n'est pas non plus besoin de préciser le niveau d'entrée,
TradeStation le connaît et calculera automatiquement le stop.
Enfin nous n'avons
pas besoin de rédiger d'ordres, TradeStation le faît automatiquement.
La seule chose que nous précisons est d'abord si le Stop est
par rapport à chaque contrat ou par rapport à l'ensembre de notre
position. En spécifiant SETSTOPCONTRACT, nous
spécifions que le stop se réfère à chaque contrat. En effet que
l'on achète
1 ou 10 contrats, on veut que la perte maxi soit de 1350 pour
chaque contrat. En utilisant SETSTOPCONTRACT, on peut acheter
autant de contrats souhaités sans avoir à rechanger notre code.
Enfin, nous utilisons l'instruction SETSTOPLOSS
pour placer un stop de protection fixe. Le seul argument de cette
instruction est le montant de notre stop. Ici nous utilisons
notre variable NiveauStop qui stocke ce montant.
La magie des stops préprogrammés de TradeStation est
que vous n'avez même pas besoin de vérifier que vous êtes
en position. Si vous
êtes en position, le stop est placé. Si vous n'êtes
pas en position le stop n'est pas activé. De même si vous
sortew de votre position par une prise de profit, que nous développons
ci-dessous, alors le Stop de Protection est annulé. Pas de risque
donc. Enfin les stops s'activent sur la barre d'entrée donc
on ne risque pas de mauvaises surprises. Pour terminer, si l'on se
réfère aux
données de notre exemple de la figure 4 ci-dessus, écrire
notre instruction SETSTOPLOSS en EasyLanguage va forcer TradeStation
à placer un ordre
équivalent à celui-ci:
Vendre 1 (ou le nombre initialement achetés) contrat
A
Seuil de Déclenchement ;
Prix de seuil 964.
Bon A révocation.
Retour
Une fois notre stop placé, il reste encore à placer
notre point de sortie pour terminer le développement easylanguage
de notre système de trading. Comme préalablement évoqué,
TradeStation et EasyLanguage proposent des stops
de sortie quand vous ne touchez pas vos stops de protection.
Revoyons un
peu l'arsenal de stops de sortie qui sont fournis par TradeStation
via EasyLanguage. Il sont au nombre de 4:
1) Sortie à la clotûre du marché - Uniquement valable sur des aller-retour
dans la même journée. Cette sortie peut être gagnante ou perdante.
2) Sortie quand un niveau de profit spécifié par l'utilisateur est
atteint. Cette sortie est toujours gagnante.
3) Placement d'un stop au niveau de votre point d'entrée (prix d'achat
ou de Vente Q découvert donc) une fois qu'un niveau de profit
spécifié par
l'utilisateur est atteint. Cette sortie n'est ni perdante
ni gagnante. Elle doit être associée à un autre stop de sortie.
Ce stop est en général utilisé pour remplacer le Stop de
Protection intial une fois que votre position a atteint un
profit satisfaisant.
Si le marché se retourne à partir de cet instant, vous ne
perdrez rien.
4) Placement d'un stop suiveur
(calculé en % du Profit maximum atteint) une fois qu'un
niveau de profit spécifié par l'utilisateur
est atteint. Si le pourcentage est égal à 100% alors c'est
équivalent qu stop précédent. Sinon cette sortie sera toujours
gagnante.
Bien évidemment tous ces stops sont recalculés en temps réel par TradeStation.
Dans notre exemple, nous allons placer le stop de type No 2. Notre
code easyLanguage doit tout d'abord calculer le profit à atteindre.
Nous savons que ce sera un multiple de notre risque. Le coefficient
multiplicateur est le paramètre MultRisque
défini en page 3. Nous connaissons déjà le risque puisque nous l'avons défini
pour notre Stop de protection. Sa valeur est stockée dans la variable NiveauStop et
est égal à 1350 dans notre cas d'école. Notre code EasyLanguage est le suivant
Comme on peut le constater le code est maintenant réduit à sa plus
simple expression puisque nous avons préalablement défini et calculés
nos variables et paramètres de façon claire
et précise.
La seule nouvelle instruction que nous abordons ici est donc SetProfitTarget dont
la traduction est Mettre
en place un objectif de Gain [et sortir]. Assez logiquement, le seul
argument que nous passons à cette instruction est le niveau
de gain que nous souhaitons atteindre. Nous avons écrit dans
nos spécifications de notre systè,e de trading que nous souhaitions
placer notre profit à 2 fois le montant de notre risque. Si
notre risque est de 500 alors on veut sortir dès qu'un profit
atteint 1000. Dans le cas de notre système de trading Ascenseur,
notre risque a été calculé et stocké dans NiveauStop
et le Risque est MultRisque. Donc notre niveau de profit à atteindre
est MultRisque x NiveauStop; ce que nous passons
donc en argu,ent de l'instruction SetProfitTarget.
Ce qui s'appliquait aux stops de protection est également valable ici.
Toute la logique de TradeStation et easyLanguage nous permet
de dormir tranquille. TradeStation placera le stop si nécessaire
et l'annulera si nécessaire. Aucun risque de doubler une position,
passer en VAD sans la savoir. Pour terminer, si l'on se
réfère aux données de notre exemple de la figure
4 ci-dessus, écrire notre instruction SetProfitTarget en EasyLanguage
va forcer TradeStation à placer un ordre équivalent à celui-ci:
Vendre 1 (ou le nombre initialement achetés) contrat
A Prix Limité ;
Prix Limité 1045 (= 991 + 2 x 27).
Bon A révocation.
L'ordre ci-dessus ne correspond pas tout à fait à l'ordre que TradeStation
va éxécuter. En fait TradeStation et EasyLanguage valident
les prix du marché en temps réel. Dès que le prix de la valeur
atteint la limite fixée à 1045 dans notre cas, TradeStation
va passer un ordre de type à Prix Marché et
non pas à Prix Limité. Il est donc possible d'être exécuté
légèrement en dessous de cette limite mais on est sûr d'être
exécuté. Cependant si nous voulions
rédiger cet ordre manuellement et éviter de rester planté devant
le marché pendant ses heures d'ouverture, l'ordre
ci-dessus serait le seul possible.
Retour
Ce système est maintenant terminé. La page
suivante va détailler la performance de ce système sur différents
supports (actions et Futures S&P) et donner les valeurs
optimisées pour les paramètres Longueur_CT, Longueur_LT et MultRisque.
|