ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Debug backtest avant passage en prod

par falex » 16 avr. 2024 11:50

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) ?

Re: Debug backtest avant passage en prod

par trappiste73 » 16 avr. 2024 11:58

ç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/

Re: Debug backtest avant passage en prod

par cafeiine2023 » 16 avr. 2024 12:21

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....)

Re: Debug backtest avant passage en prod

par trappiste73 » 16 avr. 2024 12:45

Ça peut être un pb de spread qui n’est pas évident à simuler.

Re: Debug backtest avant passage en prod

par falex » 16 avr. 2024 13:05

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.

Re: Debug backtest avant passage en prod

par falex » 16 avr. 2024 13:11

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 ?

Re: Debug backtest avant passage en prod

par falex » 16 avr. 2024 13:33

EXCELLENT la fonction GRAPH et GRAPHONPRICE

Mille merci !

Re: Debug backtest avant passage en prod

par cafeiine2023 » 16 avr. 2024 13:37

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

Re: Debug backtest avant passage en prod

par falex » 16 avr. 2024 14:00

Encore merci pour la fonction "GRAPH", j'ai débuggué en 5 min ce qui me prenais des heures avant.

Re: Debug backtest avant passage en prod

par Philippe56380 » 16 avr. 2024 19:02

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

Re: Debug backtest avant passage en prod

par falex » 16 avr. 2024 19:13

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.

Re: Debug backtest avant passage en prod

par dav » 17 avr. 2024 08:49

Fonction GRAPH ?

je vais regarder c'est quoi cette chose

Merci les amis

Re: Debug backtest avant passage en prod

par kelly » 17 avr. 2024 09:51

:merci: pour la fonction GRAPH que je ne connaissais pas Je zieute dès cet AM

Re: Debug backtest avant passage en prod

par falex » 17 avr. 2024 11:17

C'est de la bombe ! ça ma fait gagner un temps de dingue dans le debug.

Re: Debug backtest avant passage en prod

par cafeiine2023 » 17 avr. 2024 12:33

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:

Re: Debug backtest avant passage en prod

par G'sT » 18 avr. 2024 20:57

@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....

Re: Debug backtest avant passage en prod

par cafeiine2023 » 19 avr. 2024 17:32

Élégant !

Re: Debug backtest avant passage en prod

par trappiste73 » 19 avr. 2024 18:19

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 ...

Re: Debug backtest avant passage en prod

par G'sT » 19 avr. 2024 18:42

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"

Re: Debug backtest avant passage en prod

par trappiste73 » 19 avr. 2024 19:17

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

Sujets similaires
Help ! appel a debug ! pyramidage avec sortie flat
Fichier(s) joint(s) par ladefense92800 » 03 juin 2015 23:30 (25 Réponses)
serie person of interest cree J Nolan prod jj abrams
par Lysan » 11 févr. 2017 09:55 (3 Réponses)
Prt BackTest Fiabilité; inclure premier passage
par Deejay87 » 23 déc. 2018 18:41 (1 Réponses)
Backtest cohérence passage d'ordre
Fichier(s) joint(s) par Zogzog » 02 avr. 2020 14:15 (0 Réponses)
Pro Backtest
par VinceMan » 17 juil. 2012 14:30 (4 Réponses)
backtest PRT?
Fichier(s) joint(s) par Djobydjoba » 05 avr. 2013 09:26 (11 Réponses)
Backtest et Excel
par Greg31600 » 18 avr. 2013 01:26 (4 Réponses)
code PRT > RSBoll/Seuil backtest
par newworld » 16 juin 2013 17:57 (4 Réponses)
ProRealTime backtest : appel à témoin
par falex » 17 août 2013 16:19 (1 Réponses)
Backtest Prorealtime
par Fredo » 04 oct. 2013 16:34 (5 Réponses)