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

Re: Backtesting horaire

Message non lu par falex »

tu n'as pas tort mais pour être plus précis je ne parlais pas des TP/SL mais plutôt du nombre de trades et du risque associé.

Tu voudrais rajouter comme règles de trading global :
Petite volat' petit TP, grande volat' grand TP ?
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 »

falex a écrit :Tu voudrais rajouter comme règles de trading global :
Petite volat' petit TP, grande volat' grand TP ?
Complètement ! 8-)
Avatar du membre
clodreb
Chevalier Jedi
Messages : 2763
Enregistré le : 14 août 2013 05:29

Re: Backtesting horaire

Message non lu par clodreb »

Salut Falex,

question idiote : si tu trouves une stat à 100% (donc sans Profit factor dans PRT) , tu fais quoi avec elle ?
tu la tentes où tu attends qu'elle se plante au moins une fois pour voir le Profit factor qui en ressort ?

(comme tu t'en doutes une telle stat concerne une PV très petite pour une MV très grande , ce qui peut faire très mal au portefeuille quand elle se plantera)

bonne fin d'année
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Effectivement mathématiquement parlant : 100% de trade gagnant = Profit factor infini.

Plusieurs réponses/cas :
1) je regarde si je ne e suis pas planter dans mon code ou i PRT ne bug pas
2) tout les cas de 100% que j'ai pu programmer ne voualsi rein dire car :
--Soit l'entrée et la sortiene tiennent pas compte du spread donc complétement irréaliste
--soit le nombre de trade est tellement peit (2 à 5 par exemple) que la stat ne veut rien dire.

Il suffit de bricoler un peu pour avoir des stats à 100%

En résumé c'est soit une erreur soit un truc irréaliste soit une série de trade gagnant dans une sous-série que je n'ai pa testé.
A fuir ou en tout cas ça doit te faire creuser le pourquoi du comment.

Sur les straégié de type TP 1 SL = 100, tu peux effectiveet arrivé à ce genr de situation alros ça veut dire que ton échantilon n'est pas assez grand.

à mon humble avis pour un TP petit SL le top d'une bonne simulation sur un an devrait se trouver dans les 75 à 90% de trade gagnant mais pas au delà et en dessous ça ne rapporte pas assez.
Avatar du membre
clodreb
Chevalier Jedi
Messages : 2763
Enregistré le : 14 août 2013 05:29

Re: Backtesting horaire

Message non lu par clodreb »

ok, merci Falex.
ça confirme ce que je pensais de cette statistique mais une confirmation d'un habitué des backtests est toujours bonne à prendre.
En fait, le problème des backtests sur 1 an est que tu peux très bien avoir une stat de 95% (et qui montre une seule MV sur un an) et un Profit factor de 6... mais dès que la stat ne se vérifie pas, ton Profit factor passe de 6 à 1,2. cette stat passe alors dans les oubliettes :mrgreen:

