Debug backtest avant passage en prod

Forum sur le trading automatique et algorithmique : systèmes, backtests, robots de trading, résultats et limites, code à l'appui.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Debug backtest avant passage en prod

Message non lu par falex »

Trappiste73,

Comme évoqué dans ton journal et après avoir remis la main à la pate des backtests, j'ai un code qui me semble être le bon candidat pour une mise en production. Mais et il y a plus d'un mais je me pose des questions.

Conditions d'entrée (= déclenchement de l'ordre Buy) :
Je fais comme toi avec des variables qui renvoie True/False et quand elles sont toutes "True" alors ça déclenche un ordre.
Sauf que ... Dans la backtest (mode tick-by-tick, backtest sur Nasdaq cfd à risque limité cash 1€ UT 2min) j'observe qu'une partie de mes ordres sont éxécutés 2 bougies après la validation des conditions.
Typiquement une des conditions utilise la fonction

Code : #

CROSS UNDER
et

Code : #

CROSS OVER
.
Ce sont de "simple" passage de seuil.
Mais de manière aléatoire l'ordre est passé une bougie plus loin.

Code : #

BUY xx AT MARKET
As-tu observé un écart entre backtest et prod avec ce type de directive ?

---
Deuxième sujet : La variable

Code : #

StrategyProfit
.
Est-elle fiable ? Ne pouvant pas "printer" sa valeur, est-ce qu'elle renvoie le solde du compte ou les PV-MV réalisé (et si oui depuis quelle date) ?
Avatar du membre
trappiste73
Membre du Conseil Jedi
Messages : 5208
Enregistré le : 08 déc. 2016 11:38

Re: Debug backtest avant passage en prod

Message non lu par trappiste73 »

ça c'est louche parce qu'en tick par tick, justement l'ordre s'exécute à l'intérieur de la bougie. J'ai déjà constaté en réel que ça fonctionne. Par contre, le délai d'exécution n'est pas garanti : j'ai eu une fois le pb qui m'a coûté un bras.

Strategy profit : somme des profits et pertes de la stratégie depuis le démarrage (uniquement les ordres clôturés).
Si tu veux par jour : https://www.prorealcode.com/topic/connaitre-benefices-ou-ses-pertes-pour-une-strategie-par-jour/
Avatar du membre
cafeiine2023
Apprenti Jedi
Messages : 632
Enregistré le : 27 févr. 2023 20:36

Re: Debug backtest avant passage en prod

Message non lu par cafeiine2023 »

Quelques conseils pour le développement de ton algorithme,
- développe un maximum en visuel à travers un indicateur, utilise tous les moyens graphiques à ta disposition pour afficher les valeurs des variables aux instants 't' que tu souhaites (càd RETURN ou l'affichage en texte au sein de la page)
- puis ensuite transforme en pro-order (tu peux utiliser la fonction GRAPH pour observer les valeurs)

J'invite toute personne qui travaille sur pro-order à faire AVANT par sois-même des codes basiques de test, ex: achat, vente, vente sur stop loss, vente sur take profit. C'est extrêmement instructif.

Pour le code pro-order, je pensais (souvenirs...) qu'il s’exécutait à la clôture de la bougie.Donc, l'ordre d'achat était exécuté à la bougie suivante.
Pour moi le ticksbyticks est seulement utile pour le déclenchement sur SL où tu TP, et donc avoir la précision de tes gains/pertes.

Sur le fond, je fais confiance à Trappiste (mes algos ont pas dépassé la DEMO....)
Avatar du membre
trappiste73
Membre du Conseil Jedi
Messages : 5208
Enregistré le : 08 déc. 2016 11:38

Re: Debug backtest avant passage en prod

Message non lu par trappiste73 »

Ça peut être un pb de spread qui n’est pas évident à simuler.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Debug backtest avant passage en prod

Message non lu par falex »

Merci à vous deux.

Donc maintenant il y a des fonctions GRAPH et RETURN dans les backtest ? Je vais aller voir ça.

---
Return non, ça reste bien pour la prog des indicateurs, mais GRAPH Oui : Génial.

Extrait de la doc page93 https://assets.prorealtime.com/pdfs/fr/probacktest.7def397e.pdf
GRAPH myvariable AS "myvariable"
Instruction backtest qui permet de visualiser les valeurs des variables sur les données historiques
GRAPHONPRICE myvariable AS "myvariable"
Instruction backtest qui permet de visualiser les valeurs des variables sur le graphique du prix.
---
MdR Caféine sur le fait de dev en indicateur avant de passer en pro-order, j'étais arrivé à la même conclusion, il y a quelques années.
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Debug backtest avant passage en prod

Message non lu par falex »

Je reviens sur "StrategyProfit" : Quand tu dis démarrage ça veut dire que si l'algo plante et doit être redémarré ce sera le nouveau démarrage qui sera pris comme point de référence ?

Dans ton lien pour le profit par jour, je vois que quelqu'un à poser la question sur le solde du compte -> Pas disponible en 2021, est-ce toujours le cas en 2024 ?
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Debug backtest avant passage en prod

Message non lu par falex »

EXCELLENT la fonction GRAPH et GRAPHONPRICE

Mille merci !
Avatar du membre
cafeiine2023
Apprenti Jedi
Messages : 632
Enregistré le : 27 févr. 2023 20:36

Re: Debug backtest avant passage en prod

Message non lu par cafeiine2023 »

Tu as également ces variables très intéressantes,

Code : #

//TRADEPRICE // PRIX DERNIERE EXECUTION (ACHAT,VENTE)
//POSITIONPRICE // Indique le prix moyen de la position en cours
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Debug backtest avant passage en prod

Message non lu par falex »

Encore merci pour la fonction "GRAPH", j'ai débuggué en 5 min ce qui me prenais des heures avant.
Avatar du membre
Philippe56380
Ewok
Messages : 28
Enregistré le : 23 févr. 2019 20:16

Re: Debug backtest avant passage en prod

Message non lu par Philippe56380 »

falex,

dans ninjatrader, la stratégie s'execute par défaut sur OnBarClose
Pour ne pas avoir de décalage entre la passation de ton ordre et le tick "en cours" utilie le OnEachTick

Mais attention dans ce cas, la logique de l'application peut changer
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Debug backtest avant passage en prod

Message non lu par falex »

J’ai trouvé la réponse à mon pb de décalage de bougie:

Le backtest prend le niveau de close de la bougie où le signal est validé
Et l’applique sur l’open de la bougie suivante.
Dis autrement tout est bon de ce côté là.

NB : j’utilise PRT.
Avatar du membre
dav
Chevalier Émérite Jedi
Messages : 3763
Enregistré le : 08 mars 2015 14:34

Re: Debug backtest avant passage en prod

Message non lu par dav »

Fonction GRAPH ?

je vais regarder c'est quoi cette chose

Merci les amis
Avatar du membre
kelly
Maître Jedi
Messages : 4956
Enregistré le : 17 mai 2016 16:43

Re: Debug backtest avant passage en prod

Message non lu par kelly »

:merci: pour la fonction GRAPH que je ne connaissais pas Je zieute dès cet AM
Avatar du membre
falex
Le Gladiateur
Messages : 34275
Enregistré le : 12 févr. 2013 15:41

Re: Debug backtest avant passage en prod

Message non lu par falex »

C'est de la bombe ! ça ma fait gagner un temps de dingue dans le debug.
Avatar du membre
cafeiine2023
Apprenti Jedi
Messages : 632
Enregistré le : 27 févr. 2023 20:36

Re: Debug backtest avant passage en prod

Message non lu par cafeiine2023 »

Vous connaissiez pas? Heureux que ma subtilité a servi. Autant, je suis une bille en trading, par contre en programmation je me suis formé à prt.

Prenez les 2 pdfs, proorder et indicateur, consultez les, testez, rencontrez les pb, c'est très formateur.

:top:
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Debug backtest avant passage en prod

Message non lu par G'sT »

@Falex : je reviens sur ton 1er post sur la question de la fonction "strategyprofit", pour te faire part de mon expérience car je l'utilise dans mon algo.
Mon témoignage ne va pas t'aider directement, mais peut être t'éclairer un peu plus, car si je comprends bien tu veux utiliser cette fonction comme "fusible" pour sécuriser ton capital en cas de pertes alors que moi je l'utilise pour couper mon algo une fois que que mon objectif journalier est atteint (une fois mon gain atteint dans la journée l'algo prend fin afin de ne pas faire le trade suivant qui pourra éventuellement me faire perdre).

