0% ont trouvé ce document utile (0 vote)
195 vues78 pages

Guide de Backtest avec ProRealTime

Ce document décrit les fonctionnalités de programmation de systèmes de trading sous ProRealTime. Il présente comment créer et tester des stratégies de trading, ainsi que les exécuter en backtesting ou en trading automatique. Différents exemples de codes sont également fournis.

Transféré par

bali123a
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
195 vues78 pages

Guide de Backtest avec ProRealTime

Ce document décrit les fonctionnalités de programmation de systèmes de trading sous ProRealTime. Il présente comment créer et tester des stratégies de trading, ainsi que les exécuter en backtesting ou en trading automatique. Différents exemples de codes sont également fournis.

Transféré par

bali123a
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SOMMAIRE

Introduction______________________________________________________2
Accder la programmation des systmes de trading.................................................2
La fentre de cration de systmes de trading.............................................................3
Raccourcis Clavier.........................................................................................................................4

La Programmation de systmes de trading____________________________5


La programmation avec ProBuilder...............................................................................5
Entres et sorties du march.........................................................................................................5

Les Stops et Targets......................................................................................................8


Stops de protection........................................................................................................................8
Limites profits (Targets).................................................................................................................8
Stops suiveurs...............................................................................................................................9
Utilisation des "Set Target" / "Set Stop" avec une instruction conditionnelle de type "IF".............9
Stops et limites niveaux multiples............................................................................................10

Arrter un systme de trading avec QUIT..................................................................13


Suivi des positions.......................................................................................................13
Variables d'tat............................................................................................................................13
Variables de taille de position......................................................................................................14
TradeIndex...................................................................................................................................14
TradePrice...................................................................................................................................14
PositionPerf.................................................................................................................................15
PositionPrice................................................................................................................................15
StrategyProfit...............................................................................................................................15

Dfinition des paramtres d'excution des systmes de trading................................16


Cumul des ordres de mme direction.........................................................................................16
Prcharger de l'historique............................................................................................................17
FlatBefore et FlatAfter.................................................................................................................18
Rinvestir les gains (backtests seulement).................................................................................18

Appeler des d'indicateurs............................................................................................19


Indicateurs ProRealTime.............................................................................................................19
Indicateurs personnaliss............................................................................................................19

Astuces de programmation.........................................................................................19
Rduire le nombre d'appels aux indicateurs ProRealTime.........................................................19
Appels d'indicateurs personnaliss.............................................................................................20

ProBacktest - La simulation des systmes de trading__________________23


Gestion du capital / Money Management...................................................................24
Capital initial................................................................................................................................24
Frais de courtage et gestion du risque........................................................................................24

Optimisation des variables..........................................................................................26


Dfinition de la priode d'excution du backtest.........................................................29
Personnalisation des plages horaires pour les backtests...........................................29

Raisons d'arrt d'un ProBacktest................................................................................30


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

ProOrder - Le Trading Automatique_________________________________32


Prparer un systme l'excution en trading automatique........................................33
Dmarrer un systme de trading avec ProOrder et voir sa performance...................35
Paramtres du Trading Automatique et conditions d'excution..................................39
Paramtres des systmes de trading..........................................................................................39
Arrt automatique du systme de trading...................................................................................40

Interaction entre trading manuel et trading automatique............................................41


Lancer plusieurs systmes de trading sur un mme instrument................................42
Indicateurs non-utilisables...........................................................................................43

Annexe A : Affichage des rsultats__________________________________44


Courbe de gains & pertes...........................................................................................44
Histogramme des positions.........................................................................................45
Rapport dtaill...........................................................................................................46

Annexe B : Exemples de codes dtaills_____________________________50


Systme de trading bas sur HeikinAshi.....................................................................................50
Systme de trading bas sur les Zig Zag....................................................................................51
Systme de trading Breakout Range System avec Stop Suiveur...............................................52
Systme de trading bas sur le stochastique liss.....................................................................53
Swing Trading, ADX et Moyennes Mobiles.................................................................................54
Systme de trading utilisant un compteur de positions...............................................................55
Systme de trading utilisant TRADEINDEX "Inside bar"..........................................................56