Autre question concernant PRT : comme tu le sais, il est impossible via IG d'utiliser PRT pour faire du trading automatique. Par contre, il est possible de faire une alerte sur un indicateur perso et lier un passage d'ordre à cette alerte.
Le problème de ce mode de passage d'ordre est que tu ne sais pas mettre de SL ni de TP ....mais bon...si l'ordre se passe correctement, je peux toujours mettre un TP et SL manuellement par la suite. (l'important pour moi est qu'il passe l'ordre à une heure précise)

Par contre, ce qui me pose un plus gros problème c'est que , quand j'ai programmé un ordre short en automatique, PRT ne m'a pas ouvert un nouvel ordre mais a clôturé une position longue qui était déjà ouverte en parallèle.

As-tu une astuce pour que l'ordre ouvert de cette manière soit un nouvel ordre complètement indépendant et qu'il s'ouvre sans tenir compte des éventuelles positions déjà en cours ?

Merci d'avance.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Effectivement PRT n'ouvre que des positions "non forcée" sur IG

Pour inverser le sens d'une position il faut ouvrir le nombre de contrat déjà ouvert + le nombre de contrat dans le nouveau sens.
Par exemple j'ai 2,5 short je veux ouvrier 1,25 long : 2,5 + 1,25 = 3,75 long lors du passage d'ordre.

Demande à Teg ou à LVO qui ont utilisé cette technique, de mon côté je n'ai utilisé qu'une fois le passage d'ordre semi-auto sur PRT et ça ne m'avait pas convaincu.
Avatar du membre
clodreb
Chevalier Jedi
Messages : 2763
Enregistré le : 14 août 2013 05:29

Re: Backtesting horaire

Message non lu par clodreb »

Merci de ta réponse Falex.
Mais ça ne m'arrange pas vraiment cette technique car mon but n'est pas de clôturer les positions déjà en cours mais bien d'avoir 2 positions ouvertes mais pas forcément toujours dans le même sens .
je peux très bien avoir des stat qui me donnent : short TP 50 SL 55 et 30 min après long TP 10 SL 11 sans que ça n'aille à l'encontre de la première position.

....pfffff, quand est-ce que IG va se décider à nous fournir un PRT complet ... ils n'aident vraiment pas les gens qui ont un autre boulot que le trading.
Quand comprendront-ils qu'on n'a pas toujours l'occasion d'être devant son pc à la bonne minute pour passer l'ordre correct :lol:
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 crois que je vais demander des royalties à WHS car beaucoup de leur stratégie ont une notion de trading horaire.

Exemple : http://www.whselfinvest.fr/fr/trading_strategies_43_Morning_Buy_EU.php

Cool ça me conforte dans ma démarche.
GOLDS
Compagnon Jedi
Messages : 1072
Enregistré le : 03 juin 2013 21:26

Re: Backtesting horaire

Message non lu par GOLDS »

falex a écrit :Je crois que je vais demander des royalties à WHS car beaucoup de leur stratégie ont une notion de trading horaire.

Exemple : http://www.whselfinvest.fr/fr/trading_strategies_43_Morning_Buy_EU.php

Cool ça me conforte dans ma démarche.
Oui mais backtest sur 4 jours.... :?
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Pourquoi dis-tu cela ?

Quand tu zoom sur les graphes en bas de page les bactest sont sur 18/24 mois souvent.
Avatar du membre
clodreb
Chevalier Jedi
Messages : 2763
Enregistré le : 14 août 2013 05:29

Re: Backtesting horaire

Message non lu par clodreb »

Bonjour à tous,

je fais appel aux habitués du backtest, voici un petit problème que je n'arrive pas à résoudre.
j'ai un backtest avec :
-un critère de prise de position longue
-un critère de prise de position courte
- chaque fois qu'un critère est satisfait, si on a des positions ouvertes dans le sens contraire, on les clôture et on ouvre une position dans le sens du critère avec max 5 positions dans le même sens.
- si le montant global des pertes est > x , je veux clôturer toutes les positions et bloquer toute nouvelle prise de positions sur la journée concernée mais continuer les backtests pour les journées suivantes.

Mon problème est que je n'arrive pas à bloquer les nouvelles positions sur la journée concernée.
j'avais mis :

if date > dateblocage then
code pour le backtest proprement dit
endif

IF STRATEGYPROFIT > X THEN
if longonmarket then //on vend les positions longues
sell at market
else //on achète les positions courtes
exitshort at market
endif
dateblocage=date
endif


le problème avec ce code est que je bloque bien les nouvelles positions pour la date "dateblocage" mais le backtest ne continue pas quand date=dateblocage+1

quelqu'un aurait-il une idée de solution pour ce type de problème ?

Merci d'avance.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

clodreb a écrit : if date > dateblocage then
code pour le backtest proprement dit
endif

IF STRATEGYPROFIT > X THEN
if longonmarket then //on vend les positions longues
sell at market
else //on achète les positions courtes
exitshort at market
endif
dateblocage=date
endif


le problème avec ce code est que je bloque bien les nouvelles positions pour la date "dateblocage" mais le backtest ne continue pas quand date=dateblocage+1

quelqu'un aurait-il une idée de solution pour ce type de problème ?

Merci d'avance.
Hi Cloreb, je n'ai pas encore regardez dans le détail mais ma première remarque :
La commande exitshort ne te fais pas passer short quand tu es long, mais elles cloture une positio short, that's all.

Si tu veux inverser une position = (cloture + ouverture dans l'autre sens)

Code : #

If longonmarket then
  Sell 1 shares at market
elsif shortonmarket then
  Buy 1 shares at market 
endif
J'ai commencé à m'interesse a la fonction StrategyPorofit mais ça ne fonctionnait pas comme je m'y attendais et pour l'instant j'ai laissé tombé.

Je vais te retrouver mes bout de code pour faire un/x trades par jour.
Avatar du membre
clodreb
Chevalier Jedi
Messages : 2763
Enregistré le : 14 août 2013 05:29

Re: Backtesting horaire

Message non lu par clodreb »

non, non .
l'inversion de position se fait dans un paragraphe que je n'ai pas mis.
quand on passe dans le code "STRATEGYPROFIT" , je veux tout clôturer et bloquer la journée ...voir plusieurs.
et reprendre le cours du backtest proprement dit au lendemain.

"Je vais te retrouver mes bout de code pour faire un/x trades par jour."

si tu retrouves ce bout de code, oui, ça m'intéresse :merci:
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Rapide petit passage pour :
Confirmer qu'avec l'historique allonge le j1 et j3 dont bien constante et que pour j2, j4 et j5 faut trouver autre chose.

Ces derniers temps j'ai testé deux approche de MM.

Une que j'ai exposé : premier trade = X lots.
Si le trade est gagnant je diminue d'un lot X-1
Et ainsi de suite
Si un trade est perdant je redémarre à X lots.
L'objectif est de réduire l'exposition à chaque trade car on ne sait jamais quand un trade perdant va arriver.

Une deuxième inspiré de Ryan Jones et son Fixed frationnal Ratio.
À chaque trade je regarde la capital gagne que je divise par un nombre D.
Le chiffre obtenu est le nombre de lot mettre en jeu au prochain trade.
Je cap et flooré le nombre de lot : j'ai choisi de limiter entre 1 et 10 mini lots DAX.

Si j'applique, indépendamment, ces deux méthodes d'évaluation du nombre de lot pour chaque trade je peux observer que :
Le j3 à 8:45 fonctionne très bien avec l'un ou l'autre méthode de MM.
Le J1 à 9:30 fonctionne très bien avec la première méthode et moins bien avec la deuxième.

D'autres heures apparaissent comme étant intéressante ...

J'essaye de donner du levier tout en limitant le risque ... Pas facile :)

Je vais affiner ma réflexion cette semaine.
Avatar du membre
Greg31600
Chevalier Jedi
Messages : 2243
Enregistré le : 02 févr. 2013 15:19

Re: Backtesting horaire

Message non lu par Greg31600 »

falex a écrit :Une deuxième inspiré de Ryan Jones et son Fixed frationnal Ratio.
:arrow: Que je trouve personnellement très pertinente :!:
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

J'ai simplifie la formule plutôt que de faire "N = 0.5 * [(1 + 8 * P/delta)^0.5 + 1]" dans le backtest je fais un simple N=P/Delta ce qui revient quasi au même, je monte moins vite dans le nombre de lot mais au final c'est bien là l'essence même de sa formule "P/D" ...

---

Pris d'un remord j'ai fait tourner la moulinette en mettant la formule de l'ami Ryan J.

1) ça confirme ce que je pensais : ça ne change pas fondamentalement la donne par contre cela change quelque détails :
1.1) avec la formule de RJ le nombre de position croit un peu moins vite
1.2) de ce fait le Profit factor est amélioré de quelque points puisque mécaniquement on est moins exposé/moins rapidement.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

