Bonjour à tous,
Je viens de me rendre compte d’un probléme de point entrés et de sortie différent entre le backtest sur 100 000 unités et la mise en application en réel.
Le programme est le suivant, issu des stratégies disponibles sur le site:
//-------------------------------------------------------------------------
// Code principal : ADX France 2'
//-------------------------------------------------------------------------
Defparam Cumulateorders = false
n = 0.5
periodDIPlus=5//15
periodDIMinus=12//12
periodADX=29//32
periodBoll=16//35
parametreADX=20//13.5
tailleLoss= 16//19
tailleProfit=18 //19
// Stops et objectifs
SET STOP pLOSS tailleLoss
SET TARGET pPROFIT tailleProfit
// ACHAT
ca1 = ADX[periodADX] > parametreADX
ca2 = DIplus[periodDIPlus](close) > DIminus[periodDIMinus](close)
ca3 = low < BollingerDown[periodBoll](close) and close > BollingerDown[periodBoll](close)
IF ca1 AND ca2 AND ca3 THEN
BUY n SHARES AT MARKET
ENDIF
// VAD
cv1 = ADX[periodADX] > parametreADX
cv2 = DIplus[periodDIPlus](close) < DIminus[periodDIMinus](close)
cv3 = high > BollingerUp[periodBoll](close) and close < BollingerUp[periodBoll](close)
IF cv1 AND cv2 AND cv3 THEN
SELLSHORT n SHARES AT MARKET
ENDIF
Lorsque j’ai mis en route le programme en réel cela me donne les trades suivants (voir trade réel)
Et le backtest sur 100 000 unités me donne le résultat suivant pour la même période (voir trade backtest)
Comment peut-on expliquer ce décalage?
Sachant que lorsque je me suis rendu compte de ce probleme, j’ai réalisé des backtest sur plusieurs unités et le resultat en réel et le backtest sur 100 unités devient alors coherent…
Je ne comprend de ou viens le probleme…
j’ai stoppé les algo….
Tout d’abord je préconise de placer les SET TARGET et SET STOP à la fin du code, après le lancement des ordres. Puisque le code est lu de haut en bas, une seule fois par chandelier, dans le cas présent tes takeprofit et stoploss ne seront placés sur tes ordres qu’à la barre suivante. Je le précise car je ne pense pas que c’est comme ça que tu as conçu la stratégie ?
Quelle est la taille du spread indiqué dans les backtests ? Celui-ci varie en fonction des heures de la journée, et notamment la nuit où il est plutôt élevé. Du slippage (décalage de prix positif ou négatif) peut également intervenir en temps réel.
Bonjour Nicolas,
Merci pour la rapidité de la réponse. Effectivement, je cherchais dans mon code ce qui pouvait poser problème, les évolutions de spreads peuvent effectivement expliquer ce décalage. Je n’avais pas du tout l’esprit sur ce point.
Je regarde cela plus attentivement!
Et merci pour le conseil de codage, j’ai l’habitude de mettre mes variables en début de programme…
Mathieu
Tu as raison pour la définition des variables en tête de code, je parlai des lignes 15 à 17 à placer tout en bas du code. Bon courage.
Nicolas,
Après vérification, je n’ai pas mis de spread. Je retombe sur mes pieds une fois inclus….
Donc je reprends l’optimisation des variables avec le spread…
Faut pas travailler trop tard, après on fait des bêtises…
Merci beaucoup pour ta réponse et tes conseils!!!!
Mathieu