ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests
Répondre • Page 1 sur 1

Guppy

par Folber » 23 oct. 2017 23:00

Hello
J'écrivais ce soir sur mon journal que je suis assez mauvais dans l'utilisation manuelle des indicateurs, que ce soit dans leur interprétation comme dans l'élaboration d'une stratégie.

Bref, je suis tombé sur ce qui semble être une stratégie classique et connue, celle de Daryl Guppy.
C'est du trading de tendance (si vous voulez plus d'infos : https://fr.wikipedia.org/wiki/Guppy :mrgreen: )(bon OK plus sérieusement : https://optionmag.fr/strategies/guppy/ ).

J'avais envie de la partager car elle a été assez rapide à coder, je n'ai qu'un seul paramètre d'optimisation (l'écartement entre le faisceau de MMs lentes et celui de MMs rapides), et sur le indice anglais 1h, elle est assez convaincante pour un premier jet.

Si jamais elle peut vous inspirez ...
Bonne soirée !
Spoiler:
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 080500
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 175500

// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0

lMMv1 = average[3](close)
lMMv2 = average[5](close)
lMMv3 = average[8](close)
lMMv4 = average[10](close)
lMMv5 = average[12](close)
lMMv6 = average[15](close)

lMMr1 = average[30](close)
lMMr2 = average[35](close)
lMMr3 = average[40](close)
lMMr4 = average[45](close)
lMMr5 = average[50](close)
lMMr6 = average[60](close)

lMMtrend = average[300, 0](close)

vMin = min(min(min(min(min(lMMv1,lMMv2),lMMv3),lMMv4),lMMv5),lMMv6)
vMax = max(max(max(max(max(lMMv1,lMMv2),lMMv3),lMMv4),lMMv5),lMMv6)

rMin = min(min(min(min(min(lMMr1,lMMr2),lMMr3),lMMr4),lMMr5),lMMr6)
rMax = max(max(max(max(max(lMMr1,lMMr2),lMMr3),lMMr4),lMMr5),lMMr6)

// Condition 1 : détection de la tendance
c1a = close > lMMtrend
c1b = close < lMMtrend

// Condition 2 : Toutes les bandes du même côté de la tendance
c2a = vMin > lMMTrend and rMin > lMMTrend
c2b = vMax < lMMTrend and rMax < lMMTrend

// Condition 3 : la plus basse vert dépasse la plus haute rouge
c3a = vMin > rMax + 10
c3b = vMax < rMin - 10


if longonmarket and not (c1a and c2a and c3a) then
// Changement de supertrend
sell at market
doClose = 1
elsif shortonmarket and not (c1b and c2b and c3b) then
// Changement de supertrend
exitshort at market
doClose = 1
endif

if c1a and c2a and c3a and (not onmarket or doClose) and not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
doClose = 0
elsif c1b and c2b and c3b and (not onmarket or doClose) and not daysForbiddenEntry THEN
SELLSHORT 1 SHARES AT MARKET
doClose = 0
ENDIF

// Stops et objectifs
SET STOP pLOSS 50
//SET TARGET pPROFIT xTP
backtest.JPG
backtest.JPG (109.11 Kio) Vu 1023 fois

Re: Guppy

par plataxis » 25 oct. 2017 00:20

Merci pour le lien : c'est vrai que c'est une belle config, très esthétique avec de jolies courbes dans tous les sens.

Bonne chance pour ton algo, c'est prometteur mais ça reste du backtest.

Re: Guppy

par trappiste73 » 25 oct. 2017 12:37

Chacun ses règles mais habituellement < 50% et 2, on ne retient pas un algo -même pas pour le retravailler. Le drawdown et la plus grosse perte sont correctes par contre.

Pour donner un ordre d'idées, un algo sur lequel je travaille en ce moment, optimisation en cours.
Capture2510.PNG
Capture2510.PNG (167.96 Kio) Vu 950 fois

Re: Guppy

par Folber » 25 oct. 2017 20:58

@plataxis : même conclusion :) c'est joli et donc facilement compréhensible pour moi. Je ne sais pas si je vais la creuser, mais j'avais envie de partager le code, car la stratégie semble assez abordable, le code simple et que, je trouve, on ne partage pas souvent son code sur le forum. Alors que je suis sûr qu'on pourrait s'entr'aider à coup d'astuces bien senties

@Trappiste : Pour ma part j'accepte un taux de réussite plus faible et un ratio également pour peu que le DDM soit correct vis à vis d'un nombre conséquent d'opérations.
Je n'ai eu que 3 fois des résultats comme ceux que tu montres :
* En oubliant de cocher le mode "tick par tick"
* En utilisant l'indicateur DPO, qui est calculé avec 10minutes de retard (donc il a toujours raison en backtest :))
* Avec un échantillon d'une poignée de trades

Re: Guppy

par trappiste73 » 26 oct. 2017 08:36

Attention Folber, mon graphique, c'est du backtest et certainement pas du réel : il n'est pas en fonctionnement, entre autres à cause du ratio nombre d'ordres/temps sur le marché pas bon du tout. Pour le reste, c'est sur 10.000u et c'est aussi un résultat avant calcul du spread qui détériore fortement les ratios.
Mais le backtest du Guppy me paraît largement insuffisant.
Sinon tu trouveras des centaines de code ici : https://www.prorealcode.com/library/

Re: Guppy

par Alex44 » 26 oct. 2017 13:19

Ah je connais bien prorealcode, lorsque j'étais à cours d'idée je suis parti explorer d'autres codes... cela peut être intéressant pour trouver des techniques de développement surtout. Par contre malgré enormement de backtests incroyable, je n'ai jamais vu un algo qui tienne la route plus d'une semaine en démo :hein: , donc à ne pas reprendre aveuglement il vaut mieux faire l'effort de réaliser ses propres algos.

Re: Guppy

par Folber » 26 oct. 2017 20:39

@Mat : oui en effet. Mais comme dit plus haut, j'ai eu envie de la partager car c'est la première fois que j'ai un backtest verdoyant après quelques minutes de codes, et sur une période de 3 ans malgré tout. Encore une fois, elle est là pour inspirer.
Si les conditions d'entrées collent à la stratégie, les conditions de sortie peuvent être travaillées.

Re: Guppy

par trappiste73 » 27 oct. 2017 08:31

En tout cas merci pour le partage. ;)

Re: Guppy

par Jim » 28 oct. 2017 16:10

Folber, merci pour le partage.
Ton post m'a amené à m'intéresser au Guppy, car je suis en train de mettre au point un système de suivi de tendance en intraday.

J'ai lu que Guppy indique que pour automatiser sa stratégie, le mieux est de faire la somme des MM courtes et des MM longues. Ca devrait donc augmenter la durée des trades et la fréquence des signaux.