Vous êtes sur la page 1sur 98

ProRealTime vous permet de crer des systmes de trading que vous pouvez

backtester ou utiliser en trading automatique.

Suivez notre page Google+ ddie la programmation pour tre inform des nouveauts et mises jour.

V 5.1.0 20150422
SOMMAIRE
Introduction______________________________________________________6
Accder la programmation des systmes de trading.................................................6
La fentre de cration de systmes de trading.............................................................7
Raccourcis Clavier.........................................................................................................................8

La Programmation de systmes de trading____________________________9


La programmation avec ProBuilder...............................................................................9
Entres et sorties du march.........................................................................................................9
Les Stops et Targets....................................................................................................12
Stops de protection......................................................................................................................12
Limites profits (Targets)...............................................................................................................12
Stops suiveurs.............................................................................................................................13
Utilisation des "Set Target" / "Set Stop" avec une instruction conditionnelle de type "IF"...........13
Stops et limites niveaux multiples............................................................................................14
Arrter un systme de trading avec QUIT..................................................................17
Suivi des positions.......................................................................................................17
Variables d'tat............................................................................................................................17
Variables de taille de position......................................................................................................18
TradeIndex...................................................................................................................................18
TradePrice...................................................................................................................................18
PositionPerf.................................................................................................................................19
PositionPrice................................................................................................................................19
StrategyProfit...............................................................................................................................19
Dfinition des paramtres d'excution des systmes de trading................................20
Cumul des ordres de mme direction.........................................................................................20
Prcharger de l'historique............................................................................................................21
FlatBefore et FlatAfter.................................................................................................................22
Rinvestir les gains (backtests seulement).................................................................................22
MinOrder et MaxOrder (backtests seulement)............................................................................22
Appeler des d'indicateurs............................................................................................23
Indicateurs ProRealTime.............................................................................................................23
Indicateurs personnaliss............................................................................................................23
Astuces de programmation.........................................................................................23
Rduire le nombre d'appels aux indicateurs ProRealTime.........................................................23
Appels d'indicateurs personnaliss.............................................................................................24

ProBacktest - La simulation des systmes de trading__________________27


Gestion du capital / Money Management...................................................................28
Capital initial................................................................................................................................28
Frais de courtage et gestion du risque........................................................................................28
Optimisation des variables..........................................................................................30
Dfinition de la priode d'excution du backtest.........................................................32
Personnalisation des plages horaires pour les backtests...........................................32
Raisons d'arrt d'un ProBacktest................................................................................34
Affichage des valeurs des variables backtest ( partir de ProRealTime v10.2).........35

ProOrder - Le Trading Automatique_________________________________36


Prparer un systme l'excution en trading automatique........................................37
Dmarrer un systme de trading avec ProOrder et voir sa performance...................39
Paramtres du Trading Automatique et conditions d'excution..................................43
Paramtres des systmes de trading..........................................................................................43
Arrt automatique du systme de trading...................................................................................44
Interaction entre trading manuel et trading automatique............................................45
Lancer plusieurs systmes de trading sur un mme instrument................................46
Indicateurs non-utilisables...........................................................................................47
Note sur les Fuseaux et heures de march personnaliss.........................................47

Annexe A : Affichage des rsultats__________________________________48


Courbe de gains & pertes...........................................................................................48
Histogramme des positions.........................................................................................49
Rapport dtaill...........................................................................................................50

Annexe B : Exemples de codes dtaills_____________________________54


Systme de trading bas sur HeikinAshi.....................................................................................54
Systme de trading bas sur les Zig Zag....................................................................................55
Systme de trading Breakout Range System avec Stop mobile.................................................56
Systme de trading bas sur le stochastique liss.....................................................................57
Swing Trading, ADX et Moyennes Mobiles.................................................................................58
Systme de trading utilisant un compteur de positions...............................................................59
Systme de trading utilisant TRADEINDEX "Inside bar"..........................................................60
Systmes de trading et Money Management.............................................................61
Stops de protection & Objectifs...................................................................................................61
Stops d'inactivit..........................................................................................................................61
Pyramidage d'une position..........................................................................................................62
La martingale classique...............................................................................................................63
La grande martingale...................................................................................................................64
La Piquemouche..........................................................................................................................65
La pyramide d'Alembert...............................................................................................................66
La contre d'Alembert...................................................................................................................67
Annexe C : exemple dtaill d'un systme de trading__________________68
Prsentation du systme de trading automatique "Breakout ProOrder"....................69
Rsultats du systme de trading (historique de 2006 2014)...................................70
Description des ides du systme de trading.............................................................71
Ide de dpart : le Breakout 30 minutes.....................................................................................71
2me ide : deux positions seront prises par jour au maximum.................................................72
3me ide : limiter le risque en dfinissant un cart maximal entre les deux niveaux...............73
4me ide : augmenter les chances d'excution favorable........................................................74
5me ide : intervenir uniquement sur les breakouts (ou cassures) claires pour viter les faux
signaux............................................................................................................................................75
6me ide : ne pas prendre de position s'il ne reste pas suffisamment de temps......................76
Code du systme de trading "Breakout ProOrder".....................................................77
Comment tester un code / systme de trading...........................................................79
Mode portefeuille virtuel (PaperTrading).....................................................................................79
Mode trading rel.........................................................................................................................79
Adaptation du systme d'autres instruments...........................................................80
Exemples de transactions relles...............................................................................81
Indicateur pour suivre le systme de trading..............................................................83
Indicateur "Breakout ProOrder"...................................................................................................83
Code de l'indicateur "Breakout ProOrder"...................................................................................84

Glossaire_______________________________________________________86

Avertissement : ProRealTime n'exerce pas le service de Conseil en Investissement Financier. Ce


document n'est en aucun cas une offre de conseil en investissement ni une incitation quelconque
acheter ou vendre des instruments financiers. Les exemples prsents dans ce manuel sont but
pdagogique. Pour votre propre trading, vous tes entirement libre dans le choix de vos critres.
Les performances passes ne prsagent pas des futurs rsultats et ne sont pas constantes dans le
temps. Tout systme de trading peut vous exposer un risque de perte suprieur votre
investissement initial.
Introduction la programmation de systmes de trading sous ProRealTime v10

Cette version de manuel est valable pour les versions 10 et suprieures de ProRealTime.
L'outil de programmation de ProRealTime permet de crer des stratgies dinvestissement personnalises.
Les systmes de trading peuvent tre cods directement ou gnrs via le module de cration assiste (pas
de codage requis).
Il existe 2 faons d'excuter vos systmes :
En tant que backtests, pour tester leurs performances sur les donnes historiques dune valeur
En tant que systme de trading automatique, depuis le module ProOrder : les ordres sont passs en
temps rel depuis un compte de trading ou de PaperTrading
La programmation des systmes de trading utilise le langage de programmation ProBuilder, dj employ
pour la cration d'indicateurs personnaliss sous ProRealTime. De nouvelles instructions sappliquant
exclusivement la cration de systmes de trading ont t ajoutes. La programmation des systmes de
trading inclut des instructions pour les prises de position, les stops et le management du risque de chaque
systme selon des conditions personnalises telles que :
Des indicateurs fournis avec votre plate-forme ou des indicateurs que vous avez programms vous-mme
Les performances passes de votre systme de trading
Vos derniers ordres
Les rsultats de l'excution d'un systme de trading sont prsents sous forme de :
"Courbe de gains & pertes" (ou "Equity Curve"), qui montre graphiquement lvolution des gain/pertes
de votre systme sur l'instrument correspondant.
Histogramme des positions (vert lachat, rouge en vente dcouvert). Aucune barre n'est montre si il
n'y a pas de transaction en cours.
Rapport dtaill, qui vous indique les statistiques gnrales de votre systme pour l'instrument
correspondant, sur la priode d'excution choisie.
Dans le cas d'un backtest, il est galement possible d'optimiser les variables de votre systme. Vous pouvez
ainsi slectionner la combinaison de variables donnant les meilleurs rsultats sur l'instrument et la priode
d'tude.
En trading automatique, les ordre passs par les systmes de trading apparaissent la fois dans votre
portefeuille PaperTrading et dans la liste des ordres. Les plus-values ou pertes ralises par vos systmes
sont galement reportes dans le portefeuille.
Ce manuel est organis de la faon suivante : La partie I explique comment crer et diter un systme de
trading. La partie II dcrit les instructions ProBuilder utiliser pour leur programmation. La troisime partie
dtaille la simulation des systmes avec ProBacktest. Enfin, la quatrime partie prsente l'excution des
systmes en mode trading automatique. Les annexes en fin de manuel donnent plusieurs exemples
d'affichage de rsultats et de codes, ainsi qu'un glossaire du langage ProBuilder.
Nous conseillons aux utilisateurs dbutants ou peu habitus la programmation de visionner la vido
intitule "Backtester vos stratgies sans crire une seule ligne de code"

Les informations prsentes dans ce manuel sont uniquement destines vous aider coder ou tester vos
propres systmes de trading. Ce ne sont en aucun cas des conseils en investissements.

En vous souhaitant nos meilleurs voeux de russite, Bonne lecture !

V 5.1.0 20150422 www.prorealtime.com 5 / 98


Introduction

Introduction
Accder la programmation des systmes de trading
La fentre de cration de systmes de trading est disponible partir du bouton "Indicateurs et Systmes de
trading" qui se trouve dans le coin suprieur droit de chacun de vos graphiques ProRealTime.

Par dfaut, la fentre de gestion souvre sur longlet "Indicateurs". Placez-vous sur le deuxime onglet
"ProBacktest & Trading Automatique". Vous pourrez alors :
Accder la liste des systmes existants (prdfinis ou personnaliss)
Crer un nouveau systme, appliquer ensuite la valeur de votre choix
Modifier, supprimer ou dupliquer un systme existant
Importer ou exporter des systmes

V 5.1.0 20150422 www.prorealtime.com 6 / 98


Introduction

La fentre de cration de systmes de trading


La fentre de cration de systmes de trading est compose de deux zones principales :
La zone de cration (assiste ou par programmation) dans la partie gauche de la fentre.
La zone d'application dans la partie droite, qui comprend l'onglet ProBacktest pour la simulation de
systmes et l'onglet ProOrder pour leur excution en trading automatique. Le paramtrage du ProBacktest
est dtaill dans la section 3 de ce manuel.

La zone de cration, vous permet de :


Programmer directement un indicateur dans la zone de texte.
Vous servir du bouton "Insrer Fonction", qui ouvre dans une nouvelle fentre la bibliothque des
fonctions disponibles, afin de vous aider lors de la programmation. Vous y retrouverez galement des
explications lies la commande ou fonction choisie.

V 5.1.0 20150422 www.prorealtime.com 7 / 98


Introduction

Exemple :
Utilisons la bibliothque de fonctions en cliquant sur "Insrer Fonction".
Placez-vous sur la section "Commandes ProBacktest" et cliquez sur "BUY", puis cliquez sur le bouton
"Ajouter". La commande sajoutera ainsi la zone de programmation.

Essayons donc de crer une ligne complte de code. Supposons par exemple quon souhaite acheter 10
titres au prix du march.
Procdez de la mme faon quau dessus pour rcuprer dans cet ordre les instructions " SHARES", "AT" et
"MARKET" (vous sparerez chaque mot dun espace)
Vous obtenez alors l'instruction "BUY 10 SHARES AT MARKET" qui commande l'achat de 10 titres au
march. La section suivante prsente toutes les instructions disponibles pour la programmation de systmes
de trading.
Des exemples de codes de systmes complets sont disponibles dans l'annexe B de ce manuel.

Raccourcis Clavier
Dans ProRealTime version 10, la fentre de cration de systmes de trading possde plusieurs
fonctionnalits pratiques utilisables via des raccourcis clavier :
Tout slectionner (Ctrl+A) : Slectionne tout le texte prsent dans l'diteur de code
Copier (Ctrl + C) : Copie le texte slectionn
Coller (Ctrl + V) : Colle le texte copi
Annuler (Ctrl + Z) : Annule la dernire action faite dans l'diteur de code
Refaire (Ctrl + Y) : Refait la dernire action faite dans l'diteur de code
Rechercher / Remplacer (Ctrl + F) : Cherche un texte dans l'diteur de code / Remplace un texte dans
l'diteur de code (cette fonctionnalit est sensible la casse)
Commenter / D-commenter (Ctrl + R) : Commente le code slectionn / D-commente le code
slectionn (le code comment sera prcd de // ou de REM et color en gris. Il ne sera pas pris
en compte lors de l'excution du code.
Pour les utilisateurs de MAC, les mmes raccourcis claviers peuvent tre utiliss. Il suffit dans ce cas de
remplacer la touche Ctrl par la touche Pomme .
La plupart de ces raccourcis peuvent aussi tre utilis via un clic droit dans l'diteur de code de la fentre de
cration du systme de trading.

V 5.1.0 20150422 www.prorealtime.com 8 / 98


La Programmation de systmes de trad ing

La Programmation de systmes de trading

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

La programmation avec ProBuilder


Il est fortement recommand de lire le manuel de programmation ProBuilder consacr la programmation
d'indicateurs. La prsente section sintresse aux instructions ProBuilder applicables aux systmes de trading.
Pour rappel, ProBuilder est le langage de programmation de ProRealTime. Ce langage est trs simple
dutilisation et offre de nombreuses possibilits. Il est bas sur les principes suivants :
L'unit de base est le chandelier, et l'unit de temps est calque sur celle du graphique en cours.
Un programme ProBuilder et toutes ses sous-fonctions sont rvalues la clture de chaque
chandelier, depuis le plus ancien vers le plus rcent.
Toutes les instructions d'achat / vente sont calcules sur le chandelier en cours. Elles seront donc
dclenches au plus tt l'ouverture du chandelier suivant.

Entres et sorties du march


Diffrentes instructions s'appliquent selon le sens de votre position :
Positions longues :
BUY : instruction dachat de titres (entre long)
SELL : instruction de vente des titres achets (sortie long)
L'instruction BUY permet d'ouvrir (ou de renforcer) une position longue sur le march. Elle est associe
l'instruction SELL qui permet de fermer (ou d'allger) une position longue. L'instruction SELL n'a pas d'effet
si aucune position longue n'est ouverte.
Positions courtes :
SELLSHORT : instruction de vente dcouvert de titres (entre courte)
EXITSHORT : instruction de rachat des titres vendus dcouvert (sortie courte)
Ces deux instructions fonctionnent de manire symtrique avec BUY et SELL. L'instruction EXITSHORT n'a
pas d'effet si aucune position courte n'est ouverte.

La prise de position long et short simultane sur une mme valeur n'est pas possible. Dans la pratique, il est
donc possible de fermer une position longue par une instruction SELLSHORT, ou de fermer une position
courte avec une commande BUY.

Remarque : Pensez vrifier la quantit maximale de la positon que vous avez dfinie dans la section "Risk
management" de ProBacktest ou de ProOrder. Un ordre qui augmente votre position au del de la limite
fixe sera rejet, et la position en cours restera inchange.

Chacune de ces commandes peut tre complte des lments suivants, qui seront dtaills par la suite :
<Ordre> <Quantit> AT <type>
Exemple :
BUY 1000 CASH AT MARKET ou SELL 1 SHARE AT 1,56 LIMIT

V 5.1.0 20150422 www.prorealtime.com 9 / 98


La Programmation de systmes de trad ing

Quantit
Il existe 2 faons de dfinir la quantit investir :
SHARES qui correspond une unit de l'instrument : "1 share" reprsente 1 action, 1 warrant, 1 contrat
pour les futures, ou 1 lot sur Forex. SHARES peut tre remplac tout moment par SHARE, CONTRAT,
CONTRACTS, LOT ou LOTS sur n'importe quel type dinstruments. Dans le cas du Forex, la quantit
demande sera multiplie par la taille d'un lot. Si la quantit n'est pas renseigne, les valeurs prises par
dfaut sont :
1 unit pour une entre en position (Ex : BUY AT MARKET place un ordre de "1" au march)
La quantit totale de la position pour une sortie (Ex : SELL AT MARKET ferme entirement la
position)
CASH correspond une transaction d'un montant dtermin (en ou $ par exemple) uniquement sur
les actions. La quantit correspondante de l'ordre sera alors calcule lors de la clture de la barre
(arrondie par dfaut) l'unit infrieure. Les frais de courtage ne sont pas pris en compte lors du calcul de
la quantit correspondant au montant acheter ou vendre.
Exemple : BUY 1000 CASH AT MARKET
Il est possible d'utiliser l'instruction ROUNDEDUP pour arrondir cette quantit l'unit suprieure.
Exemple : BUY 1000 CASH ROUNDEDUP AT MARKET

Modes
Trois modes dexcution dordres sont votre disposition :
AT MARKET : Lordre sera pass au prix du march l'ouverture de la barre suivante.
Exemple : BUY 1 SHARE AT MARKET

AT <prix> LIMIT : Un ordre limite sera pos au prix indiqu


AT <prix> STOP : Un ordre stop sera pos au prix indiqu
Exemple : BUY 1 SHARE AT 10.5 LIMIT

Les ordres limites et stops niveaux de prix dtermins sont valables par dfaut pour une dure
d'une barre, partir de l'ouverture de la barre suivante. Ils sont donc annuls sa clture s'ils n'ont
pas t excuts.

Ces ordres sont diffrents des stops de protection et limites profits (voir section suivante). Les stops de
protections et les limites profits sont lis une position dj ouverte, et valables jusqu' la clture de celle-ci .
Ces ordres peuvent tre assimils des ordres au march si les conditions le permettent :
Si un ordre BUY <quantit> AT <prix> LIMIT est plac au dessus du prix actuel, il sera trait comme un
ordre au march.
Si un ordre BUY <quantit> AT <prix> STOP est plac en dessous du prix actuel, il sera trait comme
un ordre au march.
Si un ordre SELLSHORT <quantit> AT <prix> LIMIT est plac en dessous du prix actuel, il sera trait
comme un ordre au march.
Si un ordre SELLSHORT <quantit> AT <prix> STOP est plac au dessus du prix actuel, il sera trait
comme un ordre au march.

V 5.1.0 20150422 www.prorealtime.com 10 / 98


La Programmation de systmes de trad ing

Exemple :
Le systme suivant prvoit l'achat d'1 action au prix du march lorsque le RSI est en zone de survente (RSI
< 30) et que les cours sont en dessous de la bande de Bollinger infrieure.
Lorsque le RSI est en zone de surachat (RSI > 70) et les cours sont au dessus de la bande de Bollinger
suprieure, alors on vend.

MyRSI = RSI[14](Close)
MyBollingerDown = BollingerDown[25](Close)
MyBollingerUp = BollingerUp[25](Close)

IF MyRSI < 30 AND Close < MyBollingerDown THEN


BUY 1 SHARE AT MARKET
ENDIF
IF MyRSI > 70 AND Close > MyBollingerUp THEN
SELL AT MARKET
ENDIF

Vous pouvez dfinir la dure de validit de vos ordres stops et limites.

L'exemple suivant illustre l'utilisation de certaines variables pour dterminer la dure de validit d'un ordre
limite. La validit s'exprime en nombre de barres. Ici, le code place un ordre limite d'achat au prix de clture
de la barre sur laquelle un croisement de moyenne mobile a lieu. L'ordre limite reste valide 10 barres aprs
le croisement. S'il n'est pas excut pendant cette priode, il sera annul.

Exemple :
// Dfinition de la dure de validit de l'ordre
ONCE NbBarLimit = 10

MM20 = Average[20](close)
MM50 = Average[50](close)
// Si la MM20 croise la hausse la MM50, nous dfinissons 2 variables : "MyLimitBuy" et
"MyIndex", qui contiennent respectivement le prix de clture actuel et l'index de la
barre concerne par le croisement.
IF MM20 CROSSES OVER MM50 THEN
MyLimitBuy = close
MyIndex = Barindex
ENDIF

IF BarIndex >= MyIndex + NbBarLimit THEN


MyLimitBuy = 0
ENDIF
// Place un ordre au prix correspondant de MyLimitBuy, valable tant que cette variable
est suprieure 0 et que nous ne sommes pas en position long.
// Rappel : MyLimitBuy est suprieur 0 pendant les 10 barres qui suivent le croisement
IF MyLimitBuy > 0 AND NOT LongOnMarket THEN
BUY 1 SHARES AT MyLimitBuy LIMIT
ENDIF