Systmes de trading et Money Management.............................................................57


Stops de protection & Objectifs...................................................................................................57
Stops d'inactivit..........................................................................................................................57
Pyramidage d'une position..........................................................................................................58
La martingale classique...............................................................................................................59
La grande martingale...................................................................................................................60
La Piquemouche..........................................................................................................................61
La pyramide d'Alembert...............................................................................................................62
La contre d'Alembert...................................................................................................................63

Glossaire_______________________________________________________64

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 de l'avenir. 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 4.1.1 20140912

[Link]

1 / 74

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 4.1.1 20140912

[Link]

2 / 74

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 4.1.1 20140912

[Link]

3 / 74

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 4.1.1 20140912

[Link]

4 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

5 / 74

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 4.1.1 20140912

[Link]

6 / 74

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 4.1.1 20140912

[Link]

7 / 74

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 : La position sera ferme ds que la perte se situe x units du prix d'entre en
position.
SET STOP pLOSS x : La position sera ferme ds que la position se situe x points du prix d'entre en
position.
SET STOP %LOSS x : La position sera ferme ds que la perte atteint x%, frais de courtage non compris,
SET STOP $LOSS x : La position sera ferme ds que la perte atteint x ,$ (dans la 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 : La position sera ferme ds que le gain se situe x units du prix d'entre en
position.
SET TARGET pPROFIT x : La position sera ferme ds que le gain se situe x points du prix d'entre en
position.
SET TARGET %PROFIT x : La position est ferme des que le gain atteint x%, frais de courtage noncompris.
SET TARGET $PROFIT x : La position est ferme des que le gain de la position atteint x ,$ (devise de
l'instrument).
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 4.1.1 20140912

[Link]

8 / 74

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 trailing stop est plac y units du cours.
SET STOP pTRAILING y : Un trailing stop est plac y points du cours.
SET STOP %TRAILING y : Un trailing stop est plac y % du cours, frais de courtage non compris.
SET STOP $TRAILING y : Un trailing stop est plac y ,$ (devise de l'instrument) du cours, 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 4.1.1 20140912

[Link]

9 / 74

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 : 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 4.1.1 20140912

[Link]

10 / 74

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 4.1.1 20140912

[Link]

11 / 74

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 4.1.1 20140912

[Link]

12 / 74

La Programmation de systmes de trad ing

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 4.1.1 20140912

[Link]

13 / 74

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 4.1.1 20140912

[Link]

14 / 74

La Programmation de systmes de trad ing

PositionPerf
Cette commande donne accs :
La performance en % de la n-ime dernire position clture, si n >0 (frais de courtage non compris)
La performance en % 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) raliss depuis le dbut du systme de trading. 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 4.1.1 20140912

[Link]

15 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

16 / 74

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 sera 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 200 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.

V 4.1.1 20140912

[Link]

17 / 74

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 donne 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).
Linstruction FlatBefore doit toujours tre suprieur l'horaire d'ouverture du march (heure personnalise
ou non). L'instruction FlatAfter doit tre infrieure l'horaire de fermeture du march (heure personnalise
ou non). 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 du march en question.
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 du march en question.

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)

V 4.1.1 20140912

[Link]

18 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

19 / 74

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


THEN

IF NOT LONGONMARKET AND close > myindic


THEN

BUY 1 SHARE AT MARKET

BUY 1 SHARE AT MARKET

ENDIF

ENDIF

myindic2 = CALL "Ma Fonction"

IF NOT SHORTONMARKET AND close < myindic


THEN

IF NOT SHORTONMARKET AND close < myindic2


THEN
SELLSHORT 1 SHARE AT MARKET

SELLSHORT 1 SHARE AT MARKET


ENDIF

