ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...
Répondre • Page 1 sur 1

Backtester à levier constant

par plataxis » 28 déc. 2015 23:42

Bonjour,

Je me demandais s'il était possible de maintenir un levier constant dans les backtests : j'ai tenté à partir de la variable "strategyprofit" mais il semble qu'elle reste à 0 dans les backtests :

Code : #

// capital initial
capital = 2000
levier = 5

//Définition du nombre de titres
TaillePosition = (capital+strategyprofit) * levier / close
Spoiler:

Code : #

// On ne charge pas de données avant le démarrage du système.
// Ainsi, le premier jour, si le système est lancée dans l'après midi,
// il attendra le lendemain pour éventuellement définir les ordres d'achat et de vente.
DEFPARAM PreLoadBars = 0
// La position est clôturée à 19h45, heure française
DEFPARAM FlatAfter = 194500
// Aucune nouvelle position prise après le chandelier qui clôture à 17h
HeureLimite = 170000
// L'analyse du marché commence avec le chandelier 15 minutes qui clôture à 9h15
HeureDebut = 091500
// Les journées du 24 et 31 décembre sont exclues car la bourse ferme avant 19h45
IF Month = 12 AND (Day = 24 OR Day = 31) THEN
JourTrading = 0
ELSE
JourTrading = 1
ENDIF
// Les variables qui peuvent être adaptées selon ses préférences

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

// capital initial
capital = 2000
levier = 5

//Définition du nombre de titres
TaillePosition = (capital+strategyprofit) * levier / close

// On initialise cette variable une seule fois au démarrage du système
ONCE DebutJourneeTrading = -1
// Les variables qui peuvent évoluer en journée sont initialisées
// à la première barre de chaque nouvelle journée de bourse
IF (Time <= HeureDebut AND DebutJourneeTrading <> 0) OR IntradayBarIndex = 0 THEN
SeuilAchat = 0
SeuilVente = 0
PositionAchat = 0
PositionVente = 0
DebutJourneeTrading = 0
ELSIF Time >= HeureDebut AND DebutJourneeTrading = 0 AND JourTrading = 1 THEN
// On stocke l'indice de la première barre de la journée de bourse
IndexDebutJournee = IntradayBarIndex
DebutJourneeTrading = 1
ELSIF DebutJourneeTrading = 1 AND Time <= HeureLimite THEN
// Pour chaque jour de bourse, nous déterminons toutes les 15 minutes
// la valeur la plus haute et la plus basse de l'instrument depuis HeureDebut
// tant que les seuils d'achat et de vente ne sont pas définis
IF SeuilAchat = 0 OR SeuilVente = 0 THEN
NiveauSuperieur = Highest[IntradayBarIndex - IndexDebutJournee + 1](High)
NiveauInferieur = Lowest [IntradayBarIndex - IndexDebutJournee + 1](Low)
// Calcul de l'écart entre la valeur la plus haute
// et la plus basse de l'instrument depuis HeureDebut
EcartJour = NiveauSuperieur - NiveauInferieur
// Calcul de l'écart minimal souhaité pour considérer une cassure par les prix
// de la valeur la plus haute ou la plus basse comme une cassure significative
EcartMin = EcartJour * PourcentageMin / 100
// Calcul des seuils d'achat et de vente pour la journée si les conditions sont remplies
IF EcartJour <= AmplitudeMax THEN
IF SeuilVente = 0 AND (Close - NiveauInferieur) >= EcartMin THEN
SeuilVente = NiveauInferieur + DistanceOrdre
ENDIF
IF SeuilAchat = 0 AND (NiveauSuperieur - Close) >= EcartMin THEN
SeuilAchat = NiveauSuperieur - DistanceOrdre
ENDIF
ENDIF
ENDIF
// Création des ordres d'achat et de vente à découvert pour la journée
// si les conditions sont remplies
IF SeuilVente > 0 AND SeuilAchat > 0 AND (SeuilAchat - SeuilVente) >= AmplitudeMin THEN
IF PositionAchat = 0 THEN
IF LongOnMarket THEN
PositionAchat = 1
ELSE
BUY TaillePosition CONTRACT AT SeuilAchat STOP
ENDIF
ENDIF
IF PositionVente = 0 THEN
IF ShortOnMarket THEN
PositionVente = 1
ELSE
SELLSHORT TaillePosition CONTRACT AT SeuilVente STOP
ENDIF
ENDIF
ENDIF
ENDIF
// Définition des conditions de sortie du marché lorsqu'une position d'achat
// ou de vente à découvert est prise
IF LongOnMarket AND ((Time <= HeureLimite AND PositionVente = 1) OR Time > HeureLimite) THEN
SELL AT SeuilVente STOP
ELSIF ShortOnMarket AND ((Time <= HeureLimite AND PositionAchat = 1) OR Time > HeureLimite) THEN
EXITSHORT AT SeuilAchat STOP
ENDIF
// Définition d'un risque maximummal de pertes par position
// en cas d'évolution défavorable du prix de l'instrument
SET STOP PLOSS AmplitudeMax

Re: Backtester à levier constant

par Benoist Rousseau » 28 déc. 2015 23:51

oui c'est possible, je reste en levier 2 constant sur mon trading auto, mon nombre de lots diminue si je perds et il augmente si je gagne pour toujours resté sur un levier de 2

je n'ai pas le code sous les yeux je suis en vacances si personne ne poste je te le passerai la semaine prochaine quand je serai chez moi

Re: Backtester à levier constant

par plataxis » 18 janv. 2016 22:05

Je veux bien le code si tu repasses par là. :merci:

Re: Backtester à levier constant

par pharaon » 30 janv. 2016 16:03

Je pense qu'il te manque seulement un round :
TaillePosition = round((capital+strategyprofit) * levier / close)

Actuellement, la taille de ta position n'est pas une valeur entière.

Re: Backtester à levier constant

par Amarantine » 30 janv. 2016 18:19

Merci pharaon pour ta réponse à plataxis.
Si toutefois tu repasses par ici et que tu veux te joindre à nous, merci de te présenter ici:
presentation-des-membres.html
Nous serons ravis de t'accueillir.

Re: Backtester à levier constant

par plataxis » 30 janv. 2016 20:07

Merci pharaon,

Effectivement prt n'aime pas les décimales de contrat, et pour cause : c'est prévu pour des futurs, pas pour des cfd à risque limité... Ceci dit dans la dernière version que j'ai testé je n'ai pas arrondi et ça a fonctionné (prt a arrondi sans que je le lui demande), donc je ne sais pas ce qui n'allait pas dans le code ci-dessus.

Comme t'y invite Amarantine, joins-toi à nous :)

Sujets similaires
Constant Volume Bar
par bruno974 » 15 juin 2021 14:14 (0 Réponses)
Stratégie et programmation d'algorithme pour la backtester
Fichier(s) joint(s) par falex » 12 juin 2015 23:12 (9 Réponses)
Demande "taquapick" pour backtester une stratégie
par Amarantine » 10 févr. 2016 19:02 (8 Réponses)
Comment backtester sur des anciennes périodes de temps
par Canarich » 01 juil. 2020 12:00 (6 Réponses)
étudier les petites ut pour backtester des setup ?
par Francis1 » 29 mai 2022 23:28 (3 Réponses)
Backtester une gridbot strategy
par Benoist Rousseau » 15 mars 2023 08:50 (1 Réponses)
qui peut me calculer les pertes par rapport a un levier
par Amarantine » 01 avr. 2012 22:50 (21 Réponses)