Code « End Of Day – YEN M15 »

Bonjour à tous,

.

Voici une évolution du code « End Of Day – USD/JPY ».

Merci à « Kevin » pour sa participation, à laquelle j’ai adjoint les variables pour les paires AUD/JPY, EUR/JPY et GBP/JPY, en plus de USD/JPY pour laquelle la stratégie est désignée.

.

(note : bug de backtest avec drawdown non mentionné, de mémoire il était d’environ 55.000).

.

Voici le code du BACKTEST :

// END OF DAY - YEN
// www.doctrading.fr

Defparam cumulateorders = false

// TAILLE DES POSITIONS
n = 1

// PARAMÈTRES
// Plus le "ratio" monte, moins il y a de positions
// AUD/JPY : ratio = 0.5 / SL = 0.8 / TP = 1.2 / Period = 12
// EUR/JPY : ratio = 0.6 / SL = 1 / TP = 0.8 / Period = 8
// GBP/JPY : ratio = 0.5 / SL = 0.6 / TP = 1 / Period = 8
// USD/JPY : ratio = 0.5 / SL = 1 / TP = 0.8 / Period = 12

ratio = 0.5

// HORAIRES
startTime = 210000
endTime = 231500
exitLongTime = 210000
exitShortTime = 80000

// STOP LOSS & TAKE PROFIT (%)
SL = 1
TP = 0.8

Period = 12

// BOUGIE REFERENCE à StartTime
if time = startTime THEN
amplitude = highest[Period](high) - lowest[Period](low)
ouverture = close
endif

// LONGS & SHORTS : tous les jours sauf vendredi
// entre StartTime et EndTime
if time >= startTime and time <= endTime and dayOfWeek <> 5 then
buy n shares at ouverture - amplitude*ratio limit
sellshort n shares at ouverture + amplitude*ratio limit
endif

// Stop Loss & Take Profit
set stop %loss SL
set target %profit TP

// Exit Time
if time = exitLongTime then
sell at market
endif
if time = exitShortTime then
exitshort at market
endif

.

Et une petite vidéo pour agrémenter tout cela :

.

MISE A JOUR :

« Calvin » a eu l’excellente idée d’y ajouter le momentum.
Il a optimisé le momentum pour la période récente.

On observe une diminution du drawdown de moitié, avec des performances brutes comparativement améliorées.

.

Voici le résultat (paire USD/JPY) :

.

Voici le code du BACKTEST :

// END OF DAY - YEN
// www.doctrading.fr
// + MOMENTUM (Calvin)

Defparam cumulateorders = false

// TAILLE DES POSITIONS
n = 1

// PARAMÈTRES
// Plus le "ratio" monte, moins il y a de positions
// USD/JPY : ratio = 0.4 / SL = 1 / TP = 0.8 / Period = 10

ratio = 0.4

// HORAIRES
startTime = 210000
endTime = 231500
exitLongTime = 210000
exitShortTime = 80000

// INDICATEUR MOMENTUM
OTa = Momentum[26]
c1a = OTa > OTa[11]
MLTa = Momentum[280]
c2a = MLTa > MLTa[20]
OTv = Momentum[4]
c1v = OTv < OTv[5]
MLTv = Momentum[180]
c2v = MLTv < MLTv[40]

// PRISES DE POSITION
CONDBUY = c1a and c2a
CONDSELL = c1v and c2v

// STOP LOSS & TAKE PROFIT (%)
SL = 1
TP = 0.8

Period = 10

// BOUGIE REFERENCE à StartTime
if time = startTime THEN
amplitude = highest[Period](high) - lowest[Period](low)
ouverture = close
endif

// LONGS & SHORTS : tous les jours sauf vendredi
// entre StartTime et EndTime
if time >= startTime and time <= endTime and dayOfWeek <> 5 and CONDBUY then
buy n shares at ouverture - amplitude*ratio limit 
endif 
if time >= startTime and time <= endTime and dayOfWeek <> 5 and CONDSELL then 
sellshort n shares at ouverture + amplitude*ratio limit
endif

// Stop Loss & Take Profit
set stop %loss SL
set target %profit TP

// Exit Time
if time = exitLongTime then
sell at market
endif
if time = exitShortTime then
exitshort at market
endif

.

MISE A JOUR : OPTIMISATION USD/JPY M15

Très belle augmentation du profit factor (> 4 depuis 2014, et même > 10 depuis 2018).

Diminution du drawdown permettant d’augmenter la mise.

Et petite suggestion de « Guillaume » : pas de trades non plus le dimanche, ce qui fait augmenter le profit factor et le taux de réussite.

.

Voici le code du BACKTEST :

//----------------------------------------------
// End Of Day - USD/JPY M15
// www.doctrading.fr
//----------------------------------------------

Defparam cumulateorders = false

// TAILLE DES POSITIONS
n = 1

