Backtesting horaire

Forum d'entraide ProRealTime : prise en main, réglages, indicateurs, programmation ProBuilder et ProOrder, astuces entre utilisateurs de la plateforme.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Backtesting horaire

Message non lu par falex »

Hello,

Pour ne pas trop "polluer" le forum Day trading et après discutions avec RogCas, j'initie une fil de discutions pour parler uniquement des backtests et des stratégies que j'ai proposé.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Stratégie DAX UT15 TRENDY Recherche de l'heure d'entrée

Le code ci-dessous cherche le point d'entrée optimal (jour et heure) en fonction du StopWin.
L'entrée se fait sur les horaires du cash (9h00 / 17h30)
La sortie se fait soit sur StopWin soit sur Time stop à 17h30 (GMT+1)

Méthodologie d'analyse de l'optimisation
Pour choisir le bon jour et le bon horaire :
Je tri par "jour"
Pour chaque jour je regarde les horaires qui ont le plus grand gain, je clique dessus pour voir la forme de l'équity-curve et arbitrairement j'élimine celle-qui ne sont pas régulière ou avec n creu en début/milieu/fin trop marqué
En // sur Excel je note les valeur des Drawndow (disponible dans la fenêtre rapport), le % de trade gagant, le gain. ça aide aussi à choisir sans être influencé par la ligne de gain.

Une fois que j'ai arrêté mon choix, je prend le premier code posté, et je rentre pour chaque jour, l'horaire choisi et le SW correspondant.
et je regarde si la sommes des X (de 1 à 5) tests vont bien ensemble et dans le bon sens (croissance la plus rectiligne possible)

Variables (la casse est importante)
- minutes de 0 à 45 par pas de 15 (ne pas oublier de changer la condition <0)
- heures de 7 à 16 par pas de 1
- jour de 1 à 5 par pas de 1
- SW de 5 à 20 par pas de 5 (ou 1 si tu as le courage)

Code : #

//Achat Trendy sur quelle barre et jour ?
    //Variables
    //heures = 14
    //minutes = 45
    once pos = 1
    //SW = 9

    //Traitement de l'entrée
    if (hour = heures and minute = minutes) and (jour = dayofweek) then
        if close < open  then //bougie rouge
            sellshort pos share at market thisbaronclose
        elsif close > open then //bougie verte
            buy pos share at market thisbaronclose
        endif
    endif

    //Traitement Sortie
    //Ajustement en NIGHT pour tenir compte du spread plus élevé
    horaireFut = (time >=070000) AND (time <=204500) //horaire d'ouverture des futurs et donc du spread 1,2/2,2 entre 8h et 22h heure GMT+1
    if horaireFut then
    //Stop Win sur Long
        sell countofposition share at (ENTRYQUOTE + SW) LIMIT
    //Stop Win sur Short
       exitshort countofposition share at (ENTRYQUOTE - SW) LIMIT
    endif

    //stop sur la barre de 16h15
    If time = 161500 then
            sell countofposition share at market thisbaronclose
            exitshort  countofposition share at market thisbaronclose
    endif
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Stratégie DAX UT15 CONTRARIANT Recherche de l'heure et du jour d'entrée

Variables
- minutes de 0 à 45 par pas de 15 (ne pas oublier de changer la condition <0)
- heures de 7 à 16 par pas de 1
- jour de 1 à 5 par pas de 1
- SW de 5 à 20 par pas de 5

Code : #

    //Achat Contrariant sur quel barre et jour ?

        //Variables
        //heures = 14
        //minutes = 45
        once pos = 1
        //SW = 9

        //Traitement de l'entrée
        if (hour = heures and minute = minutes) and (jour = dayofweek) then
            if close > open  then //bougie verte
                sellshort pos share at market thisbaronclose
            elsif close < open then //bougie rouge
                buy pos share at market thisbaronclose
            endif
        endif

        //Traitement Sortie
        //Ajustement en NIGHT pour tenir compte du spread plus élevé
        horaireFut = (time >=070000) AND (time <=204500) //horaire d'ouverture des futurs et donc du spread 1,2/2,2 entre 8h et 22h heure GMT+1
        if horaireFut then
        //Stop Win sur Long
            sell countofposition share at (ENTRYQUOTE + SW) LIMIT
        //Stop Win sur Short
           exitshort countofposition share at (ENTRYQUOTE - SW) LIMIT
        endif

        //stop sur la barre de 16h15
        If time = 161500 then
                sell countofposition share at market thisbaronclose
                exitshort  countofposition share at market thisbaronclose
        endif
