Code « Breakout Minirange » (à améliorer)

Bonjour,

 

Voici une tentative de code sur breakout, sur un mini-range défini par quelques bougies.

Même si la stratégie n’est pas profitable, je la mets en ligne car elle semble quand même constituer une bonne piste de recherche.

Au début, j’avais tenté de définir un breakout sur bandes de Bollinger serrées, parabolic SAR, etc.

J’ai finalement trouvé plus profitable et intéressant de supprimer tout indicateur !

 

Les règles d’entrée sont simples, décrites dans le backtest.

Etrangement, en tentant de jouer un véritable breakout (clôture au-dessus ou en-dessous du canal, ou même ordre à seuil de déclenchement), ce n’et pas profitable.

J’ai donc modifié les règles, il n’y a pas de véritable breakout, on passe à l’achat où à la vente dès que le canal est constitué, si on a une bougie haussière ou baissière.

 

Le canal est défini par une amplitude inférieure à 10 pips, avec 6 bougies de 15 minutes dans le range, sur le CFD France 40 (c’est aussi profitable sur le DAX).
Trades seulement de 09H à 17H.

 

 

Voici le résultat du backtest SANS SPREAD

Backtest breakout minirange

 

 

 

Et voici le résultat du backtest AVEC SPREAD de 1 POINT : 

Backtest breakout minirange avec spread

 

 

CONCLUSION : 

Stratégie intéressante qui mérite d’être améliorée… car pour l’instant c’est clairement perdant !

 

 

 

Voici le code du BACKTEST : 

 

DEFPARAM CumulateOrders = False

n = 5
// DEFINITION DU CANAL
lc = 10 // largeur canal
nb = 6 // nombre de bougies du range

// ACHAT
Ctime = time >= 090000 and time < 170000
FOR i = 1 to nb
ca1 = highest[i](high) - lowest[i](low) <= lc
NEXT
ca2 = close > open

IF Ctime and ca1 and ca2 THEN
buy n shares at market
ENDIF

IF longonmarket and barindex - tradeindex > 5 THEN
sell at lowest[2](low) stop
ENDIF

// VENTE
Ctime = time >= 090000 and time < 170000
FOR i = 1 to nb
cv1 = highest[i](high) - lowest[i](low) <= lc
NEXT
cv2 = open > close

IF Ctime and cv1 and cv2 THEN
sellshort n shares at market
ENDIF

IF shortonmarket and barindex - tradeindex > 5 THEN
exitshort at highest[2](high) stop
ENDIF
Share Button