Bonsoir,
Comme annoncé lors de la revue de marché de mardi, voilà "une mise à jour" de la stratégie SHORTDax de Thomas(Bin oui, j'ai 6 ou 7 stratégies qui tournent donc cela évite à chaque fois de regardé le code pour savoir de quelle stratégie je parle).
Tout d'abord, je n'ai aucunement modifié les critères d'entrées et paramètres prit en compte dans la stratégie mais uniquement effectué une optimisation au niveau du SL et TP.
Plusieurs choses, le stratégie originelle de Thomas fonctionne très bien car en en faisant un backtest sur 100000UT m15 (juin 2018), nous pouvons nous apercevoir qu'elle est largement positive.
J'ai commencé a utilisé celle ci en tout début d'année(merci à lui!), et j'ai remarqué une série de perte pendant la recovery après crise COVID. J'ai donc décidé de regarder à ce moment s'il n'était pas possible d'y faire quelque-chose ayant comme postulat que la volatilité ayant augmenté, la distance SL et TP n'était plus judicieuse.
J'avais donc retenu de la suite des backtests que j'ai effectué, 3 versions différentes.
La premère a été la version 60*11 car nous parlons de SL et TP.
Voici le code:
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET
SET STOP pLOSS 60
set target pprofit 110
ENDIF
If shortonmarket and tradeprice - close > 10 and time>190000 then
exitshort at market
endif
If c3 and shortonmarket then
exitshort at market
endif
If not onmarket then
breakevenLevel=0
endif
startBreakevenShort1 = 10
PointsToKeepShort1 = -35
startBreakevenShort2 = 55
PointsToKeepShort2 = 10
IF ShortONMARKET AND tradeprice - close >= startBreakevenShort2 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort2
elsif tradeprice - PointsToKeepShort2 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort2
endif
elsif ShortONMARKET AND tradeprice - close >= startBreakevenShort1 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort1
elsif tradeprice - PointsToKeepShort1 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort1
endif
ENDIF
IF breakevenLevel > 0 THEN
exitshort AT breakevenLevel STOP
ENDIF
Cette version est sans grand intérêt puisqu'elle performe moins que la version originale.
Un plus gros gain max, mais un gain moyen diminué et un nombre de position perdante augmenté.
Le gain moyen par position gagnantes est également augmenté et le montant des pertes moyennes diminue.
Le drawdown diminue également.
Puis, sur une série d'autres backtest ou je prenais en compte la volatilité lié à la crise, j'ai trouvé cette version intérresante:
Je l'ai obtenu en augmentant le SL mais en augmentant largement aussi le TP, car elle offre un ratio de plus de 2/1.
Celle ci s'appelle 80*18, et voici le code:
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET
SET STOP pLOSS 80
set target pprofit 180
ENDIF
If shortonmarket and tradeprice - close > 10 and time>190000 then
exitshort at market
endif
If c3 and shortonmarket then
exitshort at market
endif
If not onmarket then
breakevenLevel=0
endif
startBreakevenShort1 = 10
PointsToKeepShort1 = -35
startBreakevenShort2 = 55
PointsToKeepShort2 = 10
IF ShortONMARKET AND tradeprice - close >= startBreakevenShort2 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort2
elsif tradeprice - PointsToKeepShort2 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort2
endif
elsif ShortONMARKET AND tradeprice - close >= startBreakevenShort1 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort1
elsif tradeprice - PointsToKeepShort1 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort1
endif
ENDIF
IF breakevenLevel > 0 THEN
exitshort AT breakevenLevel STOP
ENDIF
Sur cette version, le nombre de position gagnante par rapport à la version originale est stable, le ratio gains/pertes augmente ainsi que le gain moyen.
La perte max également(bin oui, forcément!) et de ce fait les pertes moyennes par positions perdantes.
Le gain moyen augmente considérablement, mais attention, le drawdown augmente!
Si vous retourné sur la courbe d'évolution des perfs, cette version correspond à la courbe bleue foncé et l(on s'apperçoit que cette version à eu des performances positives pendant la recovery(contrairement à la version originale).
Cependant, cette version n'est pas très progressive puisque elle augmente par escalier.
Cette version est sur la période backtesté, la plus perfromante de toutes les versions.
AH! POUR RAPPEL, LE BACKTEST EST EFFECTU2 AEVC UN k DE DEPART DE 3ke AVEC UN MINI CONTRAT DAX dans le but de faire la démonstration d'un tout tout petit capital dont la majorité d'entre enous peuvent se permettre(j'espère pour chacun).
Et voici une 3eme version(je ne sais plus si je l'ai déjà donné à Thomas, mais si ce n'est pa sle cas, je suis sûr qu'il m'excusera

), il s'agit de la version que j'utilise actuellement qui est la version 90*15 qui correspond à une version intermédiaire entre la version originale et la version suroptimisé 85*18.
Voici le code:
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
cvente = (close <= close[1]-5)
cjour = dayofweek<>5
c2= time=94500
c3= time=210000
// SHORT
IF cvente and cjour and c2 THEN
sellshort 1 CONTRACT AT MARKET
SET STOP pLOSS 85
set target pprofit 150
ENDIF
If shortonmarket and tradeprice - close > 10 and time>190000 then
exitshort at market
endif
If c3 and shortonmarket then
exitshort at market
endif
If not onmarket then
breakevenLevel=0
endif
startBreakevenShort1 = 10
PointsToKeepShort1 = -35
startBreakevenShort2 = 55
PointsToKeepShort2 = 10
IF ShortONMARKET AND tradeprice - close >= startBreakevenShort2 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort2
elsif tradeprice - PointsToKeepShort2 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort2
endif
elsif ShortONMARKET AND tradeprice - close >= startBreakevenShort1 THEN
if breakevenLevel=0 then
breakevenLevel = tradeprice - PointsToKeepShort1
elsif tradeprice - PointsToKeepShort1 < breakevenLevel then
breakevenLevel = tradeprice - PointsToKeepShort1
endif
ENDIF
IF breakevenLevel > 0 THEN
exitshort AT breakevenLevel STOP
ENDIF
En regardant la courbe de perf de cette version(grise et noire), on s'apperçoit que les résultats augementent encore un peu par escalier, elle est moins lissé que la version originale mais fonctionne également moins par palier que la version suroptimisé 80*18. Les gains totaux sont améliorés par rapport à la stratégie originale, elle a performé également pendant la période de volatilité, mais moins que la version suroptimisé 80*18.
C'est un peu la version 4*4 de toutes les versions.
C'est celle qui propse le plus de trade gagnant (86/152), le nombre de position gagnantes est très légèrement augmenté par rapport à la version originale, et la ratio gain/perte est quasiment identique, l'amélioration réside sans le fait d'un TP plus important que la version originale.
Par contre le drawdown augmente encore par rapport à la version suroptimisé 80*18.
Voilà.
Libre à chacun d'utilisé ,pour ceux qui le désire, la version qu'ils désirent et peut être de passer de l'une aux autres de ces versions en fonction des configurations de marché.
Sur compte démo bien sûr!
