Probleme avec appel d’un indicateur MTF dans un backtest

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #221498 quote
    plbourse
    Participant
    New
    Bonjour à tous

     

    J’utilise ProRealTime V12 sur IB, compte Demo
    J’ai des difficultés avec l’appel d’un indicateur MTF dans un backtest. J’ai essayé de simplifier le pb au maximum pour la compréhension de tous et de poster dans le Forum Backtest et ProOrder puisque le pb semble spécifique au Backtest

     

    Mes indicateurs, fonctionnent sans PB d’affichage
    • indicateur de Force en Daily qui retourne 1 si le close est superieur de 15 % au close[200], 0 dans les autres cas
      // Indicateur de Force
      
      Once Force = 0
      
      If close/close[200] >= 1.10 then
      Force = 1
      else
      Force = 0
      endif
      
      Return Force as "indicForce"
      
    • Indicateur de Force en Weekly qui retourne 1 si le Close[1] est supérieur de 15% au close[41], 0 dans les autres cas
      // Indicateur d'essai de Force en Weekly
      
      TIMEFRAME(Weekly)
      Once Forcew = 0
      
      If close[1]/close[41] >= 1.10 then
      Forcew = 1
      else
      Forcew = 0
      endif
      TIMEFRAME(Daily)
      Return Forcew as "indicForcew"
      
    • Copie de l’indicateur de Froce en Weekly qui ne fait que appeler l’indicateur précédent avec la fonction Call, fonctionne sans problème
      myForce = CALL "Ind EssaiForceW"
      
      Return myForce as "CopieForceW"
      
    Mes codes de backtest
    • Essai 1
      • achat 1 position sur croisement haussier de 2 Moyennes mobiles 20 et 50
      • Vente sur croisement baissier
        // Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50
        // Achat 1 Titre Rsique 1000 euros pour 4 ATR pour le StopLossini
        // Vente sur croisement inverse des 2 moyennes Mobile
        // Pas de StopLoss ni de Stop suiveur
        
        
        if Average[20](close) CROSSES OVER Average[50](close) and Not ONMARKET then
        StopLossini = Close - 4*AverageTrueRange[20](Close)
        
        Buy 1 Shares at market nextbaropen
        endif
        
        If close CROSSES UNDER StopLossini then
        Sell AT MARKET NextBarOpen
        endif
        
        if Average[20](close) CROSSES under Average[50](close) and ONMARKET then
        Sell AT MARKET NextBarOpen
        Endif
        
    • Essai 2, idem 1, mais condition achat supplémentaire, la Force en daily doit être supérieure à 0.5
      // Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50
      // Achat 1 Titre sur croisement des MM et ForceDaily
      // Vente sur croisement inverse des 2 moyennes Mobile
      // Pas de StopLoss ni de Stop suiveur
      
      once myForce = 0
      myForce  = CALL "Ind EssaiForce"
      
      if Average[20](close) CROSSES OVER Average[50](close) and myForce >= 0.5 and Not ONMARKET then
      StopLossini = Close - 4*AverageTrueRange[20](Close)
      
      Buy 1 Shares at market nextbaropen
      endif
      
      If close CROSSES UNDER StopLossini then
      Sell AT MARKET NextBarOpen
      endif
      
      if Average[20](close) CROSSES under Average[50](close) and ONMARKET then
      Sell AT MARKET NextBarOpen
      Endif
      
    • Essai 3, idem 1, mais condition  achat supplémentqire, la Force en daily doit être supérieure à 0.5
      // Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50
      // Achat 1 Titre sur croisement des MM et ForceWeekely
      // Vente sur croisement inverse des 2 moyennes Mobile
      // Pas de StopLoss ni de Stop suiveur
      
      once myForce = 0
      myForce  = CALL "Ind EssaiForcew"
      
      if Average[20](close) CROSSES OVER Average[50](close) and myForce >= 0.5 and Not ONMARKET then
      StopLossini = Close - 4*AverageTrueRange[20](Close)
      
      Buy 1 Shares at market nextbaropen
      endif
      
      If close CROSSES UNDER StopLossini then
      Sell AT MARKET NextBarOpen
      endif
      
      if Average[20](close) CROSSES under Average[50](close) and ONMARKET then
      Sell AT MARKET NextBarOpen
      Endif
      

       

    L’essai 3 plante systematiquement et me renvoie “Le backtest ne peut démarrer à cause d’une erreur d’analyse dans le code : ligne 4, colonne 0”

     

    En dehors des codes ci-dessus, ci-joint les copies d’écran du graphe des cours, Indicateurs et Backtests avec et sans le message d’erreur

    J’ai essayé toutes sortes de possibilités et ne comprend pas la cause de l’erreur. Est-ce que la fonction serait mal appelée dans le programme de backtest ? (lorsque j’appelle la fonction dans un autre indicateur, celafonctionne sans problème°

    Merci pour vos réponses et votre aide
    Bonne programmation à tous et bons trades
    plBourse

     

    Cordialement
    Copie-Cours-indicateur-et-Backtests-Accor-2023-09-21-073834.jpg Copie-Cours-indicateur-et-Backtests-Accor-2023-09-21-073834.jpg Message-derreur-PRT-2023-09-21-073659.jpg Message-derreur-PRT-2023-09-21-073659.jpg
    #221501 quote
    plbourse
    Participant
    New

    Pour compléter la description du pb précédent, ci joint 2 copies d’écran avec les 3 backtests, avec le message d’erreur et montrant que le backtest reste flat dans le cas 3

    Copie-Cours-indicateur-et-Backtests-Accor-3-2023-09-21-073834.jpg Copie-Cours-indicateur-et-Backtests-Accor-3-2023-09-21-073834.jpg Copie-Cours-indicateur-et-Backtests-Accor-4-2023-09-21-073834.jpg Copie-Cours-indicateur-et-Backtests-Accor-4-2023-09-21-073834.jpg
    #221510 quote
    Wim
    Participant
    Junior

    Je ne l’ai pas encore testé en V12, mais je me rappelle de la V11 qu’on ne peut pas appeler une subroutine avec du MTF dedans. La solution est d’intégrer la partie MTF dans la module principale. C’est connu que ce problème ne donne pas de message d’erreur intelligent. J’ai l’idée que la V12 n’a pas encore évoluée sur ce plan, dommage.
    Essaiez d’intégrer le code de Ind EssaiForce dans le stratégie même pour vérifier. Le résultat m’intéresse.

    #221538 quote
    Nicolas
    Keymaster
    Master

    En effet, on ne peut pas encore CALL un indicateur MTF, il faut pour cela, comme l’indique Wim, faire un CALL de chaque indicateur en timeframe unique, puis de mixer leurs résultats dans le code ProBacktest.

    plbourse thanked this post
    #221590 quote
    plbourse
    Participant
    New

    Bonjour

    Nicolas a déjà répondu sur l’impossibilité technique de ma demande : les opérations MTF ne peuvent être que dans le code du programme backtest appelant, pas dans le code d’un indicateur appele.

    Pour répondre à la question de Win, j’ai intégré le code de l’indicateur dans le backtest

    // Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50
    // Achat 1 Titre sur croisement des MM et ForceWeekely
    // Vente sur croisement inverse des 2 moyennes Mobile
    // Pas de StopLoss ni de Stop suiveur
    
    once myForce = 0
    
    // code de l'indicateur EsssaiForceW
    
    TIMEFRAME(Weekly)
    Once myForceW = 0
    
    If close[1]/close[41] >= 1.10 then
    myForceW = 1
    else
    myForceW = 0
    endif
    
    
    TIMEFRAME(Daily)
    
    if Average[20](close) CROSSES OVER Average[50](close) and myForceW >= 0.5 and Not ONMARKET then
    StopLossini = Close - 4*AverageTrueRange[20](Close)
    
    Buy 1 Shares at market nextbaropen
    endif
    
    If close CROSSES UNDER StopLossini then
    Sell AT MARKET NextBarOpen
    endif
    
    if Average[20](close) CROSSES under Average[50](close) and ONMARKET then
    Sell AT MARKET NextBarOpen
    Endif

    Le screenshot ci dessous montre que le backtest ne prend des positions que lorsque l’indicateur le permet

    Pas d’autres travaux sur ce sujet.

    Merci

    Copie-Cours-Essai-4-indicateurs-et-Backtests-Accor-2023-09-26-050851.jpg Copie-Cours-Essai-4-indicateurs-et-Backtests-Accor-2023-09-26-050851.jpg
Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.

Probleme avec appel d’un indicateur MTF dans un backtest


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
plbourse @bousepl Participant
Summary

This topic contains 4 replies,
has 3 voices, and was last updated by plbourse
2 years, 5 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 09/24/2023
Status: Active
Attachments: 5 files
Logo Logo
Loading...