Bonjour, je n’ai pas trouvé comment trader 1% de capital à chaque nouvelle position lors d’un backtest, j’ai trouvé quelques infos ici et là mais ça concerne les stratégies qui ont un stop loss.
Je n’utilise pas de stop loss pour certaines stratégies, comment faire ?
Merci
Le code ci-dessous achète 1% de ton capital dans la valeur de l’instrument tradé :
defparam cumulateorders=false
StartCapital = 10000
//put strategy here
if rsi[14]crosses over 50 then
size = close/((startcapital+strategyprofit)*0.01)
buy size shares at market
set target pprofit 100
set stop ploss 50
endif
Merci !
En modifiant le “*0.01” en “0.02” ou “0.03” pour trader 2% ou 3% du capital il se trouve que mes stratégies trades beaucoup moins et donc gagne moins au final, comment ça se fait ?
Même en laissant à “0.01” j’ai beaucoup moins de trade, je passe de 460 trades au total avec le classique “buy 1 shares at market” à 270 en prenant 1%, si j’augmente le capital le nombre de trades baisse encore plus.
Autre question, faut il mettre la même valeur de startcapital que sur capital initial dans la fenêtre ou on choisis le spread, les frais, etc… pour être sur d’arriver à 1% ?
Car j’ai remarquer si je modifie l’un ou l’autre j’ai des résultat bien différents et aucun des 2 paramètres à l’air de prendre le pas sur l’autre.
Je ne connais pas le principe de tes stratégies, comment sont gérés les ordres, etc.. donc je ne peux pas répondre sur la quantité de trades, désolé.
Il faut en effet renseigner la variable StartCapital avec la même valeur que celle de ta fenêtre ProBacktest, car il n’y a pas de moyen de récupérer cette valeur par le code.
Dans l’exemple mis au dessus j’ai utilisé cette stratégie:
// Définition des paramètres du code
DEFPARAM CumulateOrders = false // Cumul des positions désactivé
startcapital = 10000
// Conditions pour ouvrir une position acheteuse
indicator1 = Average[200](close)
c1 = (close > indicator1)
indicator2 = RSI[2](close)
c2 = (indicator2 < 10)
IF c1 AND c2 THEN
size = close/((startcapital+strategyprofit)*0.01)
BUY size SHARES AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
indicator3 = Average[5](close)
c3 = (close > indicator3)
IF c3 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
c4 = (close < indicator1)
c5 = (indicator2 > 90)
IF c4 AND c5 THEN
SELLSHORT size SHARES AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
c6 = (close < indicator3)
IF c6 THEN
EXITSHORT AT MARKET
ENDIF
Stratégie qui nécessite ni stop loss ni take profit
Le calcul de la taille de position doit aussi être ajouté avant de prendre une position short, entre les lignes 26 et 27.
J’ai corriger, cependant j’ai toujours des trades qui disparaisse: 374 avec 1% contre 466 avec le classique “buy 1 shares at market”
J’ai regarder sur le graphique je vois bien qu’ils manquent des trades et ou ils sont mais je comprend juste pas pourquoi, les signaux sont bien les mêmes (forcément) mais certain ne sont pas pris sans raison apparente et dans les 2 cas les backtest vont jusqu’aux périodes défini finissant dans le positif.
Est-ce un bug ?
// Définition des paramètres du code
DEFPARAM CumulateOrders = false // Cumul des positions désactivé
startcapital = 10000
// Conditions pour ouvrir une position acheteuse
indicator1 = Average[200](close)
c1 = (close > indicator1)
indicator2 = RSI[2](close)
c2 = (indicator2 < 10)
IF c1 AND c2 THEN
size = close/((startcapital+strategyprofit)*0.01)
BUY size SHARES AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
indicator3 = Average[5](close)
c3 = (close > indicator3)
IF c3 THEN
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
c4 = (close < indicator1)
c5 = (indicator2 > 90)
IF c4 AND c5 THEN
size2 = close/((startcapital+strategyprofit)*0.01)
SELLSHORT size2 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position en vente à découvert
c6 = (close < indicator3)
IF c6 THEN
EXITSHORT AT MARKET
ENDIF