Problème lors d’un backtest avec des timeframes Heikin Ashi

Forums ProRealTime forum Français Support ProOrder Problème lors d’un backtest avec des timeframes Heikin Ashi

Viewing 10 posts - 1 through 10 (of 10 total)
  • #248461

    Bonjour,

    Je rencontre une anomalie lors d’un backtest de mon bot de trading utilisant des graphiques Heikin Ashi avec deux timeframes : 15 minutes et 30 secondes.
    Le bot exécute une transaction sur le timeframe de 30 secondes, et la clôture de la transaction est conditionnée par l’apparition d’une bougie rouge (en Heikin Ashi) sur le timeframe de 15 minutes.
    Lors d’un backtest, j’ai observé 14 bougies vertes consécutives sur le timeframe de 15 minutes (soit 210 minutes de tendance haussière). Cependant, la transaction s’est clôturée après seulement 12 minutes, ce qui ne correspond pas à la condition de clôture (bougie rouge sur le timeframe de 15 minutes).Pourriez-vous m’aider à identifier la raison de cette clôture prématurée ?
    Merci d’avance pour votre support.

    Cordialement,

    #248467

    Le code serait utile pour comprendre ce qui se passe.

    Cependant, je vous suggère d’essayer de placer la sortie dans un timeframe de 15 minutes (en utilisant UpdateOnClose).

     

     

    #248468

    Sans le code, nous serions dans l’expectative.

    Si vous ne souhaitez pas publier l’intégralité du code, il serait peut-être plus facile de nous expliquer si vous publiiez simplement le code de sortie dans le délai de 15 minutes.

    1 user thanked author for this post.
    #248472

    Mille excuses !!!
    J’ai complètement oublié de vous envoyer le code
    Un peu d’explication pour vous : MyCalledR9 est la condition d’entrée = bougie heikin Ashi verte en TF 30 secondes
    tandis que My240CalledR9 (bougie Heikin Ashi Verte en TF 15 minutes) est la condition conjointe avec MyCalledR9
    My240CalledR8 (bougie Heikin Ashi Rouge en TF 15 minutes) est la condition de sortie

    Merci beaucoup.

     

    // Définition des paramètres du code
    DefParam CumulateOrders = False // Cumul des positions désactivé
    DefParam Preloadbars = 5000
    Once PositionSize = 0.5

    //—– Function : STOP SUIVEUR —–
    Once MyNewSL = 0
    Once MyEntryBarIndex = 0
    Once MyFlagTS = 1 //Trailing Stop Flag
    Once MyFlagTP = 0 //Take Profit Flag

    Once MyFlagTimeCond = 1 //Time Condition Flag
    MyTimeCond1 = (CurrentTime > 060000 And CurrentTime < 210000)
    MyTimeCond2 = (CurrentTime > 060000 And CurrentTime < 140000) Or (CurrentTime > 153000 And CurrentTime < 210000)
    MyTimeCond3 = (CurrentTime > 180000 And CurrentTime < 235500) Or (CurrentTime > 010000 And CurrentTime < 070000)
    MyTimeCond4 = (CurrentTime > 060000 And CurrentTime < 180000) Or (CurrentTime > 193000 And CurrentTime < 210000)
    MyTimeCond5 = (CurrentTime > 130000 And CurrentTime < 180000)

    Once MyFlagHedge = 0 //Hedge Flag
    Once FirstLossAndQuit = 0
    Once MyFlagReInvest = 0 //ReInvest Flag
    Once MyAsset = 1 //1=NQ 2=BTC 3=DAX 4=2K
    Once MyCapital = 1000 //Capital
    Once MyBroker = 1 //Broker (1=IG <>1=IBKR)

    MyWorkDayIsValid = CurrentDayOfWeek >= 1 and CurrentDayOfWeek <= 5

    //— Timing Conditions —
    If MyFlagTimeCond then
    MyTimeCond = MyTimeCond5
    Else
    MyTimeCond = 1
    Endif
    //— Timing Conditions —

    //— Price Conditions —
    Once PriceTrigger = 99999
    If High < PriceTrigger then
    PriceTrigger = 99999
    MyPriceCond = 1
    Else
    MyPriceCond = 0
    Endif
    //— Price Conditions —

    //— Furtif Date and Time Condition —
    MyFurtifDate = Date >= 20221118
    MyFurtifTime = CurrentTime > 075000
    //— Furtif Date and Time Condition —

    //— Stop Suiveur Conditions —
    If MyFlagTS=1 And OnMarket then
    //—–Pose Premier SL dès ACHAT—-
    If SLfirst = 0 then

    MyCalledR81, MyCalledR82, MyCalledR83, MyCalledR84, MyCalledR85 = CALL “2023JUN_SMART_TRAILING”[1, 1, TradePrice, 1.3, 0.05, 0.05, 9, 9, 9]

    SLfirst = MyCalledR82
    TSstart = MyCalledR83
    TSstep = MyCalledR84
    //— Pose du premier SL —
    Sell at SLfirst STOP
    MyNewSL = SLfirst

    Endif
    Endif
    //Graph SLfirst Coloured(255,82,82) As “My SL First”
    //GraphOnPrice SLfirst Coloured(255,55,55) As “My SLfirst”
    //GraphOnPrice MyNewSL Coloured(0,204,0) As “My MyNewSL”
    //Graph MyNewSL Coloured(0,204,0) As “My MyNewSL”
    //— Stop Suiveur Conditions —

    //— Money Management —
    MyGain = StrategyProfit
    If MyFlagReInvest=1 then
    MyCalledR91, MyCalledR92, MyCalledR93, MyCalledR94, MyCalledR95 = CALL “2023JUN_SMART_REINVEST”[10, 9, MyBroker, 0.5, 9, MyAsset, MyCapital, MyGain, 300000]
    PositionSize = MyCalledR92
    Else
    PositionSize = PositionSize
    Endif
    //— Money Management —

    TimeFrame(15 Minutes)
    //—–OHLC—–
    My240Open = Open
    My240High = High
    My240Low = Low
    My240Close = Close
    My240HighLow = My240High – My240Low
    My240OpenClose = Abs(My240Open – My240Close)
    My240Vol = Volume
    //—–OHLC—–

    //——– Appel du Sous Programme ——–
    My240CalledR0, My240CalledR1, My240CalledR2, My240CalledR3, My240CalledR4, My240CalledR5, My240CalledR6, My240CalledR7, My240CalledR8, My240CalledR9, My240CalledR10, My240CalledR11, My240CalledR12, My240CalledR13, My240CalledR14, My240CalledR15, My240CalledR16, My240CalledR17, My240CalledR18, My240CalledR19, My240CalledR20 = CALL “2025JUN_STODIHASMA”[10, 9, 1, 9, 9, 1, 0, 10, 0, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
    //My240R14cond = My240CalledR14 > My240CalledR14[1]
    //MyDailyDiffCond = My240CalledR20 > 0

    TimeFrame(Default)
    //—–OHLC—–
    MyOpen = Open
    MyHigh = High
    MyLow = Low
    MyClose = Close
    MyHighLow = MyHigh – MyLow
    MyOpenClose = Abs(MyOpen – MyClose)
    MyVol = Volume
    //—–OHLC—–

    //——– Appel du Sous Programme ——–
    MyCalledR0, MyCalledR1, MyCalledR2, MyCalledR3, MyCalledR4, MyCalledR5, MyCalledR6, MyCalledR7, MyCalledR8, MyCalledR9, MyCalledR10, MyCalledR11, MyCalledR12, MyCalledR13, MyCalledR14, MyCalledR15, MyCalledR16, MyCalledR17, MyCalledR18, MyCalledR19, MyCalledR20 = CALL “2025JUN_STODIHASMA”[10, 9, 1, 9, 9, 1, 0, 10, 0, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]

    MyCondHL = MyHighLow > 15
    MyCondVol = MyVol > 2000
    MyCondOC = MyOpenClose > 10
    MyDojiCond = MyCalledR18 > 3

     

    //—– Entry Condition —–
    //MyEntryCondForLong = MyPriceCond And MyDojiCond And MyCondOC And MyCondHL And MyCondVol And MyCalledR9
    MyEntryCondForLong = MyCalledR9 And My240CalledR9
    //—– Exit Condition —–
    MyExitCondForLong = My240CalledR8

    //========== DEBUT PROGRAMME ==========
    //——- Debut Test WorkDay ——-
    If MyWorkDayIsValid then

    If OnMarket then
    MyOnMarket = 1
    Else
    MyOnMarket = 0
    //MySLDiff = 0
    SLfirst = 0
    MyNewSL = 0
    MyExitType = 0
    MyGainLatent = 0
    MyEntryBarCount=0
    Set Target %Profit 0
    Endif

    //— Si le dernier trade est un perdant —
    //— L’algo s’arrête automatiquement —
    If PositionPerf(1) < 0 And FirstLossAndQuit = 1 then
    Quit
    Endif

    //—– Very important : For Bar Index Counting —–
    //—– Imperative Not OnMarket syntax here —–
    If MyTimeCond then
    If MyEntryCondForLong And Not OnMarket then
    Buy PositionSize contracts at market
    MyEntryBarIndex = BarIndex
    If MyFlagTP then
    Set Target %Profit 0.18
    Endif
    Endif
    Endif

    If OnMarket And (MyExitCondForLong) then
    MyExitType=12
    MyExitBarIndex = BarIndex
    If MyFlagHedge = 1 then
    SellShort PositionSize contracts at market
    Quit
    Else
    Sell PositionSize contracts at market
    Endif
    Endif

    //===== GESTION du STOP SUIVEUR =====
    If OnMarket then
    //—– Comptage Gain Latent —–
    MyGainLatent = (MyClose – TradePrice)
    MyRatioGainLatent = ((MyGainLatent * 100) / TradePrice)
    //—– Comptage Gain Latent —–

    //—– Pour connaitre combien de temps le trade a durer —–
    //—– Comptage de Bar —–
    MyEntryBarCount = BarIndex – MyEntryBarIndex
    //—– Comptage de Bar —–

    //===== PARTIE STOP SUIVEUR =====
    If MyFlagTS then

    //— Les pas suivants : Incrémentation —
    If MyGainLatent >= TSstart then

    MyCalledR81, MyCalledR82, MyCalledR83, MyCalledR84, MyCalledR85 = CALL “2023JUN_SMART_TRAILING”[10, 1, MyGainLatent, TSstart, TSstep, MyOpen, MyNewSL, 9, 9]

    MyNewSL = MyCalledR81

    Endif
    //=== End MyGainLatent >= TSstart ===

    If MyClose > MyNewSL then
    Sell at MyNewSL STOP
    Else
    Sell PositionSize contracts at Market
    Endif
    //— Je calcule ici l’écart entre —
    //— mon prix d’achat et mon SL —
    MySLDiff = TradePrice – MyNewSL
    //Graph MySLDiff Coloured(255,55,55) As “My SLdiff”

    //=== End Stop Suiveur (MyFlag) ===
    Endif
    //===== PARTIE STOP SUIVEUR =====

    //=== End On Market ===
    Endif

    //=== End WorkDay ===
    Endif

    //GraphOnPrice MyNewSL Coloured(0,204,0) As “My MyNewSL”
    //Graph MyExitType Coloured(0,0,0) As “My Exit Type”
    //****** Showing Drawn Down ******
    //Graph MyGainLatent Coloured(255,82,82) As “My Gain Latent”
    //Graph MyDiff Coloured(255,82,82) As “My Diff”
    //

    #248475

    sortie dans un délai de 15 minutes (en utilisant UpdateOnClose).

    Pour commencer… La ligne 83 du code publié doit être telle que décrite par Roberto…

    Faites-nous savoir si ce qui précède fait une différence ?

     

     

    #248476

    Oui, cela fait une différence en ma défaveur

    #248478

    Je résous le problème en exécutant le code, puis en apportant des modifications. Je ne peux pas le faire avec votre code ci-dessus car je n’ai pas les indicateurs appelés .

    Yes, it makes a difference to my disadvantage.

    Perhaps you need to review the code logic or reoptimize it now that you are using updateonclose ?

    #248479

    Oui, cela fait une différence à mon désavantage.

    Peut-être avez-vous besoin de revoir la logique du code ou de la réoptimiser maintenant que vous utilisez  updateonclose  ?

    #248481

    OK. Merci Grahal

    1 user thanked author for this post.
    #248483

    Essayez cette version modifiée. Je n’ai pas pu l’essayer car vous n’avez pas attaché l’indicateur.

     

    1 user thanked author for this post.
Viewing 10 posts - 1 through 10 (of 10 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login