// PARAMÈTRES
// Plus le "ratio" monte, moins il y a de positions
ratio = 0.64

// HORAIRES
startTime = 210000
endTime = 231500
exitLongTime = 210000
exitShortTime = 80000

// INDICATEUR MOMENTUM
OTa = Momentum[26]
c1a = OTa > OTa[11]
MLTa = Momentum[280]
c2a = MLTa > MLTa[20]
OTv = Momentum[4]
c1v = OTv < OTv[5]
MLTv = Momentum[180]
c2v = MLTv < MLTv[40]

// PRISES DE POSITION
CONDBUY = c1a and c2a
CONDSELL = c1v and c2v

// STOP LOSS & TAKE PROFIT (%)
SL = 1
TP = 0.8

Period = 12

// BOUGIE REFERENCE à StartTime
if time = startTime THEN
amplitude = highest[Period](high) - lowest[Period](low)
ouverture = close
endif

// LONGS & SHORTS : tous les jours sauf vendredi
// entre StartTime et EndTime
if time >= startTime and time <= endTime and dayOfWeek <> 5 and dayofweek<> 0 and CONDBUY then
buy n shares at ouverture - amplitude*ratio limit
endif
if time >= startTime and time <= endTime and dayOfWeek <> 5 and dayofweek<> 0 and CONDSELL then
sellshort n shares at ouverture + amplitude*ratio limit
endif

// Stop Loss & Take Profit
set stop %loss SL
set target %profit TP

//set stop loss amplitude * ratioSL

// Exit Time
if time = exitLongTime then
sell at market
endif
if time = exitShortTime then
exitshort at market
endif

.

VARIANTE

Olivier nous propose une version alternative : il y a une modification de la taille des positions en intégrant une gestion dynamique de la taille de position en cas de réinvestissement des gains. Le principe est progressif à la hausse et dégressif en cas de perte.

De ce fait : le profit factor augmente, les gains bruts aussi mais au détriment du drawdown, sur la même période de test.

A vous de voir.

.

Voici le code du BACKTEST :

//----------------------------------------------
// End Of Day - USD/JPY M15
// www.doctrading.fr
//----------------------------------------------
DEFPARAM CUMULATEORDERS = false
DEFPARAM PRELOADBARS = 3000
// VOTRE CAPITAL //
CapitalInitial = 250000 // <-- INDIQUEZ ICI VOTRE CAPITAL DE DEPART
CapitalReinvest = CapitalInitial+Strategyprofit // <-- (ne pas toucher)
// NOMBRE DE CONTRATS //
TailleContrat = 1 // <-- INDIQUEZ ICI AVEC COMBIEN DE CONTRAT VOUS VOULEZ TRADER. (minimum 1)
// REINVESTISSEMENT //

ReinvestActif = 1      //     0 : INACTIF  //  1 : ACTIF

// FORMULES DE TAILLE DE LOT DYNAMIQUE // (ne pas toucher)
If ReinvestActif = 0 then
nblot = taillecontrat
endif
if ReinvestActif = 1 then
nblot = (CapitalReinvest/CapitalInitial)*TailleContrat
endif
if nblot < 1 then
nblot = 1
endif

// PARAMÈTRES
// Plus le "ratio" monte, moins il y a de positions
ratio = 0.64

// HORAIRES
startTime = 210000
endTime = 231500
exitLongTime = 210000
exitShortTime = 80000

// INDICATEUR MOMENTUM
OTa = Momentum[26]
c1a = OTa > OTa[11]
MLTa = Momentum[280]
c2a = MLTa > MLTa[20]
OTv = Momentum[4]
c1v = OTv < OTv[5]
MLTv = Momentum[180]
c2v = MLTv < MLTv[40]

// PRISES DE POSITION
CONDBUY = c1a and c2a
CONDSELL = c1v and c2v

// STOP LOSS & TAKE PROFIT (%)
SL = 1
TP = 0.8
Period = 12
// BOUGIE REFERENCE à StartTime
if time = startTime THEN
amplitude = highest[Period](high) - lowest[Period](low)
ouverture = close
endif

// LONGS & SHORTS : tous les jours sauf vendredi
// entre StartTime et EndTime
if time >= startTime and time <= endTime and dayOfWeek <> 5 and dayofweek<> 0 and CONDBUY then
buy nblot contract at ouverture - amplitude*ratio limit
endif
if time >= startTime and time <= endTime and dayOfWeek <> 5 and dayofweek<> 0 and CONDSELL then
sellshort nblot contract at ouverture + amplitude*ratio limit
endif

// Stop Loss & Take Profit
set stop %loss SL
set target %profit TP

//set stop loss amplitude * ratioSL

// Exit Time
if time = exitLongTime then
sell at market
endif
if time = exitShortTime then
exitshort at market
endif
Share Button