Problème compréhension stratégies de trading en Multi Time Frame

Viewing 15 posts - 16 through 30 (of 34 total)
  • Author
    Posts
  • #138340 quote
    imencity
    Participant
    Senior

    Bein alors non.

    C’est bien cette partie:

    if strategyprofit <> strategyprofit[1] then
    if positionperf(1) >= 0 then //si dernière position perdante
    nblot = nblot + 0.2  //alors on incrémente la quantité de perte
    else //si elle est positive
    nblot = 1.2 //alors le compte est remis à zéro
    endif
    endif

    Quand je commente j’ai le même résultat peu importe le TF.
    Si je décommente, les résultats sont différents. Pourquoi ?

    #138344 quote
    imencity
    Participant
    Senior

    J’ai entouré en rouge quelques différences au niveau des positions.
    Uniquement entre 1 min et 5 min puisque 15 min ne ressemble pas du tout à cela.

    difference.jpg difference.jpg
    #138522 quote
    Nicolas
    Keymaster
    Master

    Tout simplement parce que tu recalcules ta taille de position à chaque lecture de code et peu importe si tu entres en position ou pas ! D’où un incrément qui continue sans cesse si ton profit a augmenté. Ce genre de calcul de taille de lot devrait être placé juste avant l’entrée en position, dans le bloc conditionnel qui va déclencher celle-ci.

    #138550 quote
    imencity
    Participant
    Senior

    Ah ok merci, je vais corriger tout cela 😉

    #138573 quote
    imencity
    Participant
    Senior

    Comme ça ?

    defparam cumulateorders=false
    timeframe(15 minutes,updateonclose)
    
    TimeTrade = TIME > 090000 AND TIME < 171500
    indicator1 = Average[7](close)
    indicator2 = Average[15](close)
    ONCE nblot = 1.2
    
    CA1 = indicator1 CROSSES OVER indicator2
    
    if TimeTrade AND CA1 then
    // Modifier quantite en fonction des gains
    if strategyprofit <> strategyprofit[1] then
    if positionperf(1) >= 0 then //si dernière position perdante
    nblot = nblot + 0.2  //alors on incrémente la quantité de perte
    else //si elle est positive
    nblot = 1.2 //alors le compte est remis à zéro
    endif
    endif
    
    BUY nblot SHARES AT MARKET
    endif
    
    timeframe(5 minutes,updateonclose)
    CA2 = indicator1 CROSSES UNDER indicator2
    
    IF CA2 THEN
    SELL AT MARKET
    ENDIF
    
    timeframe(15 minutes,updateonclose)
    
    set stop ploss 15

    Je crois pas parce que ça ne fonctionne pas…

    #138725 quote
    imencity
    Participant
    Senior

    Up svp ?

    #138757 quote
    imencity
    Participant
    Senior

    Je n’arrive pas à comprendre à quel endroit j’ai fait une erreur. ca doit être trop simple 🙂

    #138765 quote
    Nicolas
    Keymaster
    Master

    A la ligne 11, ajouter une condition pour tester que l’on est pas au marché (NOT ONMARKET) sinon le code sera lu et l’incrément effectué, même si on ouvre pas d’ordre grace au cumulateorders=false.

    #138779 quote
    imencity
    Participant
    Senior

    Merci de la réponse Nicolas, mais ça ne fonctionne toujours pas:

    defparam cumulateorders=false
    timeframe(15 minutes,updateonclose)
    
    TimeTrade = TIME > 090000 AND TIME < 171500
    indicator1 = Average[7](close)
    indicator2 = Average[15](close)
    ONCE nblot = 1.2
    
    CA1 = indicator1 CROSSES OVER indicator2
    
    if TimeTrade AND CA1 AND NOT ONMARKET then
    //Modifier quantite en fonction des gains
    if strategyprofit <> strategyprofit[1] then
    if positionperf(1) >= 0 then //si dernière position perdante
    nblot = nblot + 0.2  //alors on incrémente la quantité de perte
    else //si elle est positive
    nblot = 1.2 //alors le compte est remis à zéro
    endif
    endif
    
    BUY nblot SHARES AT MARKET
    endif
    
    timeframe(5 minutes,updateonclose)
    CA2 = indicator1 CROSSES UNDER indicator2
    
    IF CA2 THEN
    SELL AT MARKET
    ENDIF
    
    timeframe(15 minutes,updateonclose)
    
    set stop ploss 15
    

    En 5 min les gains sont négatifs et en 1 min ils sont positifs. Or le résultat devrait être identique…

    Une autre idée svp ?

    TFpbl-scaled.jpg TFpbl-scaled.jpg
    #138817 quote
    Nicolas
    Keymaster
    Master

    La quantité d’ordres est différente, la date de début des backtests est-elle exactement la même ? (sur le graphique pas dans les paramètres de ProBacktest).

    #138861 quote
    imencity
    Participant
    Senior

    Bonjour Nicolas,

    Oui le début est exactement à la même date sur les graphiques.

    Et en changeant d’ordinateur je reproduit exactement la même erreur.
    Je ne comprends pas cette erreur et ça me bloque pour la suite de mes tests.

    J’ai cherché d’autres code multi frame avec des stratégies pour comparer mais j’ai pas trouvé.

    As-tu la même chose si tu lances mon code chez toi ?

    #138865 quote
    Nicolas
    Keymaster
    Master

    Changer d’ordinateur ne changera rien aux résultats des backtests, ceux-ci sont exécutés côté serveur.

    J’ai exactement les mêmes résultats si je spécifie bien la même date et heure de début en 1-minute ou en UT 5-minutes, en v11.

    #138869 quote
    imencity
    Participant
    Senior

    Les mêmes résultats que moi ou bien les mêmes résultats en 1min et en 5min ?

    car moi les résultats n’ont rien à voir.

    je fais mes tests en version live IG.

    #138870 quote
    imencity
    Participant
    Senior

    Sur ma dernière capture d’écran on voit bien que les dates de début et fin sont identiques .

    #138882 quote
    imencity
    Participant
    Senior

    Encore un autre test de réalisé… les 2 résultats n’ont absolument rien à voir…

    Même date de début et même date de fin. Revoici mon code:

    defparam cumulateorders=false
    timeframe(15 minutes,updateonclose)
    
    TimeTrade = TIME > 090000 AND TIME < 171500
    indicator1 = Average[7](close)
    indicator2 = Average[15](close)
    ONCE nblot = 1.2
    
    CA1 = indicator1 CROSSES OVER indicator2
    
    if TimeTrade AND CA1 AND NOT ONMARKET then
    // Modifier quantite en fonction des gains
    if strategyprofit <> strategyprofit[1] then
    if positionperf(1) >= 0 then //si dernière position perdante
    nblot = nblot + 0.2  //alors on incrémente la quantité de perte
    else //si elle est positive
    nblot = 1.2 //alors le compte est remis à zéro
    endif
    endif
    
    BUY nblot SHARES AT MARKET
    endif
    
    timeframe(5 minutes,updateonclose)
    CA2 = indicator1 CROSSES UNDER indicator2
    
    IF CA2 THEN
    SELL AT MARKET
    ENDIF
    
    timeframe(15 minutes,updateonclose)
    
    set stop ploss 15
    

    Je comprends pas pourquoi… Les résultats n’ont absolument rien à voir y a qu’à voir les graphiques.

    TF0105.jpg TF0105.jpg
Viewing 15 posts - 16 through 30 (of 34 total)
  • You must be logged in to reply to this topic.

Problème compréhension stratégies de trading en Multi Time Frame


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
imencity @imencity Participant
Summary

This topic contains 33 replies,
has 3 voices, and was last updated by Nicolas
5 years, 8 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 07/01/2020
Status: Active
Attachments: 9 files
Logo Logo
Loading...