Je te donne mon code :

IF DAYS<>DAYS[1] THEN
MYPROFIT=STRATEGYPROFIT
Object=1
ENDIF
IF STRATEGYPROFIT-MYPROFIT =100 THEN
Object=0
ENDIF

Dans ce code mon algo s'arrete automatiquement dès que j'ai atteint un gain de 100 € dans la journée (plus précisément quand les 100 euros sont atteints l'algo s'arrete automatiquement pour la journée). Il fonctionne bien.

Et il faut que tu mettes ensuite la condition "object=1" dans les conditions d'entrée (achat ou short) de ton algo.

Voilà ça ne répond pas directement à ta question mais peut être que ça pourra t'inspirer....
Avatar du membre
cafeiine2023
Apprenti Jedi
Messages : 632
Enregistré le : 27 févr. 2023 20:36

Re: Debug backtest avant passage en prod

Message non lu par cafeiine2023 »

Élégant !
Avatar du membre
trappiste73
Membre du Conseil Jedi
Messages : 5208
Enregistré le : 08 déc. 2016 11:38

Re: Debug backtest avant passage en prod

Message non lu par trappiste73 »

Je suis passé par cette phase mais in fine ça ne m'est pas apparu très convaincant : les algos marchent de manière très irrégulière et finalement avec ce genre de méthode, tu vas caper les pv et pas les mv ...
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Debug backtest avant passage en prod

Message non lu par G'sT »

Merci cafeine2023

@Falex : je viens juste de tilter par rapport à mon bout de code pour arriver à ta demande sur strategyprofit : dans mon code il suffit de transformer le > (supérieur) en <(inférieur)

ça donne ça par exemple :

IF DAYS<>DAYS[1] THEN
MYPROFIT=STRATEGYPROFIT
Object=1
ENDIF
IF STRATEGYPROFIT-MYPROFIT <= -100 THEN
Object=0
ENDIF

Je ne l'utilise pas comme ça (comme fusible) et je viens donc de le backtester ainsi et ça marche....... c'est l'algo qui s'arrete quand il atteint (dans le present exemple) une perte cumulée de -100 euros.

PS : dans mon 1er post INITIAL ci dessus ne pas oublier le ">" que j'ai omis dans ma retranscription et l'écrire ainsi
"IF STRATEGYPROFIT-MYPROFIT =>100 THEN"
Avatar du membre
trappiste73
Membre du Conseil Jedi
Messages : 5208
Enregistré le : 08 déc. 2016 11:38

Re: Debug backtest avant passage en prod

Message non lu par trappiste73 »

Dans ce sens, c’est mieux mais pas non plus viable d’après moi.