Guide de Backtest avec ProRealTime
Guide de Backtest avec ProRealTime
Introduction______________________________________________________2
Accder la programmation des systmes de trading.................................................2
La fentre de cration de systmes de trading.............................................................3
Raccourcis Clavier.........................................................................................................................4
Astuces de programmation.........................................................................................19
Rduire le nombre d'appels aux indicateurs ProRealTime.........................................................19
Appels d'indicateurs personnaliss.............................................................................................20
Glossaire_______________________________________________________64
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
[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
[Link]
5 / 74
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
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
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
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
[Link]
8 / 74
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
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
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
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
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
V 4.1.1 20140912
[Link]
13 / 74
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.
TradePrice
La commande TRADEPRICE(n) permet de faire appel au prix auquel une transaction a t excute. Sa
syntaxe est la suivante :
[Link]
14 / 74
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 :
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
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 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
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
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.
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
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.
CODE OPTIMAL
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
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 > b THEN
ENDIF
ENDIF
CODE OPTIMAL
ENDIF
ENDIF
ENDIF
V 4.1.1 20140912
[Link]
20 / 74
CODE OPTIMAL
myindic = LinearRegression[5](dayclosemix)
IF NOT longonmarket AND close > myindic
THEN
BUY 1 SHARE AT MARKET
ENDIF
IF NOT shortonmarket AND close < myindic
THEN
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
CODE OPTIMAL
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
V 4.1.1 20140912
[Link]
22 / 74
V 4.1.1 20140912
[Link]
23 / 74
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
VALEUR 1 POINT
FCE CAC 40
10
DAX
25
DJ Eurostoxx 50
10
BUND
10
Euro FX
12,5$
50$
20$
Mini Dow
5$
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
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.
V 4.1.1 20140912
[Link]
26 / 74
Les variables n et m peuvent tre dfinies en cliquant sur le bouton "Ajouter" dans la section "Optimisation
des variables".
"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
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.
"Nb de trades", indique le nombre de positions qui ont t ouvertes au cours de ce systme.
"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
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.
[Link]
29 / 74
V 4.1.1 20140912
[Link]
30 / 74
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"
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
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
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
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
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
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
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.
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
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
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
V 4.1.1 20140912
[Link]
45 / 74
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
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 :
[Link]
47 / 74
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
"% 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 * 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
V 4.1.1 20140912
[Link]
50 / 74
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.
V 4.1.1 20140912
[Link]
51 / 74
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.
V 4.1.1 20140912
[Link]
52 / 74
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.
V 4.1.1 20140912
[Link]
53 / 74
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.
[Link]
54 / 74
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.
V 4.1.1 20140912
[Link]
55 / 74
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.
V 4.1.1 20140912
[Link]
56 / 74
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.
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
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.
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
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
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
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
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
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)
AccumDistr
AccumDistr(price)
ADX
ADX[N]
ADXR
ADXR[N]
AND
a AND b
Oprateur logique ET
AroonDown
AroonDown[P]
AroonUp
AroonUp[P]
Dsigne l'Aroon Up
ATAN
ATAN(a)
AS
RETURN x AS "ResultName"
AT
AT (price)
Average
Average[N](price)
AverageTrueRange
AverageTrueRange[N](price)
B
CODE
IMPLMENTATION
FONCTION
BarIndex
BarIndex
BollingerBandWidth
BollingerBandWidth[N](price)
BollingerDown
BollingerDown[N](price)
BollingerUp
BollingerUp[N](price)
BREAK
BUY
V 4.1.1 20140912
[Link]
64 / 74
Glossaire
C
CODE
IMPLMENTATION
FONCTION
CALL
myResult=CALL myFunction
CASH
BUY x CASH
CCI
CCI[N](price) ou CCI[N]
ChaikinOsc
ChaikinOsc[Ch1, Ch2](price)
Chandle
Chandle[N](price)
ChandeKrollStopUp
ChandeKrollStopUp[Pp, Qq,
X]
ChandeKrollStopDown
ChandeKrollStopDown[Pp,
Qq, X]
Close
Close[N]
COLOURED
RETURN x
COLOURED(R,G,B)
COS
COS(a)
Fonction cosinus
COUNTOFLONGSHARES
COUNTOFLONGSHARES
COUNTOFPOSITION
COUNTOFPOSITION
COUNTOFSHORTSHARES
COUNTOFSHORTSHARES
CONTRACT
BUY 1 CONTRACT
CROSSES OVER
a CROSSES OVER b
CROSSES UNDER
a CROSSES UNDER b
cumsum
cumsum(price)
CumulateOrders
DEFPARAM
CumulateOrders=true/false
CurrentDayOfWeek
CurrentDayOfWeek
CurrentHour
CurrentHour
CurrentMinute
CurrentMinute
CurrentMonth
CurrentMonth
CurrentSecond
CurrentSecond
CurrentTime
CurrentTime
CurrentYear
CurrentYear
V 4.1.1 20140912
[Link]
65 / 74
Glossaire
CustomClose
CustomClose[N]
Cycle
Cycle(price)
Indicateur Cycle
D
CODE
IMPLMENTATION
FONCTION
Date
Date[N]
Day
Day[N]
Days
Days[N]
DayOfWeek
DayOfWeek[N]
DClose
DClose(N)
DEFPARAM
DEFPARAM
DEMA
DEMA[N](price)
DHigh
DHigh(N)
DI
DI[N](price)
DIminus
DIminus[N](price)
Dsigne le DI-
DIplus
DIplus[N](price)
Dsigne le DI+
DLow
DLow(N)
DO
DOpen
DOpen(N)
DOWNTO
Voir FOR
DPO
DPO[N](price)
V 4.1.1 20140912
[Link]
66 / 74
Glossaire
E
CODE
IMPLMENTATION
FONCTION
EaseOfMovement
EaseOfMovement[I]
ELSE
Voir IF/THEN/ELSE/ENDIF
ELSEIF
Voir
IF/THEN/ELSIF/ELSE/ENDIF
Contraction de ELSE IF
EMV
EMV[N]
ENDIF
Voir IF/THEN/ELSE/ENDIF
EndPointAverage
EndPointAverage[N](price)
EXITSHORT
EXITSHORT x SHARES
EXP
EXP(a)
ExponentialAverage
ExponentialAverage[N](price)
F-G
CODE
IMPLMENTATION
FONCTION
FOR/TO/NEXT
FLATAFTER
DefParam FlatAfter =
HHMMSS
FLATBEFORE
Defparam FlatBefore =
HHMMSS
ForceIndex
ForceIndex(price)
GRAPH
GRAPH myvariable AS
"myvariable"
V 4.1.1 20140912
[Link]
67 / 74
Glossaire
H
CODE
IMPLMENTATION
FONCTION
High
High[N]
highest
highest[N](price)
HistoricVolatility
HistoricVolatility[N](price)
Hour
Hour[N]
I-J-K
CODE
IMPLMENTATION
FONCTION
IF/THEN/ENDIF
IF a THEN b ENDIF
IF/THEN/ELSE/ENDIF
IntradayBarIndex
IntradayBarIndex[N]
L
CODE
IMPLMENTATION
FONCTION
LIMIT
BUY AT x LIMIT
LinearRegression
LinearRegression[N](price)
LinearRegressionSlope LinearRegressionSlope[N]
(price)
LOG
LOG(a)
LONGONMARKET
LONGONMARKET
Low
Low[N]
lowest
lowest[N](price)
LOSS
%LOSS
$LOSS
LOT
BUY 1 LOT
V 4.1.1 20140912
[Link]
68 / 74
Glossaire
M
CODE
IMPLMENTATION
FONCTION
MACD
MACD[S,L,Si](price)
MACDline
MACDLine[S,L](price)
MARKET
BUY AT MARKET
MassIndex
MassIndex[N]
MAX
MAX(a,b)
MedianPrice
MedianPrice
MIN
MIN(a,b)
Minute
Minute
MOD
a MOD b
Momentum
Momentum[I]
MoneyFlow
MoneyFlow[N](price)
MoneyFlowIndex
MoneyFlowIndex[N]
Dsigne le MoneyFlowIndex
Month
Month[N]
N
CODE
IMPLMENTATION
FONCTION
NEXT
Voir FOR/TO/NEXT
NextBarOpen
AT MARKET NextBarOpen
NOCASHUPDATE
DEFPARAM
NOCASHUPDATE=true/false
NOT
Not A
V 4.1.1 20140912
[Link]
69 / 74
Glossaire
O
CODE
IMPLMENTATION
FONCTION
OBV
OBV(price)
ONCE
ONCE VariableName =
VariableValue
ONMARKET
ONMARKET
Open
Open[N]
OR
a OR b
Oprateur logique OU
P-Q
CODE
IMPLMENTATION
FONCTION
PIPVALUE
PipValue
PIPSIZE
PipSize
POINTVALUE
PointValue
POINTSIZE
PointSize
POSITIONPERF
PositionPerf(n)
POSITIONPRICE
PositionPrice
PRELOADBARS
PriceOscillator
PriceOscillator[S,L](price)
PositiveVolumeIndex
PriceVolumeIndex(price)
PVT
PVT(price)
QUIT
QUIT
V 4.1.1 20140912
[Link]
70 / 74
Glossaire
R
CODE
IMPLMENTATION
FONCTION
R2
R2[N](price)
Range
Range[N]
REM
REM comment
Repulse
Repulse[N](price)
RETURN
RETURN Result
ROC
ROC[N](price)
RSI
RSI[N](price)
ROUND
ROUND(a)
ROUNDEDUP
ROUNDEDUP
ROUNDEDDOWN
ROUNDEDDOWN
S
CODE
IMPLMENTATION
FONCTION
SAR
SAR[At,St,Lim]
SARatdmf
SARatdmf[At,St,Lim](price)
SELL
SELLSHORT
SET
SET
SHARES
SHORTONMARKET
SHORTONMARKET
SIN
Sin(a)
SGN
Sgn(a)
SMI
SMI[N,SS,DS](price)
SmoothedStochastic
SmoothedStochastic[N,K]
(price)
SQUARE
Square(a)
SQRT
Sqrt(a)
STD
STD[N](price)
V 4.1.1 20140912
[Link]
71 / 74
Glossaire
STE
STE[N](price)
Stochastic
Stochastic[N,K](price)
Ligne %K de la Stochastique
summation
summation[N](price)
Supertrend
SuperTrend[STF,N]
T
CODE
IMPLMENTATION
FONCTION
TAN
TAN(a)
TARGET
TEMA
TEMA[N](price)
THEN
Voir IF/THEN/ELSE/ENDIF
TICKSIZE
TICKSIZE
Time
Time[N]
TimeSeriesAverage
TimeSeriesAverage[N](price)
TO
Voir FOR/TO/NEXT
Today
Today
TomorrowOpen
AT (prix) TomorrowOpen
TotalPrice
TotalPrice[N]
TR
TR(price)
TRADEINDEX
TRADEINDEX(n)
TRADEPRICE
TRADEPRICE(n)
TRAILING
%TRAILING
$TRAILING
TriangularAverage
TriangularAverage[N](price)
TRIX
TRIX[N](price)
TypicalPrice
TypicalPrice[N]
V 4.1.1 20140912
[Link]
72 / 74
Glossaire
U
CODE
Undefined
IMPLMENTATION
a = Undefined
FONCTION
V
CODE
IMPLMENTATION
FONCTION
Variation
Variation(price)
Volatility
Volatility[S, L]
Volume
Volume[N]
Dsigne le volume
VolumeOscillator
VolumeOscillator[S,L]
VolumeROC
VolumeROC[N]
W
CODE
IMPLMENTATION
FONCTION
WeightedAverage
WeightedAverage[N](price)
WeightedClose
WeightedClose[N]
WEND
Voir WHILE/DO/WEND
WHILE/DO/WEND
WilderAverage
WilderAverage[N](price)
Williams
Williams[N](close)
Calcule le %R de Williams
WilliamsAccumDistr
WilliamsAccumDistr(price)
X
CODE
XOR
V 4.1.1 20140912
IMPLMENTATION
a XOR b
FONCTION
[Link]
73 / 74
Glossaire
Y
CODE
IMPLMENTATION
FONCTION
Year
Year[N]
Yesterday
Yesterday[N]
Z
CODE
IMPLMENTATION
FONCTION
ZigZag
ZigZag[Zr](price)
ZigZagPoint
ZigZagPoint[Zp](price)
Autres
CODE
FONCTION
CODE
FONCTION
Oprateur d'addition
<>
Oprateur de diffrence
Oprateur de soustraction
<
Oprateur de multiplication
>
<=
Oprateur d'infriorit
Oprateur d'galit
>=
Oprateur de supriorit
V 4.1.1 20140912
[Link]
74 / 74
[Link]