Avatar du membre
Amarantine
Modératrice
Messages : 75524
Enregistré le : 16 sept. 2011 19:12

Re: Backtesting horaire

Message non lu par Amarantine »

falex a écrit :Hello,

Pour en pas trop "polluer" la forum Day trading et après discutions avec RogCas, j'initie une fil de discutions pour parler uniquement des backtests et des stratégies que j'ai proposé.
Excellente initiative falex. Je pensais justement à te le proposer en fin de semaine si tu avais continué sur les backtests (les nouveaux inscrits postent parfois énormément au début, puis disparaissent très vite :( )
Et merci pour cette discussion qui a l'air de passionner pas mal de membres.
:bravo: Allez les amis! http://www.servimg.com/image_preview.php?i=2549&u=11654795 :lol:
Avatar du membre
DéBé
Apprenti Jedi
Messages : 645
Enregistré le : 30 janv. 2012 12:12

Re: Backtesting horaire

Message non lu par DéBé »

Falex va-t-il devenir pédagogue ?
Nous le saurons au prochain numéro :lol:

Et pour ta peine, un p'tit dessin ;)
Fichiers joints
202_desactive.jpg
202_desactive.jpg (63.61 Kio) Vu 4033 fois
Avatar du membre
VinceMan
Compagnon Jedi
Messages : 1963
Enregistré le : 08 juil. 2012 09:50

Re: Backtesting horaire

Message non lu par VinceMan »

Bonjour Falex,

Je te suit de prés ^^
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

@Vinceman : as-tu regardé pour ton historique disponible ?
Avatar du membre
VinceMan
Compagnon Jedi
Messages : 1963
Enregistré le : 08 juil. 2012 09:50

Re: Backtesting horaire

Message non lu par VinceMan »

oui, sur mt4 mais c'est ridicule en fait, il n'y a que 3 mois d'histo DAX pas gérable.

De plus j'ai noté des différences de couleur de barres en UT 5 min par rapport à IG et ça ne me plait pas des masses...
Avatar du membre
Rogue
Membre du Conseil Jedi
Messages : 16531
Enregistré le : 05 févr. 2013 18:44

Re: Backtesting horaire

Message non lu par Rogue »

Allez hop c'est parti pour DAX UT15 TRENDY... la bécane tourne, résultats :

Meilleure performance (en terme de gain) :

% gain : +77.35%
Nbre de trades : 119
% de trades gagnants : 69.75%
Gain moyen : 65
Minutes : 15
Heures : 10
Jour : 2
SW : 20

Démarrage de l'échantillon : 27/09/2010

Tu fais la traduction pratique falex ? :mrgreen:
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Est-ce que tu pourrais faire une copie d'écran du tableau de résultat ?
Tu es en GMT ou en GMT+1 sur PRT ? -> Pas d'incidence, le résultat est forcément en GMT, je viens de faire le test.

119 trade ? sachant qu'il y a environ 49 à 52 jours de trade depuis 2010 ça devrait tourner à quelque chose comme :
3 * 50 = 150 trade, Ah mais non l'échantillon commence au mois de septembre 2010, donc 119 ok, c'est fous ça fait à peine le double.

Ou alors est-ce que tu peux trier par "Jour" et donner les 3 plus gros gains par jour s'il te plait ?

Dans le backtest sur IG avec 12 mois d'historique en J2 la meilleur perf était obtenu à 8:15 (GMT).
Je vais refaire tourner de mon côté et regarder ce qui sort en J2 10:15 SW 20
En faisant tourner J2 10:15 SW 20 TRENDY sur 1 an j'obtiens : -65pts de gain, 66% de trade gagnant, ...

En triant par ordre décroisant des gain j'ai dans le top 3 :
8:15 SW 20
8:15 SW 15
8:15 SW 10
puis 12:15 SW 20


Est-ce que l'écart est du au fait que tu backtest sur l'Index, ? ça peut influencer ... à creuser
Ou alors est-ce que PRT calcul de la même manière les gains sur Index, pas sur ... je regarde comment vérifier ces points de mesure
Avatar du membre
Rogue
Membre du Conseil Jedi
Messages : 16531
Enregistré le : 05 févr. 2013 18:44

Re: Backtesting horaire

Message non lu par Rogue »

Hello, je viens de rentrer, ce petit break m'a fait du bien... du coup je me suis rendu compte que j'avais fait tourner la macro sur le Future CAC et non le DAX. Ah la la fatigue mentale quand tu nous tiens !

Bon, je viens de finir sur le CASH DAX, et c'est pas fameux-fameux...

Meilleure perf en gain : +11,70%
196 trades
73,47% de trades gagnants
5,97 de gain moyen
minutes : 15
heures : 10
jour : 2
SW : 20

Début historique : 30 avril 2009
Petit problème : en juin 2009 tu es à -9900 environ... avant de remonter

Copie du rapport d'optimisation :
DAX_TRENDY.JPG
DAX_TRENDY.JPG (217.03 Kio) Vu 2620 fois
Avatar du membre
Rogue
Membre du Conseil Jedi
Messages : 16531
Enregistré le : 05 févr. 2013 18:44

Re: Backtesting horaire

Message non lu par Rogue »

Et hop, DAX CONTRARIANT :
DAX_CONTRARIANT.JPG
DAX_CONTRARIANT.JPG (198.84 Kio) Vu 2614 fois
Dis-moi falex, tu penses que ces résultats sont normaux ?

Déjà, tu n'attaques que très peu le capital de départ, c'est mieux que TRENDY... mais pas fameux encore. :?
Avatar du membre
VinceMan
Compagnon Jedi
Messages : 1963
Enregistré le : 08 juil. 2012 09:50

Re: Backtesting horaire

Message non lu par VinceMan »

My 2 cents :
Ces résultats sont plus qu'intéressant, ceci dit je persite et je signe :
comportement le matin <> comportement l'apres midi <> comportement toute la journée

A mon avis tu auras de bien meilleurs résultats en ne mettant pas 161500 (16h15 GMT) comme heure de sortie mais 123000 (12h30 GMT) soit 1 heure avant le premier afflux d'opérateurs US sur futures.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

oui l'écart me semble bizare, instinctivement j'aurais tendance à penser qu'une année doit être proche d'une autre. Surtout ce que je trouve bizare ce n'est pas trop le fait que l'heure et le jour soit différent mais plutôt les écarts de gain ...

On va déjà vérifier un point si tu veux bien :
Est-ce que tu peux refaire tourner le backtest en mettant comme 1er jour : 23 ou 24 février 2012 ? (Dans la fenêtre où il y a le code du backtest, en bas)
ça permettra déjà de comparer avec les données d'IG.

Ensuite il y a effectivement l'idée de Vinceman à creuser aussi.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Hello, breack aujourd'hui : pas de trade et je prend le temps de la réflexion et de reposer mes neuronnes.

Une autre constante que j'observe dans mes backtests et qui reprend un peu le débat sur un autre fil :
Si on cherche un TP élevé cela a pour conséquence direct :
- Le gain potentiel est élevé (10 * 52 sera toujours plus petit que 80 * 52)
- Le pourcentage de trade gagnant est toujours plus faible
- Le SL est un vrai souci : souvent plus il est élevé plus le trade a de chance d'être gagnant.
Avatar du membre
DéBé
Apprenti Jedi
Messages : 645
Enregistré le : 30 janv. 2012 12:12

Re: Backtesting horaire

Message non lu par DéBé »

falex a écrit :... je prend le temps de la réflexion et de reposer mes neurones.
Heureux pour toi de savoir que tu en possèdes :lol:
Avatar du membre
Rogue
Membre du Conseil Jedi
Messages : 16531
Enregistré le : 05 févr. 2013 18:44

Re: Backtesting horaire

Message non lu par Rogue »

Et hop, retour dans la partie (je trade pas hein, je m'amuse à backtester les strats de falex...) !

Je vais tout recommencer à zéro, histoire d'être sûr de bien tout faire comme il faut et pas me faire taper sur les doigts par falex ! :mrgreen:
Avatar du membre
Rogue
Membre du Conseil Jedi
Messages : 16531
Enregistré le : 05 févr. 2013 18:44

Re: Backtesting horaire

Message non lu par Rogue »

Résultats pour le DAX CONTRARIANT UT15 depuis le 23/02/2012 :
DAX_CONTRARIANT_022012.JPG
DAX_CONTRARIANT_022012.JPG (183.11 Kio) Vu 2590 fois
Et hop ! :musique:
Avatar du membre
Rogue
Membre du Conseil Jedi
Messages : 16531
Enregistré le : 05 févr. 2013 18:44

Re: Backtesting horaire

Message non lu par Rogue »

Partant de ton idée instinctive qu'une année ressemblait à une autre, je te post ci-dessous le résultat du BT sur les dates suivantes (de haut en bas) :
23/05/2011 - 22/05/2012
13/09/2010 - 12/09/2011
01/01/2010 - 31/12/2010
DAX_CONTRARIANT_Annuel.JPG
DAX_CONTRARIANT_Annuel.JPG (165.33 Kio) Vu 2589 fois
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Je ne tape personne, je vous rassure. Merci pour ton aide.

Oui Débé, il m'en reste encore quelques un après toutes ces années à faire fonctionner ma pauvre cervelle :-)

Merci RogCas.
1er analyse : Comme ton échantillonage est de type "Index" il faut obligatoirement éliminer les trades qui sont ouvert sur les barres de 16h30 et 16h45 car il ne "joue" pas de la même manière, j'explique :
Tous les trades initié avant 16:15 sont fermé à la cloture du cash soit 16h30 (GMT). Mais comme il y a le fixing quelques minutes après, PRT enregistre deux barre à 16h30 et 16h45. Donc de facto, les trades commençants à 16h45 passe la nuit au chaud puis sont fermé le lendemain.
On pourrait modifier le code pour ne pas ouvrir de position après 16h15 mais on fera avec.

Une fois que l'on éliminé les intrus, je constate que les trades ouverts sur barre de 9h00 en J5 SW 20 on été gagnant en 2010/2011 mais pas en 2012 (je ne le vois pas dans le tableau).
Sur 2011/2012 c'est la barre de 11:00 J2 SW20 qui est bien placé.

Donc premier constat : sur un échantillon de presque 3 ans, il n'y a pas de tendance "absolue", ce qui conforte l'idée que la bourse est imprevisible.
Il se dégage tout de même quelque "horaire/jour/SW" qui semble être gagnant.
Un peu comme Benoit qui monte 3 idées pour en avoir au moins une ou deux gagnante et donc "supporter" le coût de la 3ème, cela renchérie mon idée qu'il faut obligatoirement jouer plusieurs scénarii en // afin de compenser les mouvements isolés de chaque stratégie.

RogCas afin d'analyser les gains, peux-tu faire un screenshot de l'onglet "Position" que tu trouveras dans le tableau de "Rapport détaillé" (qui s'ouvre quand tu as fini les tests). Le but est de voir comment compte PRT chaque points gagné perdu. Par exemple sur PRT/IG chaque points vaut 10€ (quelque soit le contrat). C'est l'info de la colonne "Perf abs".

Petit truc, dans tous les tableaux, si tu maintiens, via un clique gauche le titre d'une colonne tu peux la déplacer à gauche/droite. Je fais ça pour mettre dans l'ordre "Heures" et "Minutes" au moins.