Une stratégie « utopique » sur points pivot

Bonjour à tous,

Pour vous ce jour, j’ai choisi de vous montrer qu’il n’est pas toujours aisé (et même très difficile !) de mettre en place une stratégie efficace en automatique, même avec un indicateur simple.

 

Prenons l’exemple des points pivot.

En apparence, il s’agit d’un indicateur simple à coder (ce qui est vrai), et on devrait pouvoir réaliser des stratégies simples et efficaces avec.

Je vous en présente une.

 

Nous considérons le point pivot journalier, et le point pivot hebdomadaire.

Nous jouons les rebonds entre ces 2 points pivot.

 

En effet : 

– si le cours est > PP hebdo et < PP journalier, on entre short au PP journalier

– si le cours est < PP hebdo et > PP journalier, on entre long au PP journalier

On entre donc avec un ordre « limit ».

 

take profit réduit : 6 pips.

stop loss 30 pips.

clôture des trades à 22 heures.

C’est tout.

 

 

Voici le code d’un premier BACKTEST :

 

Defparam cumulateorders = false
n = 3

// POINT PIVOT HEBDOMADAIRE
IF dayofweek < dayofweek[1] THEN
weekhigh = prevweekhigh
weeklow = prevweeklow
weekclose = prevweekclose
prevweekhigh = high
prevweeklow = low
ENDIF
prevweekhigh = max(prevweekhigh, high)
prevweeklow = min(prevweeklow, low)
prevweekclose = close

PPWeek = (weekhigh + weeklow + weekclose) / 3

// POINT PIVOT JOURNALIER
IF dayofweek = 1 THEN
dayhigh = DHigh(2)
daylow = DLow(2)
dayclose = DClose(2)
ENDIF

IF dayofweek >=2 and dayofweek < 6 THEN
dayhigh = DHigh(1)
daylow = DLow(1)
dayclose = DClose(1)
ENDIF

PPDay = (dayhigh + daylow + dayclose) / 3

Ctime = time >= 070000 and time <= 180000

IF Ctime and PPDay > PPWeek and close < PPDay and not shortonmarket THEN
sellshort n shares at PPDay limit
ENDIF

IF Ctime and PPDay < PPWeek and close > PPDay and not longonmarket THEN
buy n shares at PPDay limit
ENDIF

set target profit 0.0006

IF time >= 200000 or time < 070000 THEN
sell at market
exitshort at market
ENDIF


Voici le résultat du backtest

(avec spread de 1.2 point, pour la paire EUR/USD) :

points pivot stratégie utopique

 

En apparence, la stratégie paraît « parfaite », effectivement.

Lorsque vous observez une telle courbe « flawless, trop parfaite », vous devez immédiatement penser qu’il y a anguille sous roche !!

En effet, si vous regardez de plus près, le backtest n’est pas fiable.

En effet, sur certaines bougies, le stop loss et le take profit sont touchés en même temps.

Ou alors, le take profit est touché alors que la bougie est en sens contraire !

Et pour l’instant ProRealTime ne peut déterminer si le SL ou le TP est touché avant, ou même si le sens de la bougie est inapproprié, il compte donc toujours le take profit.

 

Voici un exemple : qui me dit que sur ce trade à l’achat le take profit aurait été touché, étant donné que la bougie est orientée vers le mauvais sens 

 

exemple trade faussé

Donc le résultat du backtest est complètement faussé !!

 

Pour ne pas le fausser, nous allons mettre en route une autre condition.

On ne peut sorti de condition QUE après au moins une bougie suivant la bougie d’entrée.

 

 

Voici le code du BACKTEST : 

(le code est le même, sauf au niveau de ce qui a été mis en rouge)

 

Defparam cumulateorders = false
n = 3

// POINT PIVOT HEBDOMADAIRE
IF dayofweek < dayofweek[1] THEN
weekhigh = prevweekhigh
weeklow = prevweeklow
weekclose = prevweekclose
prevweekhigh = high
prevweeklow = low
ENDIF
prevweekhigh = max(prevweekhigh, high)
prevweeklow = min(prevweeklow, low)
prevweekclose = close

PPWeek = (weekhigh + weeklow + weekclose) / 3

// POINT PIVOT JOURNALIER
IF dayofweek = 1 THEN
dayhigh = DHigh(2)
daylow = DLow(2)
dayclose = DClose(2)
ENDIF

IF dayofweek >=2 and dayofweek < 6 THEN
dayhigh = DHigh(1)
daylow = DLow(1)
dayclose = DClose(1)
ENDIF

PPDay = (dayhigh + daylow + dayclose) / 3

Ctime = time >= 070000 and time <= 180000

IF Ctime and PPDay > PPWeek and close < PPDay and not shortonmarket THEN
sellshort n shares at PPDay limit
ENDIF

IF Ctime and PPDay < PPWeek and close > PPDay and not longonmarket THEN
buy n shares at PPDay limit
ENDIF
IF onmarket and barindex - tradeindex >= 1 THEN 
exitshort at tradeprice - 0.0006 limit 
sell at tradeprice + 0.0006 limit 
ENDIF 

IF time >= 200000 or time < 070000 THEN 
sell at market 
exitshort at market 
ENDIF 


Et voici le résultat : 

points pivot courbe corrigée

 

 

Tout de suite, ça fait mal…

Le rêve s’est envolé bien vite !

 

Vous comprenez pourquoi il est si difficile de mettre en place une stratégie de day trading, sur des petites unités de temps…

C’est beaucoup plus facile sur les unités 4H ou Daily.

 

D’ailleurs mes propres algorithmes s’exécutent en graphiques journaliers ; et honnêtement je me demande on arrivera un jour à faire plus performant qu’eux, sur les petites unités de temps…

Car il ne faut pas non plus oublier le spread, qui a beaucoup plus d’impact sur les petites unités de temps.

 

 

CONCLUSION : 

Vous observez ici un des exemples de difficultés qu’on peut avoir à mettre au point une stratégie de trading efficace.
Alors, de là à passer en automatique…

HEUREUSEMENT, mieux vaut backtester une stratégie auparavant, plutôt que de se lancer dedans à corps perdu, et d’y laisser toutes ses plumes… ou son porte-monnaie.

 

 

En tout cas, si vous pensez avoir des stratégies performantes à me soumettre, ou des idées intéressantes, n’hésitez pas à me contacter.

A bientôt,

 

 

MISE A JOUR du 20/11/17 

L’article suivant vous montrera un exemple concret de backtest surestimé et faussé…

 

Share Button