Si un ordre n'est pas excut, il est possible de remplacer l'ordre dachat limite expir par un ordre d'achat
au march. Le bloc de code vous en donnera la possibilit s'il est ajout la suite du bloc prcdent :
IF MyIndex + NbBarLimit AND MyLimitBuy > 0 AND NOT LongOnMarket THEN
BUY 1 SHARES AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 11 / 98


La Programmation de systmes de trad ing

Les Stops et Targets


ProBuilder vous permet galement de dfinir des objectifs de profit et des stops de protection. La syntaxe
utiliser est la suivante :
SET STOP <type> <valeur> ou SET TARGET <type> <valeur>
Exemple :
SET STOP %LOSS 2 // Placera un stop loss de 2%
Chaque variante est dcrite ci-dessous.

Il est important de distinguer les diffrents ordres STOP :

AT (prix) STOP, sert dfinir un ordre seuil d'excution. Cette ordre est valable pendant une
seule barre.
SET STOP LOSS (prix), sert dfinir un stop de protection, c'est dire sortir d'une position
existante. Cet ordre est valable jusqu' la clture de la position.

Stops de protection
Les stops de protection (stops loss) permettent de limiter les pertes d'une position. Ils peuvent tre dfinis de
faon relative ou absolue :
SET STOP LOSS x : Un stop de protection est plac x units du prix d'entre en position.
SET STOP pLOSS x : Un stop de protection est plac x points du prix d'entre en position.
SET STOP %LOSS x : Un stop de protection est plac un niveau correspondant une perte de x%.
SET STOP $LOSS x : Un stop de protection est plac un niveau correspondant une perte de x ou $
(devise de l'instrument), frais de courtage non compris.
La direction et la quantit de l'ordre stop sont automatiquement adaptes la position en cours. Un stop de
protection est forcment li une position donne. Si aucune position n'est ouverte, le stop de protection
associ ne sera pas actif.
Pour dsactiver un stop loss, il faut utiliser l'une des instructions suivantes :
SET STOP LOSS 0, SET STOP pLOSS 0, SET STOP %LOSS 0, SET STOP $LOSS 0

Limites profits (Targets)


Cette instruction permet de sortir de position lorsque les gains atteignent l'objectif dtermin.
SET TARGET PROFIT x : Une limite est place x units du prix d'entre en position.
SET TARGET pPROFIT x : Une limite est place x points du prix d'entre en position.
SET TARGET %PROFIT x : Une limite est place un niveau correspondant un gain de x%.
SET TARGET $PROFIT x : Une limite est place un niveau correspondant un gain de x ou $ (devise de
l'instrument), frais de courtage non compris.
La direction et la quantit de l'ordre limite profit sont automatiquement adaptes la position en cours. Un
ordre limite profit est forcment li une position donne. Si aucune position n'est ouverte, le limite profit
associ ne sera pas actif.
Pour dsactiver un limite profit dans le code, vous pouvez utiliser l'une des instructions suivantes :
SET TARGET PROFIT 0, SET TARGET pPROFIT 0, SET TARGET %PROFIT 0, SET TARGET $PROFIT 0

V 5.1.0 20150422 www.prorealtime.com 12 / 98


La Programmation de systmes de trad ing

Stops suiveurs
Un stop suiveur (trailing stop) est un ordre stop dont le niveau d'excution change en fonction de l'volution
du prix. Pour des positions longues, le stop suivra la progression du prix en cas de monte du cours. Si par
la suite le cours diminue, le niveau du stop ne changera pas.
Pour les positions courtes le fonctionnement inverse se produit : le stop suivra la baisse des prix, mais
restera fixe en cas de remonte du cours.
Sur le mme principe que les stops de protection, les stops suiveurs peuvent tre dfinis de faon relative ou
absolue :

SET STOP TRAILING y : Un stop suiveur est plac x units du prix d'entre en position.
SET STOP pTRAILING y : Un stop suiveur est plac x points du prix d'entre en position.
SET STOP %TRAILING y : Un stop suiveur est plac un niveau initial correspondant une perte de x%.
SET STOP $TRAILING y : Un stop suiveur est plac un niveau initial correspondant une perte de x ou
$ (devise de l'instrument), frais de courtage non compris.

La direction et la quantit de l'ordre stop suiveur sont automatiquement adaptes la position en cours. Un
stop suiveur est forcment li une position donne. Si aucune position n'est ouverte, le stop suiveur
associ ne sera pas actif.
Si la quantit de la position change (on renforce la position par exemple), le seuil du stop est rinitialis.
Pour dsactiver un trailing stop dans le code, vous pouvez utiliser l'une des instructions suivantes :
SET STOP TRAILING 0, SET STOP pTRAILING 0, SET STOP %TRAILING 0, SET STOP $TRAILING 0

Exemple :
Vous entrez en position sur le future DAX un niveau de 6000 points et placez un trailing stop 50 points :
SET STOP pTRAILING 50

Le stop est initialement plac 5950. Si le cours monte jusque 6010 puis descend jusque 5980, le stop
montera donc de 10 points jusqu' 5960 et y restera maintenu jusqu' ce que le cours dpasse les 6010. Il
sera donc dclench si le cours atteint 5960.

Utilisation des "Set Target" / "Set Stop" avec une instruction conditionnelle de type "IF"
Il est possible de modifier le comportement des stops de protection ou limites profit prsent dans votre code
en y ajoutant des conditions personnalises. La commande "IF" pourra alors tre utilise.

Exemple :
REM Place un stop loss de 10% si le gain de la position prcdente est d'au moins.10%.
Sinon, place un stop loss de 5%
IF PositionPerf(1) > 0.1 THEN
SET STOP %LOSS 10
ELSE
SET STOP %LOSS 5
ENDIF

V 5.1.0 20150422 www.prorealtime.com 13 / 98


La Programmation de systmes de trad ing

Stops et limites niveaux multiples


En rgle gnrale, seule une instruction de type "Set Stop" et une instruction de type "Set Target" peuvent
tre entres et retenues au sein d'un code. Si votre code comporte plusieurs instructions successives de
type "Set Stop" ou "Set Target", seule la dernire commande entre sera retenue.

Exemple :
SET STOP %LOSS 10 // Place un stop loss de 10%
SET TARGET PROFIT 50 // Place une limite profit de 50 units
SET TARGET %PROFIT 5 // Remplace la dernire limite profit par une limite profit de 5%
SET STOP %TRAILING 2 // Remplace le dernier stop loss par un stop loss de 2%

Il est cependant possible de combiner stops fixes et stops suiveurs, ou stops loss et stops suiveurs. Une
instruction unique a t dveloppe dans ce but :

SET STOP <Mode> <valeur> <TrailingType> <valeur>


seuil trailing

Mode : LOSS, pLOSS, %LOSS, $LOSS


TrailingType : TRAILING, pTRAILING, %TRAILING, $TRAILING

Cette instruction se prsentera donc sous la forme :


SET STOP [LOSS/pLOSS/$LOSS/%LOSS] <value> [TRAILING/pTRAILING/$TRAILING/%TRAILING] <value>

Exemples d'utilisation:

SET STOP LOSS x TRAILING y : Un stop de protection est plac x units du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y units.

SET STOP LOSS x pTRAILING y : Un stop de protection est plac x units du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y points.

SET STOP LOSS x $TRAILING y : Un stop de protection est plac x units du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y ou $ (devise de
l'instrument).

SET STOP LOSS x %TRAILING y : Un stop de protection est plac x units du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y %.

V 5.1.0 20150422 www.prorealtime.com 14 / 98


La Programmation de systmes de trad ing

SET STOP pLOSS x TRAILING y : Un stop de protection est plac x points du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y units.
SET STOP pLOSS x pTRAILING y : Un stop de protection est plac x points du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y points.
SET STOP pLOSS x $TRAILING y : Un stop de protection est plac x points du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y ou $ (devise de
l'instrument).
SET STOP pLOSS x %TRAILING y : Un stop de protection est plac x points du prix d'entre en position.
Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur l'cart entre le stop
de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y %.

SET STOP $LOSS x TRAILING y : Un stop de protection est plac un niveau correspondant x ou $
(devise de l'instrument). Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est
infrieur l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop
suiveur de y units.
SET STOP $LOSS x pTRAILING y : Un stop de protection est plac un niveau correspondant x ou $
(devise de l'instrument). Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est
infrieur l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop
suiveur de y points.
SET STOP $LOSS x $TRAILING y : Un stop de protection est plac un niveau correspondant x ou $
(devise de l'instrument). Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est
infrieur l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop
suiveur de y ou $ (devise de l'instrument).
SET STOP $LOSS x %TRAILING y : Un stop de protection est plac un niveau correspondant x ou $
(devise de l'instrument). Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est
infrieur l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop
suiveur de y %.

SET STOP %LOSS x TRAILING y : Un stop de protection est plac un niveau correspondant x % du prix
d'entre en position, Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur
l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y
units.
SET STOP %LOSS x pTRAILING y : Un stop de protection est plac un niveau correspondant x % du prix
d'entre en position, Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur
l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y
points.
SET STOP %LOSS x $TRAILING y : Un stop de protection est plac un niveau correspondant x % du prix
d'entre en position. Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur
l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y
ou $ (devise de l'instrument).
SET STOP %LOSS x %TRAILING y : Un stop de protection est plac un niveau correspondant x % du prix
d'entre en position. Suite une variation de prix, si l'cart entre le stop suiveur et le prix actuel est infrieur
l'cart entre le stop de protection et le prix actuel, alors le stop de protection devient un stop suiveur de y %.

V 5.1.0 20150422 www.prorealtime.com 15 / 98


La Programmation de systmes de trad ing

Exemple :
SET STOP LOSS x TRAILING y :
Un stop de protection est plac un niveau de prix x. Si le niveau du stop suiveur paramtr augmente et
dpasse x, alors le stop de protection devient un stop suiveur de y units.
Supposons que vous entriez en position sur le DAX 6500. Le code suivant placera un stop de protection 20
points de votre niveau d'entre en position. Ce stop deviendra un stop suiveur si le prix dpasse les 6530.
SET STOP LOSS 20 TRAILING 50

Les graphiques suivantes illustrent l'exemple : Le stop est plac 20 points du cours d'ouverture, soit 6480.

Si le cours atteint 6530 (= 6500 + (50-20)), le stop devient un stop suiveur avec un cart de 50 points.

Si le cours monte (ici ; il est mont 6535), le stop suiveur monte galement : il monte 6485.

V 5.1.0 20150422 www.prorealtime.com 16 / 98


La Programmation de systmes de trad ing

Prcision sur l'utilisation des points ou des units pour les distances de stops et limites
La taille du point varie en fonction des types d'instruments, alors que la taille d''une unit (variation de cours de
1 sur le graphique) est videmment toujours fixe. En fonction de votre code, et des instruments sur lequel il est
appliqu, il peut tre prfrable d'utiliser des distances en points ou en units. Exemple :

Sur l'Eurodollar (EURUSD), 1 point = 1 pip = 0,0001


Sur les futures sur indices (DAX, FCE), 1 point = 1
Sur les futures sur taux europens, 1 point = 0,01 (un point de base)

Arrter un systme de trading avec QUIT


L'instruction QUIT vous permet d'arrter un systme de trading. L'arrt prend effet la clture de la barre
en cours. Les ordres en attente sont alors annuls et toutes les positions ouvertes sont fermes. Ceci vous
permet d'arrter facilement un systme de trading en cas de larges pertes ou aprs une certaine date par
exemple.

Exemple :
If date > 20140101 THEN // Stoppe la stratgie aprs le 1er Janvier 2014.
QUIT
ENDIF

Suivi des positions

Variables d'tat
Les 3 variables permettant de grer l'tat d'un systme de trading sont les suivantes :
ONMARKET : vaut 1 si vous avez des positions ouvertes, 0 sinon
LONGONMARKET : vaut 1 si vous avez des positions longues ouvertes, 0 sinon
SHORTONMARKET : vaut 1 si vous avez des positions courtes ouvertes, 0 sinon

Elles peuvent tre utilises avec des crochets. Par exemple, ONMARKET[1] vaut 1 si des positions taient
ouvertes la clture de la barre prcdente, 0 sinon.

Ces variables sont souvent utilises avec des instructions de type "IF" avant une entre en position :

Exemple :
REM On dfinit le MACD
Indicator1 = MACD[12,26,9](Close)
REM On observe les changements de signe de l'Histogramme du MACD
c1 = (Indicator1 CROSSES OVER 0)
REM Achat : Si il n'y a pas de position longue en cours et si MACD >0 , on achte 3 lots
IF NOT LONGONMARKET AND c1 THEN
BUY 3 SHARES AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 17 / 98


La Programmation de systmes de trad ing

Variables de taille de position


Ces 3 variables permettent de connatre la quantit de la position en cours :
COUNTOFPOSITION : donne la taille de la position (en lots, titres, ou contrats). Positif si position longue en
cours, ngatif si position courte en cours.
COUNTOFLONGSHARES : donne la taille de la position (en lots, titres, ou contrats) si une position longue
est en cours, 0 sinon.
COUNTOFSHORTSHARES : donne la taille de la position (en lots, titres, ou contrats) si en position courte
est en cours, 0 sinon.
Comme pour les instructions vrifiant ltat des positions, ces commandes sutilisent gnralement avec des
instructions de type "IF" avant d'entrer en position, et peuvent comporter des crochets.

Rappel au sujet des variables d'tat : le code est valu en fin de chandelier, et les ordres sont
passs l'ouverture de la barre suivante,
Dans le code suivant, la variable "long" ne sera pas gale 1 la clture du premier chandelier,
mais seulement la clture du deuxime chandelier. En effet, le premier ordre d'achat est pass
l'ouverture du deuxime chandelier.
BUY 1 SHARE AT MARKET
IF NOT LONGONMARKET THEN
long = 1
ENDIF

TradeIndex
La commande TRADEINDEX(n) permet daccder la barre du n-ime ordre prcdemment excut.
TRADEINDEX(nime ordre prcdent)
Note: Il est possible d'utiliser TradeIndex sans lassocier un numro de barre dfini entre parenthses.
Dans ce cas, le programme considrera la barre du dernier ordre pass, comme si vous aviez crit :
TradeIndex=TradeIndex(1). TradeIndex est gnralement associ Barindex.
Exemple :
REM : Si on est en position depuis au moins 3 barres :
IF LONGONMARKET AND (BarIndex - TradeIndex) >= 3 THEN
SELL AT MARKET
ENDIF

TradePrice
La commande TRADEPRICE(n) permet de faire appel au prix auquel une transaction a t excute. Sa
syntaxe est la suivante :
TRADEPRICE(nime ordre prcdent)
On peut spcifier entre parenthses lordre auquel on se rfre. Si on ne spcifie pas lordre la suite de
TradePrice, le programme considrera le prix du dernier ordre excut, comme si vous aviez crit :
TradePrice=TradePrice(1)
Exemple :
REM : Si la clture est suprieure au prix d'excution de la dernire transaction major de 2%
IF LONGONMARKET AND CLOSE > 1.02 * TRADEPRICE THEN
SELL AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 18 / 98


La Programmation de systmes de trad ing

PositionPerf
Cette commande donne accs :
La performance (ratio gains/cot de la position) de la n-ime dernire position clture, si n >0 (frais de
courtage non compris)
La performance (ratio gains/cot de la position) de la position en cours, si n=0 (frais de courtage non
compris)
Sa syntaxe est la suivante :
POSITIONPERF(nime position prcdente)
Si n n'est pas renseign, le programme considrera que n=0 : PositionPerf=PositionPerf(0)
Exemple :
REM Achte si le trade prcdent a fait au moins 20% de gains
IF NOTONMARKET AND PositionPerf(1) > 0.2 THEN
BUY 1000 CASH AT MARKET
ENDIF

PositionPrice
La commande PositionPrice permet de connatre le prix moyen de la position en cours.
POSITIONPRICE
Le prix moyen d'une position est dfini comme la somme des prix d'entre pondrs par la quantit de
chaque ordre. Seuls les renforcements de position influeront sur le prix moyen de la position.
Cette instruction peut tre utilise avec des crochets (dcalage) : POSITIONPRICE[1] retourne la valeur
qu'avait PositionPrice la clture du chandelier prcdent.
Exemple :
Vous achetez une action 5, puis vous renforcez votre position en rachetant une action 10, puis une
autre 15.
Le PosiionPrice est donc de (5+10+15) / 3 = 10
Vous dcidez alors d'allger votre position en vendant une action pour 20. La valeur de PositionPrice ne
changera pas et sera toujours gale 10.

StrategyProfit
Cette instruction retourne les gains ou pertes (absolues, dans la devise de l'instrument et hors frais de
courtage) effectivement raliss depuis le dbut du systme de trading. Les gains/pertes latents ne sont pas
pris en compte.
Elle peut tre associe l'instruction QUIT pour limiter les pertes d'un systme.
STRATEGYPROFIT
Il est aussi possible d'y ajouter des crochets: StrategyProfit[1] donnera par exemple le montant du profit la
clture de la barre prcdente.
Exemple :
IF STRATEGYPROFIT < -500 THEN
QUIT
ENDIF

Note :
Pour rappel, le code de vos systmes est valu en la clture de chaque chandelier. En reprenant
l'exemple ci dessus, les pertes peuvent tre suprieures 500 : si un gap intervient ou si une forte baisse
se produit au sein d'un seul chandelier notamment. Il est donc conseill d'utiliser STOP LOSS pour protger
les pertes sur la position, et ce bloc de code pour arrter le systme.

V 5.1.0 20150422 www.prorealtime.com 19 / 98


La Programmation de systmes de trad ing

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Dfinition des paramtres d'excution des systmes de trading


Des paramtres additionnels peuvent tre dfinis l'aide de l'instruction DEFPARAM.
Cumul des ordres de mme direction
La variable "CumulateOrders" permet l'autorisation ou l'interdiction du cumul des ordres, dans le cadre d'une
entre en position sur le march ou d'un renforcement de position. Par dfaut, ce paramtre est actif ("True")
lorsque vous crez un nouveau code directement par programmation : chaque nouvelle barre, le systme
pourra donc ajouter une position une position existante si les conditions d'entre en position sont vrifies.
Si vous souhaitez entrer sur le march grce des ordres stops ou limites, l'activation de "CumulateOrders"
permet d'avoir plusieurs stops ou limites actifs en simultan.
Pour s'assurer qu'un systme n'augmentera pas la taille d'une position dj ouverte, il est ncessaire
d'insrer l'instruction suivante en tout dbut de code :
DEFPARAM CumulateOrders = False
La commande DEFPARAM reste active pendant toute la dure d'excution de votre systme de trading. Il
n'est pas possible de changer le paramtre de cumul des ordres pendant l'excution du systme.
Exemples:
// Ce code achtera 1 action chaque barre, avec un maximum de 3 positions en cours
DEFPARAM CumulateOrders = True
If CountOfPosition < 3 THEN
Buy 1 shares at market
Endif
// Ce code achtera 1 action au prix de 2 et une action supplmentaire au prix de 3,
DEFPARAM CumulateOrders = True
If CountOfPosition < 2 THEN
Buy 1 shares at 2 Limit
Buy 1 shares at 3 Limit
Endif
// Ce code achtera 5 actions une seule fois
DEFPARAM CumulateOrders = False
Buy 5 shares at market
Plusieurs ordres de mme direction peuvent tre placs en simultan pour sortir du march, mme lorsque
"CumulateOrders" est paramtr sur "False".
Exemple:
// Ce code achtera 5 actions. On pourra vendre jusqu 3 actions si le prix croise la
baisse la MM40, Toute la position est liquide si on ralise une perte d'au moins 10%.
DEFPARAM CumulateOrders = False
Buy 5 shares at market
If close CROSSES UNDER Average[40] THEN
SELL 3 SHARES AT MARKET
Set stop %Trailing 10
Endif

V 5.1.0 20150422 www.prorealtime.com 20 / 98


La Programmation de systmes de trad ing

Note au sujet des stops et limites lorsque CumulateOrders est actif ("True") : Il est toujours possible de
placer des stops de protection et des limites profits alors que ce paramtre est actif. Dans ce cas, le niveau
des ordres stops et limites prendra pour rfrence le niveau moyen d'entre de vos positions. Leurs niveaux
seront recalculs chaque modification de la taille de la position globale.
Exemple:
Si vous achetez une action 10,00, que vous placez un stop de protection de 10%, et un limite profit
150%, les niveaux initiaux de ces ordres seront : Stop 9,00, limite 25,00. Si vous achetez une seconde
action au prix de 20,00, votre prix d'entre moyen sera de 15. En consquence, les nouveaux niveaux de
stops et limites seront : Stop 13,50$, limite 37,50 (position prise dans son ensemble).

Note sur les codes gnrs en mode "cration assiste" : CumulateOrders est dsactiv par dfaut
dans les codes issus du mode cration assist (l'instruction DefParam CumulateOrders = False est insre
en dbut de code).

Prcharger de l'historique
L'instruction "DEFPARAM Preloadbars" dfinit le nombre maximum de barres prcharges avant le
dmarrage d'un systme de trading. Cette instruction se rvle trs utile lorsque votre systme utilise des
indicateurs ncessitant le chargement d'une certaine quantit d'historique afin de se calculer. Ce paramtre
est dfinit sur 1000 par dfaut. Il ne peut tre ni infrieur 0 ni suprieur 5000. Pour dsactiver le
prchargement de donnes, entrez simplement "PreLoadBars = 0",
La valeur entre pour ce paramtre correspond un maximum, car le prchargement dpend de la quantit
d'historique disponible pour l'instrument et l'horizon temporel slectionns.
Exemple:
DEFPARAM PreLoadBars = 300
a = (Close + Open) / 2
IF price CROSSES OVER Average[250](a) THEN
BUY 1 SHARE AT MARKET
ENDIF

Prenons l'exemple d'une moyenne mobile de priode 250. Si le paramtre PreLoadBars est dfini 300, la
moyenne mobile possdera suffisamment de donnes pour se calculer au dmarrage du systme. Cela ne
sera pas le cas si le paramtre est dfini 200 (250>200).
Comme mentionn plus haut, 300 est ici un nombre maximum. Si moins de 300 barres sont disponibles
avant le dmarrage du systme, le prchargement s'effectuera sur le nombre de barres disposition.
Dans la continuit de cet exemple, le "BarIndex" de la premire barre suivant le dmarrage du systme sera
gal 300. Par contre, si aucune barre n'est prcharge, le "BarIndex" de la premire barre suivant le
dmarrage du systme sera gal 0.

Attention : une affectation de variable prcde de "ONCE" sera excute qu'une seule fois la premire
barre de l'historique "preloadbars".
Dans l'exemple ci-dessous, la stratgie ne passera donc aucun ordre (car tmp est 1 pendant le
preloadbars, et aucun ordre ne peut passer pendant cette priode).
Exemple :
DEFPARAM PreLoadBars = 200
ONCE tmp = 1
IF tmp = 1 THEN
BUY 1 SHARE AT MARKET
tmp = 0
ENDIF

V 5.1.0 20150422 www.prorealtime.com 21 / 98


La Programmation de systmes de trad ing

FlatBefore et FlatAfter
DEFPARAM FlatBefore = HHMMSS
DEFPARAM FlatAfter = HHMMSS
HHMMSS est l'heure dtaille o HH correspond aux heures, MM aux minutes et SS aux secondes.
Ces instructions vous donnent la possibilit d'annuler n'importe quel ordre en attente, de fermer n'importe
quelle position ouverte et empchent l'ajout ventuel d'ordres additionnels avant l'heure paramtre (dans le
cas de FlatBefore) ou aprs l'heure paramtre (dans le cas de FlatAfter) dans le fuseau horaire dfini pour
la stratgie.
La valeur associe linstruction FlatBefore doit toujours tre suprieure l'heure d'ouverture du march (ou
de dbut de l'horaire personnalis s'il est dfini). La valeur associe l'instruction FlatAfter doit tre infrieure
l'heure de fermeture du march (ou de fin d'horaire personnalis s'il est dfini). Dans le cas contraire, ces
paramtres n'auront simplement pas d'effet. Si l'heure paramtre n'est pas un multiple du timeframe principal
du systme de trading (c'est dire qu'elle survient l'intrieur d'un chandelier en cours), alors l'instruction
DEFPARAM FlatAfter prendra effet la clture de ce chandelier. L'instruction DEFPARAM FlatBefore sera
quant elle applique ds la clture du chandelier prcdent la barre contenant l'heure paramtre.

Exemple:
DEFPARAM FlatBefore = 093000 // Annule n'importe quel ordre en attente, ferme n'importe
quelle position ouverte et empche l'ajout ventuel d'ordres additionnels par le systme
avant 09h30min00sec (dans le fuseau horaire de la stratgie)
DEFPARAM FlatAfter = 160000 // Annule n'importe quel ordre en attente, ferme n'importe
quelle position ouverte et empche l'ajout ventuel d'ordres additionnels par le systme
aprs 16h00min00sec (dans le fuseau horaire de la stratgie)

Rinvestir les gains (backtests seulement)


DEFPARAM NoCashUpdate = True
Si cette option est active, le cash disponible n'est pas mis jour avec les gains, les pertes et les frais de
courtage

Exemple :
Capital initial 10 000 , avec "NoCashupdate = True". L'investissement maximal sera limit 10 000 quels
que soient les gains et les pertes raliss tout au long de l'excution du Backtest.

Remarque :
Les paramtres dfinis l'aide de l'instruction DEFPARAM doivent tre dfinis en dbut de code (aprs
ventuels commentaires)

MinOrder et MaxOrder (backtests seulement)


DEFPARAM MinOrder = n
DEFPARAM MaxOrder = p
Cette option permet de bloquer les ordres dont la quantit (en lots, contrats ou actions) est infrieure n ou
suprieure p

Exemple :
DEFPARAM MinOrder = 100
BUY 1000 CASH AT MARKET
Si le dernier prix de l'instrument est au dessus de 10, la quantit de l'ordre sera infrieure 100 et l'ordre
sera rejet.

V 5.1.0 20150422 www.prorealtime.com 22 / 98


La Programmation de systmes de trad ing

Appeler des d'indicateurs

Indicateurs ProRealTime
Toutes les fonctions que vous utilisez pour la cration de vos indicateurs personnels sont galement
accessibles pour la cration de vos systmes de trading, y compris les indicateurs ProRealTime. (cf. partie
glossaire la fin de ce manuel pour la liste complte des fonctions).
Nous vous conseillons galement de vous rfrer au manuel ProBuilder pour plus d'informations sur ces fonctions.
La quantit d'historique ncessaire pour le calcul d'un indicateur dpend de la nature de cet indicateur.
Par exemple, on considre gnralement que le calcul d'une moyenne mobile exponentielle de N priodes
(ExponentialAverage[N]) ncessite 10*N barres pour donner un rsultat prcis.
Si la date de dbut d'un backtest est trs proche de la premire date du graphique, le serveur fournit de
l'historique supplmentaire afin que les indicateurs affichent des rsultats ds la premire barre.
Indicateurs personnaliss
Comme lors de la programmation d'indicateurs, votre systme peut faire appel des indicateurs
personnaliss grce l'instruction CALL.
Exemple :
a,b = CALL "HistoMACD[5,6]" // 5 et 6 tant les paramtres passs en entre de la
fonction HistoMACD
Pour en savoir plus sur l'utilisation optimale des CALL, reportez-vous la section ddie aux conseils de
programmation des systmes de trading.

Astuces de programmation

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Le temps de calcul d'un systme dpend de la complexit des indicateurs utiliss et de la faon dont ils sont
appels. Le paragraphe suivant propose donc quelques conseils simples pour optimiser votre code.
Rduire le nombre d'appels aux indicateurs ProRealTime
Si vous utilisez plusieurs fois le mme indicateur ProRealTime dans des calculs diffrents, ne rappelez pas
cet indicateur. Prfrez toujours stocker l'indicateur dans une variable intermdiaire:

CODE NON-OPTIMAL CODE OPTIMAL

IF NOT LONGONMARKET AND close > Average[40] avg40 = Average[40]


THEN IF NOT LONGONMARKET AND close > avg40 THEN
BUY 1 SHARE AT MARKET BUY 1 SHARE AT MARKET
ENDIF ENDIF

IF NOT SHORTONMARKET AND close < Average[40] IF NOT SHORTONMARKET AND close < avg40 THEN
THEN
SELLSHORT 1 SHARE AT MARKET
SELLSHORT 1 SHARE AT MARKET
ENDIF
ENDIF

V 5.1.0 20150422 www.prorealtime.com 23 / 98


La Programmation de systmes de trad ing

Ce conseil est aussi valable lorsque vous voulez utiliser le mme indicateur plusieurs fois mais avec un
dcalage diffrent.

CODE NON-OPTIMAL CODE OPTIMAL

a = ExponentialAverage[40](close) a = ExponentialAverage[40](close)
b = ExponentialAverage[40](close[1])
c = ExponentialAverage[40](close) IF a > a[1] THEN
BUY 1 SHARE AT MARKET
IF a > b THEN ENDIF
BUY 1 SHARE AT MARKET
ENDIF IF a < a[1] THEN
SELLSHORT 1 SHARE AT MARKET
IF a < c[1] THEN ENDIF
SELLSHORT 1 SHARE AT MARKET
ENDIF

Appels d'indicateurs personnaliss


L'appel d'indicateurs personnaliss via l'instruction CALL est plus coteux en temps de calcul que l'appel
d'indicateurs ProRealTime. Pour les indicateurs ProRealTime, nous savons par avance quels calculs sont
ncessaires et nous avons la matrise de leur excution. Ce n'est pas le cas des indicateurs personnaliss,
dont la programmation est propre chaque utilisateur.
Pour amliorer la vitesse d'excution d'un systme, il est donc important d'optimiser l'utilisation de
l'instruction CALL dans son code.

Limiter le nombre d'appels identiques :


Comme pour les indicateurs ProRealTime, il est conseill de limiter le nombre d'appel aux indicateurs
personnaliss au sein d'un mme code :

CODE NON-OPTIMAL CODE OPTIMAL

myindic1 = CALL "Ma Fonction" myindic = CALL "Ma Fonction"

IF NOT LONGONMARKET AND close > myindic1 IF NOT LONGONMARKET AND close > myindic
THEN THEN
BUY 1 SHARE AT MARKET BUY 1 SHARE AT MARKET
ENDIF ENDIF

myindic2 = CALL "Ma Fonction" IF NOT SHORTONMARKET AND close < myindic
IF NOT SHORTONMARKET AND close < myindic2 THEN
THEN SELLSHORT 1 SHARE AT MARKET
SELLSHORT 1 SHARE AT MARKET ENDIF
ENDIF

V 5.1.0 20150422 www.prorealtime.com 24 / 98


La Programmation de systmes de trad ing

Limiter le nombre d'appels imbriqus :


Si vous souhaitez utiliser un indicateur personnalis dans votre code, vrifiez qu'il n'utilise pas lui-mme
l'instruction CALL.
Les appels d'indicateurs personnaliss imbriqus les uns dans les autres sont trs coteux en temps de
calcul. Si vous le pouvez, prfrez toujours r-insrer le code des indicateurs personnaliss que vous
souhaitez utiliser dans votre systme pour quil n'appelle que des indicateurs ProRealTime.

CODE NON-OPTIMAL CODE OPTIMAL

Code du systme de trading : Code du systme de traing :


myindic = CALL "MyDCLOSEMix LinearReg" dayclosemix = (DClose(0) + 3.5 * DClose(1)
+ 4.5 * DClose(2) + 3 * DClose(3) + 0.5 *
DClose(4) 0.5 * DClose(5) 1.5 *
IF NOT longonmarket AND close > myindic
DClose(6)) / 10.5
THEN
myindic = LinearRegression[5](dayclosemix)
BUY 1 SHARE AT MARKET
ENDIF
IF NOT longonmarket AND close > myindic
THEN
IF NOT shortonmarket AND close < myindic
BUY 1 SHARE AT MARKET
THEN
ENDIF
SELLSHORT 1 SHARE AT MARKET
ENDIF
IF NOT shortonmarket AND close < myindic
THEN
Code de "MyDCLOSEMix LinearReg" : SELLSHORT 1 SHARE AT MARKET
dayclosemix = CALL "MyDCLOSEMix" ENDIF

RETURN LinearRegression[5](dayclosemix)

Code de "MyDCLOSEMix" :
mix = (DClose(0) + 3.5 * DClose(1) + 4.5 *
DClose(2) + 3 * DClose(3) + 0.5 * DClose(4)
0.5 * DClose(5) 1.5 * DClose(6)) / 10.5

RETURN mix

V 5.1.0 20150422 www.prorealtime.com 25 / 98


La Programmation de systmes de trad ing

Limiter le nombre de conditions imbriques :


Le conseil suivant est valable pour toutes les instruction conditionnelles (IF...THEN...ENDIF). Dans un souci
d'optimisation du temps de calcul, il est toujours prfrable de travailler avec une instruction vrifiant N
conditions plutt qu'avec N instructions :

CODE NON-OPTIMAL CODE OPTIMAL

IF CLOSE >= 0.0014 THEN IF CLOSE >= 0.0014 AND CLOSE <= 0.0047 AND
IF CLOSE <= 0.0047 THEN INTRADAYBARINDEX >= 5 AND INTRADAYBARINDEX
<= 20 THEN
IF INTRADAYBARINDEX >= 5 THEN
IF NOT SHORTONMARKET THEN
IF INTRADAYBARINDEX <= 20 THEN
BUY 1 SHARES AT MARKET
IF NOT SHORTONMARKET THEN
ENDIF
BUY 1 SHARES AT MARKET
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

Utilisation des boucles FOR :


L'utilisation de boucles FOR est parfois indispensable, mais il est vaut mieux viter de les utiliser quand cela
est possible, car elles augmentent le temps de calcul.

Voici quelques exemples typiques ou l'utilisation de boucle n'est pas ncessaire :

//Si la condition c1 a t au moins une fois vraie au cours des n derniers chandeliers :
IF HIGHEST[n](c1) = 1 THEN
...
//Si la condition c1 a toujours t vraie au cours des n derniers chandeliers :
IF LOWEST[n](c1) = 0 THEN
...
//Nombre de fois ou la condition c1 a t vrifie au cours des n derniers chandeliers :
num = SUMMATION[n](c1)

//Nombre de barres depuis que c1 a t vraie :


IF c1 THEN
lastoccurence = barindex
ENDIF
timesince = barindex - lastoccurence

//Le max des variables (a,b,c,d,e,f,g) :


top = MAX(a , MAX(b , MAX(c , MAX(d , MAX(e , MAX(f , g) ) ) ) ) )

V 5.1.0 20150422 www.prorealtime.com 26 / 98


ProBacktest - La simulation des systmes de trading

ProBacktest - La simulation des systmes de trading


L'onglet "ProBacktest" de la fentre de cration de systmes de trading permet de configurer les paramtres
de courtage qui seront utiliss pour la simulation du systme :

Capital initial
Paramtres de courtage et Risk management
Optimisation des variables
Priode d'excution

V 5.1.0 20150422 www.prorealtime.com 27 / 98


ProBacktest - La simulation des systmes de trading

Gestion du capital / Money Management

Capital initial
Cette section permet de renseigner le capital allou au systme de trading. L'investissement maximal
autoris pendant l'excution du systme en dpend.
Pendant l'excution du backtest, les frais de courtage, ainsi que les gains et pertes viendront l'augmenter ou
le diminuer (sauf si le paramtre NoCashUpdate est activ). Reportez-vous au paragraphe Rinvestir les
gains pour en savoir plus. Le capital disponible pour les systmes en trading automatique correspond au
capital disponible dans le portefeuille.

Si votre systme de trading ne prend aucune position, pensez augmenter le montant du


Capital Initial.

Frais de courtage et gestion du risque


Vous pouvez ajuster ces paramtres pour reflter prcisment les frais de votre courtier. Tout type de frais
de courtage peuvent tre appliqus tous les types d'instruments. Les types de frais possibles sont :
Montant fixe par ordre : montant fixe dans la devise de l'instrument appliqu chaque fois qu'un ordre est
excut. Vous pouvez aussi spcifier une valeur minimale ou maximale par ordre.
Pourcentage : pourcentage de la transaction (dans la devise de l'instrument) appliqu chaque fois qu'un
ordre est excut.
Montant par lot : montant fixe (dans la devise de l'instrument) appliqu par lot ou contrat excut.
Marge : dpt de marge requis en pourcentage ou en montant par contrat. Cette valeur dtermine l'effet
de levier maximal (=100/Marge). Exemple : 2% quivaut un effet de levier x50.
Taille lot (Forex seulement) : taille minimale d'un ordre sur le Forex. Chaque quantit d'ordre utilise
dans les instructions BUY/SELL est multiplie par la taille de lot.
Spread (en points ou pips) : diffrence de prix entre meilleur Achat (Bid) et meilleure Vente (Ask).

Le Risk management permet de dfinir (en nombre de contrats) la taille maximale d'une position: un ordre
qui tenterait de renforcer la position au del de cette valeur sera rejet. La taille maximale d'une position est
typiquement dfinie en lots pour les futures et le Forex et en montant ou % du capital pour les actions.

Note : Les paramtres renseigns dans la section "Risk Management" ne tiennent pas compte des frais de
courtage.

V 5.1.0 20150422 www.prorealtime.com 28 / 98


ProBacktest - La simulation des systmes de trading

Futures :
Les frais de courtage sont dfinis en commission par lot et par transaction.
La marge, ou "Deposit par lot" est le cash ncessaire pour l'achat d'un contrat. La valeur d'un point est
automatiquement calcule par la plate-forme en fonction du future concern par le systme de trading.
Voici les valeurs des points des principaux futures :

NOM DU FUTURE VALEUR 1 POINT

FCE CAC 40 10
DAX 25
DJ Eurostoxx 50 10
BUND 10
Euro FX 12,5$
Mini S&P 500 50$
Mini Nasdaq 100 20$
Mini Dow 5$

Forex :
Les paramtres de courtage permettent de dfinir la taille des lots, le spread et la marge (effet de levier)
appliquer chaque ordre.

Exemple avec l'EURUSD :


Taille d'un lot : 100 000
Spread : 2 pips
Marge : 5 % (=Effet de levier x20)
L'instruction BUY 1 LOT AT MARKET sur l'EURUSD aura pour effet d'acheter un lot de 100 000, avec un spread
de 2 pips (soit 0,0002). L'effet de levier tant de 20 (marge de 5%), il est ncessaire de possder 5 000.

Actions :
Les frais de courtage sont dfinis en frais par ordre, en ou % de la transaction. Il est galement possible de
dfinir des frais de courtage minimum par transaction.
Sur les actions, les tailles de position et les engagements par transaction sont dfinis en pourcentage du
capital, ou dans la devise de l'instrument. Le Risk Management permet la fois de brider le montant investi
lors du passage dun ordre, et d'appliquer un effet de levier.

Exemple :
Frais de courtage par ordre : 10
Marge : 20 %
Avec cette configuration, chaque ordre pass pourra avoir un effet de levier de 5.

V 5.1.0 20150422 www.prorealtime.com 29 / 98


ProBacktest - La simulation des systmes de trading

Optimisation des variables


Dans cette section, vous pouvez choisir d'optimiser des variables. Pour un instrument et horizon temporel
donn, cette fonction permet de tester diffrentes combinaisons de variables, pour dterminer celles donnant
les meilleures performances.
Pour en savoir plus et voir un exemple concret, vous pouvez visionner la vido "Money management,
stops et optimisation".
Le rsultat de loptimisation est prsent dans un "Rapport doptimisation". Vous connatrez les statistiques
des meilleures combinaisons de variables testes et pourrez ainsi dterminer celle que vous devrez utiliser
afin de rendre votre systme de trading optimal.

Voici un exemple de systme avec optimisation des priode des moyennes mobiles n et m :
AVGm = ExponentialAverage[m](Close)
AVGn = ExponentialAverage[n](Close)
IF AVGm CROSSES OVER AVGn THEN
BUY 100 SHARES AT MARKET
ENDIF
IF AVGm CROSSES UNDER AVGn THEN
SELL 100 SHARES AT MARKET
ENDIF

Les variables n et m peuvent tre dfinies en cliquant sur le bouton "Ajouter" dans la section "Optimisation
des variables".

La fentre suivante apparat alors :

"Nom dans le programme" reprsente le nom que la variable prend dans notre code (ici n et m).
Attention respecter la casse (majuscules et minuscules).
"Libell dans la fentre proprits" reprsente le nom quon veut attribuer la variable, de faon la
rendre plus facilement reconnaissable (par exemple "short" ou "Nombre de Priodes" pour n).
"Valeur min"/"Valeur max" reprsentent les bornes entre lesquelles la variable oscille,
"Pas" reprsente lintervalle minimum entre chaque valeur teste lors de loptimisation.

V 5.1.0 20150422 www.prorealtime.com 30 / 98


ProBacktest - La simulation des systmes de trading

Voici un exemple de rapport d'optimisation :

Le rapport en exemple indique 5 statistiques pour chacune des combinaisons de variables testes. Ces
statistiques sont les suivantes :

"Gain", dsigne la plus-value ralise par le systme de trading. Cela correspond la formule :
Profit = Montant du capital final Montant du capital initial

Cette statistique permet dvaluer de faon absolue le potentiel de gains avec le systme dfini (pour une
combinaison de variables et une priode d'tude donnes).

Note: les frais de courtage dfinis dans la section " Gestion de capital" sont pris en compte dans ce calcul.

"%Gain", reprsente le profit ou la perte en pourcentage. Il correspond la formule :


%Gain = 100 x Profit / Montant du capital initial

Indique donc la performance relative d'un systme configur avec les valeurs une combinaison de variables
donne.

"Nb de trades", indique le nombre de positions qui ont t ouvertes au cours de ce systme.

"% de trades gagnants" dsigne le pourcentage de positions gagnantes du systme.


Mathmatiquement, il se dfinit par :
% trades gagnants = (100 x Nombre de trades gagnants) / Nombre de trades

"Gains moyens par position" reprsente le gain moyen par position. Cette information est utile pour
dterminer lefficacit moyenne des ordres passs, notamment lorsque lon ne souhaite pas passer
beaucoup dordres. Elle se dfinit par :
Gains moyens par position = Gains / Nombre de positions

Note: les valeurs optimales des variables dun systme de trading peuvent changer, pour une mme valeur,
selon les units de temps ou lhistorique utilis.

V 5.1.0 20150422 www.prorealtime.com 31 / 98


ProBacktest - La simulation des systmes de trading

Dfinition de la priode d'excution du backtest

Ces champs vous permettent de dfinir les dates de dbut et de fin de votre backtest. La quantit de
donnes utilise pour un backtest est gnralement limite l'historique affich sur le graphique. Vous
pouvez augmenter cette quantit d'historique via le menu droulant en haut gauche de chaque graphique.
Il est ncessaire de charger la quantit d'historique que vous souhaitez avant de lancer votre backtest.
Dans le cas d'un backtest fait en "temps rel", les ordres apparaissent sur le graphique chaque
dclenchement de signal (achat, vente etc.). Il est galement possible d'associer ces ordres des popups
ou des sons depuis le menu "Option/configuration des alertes et des sons"
Si une date de fin est dfinie, les positions encore ouvertes cette date seront fermes.

Remarque :
Si votre backtest met du temps s'excuter, vous pouvez rduire sa priode d'excution : le temps de calcul
est proportionnel la longueur de l'historique.
Aprs l'excution d'un systme de trading, les informations suivantes sont affiches :
volution de la courbe gains & pertes chaque chandelier
volution des positions
Rapport dtaill
Pour en savoir plus sur l'affichage des rsultats de backtests, reportez-vous l'Annexe A en fin de document.

Personnalisation des plages horaires pour les backtests


Le menu Options/Fuseaux et plages horaires des graphiques intraday permet de dfinir des plages
horaires personnalises pour les diffrents marchs.

Plages horaires personnalises : si vous dfinissez des plages horaires rduites pour un march, seules
les donnes comprises dans cette plage horaire seront affiches sur les graphiques (et donc prises en
compte dans le ProBacktest). Notez que les plages horaires rduites ne peuvent pas tre dfinies cheval
sur deux jours de cotation distincts. Par exemple, sur un march cotant 24h/24h, vous pouvez dfinir une
plage horaire rduite entre 10h00 et 14h00, mais il n'est pas possible de dfinir une plage horaire entre
21h00 le premier jour et 09h00 du matin le jour suivant. Si un ordre est cens tre plac la clture de la
dernire barre de la plage horaire personnalise, il sera alors plac l'ouverture de la premire barre de la
plage personnalise le lendemain.

Notes concernant les donnes du week-end :


Certains des marchs cotant 24h/24h proposent l'option Utiliser les cotations intraday pour construire les
chandeliers journaliers . Cette option n'est pas prise en compte par le ProBacktest, qui n'utilise que les
chandeliers journaliers bass sur les horaires standard de marchs.
Certains marchs incluent des donnes du week-end (comme le Forex). Pour ces marchs, il est possible
de cocher un boite permettant de cacher les donnes du week-end dans les graphiques, via le menu
Options/Fuseaux et plages horaires des graphiques intraday . Les donnes du week-end sont toujours
prises en compte pour les backtests. Concernant le Forex, les donnes du dimanche sont inclues dans le
chandelier journalier du lundi, galement en raison des backtests (il n'existe pas de chandelier journalier
pour le dimanche).

V 5.1.0 20150422 www.prorealtime.com 32 / 98


ProBacktest - La simulation des systmes de trading

Notes concernant les fuseaux horaires personnaliss :


Le code est toujours excut dans le fuseau horaire utilisateur. C'est dire que toutes les instructions
temporelles (Time, FlatAfter, FlatBefore) prendront en compte ce fuseau horaire dans leur calcul. Le fuseau
horaire utilisateur est le fuseau horaire choisi pour le march auquel l'instrument appartient, Il est
configurable dans le menu Options/Fuseaux et plages horaires des graphiques intraday

Par dfaut, le fuseau horaire de l'instrument est celui de votre ordinateur.

Il est possible de changer le fuseau horaire d'un march depuis le menu Options/Fuseaux et plages
horaires des graphiques intraday . Au prochain lancement du backtest sur un instrument de ce march, le
nouveau fuseau horaire sera pris en compte.

Exemple : Sur Vodafone (sur le LSE dont le fuseau horaire officiel est GMT+1 en heure d't ou BST), je
configure mon graphique en heure de Paris (GMT+2 heure d't, ou CET).
En 15 min, sur le chandelier de 11h45 heure de Londres (BST, GMT+1 en heure d't), l'instruction Time va
retourner 130000 (heure de cloture du chandelier 15 min de 11h45 BST : 12h00, transpos en heure CET :
13h00)

Les instructions concernes sont toutes les instructions temporelles intraday :


Time et ses drivs (Hour, Minute)
Opentime et ses drivs (OpenHour, OpenMinute)
FlatAfter et FlatBefore
Intradaybarindex (remis zro l'ouverture du march dans le fuseau horaire de l'utilisateur)

Les instructions temporelles en journalier ne sont pas concernes par ce changement;


DOpen,DHigh,DLow,DClose
Date et ses drivs (Year, Month,Day)
DayOfWeek et Days

V 5.1.0 20150422 www.prorealtime.com 33 / 98


ProBacktest - La simulation des systmes de trading

Raisons d'arrt d'un ProBacktest


Un ProBacktest peut s'arrter automatiquement pour l'une des raisons suivantes :
Le backtest atteint l'heure de fin spcifie dans la fentre de programmation. Dans ce cas, la fin du
backtest est mise en vidence par une ligne verticale noire sur la courbe des gains et pertes.
Il existe une instruction QUIT dans le code qui a t excute. Dans ce cas, la fin du backtest est
mise en vidence par licne suivant :
Le capital disponible n'est plus suffisant pour couvrir les pertes (capital estim est ngatif). Dans ce
cas, la fin du backtest est mise en vidence par licne suivant :
Un ordre est rejet du fait de liquidits insuffisantes. Cet ordre apparatra dans la liste des ordres du
rapport dtaill du backtest. La fin du backtest est mise en vidence par licne suivant :

Voici un exemple de backtest arrt suite un capital insuffisant :

V 5.1.0 20150422 www.prorealtime.com 34 / 98


ProBacktest - La simulation des systmes de trading

Affichage des valeurs des variables backtest ( partir de ProRealTime v10.2)


La fonction GRAPH permet de visualiser les valeurs de variables que vous utilisez dans votre programme
backtest.
Cette instruction s'utilise de la faon suivante :
GRAPH myvariable AS "my variable name"
myvariable est le nom de la variable dans le code
"my variable name" est l'tiquette de la variable qui sera affiche sur le graphe

Il est galement possible de dfinir une couleur de sortie grace au paramtre optionnel COLOURED :
GRAPH myvariable COLOURED (r,g,b) AS "my variable name"
r,g,b sont des entiers entre 0 et 255 au format RGB.
exemple : (255,0,0) pour une courbe rouge

ainsi que la transparence de la courbe :


GRAPH myvariable COLOURED (r,g,b,a) AS "my variable name"
a est un entier compris entre 0 et 255 et indique la transparence (0 pour une courbe transparente,
255 pour une courbe opaque)

Un nouveau sous-graphe apparat sous la courbe Gains/Pertes de votre backtest. Ce sous-graphe contient
les valeurs de myvariable chaque barre, comme dans l'exemple ci dessous :

Note :
L'instruction GRAPH ne peut pas tre utilise en Trading Automatique.
5 variables maximum peuvent simultanment tre affiches sur un mme graphique. Toute variable
supplmentaire sera ignore.

V 5.1.0 20150422 www.prorealtime.com 35 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

ProOrder - Le Trading Automatique

Avertissement : Si vous mettez en uvre un systme de trading au moyen du service ProOrder, ce


service enverra des signaux de manire automatique, selon les paramtres que vous avez
dtermins, en vue de lexcution des ordres correspondants sans quaucune validation individuelle
de chaque ordre de votre part ne soit requise. Votre systme sera excut automatiquement mme
lorsque votre ordinateur sera teint. Il est de votre responsabilit de vous assurer que vous avez
paramtr votre systme de telle sorte quil ne conduise pas la ralisation de pertes au-del dun
montant que vous tes prt accepter.
En tout tat de cause, ProRealTime ne sera responsable des ventuelles pertes subies suite
lexcution depuis de votre systme de trading automatique.

Cette partie du manuel expliquera comment passer du backtest de vos systmes de trading leur excution
en tant que systmes de trading automatique.
La premire section dtaille l'envoi d'un systme de trading vers ProOrder et les tapes ncessaires
son excution en trading automatique.
La seconde section montre comment lancer un systme de trading automatique et vrifier sa
performance.
La troisime section dcrit les paramtres des systmes de trading et leur conditions d'excution.
La quatrime section explique comment trading manuel et trading automatique interagissent dans la
plateforme.
La cinquime section fournit des informations spcifiques l'excution de plusieurs systmes de trading
automatique sur un mme instrument.
La dernire section contient une liste d'indicateurs qui ne peuvent pas tre utiliss en trading
automatique cause de leur mthode de calcul.

Nous vous conseillons de terminer la lecture du manuel avant de vous lancer dans l'excution d'un systme
en trading automatique.

V 5.1.0 20150422 www.prorealtime.com 36 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Prparer un systme l'excution en trading automatique


Commencez par ouvrir la fentre ProOrder depuis le menu "Trading" :

La fentre illustre ci-dessous s'affiche. Elle contient les tapes suivre afin de prparer un systme pour
l'excution en trading automatique.

V 5.1.0 20150422 www.prorealtime.com 37 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Choisissez une valeur et un horizon temporel, puis cliquez sur le bouton .


La fentre "Indicateurs et Systmes de Trading" apparat. Vous obtenez une liste de vos systmes de trading
automatique en cliquant sur l'onglet correspondant.

Slectionnez le systme de votre choix et cliquer sur "Prparer pour le trading automatique". Le systme
apparatra ainsi dans ProOrder.

V 5.1.0 20150422 www.prorealtime.com 38 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Dmarrer un systme de trading avec ProOrder et voir sa performance


Une fois que vous avez ajout un systme de trading ProOrder, vous pouvez dfinir son paramtre de
taille maximum de position. Lancez ensuite votre systme en cliquant sur le bouton "Start" :

Veillez bien lire le contenu de la pop-up de confirmation : il vous sera demand de confirmer l'excution du
systme de trading.Il est important de comprendre que le paramtre de taille maximum de position a priorit
sur les quantits d'achat/vente dfinies dans le code du systme. La taille de position maximum pour les
futures et le Forex est dfinie en nombre de contrats ou nombre de lots.
Par exemple, si votre code comporte une instruction d'achat de 3 lots et que la limite de taille maximum de
position est fixe 1, l'ordre d'achat des 3 lots sera ignor.
De mme, si votre code prvoit successivement l'achat d'1 lot puis la vente dcouvert de 3 lots, l'ordre de
vente dcouvert sera ignor et vous resterez en position acheteuse d'1 lot. Il est recommand de toujours
vrifier le paramtre de taille maximum de position avant de lancer un systme de trading.
Pour les actions, la taille maximum de position est exprime en montant (frais de courtage non-inclus).
Une fois lanc, le systme sera affich dans la partie "En cours d'excution" de la fentre, comme illustr ci-
dessous.

V 5.1.0 20150422 www.prorealtime.com 39 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Une fois le systme dmarr, ses positions, gains latents et gains totaux seront affichs dans la fentre
ProOrder. En cliquant sur le lien "Version", vous obtiendrez une copie du code du systme en question.

Un rapport dtaill des performance et une courbe de gains & pertes du systme peuvent tre obtenus en
utilisant le bouton correspondant, comme illustr ci-dessous.

V 5.1.0 20150422 www.prorealtime.com 40 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Voici un exemple d'une courbe de gains & pertes d'un systme en cours d'excution, avec le rapport dtaill
de ses performances :

V 5.1.0 20150422 www.prorealtime.com 41 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Note : La valeur du gain affiche dans les "Statistiques des positions cltures" peut diffrer de la valeur de
la courbe des gains & pertes. En effet, celle-ci tient compte des positions ouvertes en cours, ce qui n'est pas
le cas du rapport dtaill.

V 5.1.0 20150422 www.prorealtime.com 42 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Paramtres du Trading Automatique et conditions d'excution

Paramtres des systmes de trading


Il est conseill de configurer ses prfrences de trading avant de lancer un quelconque systme de trading
automatique. Pour cela, cliquer sur le bouton contenant la cl molette comme illustr ci-dessous :

Un lien vers les conditions d'excution de vos systmes de trading est galement disponible dans cette
fentre. Il est fortement recommand de lire ce contenu pour en apprendre plus sur le comportement de vos
systmes de trading automatique.

V 5.1.0 20150422 www.prorealtime.com 43 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Arrt automatique du systme de trading


Date de validit : Tous les systmes de trading en cours on une date de validit commune. Si vous ne
cliquez pas sur le bouton "tendre" avant cette date, ProOrder peut interrompre les systmes de trading
correspondant. Vous pouvez vrifier la validit de vos systmes de trading dans la fentre ProOrder (la date
affiche prend comme rfrence le fuseau horaire de votre ordinateur). Pour tendre la validit de votre
systme, cliquez sur le bouton "tendre" en bas de la fentre ProOrder pendant qu'un systme de trading
est en cours.

La dure d'extension peut tre configure depuis l'onglet "Trading Automatique" de la fentre "Prfrences
de Trading". Il est possible de changer cette dure mme lorsque des systmes sont en cours d'excution :
vos changements seront alors appliqus lors de la prochaine extension.

Nombre d'ordres placs : ProOrder peut interrompre un systme de trading si une quantit maximum
d'ordres placs sur une journe est atteinte. Vous trouverez ce paramtre dans dans l'onglet "Trading
Automatique" de la fentre "Prfrences de Trading". Si le nombre d'ordres en attente cumul au nombre de
positions en cours depuis que le march est ouvert (exemple 00:00 GMT pour le Forex) est suprieur au
paramtre fix, le systme s'interrompra automatiquement. Un ordre en attente est un ordre envoy au
courtier qui n'a ni t excut, rejet, ou annul.
Cela correspondra par exemple chaque instruction de type "Stop", "Trailing Stop" ou "Target", tant que
l'ordre associ n'a ni t excut, rejet, ou annul.
galement, 3 ordres limites distincts ou 3 ordres stop distincts qui n'ont ni t excuts, rejets ou annuls
compteront comme 3 ordres en attente (que les 3 ordres soient au mme niveau de prix ou non).

V 5.1.0 20150422 www.prorealtime.com 44 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Prenons par exemple un paramtre d'arrt automatique fix 8 ordres par jour. Depuis l'ouverture du
march, 5 ordres ont t excuts par un systme donn. Actuellement, ce systme comporte 1 position en
cours et 2 ordres en attente (un ordre "Target" et un ordre "Stop"). Le systme a maintenant besoin
d'envoyer 1 ordre supplmentaire au march : ce 8me ordre ne sera pas envoy car le niveau d'arrt fix
est atteint (5+2+1 = 8). En consquence, le systme sera interrompu, en commenant par la fermeture des
ordres en attente, puis par la clture des positions actives.

Rejet d'un ordre : ProOrder peut interrompre un systme de trading si un trop grand nombre d'ordres de ce
systme ont t rejets. Vous pouvez choisir d'arrter le systme de trading suite au premier rejet, ou dfinir
un nombre maximum de tentatives avant l'arrt. Il n'est pas possible de changer ce paramtre de rejet
d'ordre si un systme est en cours d'excution.

Interaction entre trading manuel et trading automatique


Lorsqu'un systme de trading est en cours d'excution sur une valeur, le passage d'ordres manuel n'y est
plus disponible. Le trading manuel reste cependant possible sur les autres instruments. Un bouton
spcifique apparat alors la place de la barre de passage d'ordres manuel sur linstrument en question,
comme illustr ci-dessous :

Il est possible de cliquer sur ce bouton pour ouvrir la fentre ProOrder et voir le status des systmes de
trading en cours d'excution.

V 5.1.0 20150422 www.prorealtime.com 45 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

Lancer plusieurs systmes de trading sur un mme instrument


Si vous excutez plusieurs systmes de trading sur un mme instrument, votre position nette globale est
dtermine par l'ensemble de vos systmes. Prenons un exemple o vous possdez 2 systmes de trading.
Le premier place un ordre d'achat pour 1 lot tandis que l'autre place un ordre de vente pour 1 lot. Votre
position nette globale sera alors de 0. Seule la position nette globale est affiche dans le cas ou plusieurs
systmes sont en cours sur un mme instrument.
Lorsque que vous affichez la courbe de gains & pertes d'un systme, vous obtenez galement son
histogramme des positions. Contrairement la position nette globale qui cumule l'ensemble des donnes
des systmes de l'instrument, cet histogramme reprsente les positions prises par un seul systme. Les
niveaux de positions affichs peuvent donc tre diffrents, comme l'illustre le graphique ci-dessous.

Exemple :
2 systmes sont en cours d'excution sur un mme instrument : l'un est en position d'achat sur 6 lots d'une
taille de 100 000 chacun. L'autre est en position d'achat sur 2 lots d'une taille de 100 000 galement. La
position nette est donc gale (6+2)*100 000 = +800 000.
Dans cet exemple, on peut voir que la position du systme tudi est de +600 000. La position nette globale
est affiche grce la ligne de position du graphique : +800 000.

V 5.1.0 20150422 www.prorealtime.com 46 / 98


P r o O r d e r - L e Tr a d i n g A u t o m a t i q u e

La position nette de +800 000 apparat galement dans la fentre "Portefeuilles", disponible depuis le menu
"Trading" > "Portefeuilles" :

Lorsque vous excutez plusieurs systmes de trading sur un mme instrument, chaque systme fait tat de
ses propres positions, ordres, trades et gains de faon indpendante. Par consquent, les instructions de
type "LongOnMarket" ou "ShortOnMarket" informe sur l'tat Long ou Short du systme en question.
Votre position nette globale peut diffrer de la position d'un systme donn. La mme remarque s'applique
pour les variables comme CountOfLongShares, CountOfShortShares, CountOfPosition, PositionPrice,
StrategyProfit, TradeIndex, TradePrice et PositionPerf, qui ne concernent qu'un systme donn.

Indicateurs non-utilisables
Les indicateurs suivants ne peuvent pas tre appliqus au trading automatique car leur mthode de calcul
ne permet pas leur utilisation en temps-rel :
ZigZag : les signaux bass sur cet indicateur sont recalculs a posteriori. De ce fait, les signaux donns
en temps rel peuvent tre trs diffrents des signaux donns pendant les backtests.

Note sur les Fuseaux et heures de march personnaliss


Lors de l'envoi d'un systme de trading vers le module ProOrder, le fuseau horaire et les heures de march
personnaliss qui ont t dfinis sur le march auquel l'instrument appartient vont tre associes la
stratgie. Ces paramtres seront appliqus chaque lancement de la straggie.
Pour modifier le fuseau horaire ou les heures de march personnalises d'une stratgie, il est ncessaire de
supprimer cette stratgie de ProOrder, de modifier ces paramtres dans le menu Options/Fuseaux et
plages horaires des graphiques intraday et de renvoyer la stratgie vers ProOrder.

Vous pouvez consulter la section Personnalisation des plages horaires pour connatre les instructions
concernes par le fuseau horaire du graphique ainsi que pour le fonctionnement des heures de march
personnalises.

V 5.1.0 20150422 www.prorealtime.com 47 / 98


An nexe A : Af fi chage des rsultats

Annexe A : Affichage des rsultats


Un systme de trading prsente des rsultats sous 3 formes complmentaires:

Courbe de gains & pertes


La courbe de gains & pertes montre lvolution du capital tout au long de l'excution d'un systme de trading
ou d'un backtest :
La ligne bleue horizontale reprsente le capital initial du systme. Dans le cas du trading automatique,
cette ligne est toujours place 0.
Prenons l'exemple d'un backtest avec capital initial de 10000 et une perte de 2705 : la valeur de la courbe
de gains & pertes aura une valeur de 7295 comme illustr ci-dessous. Dans le cas d'un systme de
trading automatique avec la mme perte, le point de dpart de la courbe serait 0 et la valeur de fin serait
de -2705.

Le remplissage de la courbe de gains & pertes sera de couleur verte si la performance est positive
(le point de comparaison est la ligne du capital initial). Un remplissage rouge indiquera une performance
ngative.
Le trait de la courbe de gains & pertes sera de couleur verte pour indiquer une variation positive par
rapport au niveau prcdent, de couleur rouge pour indiquer une variation ngative.

V 5.1.0 20150422 www.prorealtime.com 48 / 98


An nexe A : Af fi chage des rsultats

Histogramme des positions


L'histogramme des positions vous permet dafficher lvolution des positions prises pendant l'excution du
systme de trading.
Une barre verte indique louverture dune position longue (achat).
Une barre rouge indique louverture dune position courte (short).
Si aucune barre nest affiche, aucune position nest active sur le march.

La succession de plusieurs barres de mme couleur indique que la(les) position(s) sont toujours en cours.
Laxe vertical droite de l'histogramme indique la quantit des positions en cours.
Sur lexemple ci-dessous, nous sommes en position longue d'un lot de 100 000 units sur l'EUR/USD.

V 5.1.0 20150422 www.prorealtime.com 49 / 98


An nexe A : Af fi chage des rsultats

Rapport dtaill
Le rapport dtaill vous permet de visualiser les statistiques de votre systme de trading ainsi que les
informations de chaque position et de chaque ordre :

V 5.1.0 20150422 www.prorealtime.com 50 / 98


An nexe A : Af fi chage des rsultats

Le rapport dtaill se prsente dans une fentre indpendante, compose de trois onglets :
L'onglet Statistiques vous donnera une vision globale des performances du systme de trading (gains ou
pertes, nombre de positions gagnantes etc.) ainsi que des indicateurs d'valuation du risque. Notez que
seules les positions cltures sont prises en compte.

"Gain", dsigne la plus-value ralise au cours du systme de trading :


Profit = Montant du capital final Montant du capital initial
Cette statistique permet dvaluer de faon absolue le potentiel de gains avec le systme dfini (spcifique
la priode dexcution priode du systme).

Note: les frais de courtage dfinis dans la section "Paramtres de courtage" sont intgrs ce calcul.

"%Gain", reprsente le profit ou la perte en pourcentage :


%Gain = 100 x Profit / Montant initial du capital

"Gain brut" : reprsente la somme de tous les gains et "Pertes brut" la somme de toutes les pertes.
"Ratio gains/pertes" est le rapport de ces 2 valeurs.

"Nb de trades" indique le nombre de positions qui ont t ouvertes au cours du systme.

"% de trades gagnants" dsigne le pourcentage de positions gagnantes lissu du systme employ.
Mathmatiquement, cela se dfinit par :
% trades gagnants = (100 x Nombre de trades positions) / Nombre de positions

"Gain moyen" : reprsente le gain moyen par position. Cette information est utile pour dterminer
lefficacit moyenne des ordres passs, notamment lorsque lon ne souhaite pas passer beaucoup
dordres. Elle se dfinit par :
Gain moyen = Gain / Nombre de positions

"Gain moyen des positions gagnantes" donne le gain des positions gagnantes et "Perte moyenne
des positions perdantes" la perte moyenne des positions perdantes.

"Plus gros gain" correspond au gain maximal ralis sur une position donne. "Plus grosse perte"
est la perte maximale sur une position donne. "cart type gains & pertes" est l'cart type des rsultats
de chaque position.

"Max Drawdown" : correspond au maximum des pertes potentielles du systme de trading. On dfinit
le "drawdown" comme l'cart entre un point donn et le point le plus haut qui lui prcde sur la courbe de
gains & pertes :
DD(n)= Max t[0;n] P(t) - P(n)
Le "Max Drawdown" est alors le maximum de cette valeur sur l'ensemble de la priode.
MaxDD(N) = Max n[0:N] ( Maxt[0;n] P(t) - P(n) )

"Max Run-up" : correspond au maximum des gains potentiels du systme de trading. On dfinit le "run-up"
comme l'cart entre un point donn et le point le plus bas qui lui prcde sur la courbe de gains & pertes :
RU(n)= P(n) Min t[0;n] P(t)

Le "Max Run-up" est le maximum de cette valeur sur l'ensemble de la priode.


MaxRU(N) = Maxn[0:N] ( P(n) - Mint[0 ;n]P(t) )

V 5.1.0 20150422 www.prorealtime.com 51 / 98


An nexe A : Af fi chage des rsultats

Exemple :

BARINDEX PROFIT&PERTES DRAWDOWN RUNUP

1 0,00 0,00 0,00


2 15,00 0,00 -15,00
3 10,00 5,00 -10,00
4 0,00 15,00 0,00
5 15,00 0,00 -15,00
6 -10,00 25,00 0,00
7 -20,00 35,00 0,00
8 -5,00 20,00 -15,00
9 -6,00 21,00 -14,00
10 20,00 0,00 -40,00
11 5,00 15,00 -25,00

Max : -35,00 40,00

V 5.1.0 20150422 www.prorealtime.com 52 / 98


An nexe A : Af fi chage des rsultats

"% Exposition max au risque" : L'exposition au risque est le rapport entre la perte maximale possible sur
la position et le capital courant. Le % max est donc le maximum de cette valeur sur la dure du systme de
trading, ramen en pourcentage. Trois formules de calculs sont distinguer selon le type d'instrument :

Actions :
%Exposition max = Max positions (Quantit * prix moyen / capital) * 100

Futures :
%Exposition max = Max positions (Quantit * deposit / capital) * 100

Forex :
%Exposition max = Max positions (Quantit * prix moyen * leverage / capital) * 100
o "leverage" est l'effet de levier, "deposit" est la marge

De mme, "% Exposition moy au risque" est la moyenne du pourcentage d'exposition au risque.

"Frais de courtage" totalise les frais de courtage gnrs par chaque ordre (tels que dfinis dans les
paramtres de courtage) depuis le dbut du systme de trading.

"% de temps dans le march" est le rapport entre les priodes pendant lesquelles des positions ont t
ouvertes et la dure totale d'excution du systme de trading.

Les 2 derniers onglets vous donnent des informations sur tous les ordres passs et les positions ouvertes au
cours du systme de trading :
Dans la "Liste des ordres" vous retrouvez les dtails sur lheure, le sens, la quantit et le prix des
ordres passs. Les ordres sont affichs selon le fuseau horaire du march de l'instrument.
Le "Suivi des positions" vous renseigne sur les positions ouvertes et cltures par le systme de
trading (positions longues ou courtes, dure exprime en nombre de barres, performance absolue et
relative de chaque position, date d'entre et de sortie). Si une position est encore ouverte au moment de la
cration du rapport, elle napparatra pas dans cette liste. Dans le cadre d'un backtest, si vous souhaitez
clturer toutes les positions la fin du backtest, dfinissez spcifiquement une date de fin au lieu de
slectionner "dernire date (temps rel)".

V 5.1.0 20150422 www.prorealtime.com 53 / 98


Ann exe B : Exemples de codes dtaill s

Annexe B : Exemples de codes dtaills

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systme de trading bas sur HeikinAshi


Ce systme gnre un signal d'achat lorsque, en style Heiken-Ashi, une bougie verte apparat la suite
d'une bougie rouge.
Un signal de vente dcouvert est mis si une bougie rouge apparat la suite d'une bougie verte.
Le principe de ce backtest rside dans la reconstruction de la vue Heikin-Ashi, sur laquelle on ne peut
normalement pas appliquer de systmes. Il est donc ncessaire d'appliquer ce code sur un graphique en
style chandeliers.

ONCE PreviousStatus = 0
IF BarIndex = 0 THEN
XClose = TotalPrice
XOpen = (Open + Close) / 2
ELSE
XClose = TotalPrice
XOpen = (XOpen[1] + Xclose[1]) / 2
ENDIF
IF XClose >= XOpen THEN
IF PreviousStatus <> 1 THEN
BUY 1 SHARES AT MARKET
PreviousStatus = 1
ENDIF
ELSE
IF PreviousStatus <> -1 THEN
SELLSHORT 1 SHARES AT MARKET
PreviousStatus = -1
ENDIF
ENDIF

V 5.1.0 20150422 www.prorealtime.com 54 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systme de trading bas sur les Zig Zag


Ce backtest s'appuie sur l'indicateur Zig Zag pour dterminer quelles auraient t les meilleures opportunits
d'achat et de vente. Les rsultats parfois excellents (marchs actions et futures) sont lis au caractre non-
prdictif du Zig Zag. Les signaux donns sont recalculs a posteriori et ne donne donc pas des indications
valides en temps-rel.
L'intrt d'un tel systme est nanmoins de pouvoir talonner la performance d'autres systmes.

// Les priodes du ZigZag peuvent tres optimises si places en tant que variables
myZigZag = ZigZag[10]
c11 = (myZigZag > myZigZag[1])
c12 = (myZigZag < myZigZag[1])
IF c11 AND NOT LONGONMARKET THEN
BUY 1 SHARES AT MARKET
ENDIF
IF c12 AND NOT SHORTONMARKET THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 55 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systme de trading Breakout Range System avec Stop mobile


Il sagit dun systme de type BreakOut, o les supports et rsistances sont dtermins par les plus hauts et
plus bas sur les 2 premiers chandeliers de la journe.
Si le cours croise la hausse une ligne de rsistance et que la moyenne mobile 10 priodes monte, on entre
en position longue.
Une limite profit 1% ainsi qu'un stop de protection au prix du support sont dfinis.
La position est ferme 17h (heure du march) pour ne rester position d'un jour l'autre. Un accs intraday
est ncessaire pour tester ce systme de trading.

DEFPARAM CumulateOrders = False


MM = Average[10](close)
MyTarget = 1
EndTime = 170000
IF INTRADAYBARINDEX = 2 THEN
MyResistance = highest[2](high)
MySupport = lowest[2](low)
ENDIF
REM Entre en Long:
IF MM > MM[1] AND close CROSSES OVER MyResistance THEN
BUY 1 SHARES AT MARKET
ENDIF
REM Sortie en Long:
IF time > EndTime THEN
SELL AT MARKET
ENDIF
SELL AT MySupport STOP
SET TARGET %Profit MyTarget

V 5.1.0 20150422 www.prorealtime.com 56 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systme de trading bas sur le stochastique liss


Ce systme repose sur lindicateur Stochastique Liss appliqu au prix mdian (indicator1) et sur sa
moyenne mobile (indicator2). Lorsque lindicateur est suprieur sa moyenne mobile exponentielle, on
achte, sinon, on vend dcouvert.
On dfinit galement un objectif 1% de profit

DEFPARAM CumulateOrders = False


REM Achat
Indicator1 = SmoothedStochastic[9,9](MedianPrice)
Indicator2 = ExponentialAverage[9](Indicator1)
// Initialisation de la variable
StopLimit = 1
c1 = (Indicator1 >= Indicator2)
REM Achat
IF c1 THEN
BUY 1 SHARES AT MARKET
ENDIF
REM Vente dcouvert
IF NOT c1 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
SET TARGET %PROFIT StopLimit

V 5.1.0 20150422 www.prorealtime.com 57 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Swing Trading, ADX et Moyennes Mobiles


Ce backtest repose sur lindicateur ADX et son positionnement par rapport la valeur 30 depuis au moins
les 5 derniers jours. Lobjectif est de rduire les faux signaux et de minimiser les risques. Il sagit dun
systme de trading qui prsente des nombreuses conditions, ce qui limite mcaniquement le nombre
dopportunits.

DEFPARAM CumulateOrders = False


MyADX12 = ADX[12]
ADXperiods = 5
MyMM20 = Average[20](Close)
IsLow30 = 0

IF lowest[ADXperiods + 1](MyADX12) < 30 THEN


IsLow30 = 1
ENDIF

// ACHAT
// ADX 12 est suprieur 30 depuis au moins 5 10 barres.
Condition1 = NOT IsLow30
// Si la MME 20 jours actuelle se place entre le plus haut et le plus bas de la barre en
cours ET si la MME 20 jours prcdente se situe entre le plus haut et le plus bas de la
barre prcdente
Condition2 = High > MyMM20 AND Low < MyMM20 AND High[1] < MyMM20[1] AND Low[1] <
MyMM20[1]
// Si le plus haut du jour casse le plus haut de la veille
Condition3 = Dhigh(0) > Dhigh(1)
IF Condition1 AND Condition2 AND Condition3 THEN
BUY 1 SHARES AT MARKET
ENDIF
// SHORT
// ADX 12 est suprieur 30 depuis au moins 5 10 barres.
Condition4 = NOT IsLow30
// Si la MME 20 jours actuelle se place entre le plus haut et le plus bas de la barre en
cours ET si la MME 20 jours prcdente se situe entre le plus haut et le plus bas de la
barre prcdente
Condition5 = High > MyMM20 AND Low < MyMM20 AND High[1] > MyMM20[1] AND Low[1] >
MyMM20[1]
// Si le plus bas du jour casse le plus bas de la veille
Condition6 = Dlow(0) < Dlow(1)
IF Condition4 AND Condition5 AND Condition6 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 58 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systme de trading utilisant un compteur de positions


Inverse Fisher Transform appliqu au RSI.
Ce systme se base sur l'indicateur "Inverse Fisher Transform RSI" pour placer des ordres d'achat ou de
vente.
Le systme place un ordre d'achat quand l'Inverse Fisher Transform RSI croise la hausse le seuil 50 et
vend si lindicateur croise la baisse le seuil 80.
Il place un ordre de vente dcouvert quand l'Inverse Fisher Transform RSI croise la baisse le seuil 50 et
rachte quand l'Inverse Fisher Transform RSI croise la hausse le seuil 20.
Ce systme de trading est tester sur des vues 1h pour les futures ou sur des vues journalires pour les
actions.

REM Inverse Fisher Transform appliqu au RSI


REM Paramtres : n = Nombre de barres pour le calcul du RSI
n = 10
Ind = RSI[n](Close)
x = 0.1 * (Ind - 50)
y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)
z = 50 * (y + 1)
myInverseFisherTransformsRSI = z

IF (myInverseFisherTransformsRSI CROSSES OVER 50) THEN


BUY 1 SHARES AT MARKET
ENDIF

IF (myInverseFisherTransformsRSI CROSSES UNDER 80) THEN


SELL AT MARKET
ENDIF

IF (myInverseFisherTransformsRSI CROSSES UNDER 50) THEN


SELLSHORT 1 SHARES AT MARKET
ENDIF

IF (myInverseFisherTransformsRSI CROSSES OVER 20) THEN


EXITSHORT AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 59 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systme de trading utilisant TRADEINDEX "Inside bar"


Lexemple qui suit est un systme cod sur un modle de prix souvent utilis : l'"Inside Bar".
On regarde d'abord si le range du n-2ime chandelier est suprieur au range du n-1ime chandelier. On
vrifie galement que ce n-1ime chandelier est vert (close > open). Dans ce cas on entre long (ordre
dachat).
On regarde d'abord si le range du n-2ime chandelier est infrieur au range du n-1ime chandelier. On
vrifie galement que ce n-1 ime chandelier est rouge (close < open). Dans ce cas on entre short (ordre de
vente dcouvert).
La sortie de position se ralise systmatiquement 3 barres aprs lentre.

DEFPARAM CumulateOrders = False


Condition1 = (High[2] >= High[1] AND Low[2] <= Low[1])
Condition2 = (High[2] <= High[1] AND Low[2] <= Low[1])
Condition3 = (Close[1] > Open[1])
Condition4 = (Close[1] < Open[1])

IF (Condition1 AND Condition3) THEN


BUY 1 Share AT MARKET
ENDIF

IF LONGONMARKET AND (BarIndex - TRADEINDEX) = 3 THEN


SELL 1 share AT MARKET
ENDIF

IF (Condition2 AND Condition4) THEN


SELLSHORT 1 share AT MARKET
ENDIF

IF SHORTONMARKET AND (BarIndex - TRADEINDEX) = 3 THEN


EXITSHORT AT MARKET
ENDIF

V 5.1.0 20150422 www.prorealtime.com 60 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Systmes de trading et Money Management


Les rsultats dun systme peuvent tre optimiss grce au money management.
Ces stratgies de gestion du capital peuvent tre mises en place sous forme de martingales, destines
optimiser lesprance mathmatique dun systme de trading. L'esprance mathmatique correspond au
gain moyen ou perte moyenne sur une srie de nombreux trades. Cela implique de pouvoir au pralable
estimer la probabilit quune opration soit gagnante et le montant gagn ou perdu.
Afin de mettre en uvre une martingale, il peut tre utile de coder des ordres stops, limites profit et stops
dinactivit, ainsi que des sous-systmes permettant de grer dynamiquement la taille des positions.

Stops de protection & Objectifs


Pour plus d'informations sur les stops de protection et les limites profit, reportez-vous aux sections
correspondantes dans ce manuel.

Stops d'inactivit
Le code ci-dessous permet d'intgrer un stop d'inactivit dans votre systme. N'oubliez pas de dfinir les
conditions de votre stop, ici nomm "InactivityStopLong" et "InactivityStopShort". Dans l'exemple suivant, le
stop est dclench aprs 10 barres.

ONCE Count = 10
REM Choix du nombre de barres compter de lentre en position, aprs lequel la position
sera
REM systmatiquement clture...
IF ONMARKET AND (BARINDEX - TRADEINDEX + 1) > Count THEN
IF LONGONMARKET THEN
SELL AT MARKET
ENDIF

IF SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF
ENDIF

V 5.1.0 20150422 www.prorealtime.com 61 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

Pyramidage d'une position


Le pyramidage consiste placer plusieurs ordres successifs de mme sens, en vue de renforcer la taille de
la position. Le pyramidage est ensuite effectif ds lors que plusieurs ordres sont simultanment valids,
lexemple du systme suivant.
Important : Afin de rendre le cumul des positions possible, pensez entrer la commande "DEFPARAM
CumulateOrders=True" en dbut de programme.
"Countofposition" est utilis pour limiter la taille de position maximale du systme 3.

DEFPARAM CumulateOrders = True

REM Ce systme entre long de 1 lorsque le RSI est infrieur 30, si l'on n'est pas dj
en position.
IF NOT ONMARKET AND RSI[14](Close) < 30 THEN
BUY 1 SHARES AT MARKET
ENDIF

REM Si l'on a ouvert une position longue et que le cours de clture prcdent < au cours
d'ouverture actuel, alors on entre long de 1 lot chaque fois que les conditions qui
prcdent sont valides, dans la limite de 3 lots au total.
IF LONGONMARKET AND Open > Close[1] AND COUNTOFPOSITION < 3 THEN
BUY 1 SHARES AT MARKET
ENDIF

REM Lorsque le prix croise la baisse une moyenne mobile simple, toute la position est
ferme.
IF Close Crosses Under Average[14](Close) THEN
SELL AT MARKET
ENDIF

Grce la matrise des instructions prcdentes, nous pouvons maintenant nous intresser aux martingales.
Ces techniques peuvent tre ajoutes n'importe quel systme.

V 5.1.0 20150422 www.prorealtime.com 62 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

La martingale classique
La martingale classique consiste doubler sa position lorsque lon a fait face une perte, de manire se
rembourser la fois suivante et gagner une fois la position de dpart rcupre. Linconvnient majeur dune
telle gestion du capital est quune srie de pertes conscutives rend de plus en plus difficile voire impossible
de continuer doubler sa position. En commenant avec 1000 par exemple, si lon perd cinq fois
successives, il faudra disposer de 1000 x 32 soit 32000 pour continuer le systme de trading.

En consquence, les systmes drivs de la martingale sont gnralement plus adapts au trading dactions
que le trading des futures ou du Forex : les mises de dparts et les enjeux sont plus importants sur ces
marchs.

Il est ncessaire d'intgrer le code suivant avec vos conditions d'entre et de sortie.

//***********Code insrer au dbut du systme**********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
REM On commence avec une position de 1
//*********************//
//*****Code insrer juste aprs les instructions liquidant une position*****//
ExitIndex = BarIndex

//***********Code insrer en fin de systme**********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize * 2
REM Si le dernier trade tait perdant, alors on double la taille de la position
ELSIF PositionPerf(1) > 0 THEN
OrderSize = 1
REM Si le dernier trade tait gagnant, alors on revient une position de taille 1
ENDIF
ENDIF
//*********************//
REM La taille de la position doit tre dtermine par la variable OrderSize pour
l'intgralit du code

V 5.1.0 20150422 www.prorealtime.com 63 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

La grande martingale
La grande martingale est semblable la martingale classique, sauf que lon ne double pas seulement sa
position chaque perte, on ajoute une unit supplmentaire.

Cette martingale est plus dangereuse que la martingale classique, en cas de pertes successives, mais elle
permet daugmenter significativement les gains dans le cas contraire.

Il est ncessaire d'intgrer vos conditions d'entre et de sortie au code suivant :

//***********Code insrer au dbut du systme**********//


ONCE OrderSize = 1 // On commence avec une position de 1
ONCE ExitIndex = -2
//*********************//
//*****Code insrer juste aprs les instructions liquidant une position*****//
ExitIndex = BarIndex

//***********Code insrer en fin de systme**********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize * 2 + 1 // Si le dernier trade tait perdant, alors on double
la taille de la position et on ajoute une unit.
ELSIF PositionPerf(1) >= 0 THEN
OrderSize = 1 // Si le dernier trade tait gagnant, alors on revient une
position de taille 1
ENDIF
ENDIF
//*********************//
REM La taille de la position doit tre dtermine par la variable OrderSize pour
l'intgralit du code

V 5.1.0 20150422 www.prorealtime.com 64 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

La Piquemouche
La Piquemouche est une autre variante de la martingale classique. En cas de perte, on augmente la taille de
la position par 1 si on a moins de 3 pertes conscutives. Si on a plus de 3 pertes conscutives, on double la
taille de la position. Un gain rinitialise la position 1 unit. Ce systme de gestion des positions est moins
dangereux que les deux prcdents, car on naugmente pas la taille de la position de manire exponentielle
avant 3 pertes successives. Il est ncessaire d'intgrer vos conditions d'entre et de sortie au code suivant :
//***********Code insrer au dbut du systme**********//
ONCE ExitIndex = -2
ONCE OrderSize = 1
// On commence avec une position de 1
ONCE BadTrades = 0
// On initialise le compteur du nombre de trades perdants successifs
//*********************//
//*****Code insrer juste aprs les instructions liquidant une position*****//
ExitIndex = BarIndex
//***********Code insrer en fin de systme**********//
IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
BadTrades = BadTrades + 1
IF BadTrades < 3 THEN
// Si le dernier trade tait perdant et que lon est moins de 3 pertes
// successives, alors on incrmente dune unit la taille de la
prochaine position.
OrderSize = OrderSize + 1
ELSIF BadTrades MOD 3 = 0 THEN
// Si le dernier trade tait perdant et que lon est plus de 3 pertes
// successives, on double la taille de la prochaine position.
OrderSize = OrderSize * 2
ENDIF
ELSIF PositionPerf(1) >= 0 THEN
// Si le dernier trade tait gagnant, alors on revient une position de taille 1.
OrderSize = 1
BadTrades = 0
ENDIF
ENDIF
//*********************//
REM La taille de la position doit tre dtermine par la variable OrderSize pour
l'intgralit du code

V 5.1.0 20150422 www.prorealtime.com 65 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

La pyramide d'Alembert
Cette martingale clbre est luvre dAlembert, mathmaticien franais du XVIIIe sicle. En cas de perte, la
position est augmente dune unit, et en cas de gain, elle est diminue dune unit.

Cette technique de gestion de la taille des positions considre que :


des gains successifs diminuent la probabilit de gagner encore ensuite
une perte augmente la chance de gagner ensuite

Il est ncessaire d'intgrer vos conditions d'entre et de sortie au code suivant :

//***********Code insrer au dbut du systme**********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
// On commence avec une position de 1
//*********************//
//*****Code insrer juste aprs les instructions liquidant une position*****//
ExitIndex = BarIndex

//***********Code insrer en fin de systme**********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
OrderSize = OrderSize + 1
ELSIF PositionPerf(1) >= 0 THEN
OrderSize = MAX(OrderSize -1, 1)
ENDIF
ENDIF
//*********************//
REM La taille de la position doit tre dtermine par la variable OrderSize pour
l'intgralit du code

V 5.1.0 20150422 www.prorealtime.com 66 / 98


Ann exe B : Exemples de codes dtaill s

Avertissement : Les exemples prsents dans ce manuel sont but pdagogique. Pour votre
propre trading, vous tes entirement libre dans le choix de vos critres. Toutes les informations
prsentes sont caractre "gnral" et ne sauraient, en aucun cas, reprsenter de quelconques
informations ou conseils personnaliss ou une quelconque incitation acheter ou vendre des
instruments financiers. Les performances passes ne prsagent pas des futurs rsultats et ne sont
pas constantes dans le temps. Tout systme de trading peut vous exposer un risque de perte
suprieur votre investissement initial.

La contre d'Alembert
Il sagit du systme antagoniste la pyramide ponyme, puis-quici on diminue dune unit la position en cas
de perte et on laugmente dune unit en cas de gain.

Cette technique de gestion de la taille des positions considre que :


des pertes successives augmentent la probabilit de perdre encore ensuite
des gains successives augmentent la probabilit de gagner encore ensuite

Il est ncessaire d'intgrer vos conditions d'entre et de sortie au code suivant :

//***********Code insrer au dbut du systme**********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
// On commence avec une position de 1
//*********************//
//*****Code insrer juste aprs les instructions liquidant une position*****//
ExitIndex = BarIndex

//***********Code insrer en fin de systme**********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
OrderSize = MAX(OrderSize -1, 1)
ELSIF PositionPerf(1) >= 0 THEN
OrderSize = OrderSize + 1
ENDIF
ENDIF

//*********************//
REM La taille de la position doit tre dtermine par la variable OrderSize pour
l'intgralit du code

V 5.1.0 20150422 www.prorealtime.com 67 / 98


An nexe C : exemple dtail l d'un syst me de trading

Annexe C : exemple dtaill d'un systme de trading

Lexemple de systme de trading dcrit ci-aprs vous est communiqu titre dinformation
uniquement. Il est destin vous prsenter les fonctionnalits du service ProOrder. Le but de cette
prsentation est donc exclusivement pdagogique. En aucun cas, cette prsentation, de nature
simplement informative, ne saurait contenir, recommander ou suggrer, de quelque manire que ce
soit, une stratgie dinvestissement de la part de ProRealTime. Les performances passes ne
prsagent pas des futurs rsultats et ne sont pas constantes dans le temps. Tout systme de
trading peut vous exposer un risque de perte suprieur votre investissement initial.

Cette annexe prsente un exemple dtaill d'un systme de trading de type "Breakout" (ou cassure) bas sur
l'unit de temps 15 minutes et appliqu la valeur mini-contrat CFD France 40 (1 par point) et analyse sa
performance sur ces dernires annes1 l'aide du module de simulation ProBacktest.

Performance brute1 du systme de trading automatique "Breakout ProOrder" simul avec


ProBackest, compar l'indice CAC 401 (performance brute) sur 8 ans et demi.

Performance Capital de dpart : 2 000 (avril 2006)


+21,7%
annualise brute1 Capital de fin : 10 899 (dcembre 2014)

+8 899
Gain brut1 sur 8,5 ans :
(+ 444,9%)
2006 2007 2008 2009 2010 2011 2012 2013 2014
Breakout ProOrder +63.6%2 +31.5% +23.5% +22.5% +18.2% +18.9% +5.9% +0.2% +12.4%2
Systme de trading automatique

Indice CAC 401,3 +5,7%2 +1.3% -42,7% +22.3% -3.3% -17% +15.2% +18% -4.4%2
1
Les performances et gains bruts sont calculs hors frais de courtage 2 2006 et 2014 : annes partielles.
(commissions, redevances ou autres charges), ces frais tant de 3 Donnes du CAC 40 fournies par
nature diminuer ces performances. Euronext Paris.

V 5.1.0 20150422 www.prorealtime.com 68 / 98


An nexe C : exemple dtail l d'un syst me de trading

Prsentation du systme de trading automatique "Breakout ProOrder"


Un systme "Breakout" classique identifie d'abord le maximum et le minimum atteints par le prix sur un laps
de temps donn (dans notre exemple, les 30 premires minutes de cotation aprs 9h), puis place un ordre
d'achat sur le niveau suprieur et un ordre de vente sur le niveau infrieur.

Le systme "Breakout ProOrder prsent ci-dessous est une version modifie du "Breakout" classique.

Cet exemple de systme Breakout ProOrder prend au maximum 2 positions par jour (parfois une seule
voire pas du tout) entre 9h30 et 19h45. Dans tous les cas, ce systme n'est plus en position aprs 19h45 de
sorte qu'il est possible de connatre le gain ou la perte ventuelle de la journe partir de ce moment.

Pour aller plus loin :


Rsultats du systme de trading (historique de 2006 2014)
Description des ides du systme de trading

Le code du systme de trading


Comment tester un code / systme de trading

Adaptation du systme d'autres instruments


Exemples de transactions relles
Indicateur pour suivre le systme de trading

V 5.1.0 20150422 www.prorealtime.com 69 / 98


An nexe C : exemple dtail l d'un syst me de trading

Rsultats du systme de trading (historique de 2006 2014)


Avertissement relatif aux rsultats : Les chiffres prsents ont trait aux annes coules. Les performances
passes ne sont pas un indicateur fiable des performances futures et ne sont pas constantes dans le temps.
L'image ci-dessous montre les rsultats du systme appliqu la valeur mini-contrat CFD France 40 sur les
donnes du pass, allant du 26 avril 2006 jusqu'au 12 dcembre 2014, soit 2221 jours de bourse simuls
avec notre module ProBacktest.

Comme indiqu ci-dessus, sur les 1592 positions prises, la moyenne des gains en cas de position gagnante
est de 71,05 sur la priode (plus gros gain de 421) tandis que la moyenne des pertes en cas de position
perdante est de 32,5 sur la mme priode (plus grosse perte de 55). Dans notre exemple, le nombre de
positions gagnantes (585) est infrieur au nombre de positions perdantes (1005) et le montant total des
gains est suprieur au montant total des pertes.
En estimant les frais provenant du spread sur le mini-contrat CFD France 40 1,31 en moyenne par ordre,
les frais s'lveraient 4171 sur toute la priode, ce qui donnerait :
une performance annualise de 15% nette de frais avec un capital de 2 000
ou une performance annualise de 22,4% nette de frais avec un capital initial de 1 000.

V 5.1.0 20150422 www.prorealtime.com 70 / 98


An nexe C : exemple dtail l d'un syst me de trading

A noter :
1) Dans lexemple prsent, nous avons retenu pour cette simulation un capital initial de 2 000, soit plus
de deux fois la perte maximale constate sur toute la priode depuis 2006, dans le cas o nous aurions
dmarr le systme au moment le plus dfavorable (perte maximale historique de 880). Une simulation
partir dun montant moins lev (par exemple, 100) aurait galement pu tre envisageable ds lors que
la marge actuelle demande pour le mini-contrat CFD France 40 est de 13 en capital, et quil est pris
pour hypothse que, depuis le 28 avril 2006, jour de la premire prise de position dans cette simulation, le
systme perdrait environ 50 et ensuite monterait rgulirement en capital.

2) Dans lexemple prsent, la taille de position n'volue pas alors quil aurait t thoriquement
envisageable, que tous les 2 000 de plus-values ventuellement obtenues, soient ajouts 2 mini-contrats
supplmentaires chaque nouvelle position augmentant ainsi exponentiellement la performance mais
galement le risque. En fait, dbuter avec 2 000 de capital et des positions de 2 mini-contrats (mme si la
marge demande par le courtier n'est que de 26 en capital) reprsente un mme risque de pourcentage de
pertes potentielles que dbuter avec 4 000 de capital et des positions de 4 mini-contrats par exemple.

3) Un CFD est un contrat portant sur la diffrence de cours d'un actif entre le moment o un investisseur
ouvre une position et le moment o il la clture. Les CFD sont des produits effet de levier. Cela signifie
que linvestisseur immobilise seulement une partie de la valeur totale de son exposition sur le march. Les
CFD permettent d'augmenter significativement le rendement d'un investissement, mais les pertes
potentielles peuvent galement excder le dpt initial. Les CFD sont destins une clientle avise
pouvant apprcier le niveau de risque encouru et ayant les moyens financiers de supporter un tel risque.

Description des ides du systme de trading

Ide de dpart : le Breakout 30 minutes


Le Breakout classique sur 30 minutes identifie le plus haut et le plus bas atteints par la valeur du mini-contrat
CFD France 40 sur les trente premires minutes de cotations significatives de la journe soit entre 9h00 et
9h30 pour cette valeur (cette priode est reprsente par deux chandeliers de 15 minutes chacun dans les
schmas ci-dessous) et dfinit ces niveaux comme niveau suprieur et niveau infrieur.

Ensuite, un ordre stop d'achat est plac sur le niveau suprieur et un ordre stop de vente est plac sur le
niveau infrieur comme indiqu dans le schma de gauche ci-dessous :
Si le niveau suprieur est touch en premier par cette valeur, une position l'achat sera prise comme
indiqu dans le schma de droite ci-dessous.
Si le niveau infrieur est touch en premier par cette valeur, une position la vente sera prise.

Visualisation de l'ordre stop d'achat en vert et Visualisation de la position acheteuse dans


de l'ordre stop de vente en rouge, une fois les l'exemple o la valeur a d'abord atteint le niveau
niveaux suprieurs et infrieurs dfinis. suprieur, ce qui ouvre une position l'achat.
A noter :
Le systme de trading n'utilise pas d'objectif de gains pour clturer une position. Toutefois, toute position
ventuellement encore ouverte 19h45 est clture pour viter le risque d'exposition la nuit.

V 5.1.0 20150422 www.prorealtime.com 71 / 98


An nexe C : exemple dtail l d'un syst me de trading

2me ide : deux positions seront prises par jour au maximum


Dans notre exemple, nous prenons au maximum deux positions par jour (une l'achat et une la vente).
Lorsqu'un des deux niveaux est touch en premier, une position est prise et le niveau oppos devient alors
un stop de protection qui inverse la position s'il est touch par la suite.

Examinons trois des scnarios qui auraient pu se drouler dans le cas o une position l'achat
aurait t prise en premier :

Scnario 1 :
1. Une position d'achat +2 est prise
2. La valeur volue toute la journe au-dessus du niveau suprieur
3. La position est clture 19h45 avec un gain

Scnario 2 : Scnario 3 :
1. Une position d'achat +2 est prise 1. Une position d'achat +2 est prise

2. La valeur baisse jusqu'au niveau infrieur. 2. La valeur baisse jusqu'au niveau infrieur.

3. Un stop de protection coupe la position avec 3. Un stop de protection coupe la position avec une
une perte et une nouvelle position cette fois-ci de perte et une nouvelle position de vente -2 est prise
vente -2 est prise. La position de dpart est donc (position inverse).
inverse.
4. La valeur remonte nouveau jusqu'au niveau
4. La valeur poursuit sa baisse et cette deuxime suprieur. La deuxime position vendeuse est alors
position de vente est clture 19h45 avec un clture par un stop de protection avec une perte
gain. (sans inverser cette fois-ci la position).

Tous les scnarios ci-dessus sont galement envisageables dans le sens inverse, lorsqu'une position de
vente est d'abord prise en premier.

V 5.1.0 20150422 www.prorealtime.com 72 / 98


An nexe C : exemple dtail l d'un syst me de trading

3me ide : limiter le risque en dfinissant un cart maximal entre les deux niveaux
Dans notre exemple de code, si plus de 32,5 points sparent le niveau suprieur du niveau infrieur, le
systme de trading ne prendra pas de position sur la journe.
Cette condition a t introduite pour tenter de limiter directement le risque, car comme vu dans les scnarios
prcdents, le systme de trading peut perdre thoriquement au maximum deux fois la distance entre le
niveau infrieur et le niveau suprieur.

L'cart maximal est un paramtre dans le code du systme qui peut tre ajust en fonction du niveau de
risque souhait par chaque investisseur.
Avec une amplitude maximale de 32,5 points, la perte maximale thorique du systme de trading est de
130 par jour (2 fois l'amplitude x 32,5 x 2 positions).

A noter :

1) La perte maximale thorique indique ci-dessus est base sur des excutions d'ordres aux prix des
stops calculs par le systme. Dans certains cas, le prix d'excution rel peut-tre diffrent du prix du stop
demand.

2) Si les bornes de cassures hautes et basses entre 9h et 9h30 sont franchies plusieurs fois par jour entre
9h30 et 19h45 (exemple du scnario 3 le plus dfavorable), et ceci tous les jours partir d'aujourd'hui, les
rsultats du systme sont alors ngatifs jour aprs jour sur cette priode et le capital initial finirait par tre
perdu.

3) Le systme de trading peut ventuellement placer une 3 me position dans une mme journe si l'ordre
d'achat et l'ordre de vente sont tous les deux franchis dans la mme priode de 15 minutes aprs avoir
dfini ces deux niveaux.

4) Notre module de trading ProOrder permet facilement de simuler le systme avec plusieurs valeurs
diffrentes d'cart maximal. Cette optimisation de variable nous montre que la performance du systme
aurait pu tre meilleure sur la priode avec une valeur plus grande de l'cart maximal mais nous aurions
alors couru un risque de perte par opration plus important car les ordres de protection auraient t plus
loigns des ordres d'entre en position.

V 5.1.0 20150422 www.prorealtime.com 73 / 98


An nexe C : exemple dtail l d'un syst me de trading

4me ide : augmenter les chances d'excution favorable


Dans notre exemple, nous sommes partis du postulat que les niveaux suprieurs et infrieurs sont des
zones de support et rsistance importants sur lesquels de nombreux investisseurs peuvent avoir plac des
ordres. Cela se traduit souvent, lorsque le prix casse un plus haut ou un plus bas, par une acclration plus
ou moins forte des prix dans le sens de la cassure sur quelques secondes.
Pour profiter de ce phnomne ventuel d'amplification de la tendance juste aprs la cassure et augmenter
ainsi les chances que nos ordres soient favorablement excuts, nous avons paramtr le systme de
manire ce qu'il utilise uniquement des ordres stops placs 2,5 points en dessous du niveau suprieur et
2,5 points au-dessus du niveau infrieur, comme indiqu ci-dessous. Ce paramtre de 2,5 appel
"DistanceOrdre" dans le code du systme peut tre modifi en fonction du choix de chaque investisseur.

A noter :

1) Cette condition rduit de 2 x 2,5 points la distance entre l'ordre d'achat et l'ordre de vente et donc le
risque maximal du systme car, dans notre exemple, 27,5 points sparent finalement ces 2 ordres. La
nouvelle perte maximale thorique dans le cadre du systme est donc de 110 par jour (2 fois l'amplitude
x 27,5 x 2 positions). Cela est arriv un seul jour, le 11 mai 2010 sur les 2221 jours de l'chantillon de la
simulation ProBacktest.

2) Dans le cas o de nombreux autres investisseurs se positionneraient aux seuils d'achat et de vente
dans le mme sens que le systme de trading, il est possible de modifier le paramtre "DistanceOrdre" (
3 ou 3,5 ou 4 ou plus) pour profiter de l'acclration qui pourrait suivre aprs lexcution de son propre
ordre.

V 5.1.0 20150422 www.prorealtime.com 74 / 98


An nexe C : exemple dtail l d'un syst me de trading

5me ide : intervenir uniquement sur les breakouts (ou cassures) claires pour viter les
faux signaux

Cas 1 : valeur trop proche du niveau suprieur ou du niveau infrieur 9h30


Dans notre exemple nous avons fait en sorte que le systme ne passe pas dordre lorsque le cours de notre
valeur de rfrence tait trop proche du niveau suprieur ou infrieur au terme de la seconde priode de 15
minutes.
Dans un tel cas de figure, le systme attend le terme dune priode de 15 minutes supplmentaires.

Si la fin de la nouvelle priode de 15 minutes (soit 9h45), le cours de la valeur est toujours trop proche des
niveaux, le systme attend encore 15 minutes supplmentaires, et ainsi de suite jusqu' ce que les niveaux
puissent tre dfinis. Dans tous les cas, pour un jour donn, si l'cart maximal de 32,5 points est dpass, le
systme ne prend pas de position ce jour-l.
Ce paramtre d'loignement des niveaux suprieur et infrieur, appel "PourcentageMin" dans l'exemple de
code du systme, est ici dfini 35% mais il peut-tre modifi en fonction du choix de chaque investisseur.

Dans le schma ci-contre, le prix de clture de


chaque priode est trop proche du niveau infrieur, ce
jusqu'au chandelier de 10h45.

Le niveau infrieur a donc t baiss jusqu' la clture


du chandelier de 10h45 11h00.

Cependant ce moment-l, la distance entre le


niveau suprieur et le niveau infrieur tant de plus
de 32,5 points, notre exemple de systme ne prendra
pas de position ce jour-l.

V 5.1.0 20150422 www.prorealtime.com 75 / 98


An nexe C : exemple dtail l d'un syst me de trading

Cas 2 : cart entre les niveaux suprieur et infrieur trop faible


Dans notre exemple, le systme vite galement les situations dans lesquelles l'cart entre les niveaux
suprieur et infrieur est trop faible (le breakout pourrait alors tre considr comme non significatif). Le
systme mesure donc la distance entre l'ordre d'achat et l'ordre de vente : si cette distance est infrieure
11,5 points (paramtre appel " AmplitudeMin" et modifiable dans le code), le systme ne prend pas de
position sur la journe.

6me ide : ne pas prendre de position s'il ne reste pas suffisamment de temps
Etant donn que dans notre exemple de code, nous ne pouvons tre en position aprs 19h45, nous avons
paramtr l'exemple de systme de telle sorte quil ne prenne pas de nouvelle position aprs 17h.

De mme, lorsqu'une journe de trading est raccourcie cause d'un jour fri (Nol ou St-Sylvestre), le
systme ne prend pas de position.

Nous pouvons galement personnaliser ce paramtrage dans le code de la stratgie pour modifier l'heure
partir de laquelle les signaux sont ignors par le systme.

V 5.1.0 20150422 www.prorealtime.com 76 / 98


An nexe C : exemple dtail l d'un syst me de trading

Lexemple de systme de trading dcrit ci-aprs vous est communiqu titre dinformation
uniquement. Il est destin vous prsenter les fonctionnalits du service ProOrder. Le but de cette
prsentation est donc exclusivement pdagogique. En aucun cas, cette prsentation, de nature
simplement informative, ne saurait contenir, recommander ou suggrer, de quelque manire que ce
soit, une stratgie dinvestissement de la part de ProRealTime. Les performances passes ne
prsagent pas des futurs rsultats et ne sont pas constantes dans le temps. Tout systme de
trading peut vous exposer un risque de perte suprieur votre investissement initial.

Profitez d'une assistance la programmation via notre formulaire ddi.

Code du systme de trading "Breakout ProOrder"

// On ne charge pas de donnes avant le dmarrage du systme.


// Ainsi, le premier jour, si le systme est lance dans l'aprs midi,
// il attendra le lendemain pour ventuellement dfinir les ordres d'achat et de vente.
DEFPARAM PreLoadBars = 0
// La position est clture 19h45, heure franaise
DEFPARAM FlatAfter = 194500
// Aucune nouvelle position prise aprs le chandelier qui clture 17h
HeureLimite = 170000
// L'analyse du march commence avec le chandelier 15 minutes qui clture 9h15
HeureDebut = 091500
// Les journes du 24 et 31 dcembre sont exclues car la bourse ferme avant 19h45
IF Month = 12 AND (Day = 24 OR Day = 31) THEN
JourTrading = 0
ELSE
JourTrading = 1
ENDIF

// Les variables qui peuvent tre adaptes selon ses prfrences


TaillePosition = 2
AmplitudeMax = 32.5
AmplitudeMin = 11.5
DistanceOrdre = 2.5
PourcentageMin = 35

// On initialise cette variable une seule fois au dmarrage du systme


ONCE DebutJourneeTrading = -1
// Les variables qui peuvent voluer en journe sont initialises
// la premire barre de chaque nouvelle journe de bourse
IF (Time <= HeureDebut AND DebutJourneeTrading <> 0) OR IntradayBarIndex = 0 THEN
SeuilAchat = 0
SeuilVente = 0
PositionAchat = 0
PositionVente = 0
DebutJourneeTrading = 0
ELSIF Time >= HeureDebut AND DebutJourneeTrading = 0 AND JourTrading = 1 THEN
// On stocke l'indice de la premire barre de la journe de bourse
IndexDebutJournee = IntradayBarIndex
DebutJourneeTrading = 1

V 5.1.0 20150422 www.prorealtime.com 77 / 98


An nexe C : exemple dtail l d'un syst me de trading

ELSIF DebutJourneeTrading = 1 AND Time <= HeureLimite THEN


// Pour chaque jour de bourse, nous dterminons toutes les 15 minutes
// la valeur la plus haute et la plus basse de l'instrument depuis HeureDebut
// tant que les seuils d'achat et de vente ne sont pas dfinis
IF SeuilAchat = 0 OR SeuilVente = 0 THEN
NiveauSuperieur = Highest[IntradayBarIndex - IndexDebutJournee + 1](High)
NiveauInferieur = Lowest [IntradayBarIndex - IndexDebutJournee + 1](Low)
// Calcul de l'cart entre la valeur la plus haute
// et la plus basse de l'instrument depuis HeureDebut
EcartJour = NiveauSuperieur - NiveauInferieur
// Calcul de l'cart minimal souhait pour considrer une cassure par les prix
// de la valeur la plus haute ou la plus basse comme une cassure significative
EcartMin = EcartJour * PourcentageMin / 100
// Calcul des seuils d'achat et de vente pour la journe si les conditions sont remplies
IF EcartJour <= AmplitudeMax THEN
IF SeuilVente = 0 AND (Close - NiveauInferieur) >= EcartMin THEN
SeuilVente = NiveauInferieur + DistanceOrdre
ENDIF
IF SeuilAchat = 0 AND (NiveauSuperieur - Close) >= EcartMin THEN
SeuilAchat = NiveauSuperieur - DistanceOrdre
ENDIF
ENDIF
ENDIF
// Cration des ordres d'achat et de vente dcouvert pour la journe
// si les conditions sont remplies
IF SeuilVente > 0 AND SeuilAchat > 0 AND (SeuilAchat - SeuilVente) >= AmplitudeMin THEN
IF PositionAchat = 0 THEN
IF LongOnMarket THEN
PositionAchat = 1
ELSE
BUY TaillePosition CONTRACT AT SeuilAchat STOP
ENDIF
ENDIF
IF PositionVente = 0 THEN
IF ShortOnMarket THEN
PositionVente = 1
ELSE
SELLSHORT TaillePosition CONTRACT AT SeuilVente STOP
ENDIF
ENDIF
ENDIF
ENDIF

// Dfinition des conditions de sortie du march lorsqu'une position d'achat


// ou de vente dcouvert est prise
IF LongOnMarket AND ((Time <= HeureLimite AND PositionVente = 1) OR Time > HeureLimite) THEN
SELL AT SeuilVente STOP
ELSIF ShortOnMarket AND ((Time <= HeureLimite AND PositionAchat = 1) OR Time > HeureLimite) THEN
EXITSHORT AT SeuilAchat STOP
ENDIF
// Dfinition d'un risque maximal de pertes par position
// en cas d'volution dfavorable du prix de l'instrument
SET STOP PLOSS AmplitudeMax

V 5.1.0 20150422 www.prorealtime.com 78 / 98


An nexe C : exemple dtail l d'un syst me de trading

Comment tester un code / systme de trading

Mode portefeuille virtuel (PaperTrading)

Si vous avez un compte sur www.ProRealTime.com, vous pouvez excuter vos systmes de trading sur un
portefeuille virtuel PaperTrading.

Le mode PaperTrading vous permet donc d'prouver votre systme de trading jour aprs jour, en conditions
relles de march, sans risquer de capital.

Il vous permettra de voir en temps rel les prises de positions de vos systmes de trading, et aussi de tester
vos propres ractions face au trading automatique. Notez que vous pouvez rinitialiser la valeur de votre
portefeuille PaperTrading autant de fois que vous le souhaitez pour recommencer une nouvelle simulation.

Mode trading rel

ProOrder AutoTrading est galement disponible en mode rel via l'offre de courtage ProRealTime CFD.

En savoir plus sur ProRealTime CFD

Avertissement : Si vous mettez en uvre un systme de trading au moyen du service ProOrder en


mode trading rel, ce service enverra des signaux de manire automatique, selon les paramtres
que vous avez dtermins, en vue de lexcution des ordres correspondants sans quaucune
validation individuelle de chaque ordre de votre part ne soit requise. Votre systme sera excut
automatiquement mme lorsque votre ordinateur sera teint. Il est de votre responsabilit de vous
assurer que vous avez paramtr votre systme de telle sorte quil ne conduise pas la ralisation
de pertes au-del dun montant que vous tes prt accepter.
En tout tat de cause, ProRealTime ne sera responsable des ventuelles pertes subies suite
lexcution depuis vos systmes de trading automatique.
Nous vous rappelons que, en raison de leur effet de levier, les CFD peuvent vous exposer des
risques de pertes suprieures l'investissement initial. Ces produits sont destins une clientle
avise pouvant apprcier le niveau de risque encouru et ayant les moyens financiers de supporter un
tel risque.

V 5.1.0 20150422 www.prorealtime.com 79 / 98


An nexe C : exemple dtail l d'un syst me de trading

Adaptation du systme d'autres instruments


Pour adapter cet exemple de systme de trading d'autres instruments, il est entre autres possible de
modifier les paramtres suivants :
Heure de dbut et de fin d'intervention pour chaque journe :
HeureDebut, HeureLimite et FlatAfter
Ces heures doivent tre l'intrieur de la journe de cotation de la valeur si vous ne souhaitez pas tre en
position au moment de la fermeture ventuelle du march.
Ecart maximal entre le niveau suprieur et le niveau infrieur ( AmplitudeMax)
Distance entre les niveaux et les ordres stops placer (DistanceOrdre)
Filtres pour viter les faux signaux (PourcentageMin et AmplitudeMin)

Exemples d'adaptation des paramtres aux caractristiques d'autres instruments avec leur courbe gain/perte
depuis 2006:

1) mini-contrat CFD Allemagne 30 (5 le point) avec un capital de dpart de 10 000 et U.T. 15 minutes

TaillePosition = 1
AmplitudeMax = 54
AmplitudeMin = 20
DistanceOrdre = 2.5
PourcentageMin = 15

2) mini-contrat CFD EU Stocks 50 (2 le point) avec un capital de dpart de 2 000 et U.T. 15 minutes

TaillePosition = 1
AmplitudeMax = 40
AmplitudeMin = 11
DistanceOrdre = 1.5
PourcentageMin = 25

V 5.1.0 20150422 www.prorealtime.com 80 / 98


An nexe C : exemple dtail l d'un syst me de trading

Exemples de transactions relles


Les positions ci-dessous ont t prises par le systme prcdemment dcrit sur un compte rel
ProRealTime CFD entre le 17 octobre et le 27 novembre 2014, en utilisant des positions de quantit 2 sur le
mini-contrat CFD France 40 (1 par point).

27 octobre 2014 : 1 position la vente (vente dcouvert puis rachat)


Prise de position : vente de 2 mini-contrats CFD France 40 09h31 4146.5 points.
Sortie de position : 19h45 4102.9 points
Gain net de 87,2 frais de courtage inclus (43,6 points x 2 contrats)

14 novembre 2014 : 1 position la vente puis 1 position l'achat


Prise de la position 1 : vente de 2 mini-contrats CFD France 40 09h46 4194.6 points
Sortie de position 1 et prise de la position 2: achat de 4 contrats a 14h10 a 4207.6 points
Sortie de position 2 : vente de 2 contrats 14h44 4194.6 points
Perte nette de 52 frais de courtage des 2 positions inclus (13 points x 2 contrats x 2 positions)

V 5.1.0 20150422 www.prorealtime.com 81 / 98


An nexe C : exemple dtail l d'un syst me de trading

18 novembre 2014 : 1 position l'achat (ordre d'achat puis de vente)


Prise de position : achat de 2 mini-contrats CFD France 40 10h07 4243 points.
Sortie de position : 19h45 4268.3 points
Gain net de 50,6 frais de courtage inclus (25,3 points x 2 contrats)

V 5.1.0 20150422 www.prorealtime.com 82 / 98


An nexe C : exemple dtail l d'un syst me de trading

Lexemple de systme de trading dcrit ci-aprs vous est communiqu titre dinformation
uniquement. Il est destin vous prsenter les fonctionnalits du service ProOrder. Le but de cette
prsentation est donc exclusivement pdagogique. En aucun cas, cette prsentation, de nature
simplement informative, ne saurait contenir, recommander ou suggrer, de quelque manire que ce
soit, une stratgie dinvestissement de la part de ProRealTime. Les performances passes ne
prsagent pas des futurs rsultats et ne sont pas constantes dans le temps. Tout systme de
trading peut vous exposer un risque de perte suprieur votre investissement initial.

Indicateur pour suivre le systme de trading


Pour suivre les positions prises par l'exemple de systme "Breakout ProOrder" jour aprs jour, l'indicateur ci-
dessous peut-tre utile.

Indicateur "Breakout ProOrder"


Cet indicateur qui s'ajoute sur le graphique du prix de la valeur affiche :
Les niveaux suprieurs et infrieurs en noir
Les niveaux sur lesquels pourraient tre placs les ordres d'achat en vert et de vente en rouge

Pour utiliser cet indicateur, nous pouvons l'ajouter au panneau du prix, puis cochez l'option "Mise l'chelle
verticale : utilisez seulement le prix" depuis la fentre de "Proprits Prix".

Dans cet exemple de code les niveaux sont affichs uniquement lorsque le systme peut prendre position.
Par exemple, ils ne seront pas affichs lorsque la distance entre le niveau suprieur et le niveau infrieur est
plus grande que l'cart maximal ou lorsque la distance entre les ordres d'achat et de vente est trop faible.

V 5.1.0 20150422 www.prorealtime.com 83 / 98


An nexe C : exemple dtail l d'un syst me de trading

Code de l'indicateur "Breakout ProOrder"

// Fermeture de la position 19h45


HeureCloturePosition = 194500
// Aucune nouvelle position prise aprs 17h
HeureLimite = 170000
// L'analyse du march commence avec le chandelier 15 minutes qui clture 9h15
HeureDebut = 091500

// Les journes du 24 et 31 dcembre sont exclues car la bourse ferme avant 19h45
IF Month = 12 AND (Day = 24 OR Day = 31) THEN
JourTrading = 0
ELSE
JourTrading = 1
ENDIF

// Les variables qui peuvent tre adaptes selon ses prfrences


AmplitudeMax = 32.5
AmplitudeMin = 11.5
DistanceOrdre = 2.5
PourcentageMin = 35

// On initialise cette variable une seule fois au dmarrage du systme


ONCE DebutJourneeTrading = -1

// Les variables qui peuvent voluer en journe sont initialises


// la premire barre de chaque nouvelle journe de bourse
IF (Time <= HeureDebut AND DebutJourneeTrading <> 0) OR IntradayBarIndex = 0 THEN
SeuilAchat = 0
SeuilVente = 0
DebutJourneeTrading = 0
ELSIF Time >= HeureDebut AND DebutJourneeTrading = 0 AND JourTrading = 1 THEN
// On stocke l'indice de la premire barre de la journe de bourse
IndexDebutJournee = IntradayBarIndex
DebutJourneeTrading = 1
// Pour chaque jour de bourse, nous dterminons toutes les 15 minutes
// la valeur la plus haute et la plus basse de l'instrument depuis HeureDebut
// tant que les seuils d'achat et de vente ne sont pas dfinis
ELSIF DebutJourneeTrading = 1 AND Time <= HeureLimite AND (SeuilAchat = 0 OR SeuilVente = 0) THEN
NiveauSuperieur = Highest[IntradayBarIndex - IndexDebutJournee + 1](High)
NiveauInferieur = Lowest [IntradayBarIndex - IndexDebutJournee + 1](Low)

// Calcul de l'cart entre la valeur la plus haute


// et la plus basse de l'instrument depuis HeureDebut
EcartJour = NiveauSuperieur - NiveauInferieur

V 5.1.0 20150422 www.prorealtime.com 84 / 98


An nexe C : exemple dtail l d'un syst me de trading

// Calcul de l'cart minimal souhait pour considrer une cassure par les prix
// de la valeur la plus haute ou la plus basse comme une cassure significative
EcartMin = EcartJour * PourcentageMin / 100
// Calcul des seuils d'achat et de vente pour la journe si les conditions sont remplies
IF EcartJour <= AmplitudeMax THEN
IF SeuilVente = 0 AND Close - NiveauInferieur >= EcartMin THEN
SeuilVente = NiveauInferieur + DistanceOrdre
ENDIF
IF SeuilAchat = 0 AND NiveauSuperieur - Close >= EcartMin THEN
SeuilAchat = NiveauSuperieur - DistanceOrdre
ENDIF
ENDIF
ELSIF Time > HeureCloturePosition AND (SeuilAchat > 0 OR SeuilVente > 0) THEN
// A la fin de la journe de trading, on ferme la position et annule les ordres en cours
SeuilAchat = 0
SeuilVente = 0
ENDIF

// Si les deux seuils sont dfinis et suffisamment loigns,


// on prpare les variables pour l'affichage
IF SeuilAchat > 0 AND SeuilVente > 0 AND (SeuilAchat - SeuilVente) >= AmplitudeMin THEN
A = NiveauSuperieur
B = NiveauInferieur
C = SeuilAchat
D = SeuilVente
ELSE
A = 0
B = 0
C = 0
D = 0
ENDIF

// Affichage des niveaux suprieur et infrieur noir,


// du seuil Achat en vert et seuil Vente en rouge
RETURN A AS "NivSup",B AS "NivInf",C COLOURED (0,255,0) AS "SeuilA",D COLOURED (255,0,0) AS "SeuilV"

V 5.1.0 20150422 www.prorealtime.com 85 / 98


Glossaire

Glossaire
A

CODE IMPLMENTATION FONCTION

ABS ABS(a) Fonction Mathmatique "Valeur Absolue"


AccumDistr AccumDistr(price) Dsigne l'Accumulation Distribution classique
ADX ADX[N] Indicateur Average Directional Index
ADXR ADXR[N] Indicateur Average Directional Index Rate
AND a AND b Oprateur logique ET
AroonDown AroonDown[P] Dsigne l'Aroon Down
AroonUp AroonUp[P] Dsigne l'Aroon Up
ATAN ATAN(a) Fonction mathmatique "arc tangente"
AS RETURN x AS "ResultName" Instruction servant nommer une courbe
(indicateurs uniquement)
AT AT (price) Dsigne l'association au prix
Average Average[N](price) Moyenne Mobile Arithmtique
AverageTrueRange AverageTrueRange[N](price) Dsigne la moyenne mobile par lissage de
Wilder du True Range

CODE IMPLMENTATION FONCTION

BarIndex BarIndex Nombre de barres depuis la premire barre de


donnes charge (pour un systme de trading
dans le cas d'un ProBacktest ou ProOrder, ou
dans un graphique dans le cas d'un indicateur
ProBuilder).
Voir aussi PreLoadBars.
BollingerBandWidth BollingerBandWidth[N](price) Bande passante de Bollinger
BollingerDown BollingerDown[N](price) Support de la bande de Bollinger
BollingerUp BollingerUp[N](price) Rsistance de la bande de Bollinger
BREAK (FOR...DO...BREAK...NEXT) Instruction de sortie force de boucle FOR ou
ou WHILE
(WHILE...DO...BREAK...WEND)
BUY BUY (n) SHARES Instruction d'ouverture de position longue

V 5.1.0 20150422 www.prorealtime.com 86 / 98


Glossaire

CODE IMPLMENTATION FONCTION

CALL myResult=CALL myFunction Appel de fonction utilisateur


CASH BUY x CASH Dsigne le montant utiliser
CCI CCI[N](price) ou CCI[N] Donne le Commodity Channel Index
ChaikinOsc ChaikinOsc[Ch1, Ch2](price) Dsigne l'oscillateur de Chaikin
Chandle Chandle[N](price) Dsigne le Chande Momentum Oscillator
ChandeKrollStopUp ChandeKrollStopUp[Pp, Qq, Stop de protection selon Chande et Kroll en
X] position acheteuse
ChandeKrollStopDown ChandeKrollStopDown[Pp, Stop de protection selon Chande et Kroll en
Qq, X] position vendeuse
Close Close[N] Dsigne le prix de clture de la barre courante
ou de celle n barres auparavant
COLOURED RETURN x Colorie une courbe d'une certaine couleur selon
COLOURED(R,G,B) la convention RGB (indicateurs seulement)
COS COS(a) Fonction cosinus
COUNTOFLONGSHARES COUNTOFLONGSHARES Comptabilise le nombre de titres en position
longue
COUNTOFPOSITION COUNTOFPOSITION Comptabilise le nombre de titres en position
(soit acheteuse ou vendeuse)
COUNTOFSHORTSHARES COUNTOFSHORTSHARES Comptabilise le nombre de titres en position
courte
CONTRACT BUY 1 CONTRACT Dsigne le nombre de contrats acheter.
Equivalent de "Shares"
CROSSES OVER a CROSSES OVER b Oprateur boolen vrifiant qu'une courbe
passe au-dessus d'une autre
CROSSES UNDER a CROSSES UNDER b Oprateur boolen vrifiant qu'une courbe
passe en dessous d'une autre
cumsum cumsum(price) Sommation d'un prix depuis le dbut de
l'historique affich
CumulateOrders DEFPARAM Autorise le cumul des ordres de mme direction
CumulateOrders=true/false
CustomClose CustomClose[N] Constante paramtrable dans la fentre de
proprits
Cycle Cycle(price) Indicateur Cycle

V 5.1.0 20150422 www.prorealtime.com 87 / 98


Glossaire

CODE IMPLMENTATION FONCTION

Date Date[N] Dsigne la date de clture de la barre courante


Day Day[N] Jour de clture de la barre courante
Days Days[N] Compteur de jours depuis 1970
DayOfWeek DayOfWeek[N] Dsigne le jour de la semaine durant lequel la
barre courante a clos
DClose DClose(N) Prix de clture de la nime journe antrieure
celle de la barre courante
DEFPARAM DEFPARAM Permet de dfinir des paramtres
DEMA DEMA[N](price) Double Moyenne Mobile Exponentielle
DHigh DHigh(N) Prix le plus haut de la nime journe antrieure
celle de la barre courante
DI DI[N](price) Dsigne le Demand Index
DIminus DIminus[N](price) Dsigne le DI-
DIplus DIplus[N](price) Dsigne le DI+
DLow DLow(N) Prix le plus bas de la nime journe antrieure
celle de la barre courante
DO Voir FOR et WHILE Instruction facultative des FOR et WHILE pour
l'action de bouclage
DOpen DOpen(N) Prix d'ouverture de la nime journe antrieure
celle de la barre courante
DOWNTO Voir FOR Instruction sur boucle FOR pour une lecture
dcroissante
DPO DPO[N](price) Dsigne le Detrented Price Oscillator

V 5.1.0 20150422 www.prorealtime.com 88 / 98


Glossaire

CODE IMPLMENTATION FONCTION

EaseOfMovement EaseOfMovement[I] Dsigne l'indicateur Ease of Movement


ELSE Voir IF/THEN/ELSE/ENDIF Instruction d'appel de la seconde condition
dfaut de la premire issue du IF
ELSEIF Voir Contraction de ELSE IF
IF/THEN/ELSIF/ELSE/ENDIF
EMV EMV[N] Dsigne l'indicateur Ease of Movement Value
ENDIF Voir IF/THEN/ELSE/ENDIF Instruction de clture des instructions
conditionnelles
EndPointAverage EndPointAverage[N](price) Moyenne Mobile dernier point
EXITSHORT EXITSHORT x SHARES Instruction qui clture une position courte
EXP EXP(a) Fonction Mathmatique "Exponentielle"
ExponentialAverage ExponentialAverage[N](price) Moyenne Mobile Exponentielle

F-G

CODE IMPLMENTATION FONCTION

FOR/TO/NEXT FOR i=n TO p DO NEXT Boucle FOR avec i variant de n p (n<p)


ou de p n. Ordre ascendant si TO utilis, ordre
descendant si DOWNTO.
FLATAFTER DefParam FlatAfter = Annule n'importe quel ordre en attente, ferme
HHMMSS n'importe quelle position ouverte et empche
l'ajout ventuel d'ordres additionnels aprs
l'heure paramtre (en heures, minutes et
secondes) dans le fuseau horaire utilisateur
FLATBEFORE Defparam FlatBefore = Annule n'importe quel ordre en attente, ferme
HHMMSS n'importe quelle position ouverte et empche
l'ajout ventuel d'ordres additionnels avant
l'heure paramtre (en heures, minutes et
secondes) dans le fuseau horaire utilisateur
ForceIndex ForceIndex(price) Indicateur Force Index dterminant qui contrle
le march
GRAPH GRAPH myvariable AS Instruction backtest qui permet de visualiser les
"myvariable" valeurs des variables sur les donnes
historiques

V 5.1.0 20150422 www.prorealtime.com 89 / 98


Glossaire

CODE IMPLMENTATION FONCTION

High High[N] Dsigne le plus haut de la barre courante ou


celle de n barres auparavant
Highest highest[N](price) Dsigne le plus haut cours sur un horizon donn
HistoricVolatility HistoricVolatility[N](price) Dsigne la volatilit historique ou statistique
Hour Hour[N] Dsigne l'heure de clture de chaque barre
dans le fuseau horaire utilisateur

I-J-K

CODE IMPLMENTATION FONCTION

IF/THEN/ENDIF IF a THEN b ENDIF Ensemble d'instructions conditionnelles sans


deuxime condition
IF/THEN/ELSE/ENDIF IF a THEN b ELSE c ENDIF Ensemble d'instructions conditionnelles
IntradayBarIndex IntradayBarIndex[N] Compte le nombre de chandeliers sur le
graphique intraday

CODE IMPLMENTATION FONCTION

LIMIT BUY AT x LIMIT Instruction qui introduit un ordre Limite


LinearRegression LinearRegression[N](price) Droite de rgression linaire
LinearRegressionSlope LinearRegressionSlope[N] Pente de la droite de rgression linaire
(price)
LOG LOG(a) Fonction mathmatique "logarithme nprien"
LONGONMARKET LONGONMARKET Indique si vous avez des positions acheteuses
(=longues) sur le march
Low Low[N] Dsigne le plus bas de la barre courante ou
celle de n barres auparavant
lowest lowest[N](price) Dsigne le plus bas d'une priode sur un
horizon donn
LOSS SET STOP LOSS x Permet de poser un stop loss x units du
cours d'entre en position
%LOSS SET STOP %LOSS x Place un stop loss x % du cours d'entre en
position
$LOSS SET STOP $LOSS x Place un stop loss tel que la perte soit de x ,$
(devise de l'instrument)
LOT BUY 1 LOT Dsigne le nombre de lot acheter (quivalent
de "SHARE")

V 5.1.0 20150422 www.prorealtime.com 90 / 98


Glossaire

CODE IMPLMENTATION FONCTION

MACD MACD[S,L,Si](price) Moving Average Convergence Divergence


(MACD)
MACDline MACDLine[S,L](price) Dsigne la ligne du MACD
MARKET BUY AT MARKET Dsigne un ordre au prix de march. il sera
excut l'ouverture de la barre suivante
MassIndex MassIndex[N] Indicateur Mass Index appliqu sur N barres
MAX MAX(a,b) Fonction mathmatique "Maximum"
MedianPrice MedianPrice Moyenne du prix le plus haut et du plus bas
MIN MIN(a,b) Fonction Mathmatique "Minimum"
Minute Minute Dsigne la minute du moment de la clture de
chaque barre de l'historique dans le fuseau
horaire utilisateur
MOD a MOD b Fonction Mathmatique "Reste de la division
euclidienne de a par b"
Momentum Momentum[I] Momentum (prix de clture prix de clture de
la n-ime barre prcdente)
MoneyFlow MoneyFlow[N](price) Donne le MoneyFlow entre -1 et 1
MoneyFlowIndex MoneyFlowIndex[N] Dsigne le MoneyFlowIndex
Month Month[N] Dsigne le mois de la clture de chaque barre
de l'historique

CODE IMPLMENTATION FONCTION

NegativeVolumeIndex NegativeVolumeIndex[N] Dsigne l'indice de volume ngatif


NEXT Voir FOR/TO/NEXT Instruction placer la fin de la boucle "FOR"
NextBarOpen AT MARKET NextBarOpen Dsigne un ordre excut l'ouverture de la
barre suivante.
NOCASHUPDATE DEFPARAM Permet de ne pas actualiser le capital avec les
NOCASHUPDATE=true/false gains/pertes (backtests seulement)
NOT Not A Oprateur logique NON

V 5.1.0 20150422 www.prorealtime.com 91 / 98


Glossaire

CODE IMPLMENTATION FONCTION

OBV OBV(price) Dsigne l' "On-Balance-Volume"


ONCE ONCE VariableName = Instruction qui en prcde une autre qu'on ne
VariableValue veut raliser qu'une seule fois
ONMARKET ONMARKET Indique si vous tes en position
Open Open[N] Dsigne le prix d'ouverture de la barre courante
ou celle de n barres auparavant
OpenDate OpenDate Date d'ouverture de la barre courante au format
YYYYMMDD
OpenDay OpenDay Jour d'ouverture de la barre courante
OpenDayOfWeek OpenDayOfWeek Jour de la semaine d'ouverture de la barre
courante
OpenHour OpenHour Heure d'ouverture de la barre courante dans le
fuseau horaire utilisateur
OpenMinute OpenMinute Minute d'ouverture de la barre courante dans le
fuseau horaire utilisateur
OpenMonth OpenMonth Mois d'ouverture de la barre courante
OpenTime OpenTime Heure d'ouverture de la barre courante au
format HHMMSS dans le fuseau horaire
utilisateur
OpenYear OpenYear Anne d'ouverture de la barre courante
OR a OR b Oprateur logique OU

V 5.1.0 20150422 www.prorealtime.com 92 / 98


Glossaire

P-Q

CODE IMPLMENTATION FONCTION

PIPVALUE PipValue Valeur en /$ d'un pip (ou point),


PipValue=Pointvalue
PIPSIZE PipSize Taille d'un pip (ou point), PipSize=PointSize
POINTVALUE PointValue Valeur en /$ d'un pip (ou point),
PipValue=Pointvalue
POINTSIZE PointSize Taille d'un pip (ou point) : PipSize=PointSize
POSITIONPERF PositionPerf(n) Indique le pourcentage de gain ou de perte de
la n-ime position cloture
POSITIONPRICE PositionPrice Indique le prix moyen de la position en cours
PRELOADBARS DEFPARAM PRELOADBARS Indique le montant maximum de barres
= 200 prcharges pour le calcul d'indicateurs utiliss
dans un systme de trading.
PriceOscillator PriceOscillator[S,L](price) Indicateur Percertage Price oscillator
PositiveVolumeIndex PriceVolumeIndex(price) Dsigne l'indicateur Positive Volume Index
PVT PVT(price) Dsigne l'indicateur "Price Volume Trend"
QUIT QUIT Instruction pour stopper un systme de trading

CODE IMPLMENTATION FONCTION

R2 R2[N](price) Coefficient R Carr (taux d'erreur des prix la


rgression linaire)
Range Range[N] Diffrence entre le prix le plus haut et le plus
bas de la barre courante
REM REM comment Prcde une remarque dans le code
Repulse Repulse[N](price) Mesure la pousse haussire et baissire de
chaque bougie
RETURN RETURN Result Instruction qui renvoie le rsultat (indicateurs
seulement)
ROC ROC[N](price) Dsigne le "Price Rate of Change"
RSI RSI[N](price) Dsigne l'oscillateur "Relative Strength Index"
ROUND ROUND(a) Fonction mathmatique "Arrondi l'unit"
ROUNDEDUP ROUNDEDUP Arrondit les quantits l'unit suprieure
ROUNDEDDOWN ROUNDEDDOWN Arrondit les quantits l'unit infrieure

V 5.1.0 20150422 www.prorealtime.com 93 / 98


Glossaire

CODE IMPLMENTATION FONCTION

SAR SAR[At,St,Lim] Dsigne le Parabolique SAR


SARatdmf SARatdmf[At,St,Lim](price) Dsigne le Parabolique SAR ATDMF
SELL SELL (n) SHARES Instruction de clture de position longue
SELLSHORT SELLSHORT (n) SHARES Instruction d'ouverture de position courte
SET SET Permet de poser un stop ou une limite
SHARES BUY (n) SHARES Dsigne le nombre d'actions acheter
SHORTONMARKET SHORTONMARKET Indique si vous avez des positions vendeuses
(=courtes) sur le march
SIN Sin(a) Fonction Mathmatique "Sinus"
SGN Sgn(a) Fonction Mathmatique "Signe de"
SMI SMI[N,SS,DS](price) Dsigne le Stochastic Momentum Index
SmoothedStochastic SmoothedStochastic[N,K] Dsigne une Stochastique lisse
(price)
SQUARE Square(a) Fonction mathmatique "Mise au carr"
SQRT Sqrt(a) Fonction Mathmatique "Mise la racine
carre"
STD STD[N](price) Fonction Statistique "cart-type"
STE STE[N](price) Fonction Statistique "cart-erreur"
Stochastic Stochastic[N,K](price) Ligne %K de la Stochastique
STOP SET STOP LOSS Permet de poser un stop (cf glossaire LOSS)
summation summation[N](price) Somme d'un certain prix des N derniers
chandeliers
Supertrend SuperTrend[STF,N] Dsigne le Super Trend

V 5.1.0 20150422 www.prorealtime.com 94 / 98


Glossaire

CODE IMPLMENTATION FONCTION

TAN TAN(a) Fonction mathmatique "Tangente"


TARGET SET TARGET PROFIT x Permet de poser un objectif x units du cours
TEMA TEMA[N](price) Moyenne Mobile Exponentielle Triple
THEN Voir IF/THEN/ELSE/ENDIF Instruction suivant la premire condition de
l'instruction "IF"
TICKSIZE TICKSIZE Donne le ticksize de l'instrument (plus petite
variation de prix possible)
Time Time[N] Donne l'heure courante (heure de clture de la
barre courante = heure d'valuation du
chandelier en trading automatique) dans le
fuseau horaire utilisateur
TimeSeriesAverage TimeSeriesAverage[N](price) Moyenne mobile des sries temporelles
TO Voir FOR/TO/NEXT Instruction "jusqu'" dans la boucle "Pour"
Today Today Date de la journe actuelle au format
YYYYMMDD
TomorrowOpen AT (prix) TomorrowOpen Dsigne un ordre excut l'ouverture de la
journe successive
TotalPrice TotalPrice[N] (Clture + Ouverture + Plus Haut + Plus Bas)/4
TR TR(price) Dsigne le True Range
TRADEINDEX TRADEINDEX(n) Indique l'indice de la barre sur laquelle a t
excut le n-ime dernier ordre
TRADEPRICE TRADEPRICE(n) Indique le niveau de cours du n-ime dernier
ordre excut
TRAILING SET STOP TRAILING x Permet de poser un stop suiveur x units du
cours
%TRAILING SET STOP %TRAILING x Place un trailing stop x % du cours
$TRAILING SET STOP $TRAILING x Place un trailing stop tel que la perte soit de x ,
$ (devise de l'instrument)
TriangularAverage TriangularAverage[N](price) Moyenne Mobile Triangulaire
TRIX TRIX[N](price) Triple Moyenne Mobile Exponentielle
TypicalPrice TypicalPrice[N] Prix Typique (moyenne de plus haut, plus bas et
clture)

V 5.1.0 20150422 www.prorealtime.com 95 / 98


Glossaire

CODE IMPLMENTATION FONCTION

Undefined a = Undefined Pour laisser une variable indfinie

CODE IMPLMENTATION FONCTION

Variation Variation(price) Diffrence entre la clture de la veille et la


clture courante en %
Volatility Volatility[S, L] Dsigne la volatilit de Chaikin
Volume Volume[N] Dsigne le volume
VolumeOscillator VolumeOscillator[S,L] Dsigne l'oscillateur de volume
VolumeROC VolumeROC[N] Dsigne le volume du Rate Of Change

CODE IMPLMENTATION FONCTION

WeightedAverage WeightedAverage[N](price) Dsigne la Moyenne Mobile Pondre


WeightedClose WeightedClose[N] Moyenne pondre entre le prix de clture, le
plus haut et la plus bas
WEND Voir WHILE/DO/WEND Instruction placer la fin de la boucle Tant
Que
WHILE/DO/WEND WHILE (condition) DO (action) Boucle "Tant Que"
WEND
WilderAverage WilderAverage[N](price) Donne la moyenne mobile de Wilder
Williams Williams[N](close) Calcule le %R de Williams
WilliamsAccumDistr WilliamsAccumDistr(price) Indicateur Accumulation/Distribution de Williams

CODE IMPLMENTATION FONCTION

XOR a XOR b Oprateur logique OU exlusif

V 5.1.0 20150422 www.prorealtime.com 96 / 98


Glossaire

CODE IMPLMENTATION FONCTION

Year Year[N] Donne l'anne au format YYYY


Yesterday Yesterday[N] Donne le jour prcdent du chandelier courant
au format YYYMMDD

CODE IMPLMENTATION FONCTION

ZigZag ZigZag[Zr](price) Zig-Zag de la thorie des vagues d'Eliott


ZigZagPoint ZigZagPoint[Zp](price) Zig-Zag de la thorie des vagues d'Eliott calcul
Zp points

Autres

CODE FONCTION CODE FONCTION

+ Oprateur d'addition <> Oprateur de diffrence


- Oprateur de soustraction < Oprateur d'infriorit strict
* Oprateur de multiplication > Oprateur de supriorit strict
/ Oprateur de division dcimale <= Oprateur d'infriorit
= Oprateur d'galit >= Oprateur de supriorit

V 5.1.0 20150422 www.prorealtime.com 97 / 98


www.prorealtime.com