ENDIF

V 4.1.1 20140912

[Link]

20 / 74

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 *
DClose(6)) / 10.5

IF NOT longonmarket AND close > myindic


THEN
BUY 1 SHARE AT MARKET
ENDIF
IF NOT shortonmarket AND close < myindic
THEN
SELLSHORT 1 SHARE AT MARKET
ENDIF

myindic = LinearRegression[5](dayclosemix)
IF NOT longonmarket AND close > myindic
THEN
BUY 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 4.1.1 20140912

[Link]

21 / 74

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


INTRADAYBARINDEX >= 5 AND INTRADAYBARINDEX
<= 20 THEN

IF CLOSE <= 0.0047 THEN


IF INTRADAYBARINDEX >= 5 THEN

IF NOT SHORTONMARKET THEN

IF INTRADAYBARINDEX <= 20 THEN

BUY 1 SHARES AT MARKET

IF NOT SHORTONMARKET THEN


BUY 1 SHARES AT MARKET
ENDIF

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 4.1.1 20140912

[Link]

22 / 74

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 :

Gestion du capital / Money management


Priode d'excution
Optimisation des variables

V 4.1.1 20140912

[Link]

23 / 74

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


En fonction du type d'instrument sur lequel est appliqu le systme de trading, diffrents paramtres de
courtage peuvent tre appliqus. Ils se configurent dans les trois onglets "Futures", "Actions" et "Forex".

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.

V 4.1.1 20140912

[Link]

24 / 74

ProBacktest - La simulation des systmes 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$

Le Risk management permet de dfinir (en nombre de contrats) :


La taille maximale de la position : un ordre qui tenterait de renforcer la position au del de cette valeur
sera rejet.
L'engagement maximal par transaction : un ordre d'une quantit suprieure cette valeur sera ignor.
L'engagement minimal par transaction : un ordre d'une quantit infrieure la valeur entre sera ignor.
Note : Une inversion de position est interprte comme la clture de la dernire position suivie de et
l'ouverture de la nouvelle [Link] quantit de la nouvelle position ouverte sera prise comme rfrence
pour la vrification de l'engagement maximum ou minimum. Les frais de courtage ne seront appliqus
qu'une fois.
Forex :

Les paramtres de courtage permettent de dfinir la taille des lots, le spread et l'effet de levier appliquer
chaque ordre.
Exemple avec l'EURUSD :
Taille d'un lot : 100 000
Spread : 2 pips
Levier : 20
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$.
Le Risk Management sur le Forex fonctionne comme pour les futures. L'unique diffrence concerne la
dfinition des quantits qui seront en lots.
V 4.1.1 20140912

[Link]

25 / 74

ProBacktest - La simulation des systmes de trading

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 :
Limite maximale dinvestissement : 500 %Capital
Engagement max par transaction : 500 % Capital
Avec cette configuration, chaque ordre pass pourra avoir un effet de levier de 5.
Si vous dfinissez un % de 100, vous limiterez les pertes au montant total de votre portefeuille.
Note : Les paramtres renseigns dans la section "Risk Management" ne tiennent pas compte des frais de
courtage.

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

V 4.1.1 20140912

[Link]

26 / 74

ProBacktest - La simulation des systmes de trading

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.
Voici un exemple de rapport d'optimisation :

V 4.1.1 20140912

[Link]

27 / 74

ProBacktest - La simulation des systmes de trading

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 4.1.1 20140912

[Link]

28 / 74

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 fuseaux horaires personnaliss et les donnes du week-end :
Les fuseaux horaires personnaliss sont uniquement pris en compte par les graphiques. Ils ne sont pas pris en
compte dans les backtests (les horaires de marchs officiels sont toujours pris comme rfrence par les backtests).
Certains des marchs cotant 24h/24h proposent l'option Utiliser les cotations intraday pour construire les
chandeliers journaliers . A l'image des fuseaux horaires personnaliss, 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 4.1.1 20140912

