Bonjour à tous,
Je me permets de mettre en ligne cet article, afin de répondre à une question qui m’est souvent posée : comment calculer automatiquement la taille d’une position à l’aide de lignes de code ?
Ceci est en effet indispensable dans le cas de la réalisation d’un backtest.
Pour cela, il nous faut distinguer 2 cas :
- stratégie n’utilisation pas de stop loss
- stratégie utilisant un stop loss
STRATEGIE N’UTILISANT PAS DE STOP LOSS
Prenons un exemple. vous utilisez une stratégie sur le CAC40, et comptez sur son comportement oscillatoire. Votre stratégie n’utilise pas de stop loss.
Admettons que vous ayez calculé la taille de vos positions afin que le drawdown n’excède pas 15% : la taille des mini contrats est définie à n = 3, soit 3 € le point de CAC40 par tranche de 10.000 € de capital.
En ce cas, le code pour calculer le nombre « n » de mini contrats à acheter (avec réinvestissement des gains / pertes) est :
capital = 10000 + strategyprofit // remarque : il s'agit du capital initial, auquel s'ajoute les profits / pertes en cours de la stratégie. Il s'agit donc de la balance n = round ( (capital / 10000) * 3) // "round" désigne la valeur arrondie
Si vous souhaitez un test sans réinvestissement des gains, cela donne tout simplement, pour 10.000 € de capital :
n = 3
D’où la formule que vous me voyez souvent utiliser :
REINV = 1 // 1 = réinvestissement des gains LEVIER = 3 // il ne s'agit pas d'un vrai levier, mais du nombre de contrats de base CAPITALinit = 10000 // capital initial IF REINV = 1 THEN CAPITAL = CAPITALinit + strategyprofit n = (CAPITAL / CAPITALinit) * LEVIER n = round(n) ELSE n = 1 // valeur minimale ENDIF
Vous pouvez rajouter, si n est inférieur à 1 :
IF n < 1 THEN n = 1 ENDIF
STRATEGIE UTILISANT UN STOP LOSS
C’est un cas différent, car ici il sera possible de :
- définir clairement le pourcentage de capital engagé
- définir clairement le montant de la perte en cas de stop loss touché
En ce cas, le code est différent.
Voici le code que j’ai mis au point.
A noter que vous retrouverez ce code sous de nombreuses autres formes, mais c’est le même principe. Vous pouvez bien entendu simplifier la formule de façon à ce que tout tienne en 3 lignes.
// PARAMETRES, à adapter selon les besoins CAPITALinit = 10000 // capital initial RisquePourc = 2 // risque en % dSL = 50 // distance au stop loss, en pips // TAILLE DES POSITIONS Capital = CAPITALinit + strategyprofit RisqueParTrade = round (Capital * RisquePourc * 0.01) RisqueParAction = RisqueParTrade / abs(close-dSL*pipsize) N = round (RisqueTrade / RisqueParAction) IF n < 1 THEN n = 1 ENDIF
On aurait très bien pu écrire, tout en une ligne, ainsi :
N = round (( CAPITALinit + strategyprofit) * RisquePourc * 0.01) / (abs(close - dSL * pipsize ))
BIEN ENTENDU…
Pour votre TRADING MANUEL, il sera plus simple d’utiliser un simple calculateur Excel, tel que j’en propose pour la Bourse et le Forex, au niveau de la page « Téléchargements » du site clubforex1.fr
A l’origine, j’avais publié une vidéo… la voici :