Alors que je cherchais à voir le résultat d'un pyramidage sur le trade du mercredi à 9h45 / UT15, j'ai en fait trouvé un super filtre pour éliminer les faux trades. J'explique :

Le principe du test est toujours le même : sur cloture de la bougie de 9h45 le mercedi je rentre dans le sens contraire avec un TP + 31 (hors spread) et un SL à -25.
Partant de là, j'ai fait un test où je ne rentre pas sur l'open de la bougie de 10h00 comme avant mais en décalé dans le sens positif.
Exemple aujourd'hui la bougie est rouge et cloture à 9624 = Le trade sera long.
Je rentre alors en position si on fait +10 points dans le bon sens soit 9634. Je garde les niveaux de TP et SL comme avant -> 9624 + 31 et 9624 - 25.
Si le niveau d'entrée décalé n'est pas atteind avant le niveau de SL d'origine alors je ne fais rien de la journée.

Et bien le truc hallucinant et que si j'optimise le niveau de décalage et si je compare avec le niveau normal, et bien j'améliore nettement le taux de trade gagnant et le nombr de fois où je ne rentre pas en trading.
En chiffre ça donne :
Sans décalage : Profit factor global de 1,94 / gain de 731 points (spreadé) en 87 trades (TP + 31/ SL -25)
Avec un décalage de 5 point : Profit factor global de 2,99 / gain de 838 point en 70 trade (TP +26 / SL -30)

Donc :
1) je trade moins (17 trade, soit 20% de trade en moins),
2) malgré un TP/SL respectivement réduit et augmenté de 5points je gagne 15% de points en plus !!!
3) Si le trade ne part pas tout de suite dans le bon sens (et que de 5 point ce qui est rien sur le DAX) il ne faut pas le prendre.

Excellent !!! Voilà un très bon filtre.
Arnaud_vh
Apprenti Jedi
Messages : 605
Enregistré le : 10 juin 2013 14:28

Re: Backtesting horaire

Message non lu par Arnaud_vh »

C'est intéressant car ça rejoint un article que j'ai lu il n'y a pas longtemps qui expliquait qu'il valait mieux entrer/sortir décalé temporellement par rapport aux bougies d'UT standard ( genre 5,10,15,30 ...) car c'est le moment où la masse fait ses entrées/sorties et ça permet de voir dans quel sens sont positionnés les gros. Ou alors se baser sur des UTs plus éxotiques (si on peut) genre 3, 7, 11, etc.
Je pense que le fait de décaler ton niveau d'entrée est une extension cette idée puisque qu'en décalant le niveau tu décales le moment d'intervention.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

J'ai donné dans l'ut décalé. Seul souci ce n'est pas dispo sur les appli mobiles de nos chers brockers ...
L'ut 20 était la préféré.

Merci pour ton retour Arnaud.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Backtesting horaire

Message non lu par falex »

HI je veins de faire tourner l'optimisateur de bactket de PRT sur le code "Trendy" avec entrée décalé : même constat que pour le contrarient : Une entrée de simplement 5 points dans le bon sens si le le niveau SL n'est pas touché en premier, permet d'éliminer les 5/10 trades parasites sur les 90 de l'historique.
Ce qui me rassures c'est que ce n'est pas lié simplement à la stratégie contrariante. Je testerai sur d'autres stratégie en stock pour valider l'application universel ce ce type de filtrage.

Tout ceci me fais cogiter dur dur pour me remettre en plein dans mon trading automatique, ... faut que j'affine encore un peu. Le potentiel est là, ça ne fait aucun doute.