[Link]

29 / 74

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 4.1.1 20140912

[Link]

30 / 74

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 4.1.1 20140912

[Link]

31 / 74

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


Cette partie du manuel expliquera comment passer du backtest de vos systmes de trading leur excution
en tant que systmes de trading automatiques.
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 4.1.1 20140912

[Link]

32 / 74

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 4.1.1 20140912

[Link]

33 / 74

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 Automatiques" apparat. Vous obtenez une liste de vos
systmes de trading automatiques en cliquant su l'onglet correspondant.

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

V 4.1.1 20140912

[Link]

34 / 74

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 [Link] 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 cidessous.

V 4.1.1 20140912

[Link]

35 / 74

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 4.1.1 20140912

[Link]

36 / 74

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 4.1.1 20140912

[Link]

37 / 74

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 4.1.1 20140912

[Link]

38 / 74

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 4.1.1 20140912

[Link]

39 / 74

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 4.1.1 20140912

[Link]

40 / 74

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 4.1.1 20140912

[Link]

41 / 74

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 4.1.1 20140912

[Link]

42 / 74

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.

V 4.1.1 20140912

[Link]

43 / 74

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 4.1.1 20140912

[Link]

44 / 74

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 4.1.1 20140912

[Link]

45 / 74

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 4.1.1 20140912

[Link]

46 / 74

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 4.1.1 20140912

[Link]

47 / 74

An nexe A : Af fi chage des rsultats

Exemple :
BARINDEX

V 4.1.1 20140912

PROFIT&PERTES

DRAWDOWN

RUNUP

0,00

0,00

0,00

15,00

0,00

-15,00

10,00

5,00

-10,00

0,00

15,00

0,00

15,00

0,00

-15,00

-10,00

25,00

0,00

-20,00

35,00

0,00

-5,00

20,00

-15,00

-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

[Link]

48 / 74

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 4.1.1 20140912

[Link]

49 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

50 / 74

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 de l'avenir. 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 nonprdictif 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 4.1.1 20140912

[Link]

51 / 74

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 de l'avenir. Tout systme de
trading peut vous exposer un risque de perte suprieur votre investissement initial.

Systme de trading Breakout Range System avec Stop Suiveur


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 4.1.1 20140912

[Link]

52 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

53 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

54 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

55 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

56 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

57 / 74

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 de l'avenir. 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 4.1.1 20140912

[Link]

58 / 74

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 de l'avenir. 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
l'intgralit du code

V 4.1.1 20140912

position

doit

tre

dtermine

[Link]

par

la

variable

OrderSize

pour

59 / 74

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 de l'avenir. 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
l'intgralit du code

V 4.1.1 20140912

position

doit

tre

dtermine

[Link]

par

la

variable

OrderSize

pour

60 / 74

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 de l'avenir. 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.
Cette 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
l'intgralit du code
V 4.1.1 20140912

position

doit

tre

dtermine

[Link]

par

la

variable

OrderSize

pour

61 / 74

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 de l'avenir. 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
l'intgralit du code

V 4.1.1 20140912

position

doit

tre

dtermine

[Link]

par

la

variable

OrderSize

pour

62 / 74

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 de l'avenir. 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
l'intgralit du code

V 4.1.1 20140912

position

doit

tre

dtermine

[Link]

par

la

variable

OrderSize

pour

63 / 74

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

B
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

V 4.1.1 20140912

Instruction d'ouverture de position longue

[Link]

64 / 74

Glossaire

C
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,
X]

Stop de protection selon Chande et Kroll en


position acheteuse

ChandeKrollStopDown

ChandeKrollStopDown[Pp,
Qq, X]

Stop de protection selon Chande et Kroll en


position vendeuse

Close

Close[N]

Dsigne le prix de clture de la barre courante


ou de celle n barres auparavant

COLOURED

RETURN x
COLOURED(R,G,B)

Colorie une courbe d'une certaine couleur selon


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
CumulateOrders=true/false

