Profondeur d’historique Journalier avec ProBackTest vs ProOrder

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #264374 quote
    StephC
    Participant
    Average

    Bonjour,

    J’essaie de mettre en place une stratégie automatique avec ProBackTest. Cette stratégie donne des résultats intéressants en BackTests, mais lorsque que je bascule en ProOrder, sur certaines actions, cette stratégie s’interrompt avec une erreur sur la profondeur d’historique qui est insuffisante pour calculer une variable.

    J’ai identifié le problème mais je n’arrive pas à le résoudre de manière satisfaisante. Peut-être quelqu’un aura une solution sur le forum.

    Le point critique est le suivant :

    Dans ma stratégie, j’utilise une boucle ‘WHILE’ pour identifier des supports et résistances de l’action en journalier qui sont compris entre le plus haut et le plus bas de la période d’étude. En utilisant les variables journalières comme ‘DOPEN’ avec le ProBackTest, j’arrive a déterminer la profondeur d’historique disponible. Dans les conditions d’arrêts de cette boucle, j’ai un nombre maximum de jours pour ne pas avoir non plus trop d’historique. Mais, avec le ProOrder, cette boucle ne marche pas tout le temps suivant les actions et j’obtiens le problème de profondeur d’historique. Voici le bout de code qui pose problème en fonction de l’action et de la valeur maximale pour le variable d’incrémentation :

    joursAnalyseMax = 0
    plusBas = DOPEN(1)
    plusHaut = DOPEN(1)
    WHILE DOPEN(joursAnalyseMax) > 0 AND joursAnalyseMax <= 1000 DO
        joursAnalysesMax = joursAnalyseMax + 1
        IF DHIGH(joursAnalysesMax) > plusHaut THEN
            plusHaut = DHIGH(joursAnalysesMax)
        ENDIF
        IF DLOW(joursAnalysesMax) < plusBas THEN
            plusBas = DLOW(joursAnalysesMax)
        ENDIF
    WEND
    

    De ma compréhension, en ProBackTest si par exemple DOPEN(999) n’existe pas alors tata = DOPEN(999) à pour valeur 0 alors que dans le ProOrder, cela provoque une erreur et arrête le processus de trading automatique.

    Est-ce que j’ai déjà la bonne explication ?

    Y-a-t-il un moyen de connaitre le nombre de jour de cotation d’une action dans ProRealTime autre qu’avec une méthode comme la mienne ?

    Merci pour votre aide et bon trade a tous !

    PS: Par exemple, l’action du marché NASDAQ ‘MU’ (micron technology) a beaucoup d’historique et elle ne pose pas de problème dans ProOrder tandis que l’action du marché NYSE ‘DOCN’ (digitalocean) en a beaucoup moins (historique jusqu’au 25 Mars 2021.

    #264376 quote
    robertogozzi
    Moderator
    Legend

    Chargez davantage d’unités sur le graphique, par exemple plus de 5 000.

    Essayez également d’utiliser DEFPARAM PreLoadBars = N, où N doit être une valeur comprise entre 0 et 10 000.

    Cela vous permettra d’utiliser un ensemble de données historiques plus important.


    Iván González and StephC thanked this post
    #264396 quote
    StephC
    Participant
    Average

    Re-bonjour,

    Merci pour la réponse, j’utilise je pense la bonne quantité d’unités sur le graphique. D’ailleurs cela peut jouer sur le comportement de ProBackTest mais cela n’a pas d’effet sur le ProOrder qui lui est en direct.

    En effet, le paramètre ‘DEFPARAM PreLoadBars’ est très important pour le ProBackTest pour avoir assez d’information pour la première bougie de calcul de la date du début du BackTest. Et surtout cela est très important pour le ProOrder pour la même raison.

    Comme mon problème sur le code de ma statégie apparait en ProOrder et non en ProBackTest pour une même action et pour une même période d’analyse, je me trompe peut-être, mais je suppose qu’il vient de cette problématique :

    => Dans ma liste d’action que je souhaite utiliser pour ma stratégie, j’ai quelques actions qui n’ont pas assez d’historique, non pas parce que le nombre de PreLoadBars chargées n’est pas assez suffisant mais plutôt à cause de l’inverse. L’action elle-même n’a pas assez d’historique par rapport au nombre de bougies préchargées et à mon nombre maximum d’incrément de la boucle.


    Prenons par exemple, cette situation :

    1. Cas ok pour ProBackTest et ProOrder
    • Action utilisée dans le ProBackTest et le ProOrder : marché NASDAQ ‘MU’ (micron technology), il y a largement plus que 2000 jours d’historiques disponible pour cette action
    • Besoin de 2000 Jours d’historiques pour ma stratégie donc nombre de bougie dans le graphique 2000, nombre de bougies pré-chargées 2000, nombre d’incrément max dans la boucle ‘WHILE’ : 2000
    • Lancement du ProBackTest pour la journée en cours (le BackTest est en “live”), tout comme le ProOrder
    • TOUT SE PASSE BIEN


    1. Cas KO pour ProOrder et Ok pour ProBackTest
    • Action utilisée dans le ProBackTest et le ProOrder : marché NYSE ‘DOCN’ (digitalocean), il n’y a pas 2000 jours d’historiques disponible pour cette action (première valeurs pour le 25 Mars 2021 soit aujourd’hui 1346 jours)
    • Besoin des 1346 Jours d’historiques pour ma stratégie donc nombre de bougie dans le graphique 2000 et nombre de bougies pré-chargées 2000, nombre d’incrément max dans la boucle ‘WHILE’ : 2000
    • Lancement du ProBackTest pour la journée en cours (le BackTest en en “live”), tout comme le ProOrder
    • Pour le ProBackTest, la boucle while s’arrête avec l’incrément 1346 car pour l’incrément suivant DOPEN(1347) = n/d
    • Pour le ProOrder, la boucle while crée une erreur car pour l’incrément juste après la dernière valeur de l’action (jour 1346 correspondant au 25 Mars 2021) la variable DOPEN(1347) renvoie une erreur et non ‘n/d’ => le fameux message pas assez d’historique pour calculer une variable apparait.
    • CONSEQUENCE : pas de pb sur le backtest et par contre ProOrder qui s’arrête dès le début du lancement du ProOrder pour l’action ‘DOCN’.


    Pour ma stratégie, je n’ai pas besoin de 2000 jours d’historique pour chaque action, si l’action n’a pas de cotation au bout de 1346 jours c’est ok pour mes calculs de plus haut et plus bas ainsi que les supports et résistances principaux sur cette période.

    Par contre c’est assez fastidieux de, tous les jours, regarder la quantité d’historique disponible pour chaque action pour lesquelles je souhaite lancer le ProOrder pour adapter le nombre d’incréments max de la boucle afin de ne pas déclencher l’erreur et avoir ma stratégie qui tourne sur l’action.

    Pensez-vous qu’il y a une solution qui marche sans à avoir besoin d’adapter manuellement la valeur qui arrête la boucle ou devoir mettre une valeur faible pour être sur de ne pas avoir l’erreur ?

    Voici le code pour simuler le comportement avec un indicateur dans un graphique d’unité de temps inférieur à 1 jour comme par exemple 1min. Ma stratégie étant sur une unité de temps 1min ou 10s.

    joursAnalyse1MinMax = 0
    plusBasHistorique = DLow(1)
    plusHautHistorique = DHigh(1)
    WHILE DOpen(joursAnalyse1MinMax) > 0 AND joursAnalyse1MinMax <= 2000 DO
        joursAnalyse1MinMax = joursAnalyse1MinMax + 1
        IF DHigh(joursAnalyse1MinMax) > plusHautHistorique THEN
            plusHautHistorique = DHigh(joursAnalyse1MinMax)
        ENDIF
        IF DLow(joursAnalyse1MinMax) < plusBasHistorique THEN
            plusBasHistorique = DLow(joursAnalyse1MinMax)
        ENDIF
    WEND
    
    PRINT joursAnalyse1MinMax
    PRINT DOpen(joursAnalyse1MinMax - 1)
    PRINT DOpen(joursAnalyse1MinMax)
    
    return plusBasHistorique, plusHautHistorique
    
    

    Merci pour ‘vo- trade’ 😉


    #264401 quote
    JS
    Participant
    Master

    Peut-être que tu peux utiliser l’« barindex »… ?

    For i=barindex downto 0 do
    
    joursAnalyse1MinMax = joursAnalyse1MinMax + 1
    
    IF DHigh(joursAnalyse1MinMax) > plusHautHistorique THEN
    
    plusHautHistorique = DHigh(joursAnalyse1MinMax)
    
    ENDIF
    
    IF DLow(joursAnalyse1MinMax) < plusBasHistorique THEN
    
    plusBasHistorique = DLow(joursAnalyse1MinMax)
    
    ENDIF
    
    Next
    


    robertogozzi, Iván González and StephC thanked this post
    Scherm­afbeelding-2026-08-05-om-22.37.54.png Scherm­afbeelding-2026-08-05-om-22.37.54.png
    #264403 quote
    StephC
    Participant
    Average

    Merci JS pour cette réponse,

    Sur le coup, je n’y avais pas pensé mais l’utilisation du barindex semble la solution en effet.

    Je teste aujourd’hui et vous tiens au courant.

    JS thanked this post
    #264414 quote
    StephC
    Participant
    Average

    C’est bon, problème résolu en utilisant un timeframe 1 Day pour obtenir le nombre de bougies journalières disponibles via la variable BarIndex.

    Merci beaucoup pour la solution.

    JS thanked this post
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

Profondeur d’historique Journalier avec ProBackTest vs ProOrder


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
StephC @stecoapps Participant
Summary

This topic contains 5 replies,
has 3 voices, and was last updated by StephC
2 days, 7 hours ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 08/04/2026
Status: Active
Attachments: 1 files
Logo Logo
Loading...