Autorise le cumul des ordres de mme direction

CurrentDayOfWeek

CurrentDayOfWeek

Dsigne le jour actuel

CurrentHour

CurrentHour

Dsigne l'heure actuelle

CurrentMinute

CurrentMinute

Dsigne la minute actuelle

CurrentMonth

CurrentMonth

Dsigne le mois actuel

CurrentSecond

CurrentSecond

Dsigne la seconde actuelle

CurrentTime

CurrentTime

Dsigne HeureMinute actuelle

CurrentYear

CurrentYear

Dsigne l'anne actuelle

V 4.1.1 20140912

[Link]

65 / 74

Glossaire

CustomClose

CustomClose[N]

Constante paramtrable dans la fentre de


proprits

Cycle

Cycle(price)

Indicateur Cycle

D
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 4.1.1 20140912

[Link]

66 / 74

Glossaire

E
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
IF/THEN/ELSIF/ELSE/ENDIF

Contraction de ELSE IF

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 =
HHMMSS

Annule n'importe quel ordre en attente, ferme


n'importe quelle position ouverte et empche
l'ajout ventuel d'ordres additionnels aprs
l'heure paramtre (en heures, minutes et
secondes)

FLATBEFORE

Defparam FlatBefore =
HHMMSS

Annule n'importe quel ordre en attente, ferme


n'importe quelle position ouverte et empche
l'ajout ventuel d'ordres additionnels avant
l'heure paramtre (en heures, minutes et
secondes)

ForceIndex

ForceIndex(price)

Indicateur Force Index dterminant qui contrle


le march

GRAPH

GRAPH myvariable AS
"myvariable"

Instruction backtest qui permet de visualiser les


valeurs des variables sur les donnes
historiques

V 4.1.1 20140912

[Link]

67 / 74

Glossaire

H
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

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

L
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

%LOSS

SET STOP %LOSS x

Place un stop loss x % du cours

$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 4.1.1 20140912

[Link]

68 / 74

Glossaire

M
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

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

N
CODE

IMPLMENTATION

FONCTION

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
NOCASHUPDATE=true/false

Permet de ne pas actualiser le capital avec les


gains/pertes (backtests seulement)

NOT

Not A

Oprateur logique NON

V 4.1.1 20140912

[Link]

69 / 74

Glossaire

O
CODE

IMPLMENTATION

FONCTION

OBV

OBV(price)

Dsigne l' "On-Balance-Volume"

ONCE

ONCE VariableName =
VariableValue

Instruction qui en prcde une autre qu'on ne


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

OR

a OR b

Oprateur logique OU

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

V 4.1.1 20140912

[Link]

70 / 74

Glossaire

R
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

S
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]
(price)

Dsigne une Stochastique lisse

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"

V 4.1.1 20140912

[Link]

71 / 74

Glossaire

STE

STE[N](price)

Fonction Statistique "cart-erreur"

Stochastic

Stochastic[N,K](price)

Ligne %K de la Stochastique

summation

summation[N](price)

Somme d'un certain prix des N derniers


chandeliers

Supertrend

SuperTrend[STF,N]

Dsigne le Super Trend

T
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 au format HHMMSS

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 4.1.1 20140912

[Link]

72 / 74

Glossaire

U
CODE

Undefined

IMPLMENTATION

a = Undefined

FONCTION

Pour laisser une variable indfinie

V
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

W
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

X
CODE

XOR

V 4.1.1 20140912

IMPLMENTATION

a XOR b

FONCTION

Oprateur logique OU exlusif

[Link]

73 / 74

Glossaire

Y
CODE

IMPLMENTATION

FONCTION

Year

Year[N]

Donne l'anne au format YYYY

Yesterday

Yesterday[N]

Donne le jour prcdent au format YYYMMDD

Z
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 4.1.1 20140912

[Link]

74 / 74

[Link]

Vous aimerez peut-être aussi