Perte incompréhensible sur un BACKTESTE

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #199492 quote
    Samir pluquin
    Participant
    Junior

    Bonjour à tous,

    j’ai coder une stratégie très simple avec le MACD avec la prise de bénéfice très rapide, ce code je vous l’affiche et vous l’explique en dessous :

    • a=Average[200](close)
    • b= MACDline[12,26,9](close)
    • c=MACDSignal[12,26,9](close)
    • ACHAT1= b CROSSES OVER c and close >a
    • VENTE1= b CROSSES UNDER c and close <a
    • IF ACHAT1 then
    • buy 1000000LOTS AT MARKET
    • SET STOP PLOSS MYSTOP
    • SET TARGET PPROFIT MYPROFIT
    • MYSTOP= -0.01
    • MYPROFIT = +0.01
    • IF VENTE1 then
    • SELLSHORT 1000000LOTS AT MARKET
    • SET STOP PLOSS MYSTOP
    • SET TARGET PPROFIT MYPROFIT
    • MYSTOP= -0.01
    • MYPROFIT = +0.01
    • ENDIF

    pour décrire il y a une prise de position à l’achat quand le MACD croise à la hausse et que le prix est au dessus de la moyenne mobile 200, et une prise de de position vendeuse quand le MACD croise à la baisse et que le prix et en dessous de la moyenne mobile 200, les prise de bénéfice et les stop sont très rapide, c’est a dire par exemple quand il y a un achat au marché est que le prix est a 1.19455 est que le prix monte à 1.19456 le take profit est atteint très rapidement, à l’inverse le stop fait en sorte de ne pas perde plus de 0.00001

    j’ai donc tester ce code sur l’année est tout les Trade ont été gagnant, à l’exception de quelque un qui m’on fait perde beaucoup d’agent ( heureusement que s’était un backteste) mais je ne comprend pas du tout l’exécution de ces trades,

    pour un achat il a été exécuté en dessous de la moyenne mobile 200 alors que les condition d’achat indiquer au dessus de la moyenne mobile 200 et le stop a été exécuter 100 fois plus loin que ce que j’avais indiquer dans le code, comme exemple l’achat s’est exécuté à 1.19455 et le stoploss à stoper la perte à 1.19155 donc bien plus loin que ce que j’avais coder

    quelqu’un peut t il m’expliquer si cela est du à un beug et comment peut on corriger cela pour améliorer le backteste

    merci beaucoup de votre aide =)

    #199730 quote
    robertogozzi
    Moderator
    Master

    ENDIF manque après la ligne 11, juste avant ceci :

    IF VENTE1 then

    Avec ce correctif, il me semble que tout fonctionne bien.

    #199897 quote
    Samir pluquin
    Participant
    Junior

    merci beaucoup =)

    #200327 quote
    Samir pluquin
    Participant
    Junior

    re bonjour a tous ,

    bin écouter le problème persiste encore, mais cette fois se sont des positions acheteuse ou vendeuse qui dure longtemps , exemple une position  se déclenche le 30 aout a 4h29 et se referme a 06h11 cela engendre donc un perte énorme et fais foirer tout les autre Trade gagnant, je ne comprend pas pourquoi les Trade dure aussi longtemps car le stop loss et le take profit sont petit,

    pouvez vous m’aider car je ne sais plus quoi faire ……………………………………..

    pour information lors du bacteste j’ai mis le spread a 0.8 et le capital initial a 1500 euros

    si vous voulais avoir un petit aperçus voici le code que vous pouvez bactester du 29 aout 2022 a 9h00 jusqu’au 31 aout 2022 jusqu’a 17h30

    a=Average[200](close)
    b= MACDline[12,26,9](close)
    c=MACDSignal[12,26,9](close)
    
    ACHAT1= b CROSSES OVER c and close >a
    VENTE1= b CROSSES UNDER c and close <a
    
    IF ACHAT1 then
    BUY 10000LOTS AT MARKET
    SET STOP PLOSS MYSTOP
    SET TARGET PPROFIT MYPROFIT
    MYSTOP= -0.01
    MYPROFIT = +0.01
    ENDIF
    IF VENTE1 then
    SELLSHORT 10000LOTS AT MARKET
    SET STOP PLOSS MYSTOP
    SET TARGET PPROFIT MYPROFIT
    MYSTOP= -0.01
    MYPROFIT = +0.01
    ENDIF
    #200328 quote
    fifi743
    Participant
    Master

    bonsoir,

    quel indice ou forex ?

    #200344 quote
    Nicolas
    Keymaster
    Master

    Au premier achat (ou vente) ligne 10, il n’y a aucune valeur de MYSTOP ou MYPROFIT de connu, donc c’est 0.

    Puis tu renseignes la valeur avec des distances en prix alors que tu utilises des instructions qui attendent une valeur en points (PLOSS, PPROFIT)

    Au deuxième trade, ces valeurs seront utilisés, mais elles ne sont pas correctes, puisque par ailleurs tu donnes une valeur négative à une distance pour le stoploss et avec des +/- devant !? 🙂

    Bref, cela devrait plutôt se coder pour suit:

    //valeur à adapter: 
    MYSTOP = 10 //10 points
    MYPROFIT = 10 //10 points
    // ------------
    
    a=Average[200](close)
    b= MACDline[12,26,9](close)
    c=MACDSignal[12,26,9](close)
    
    ACHAT1= b CROSSES OVER c and close >a
    VENTE1= b CROSSES UNDER c and close <a
    
    IF ACHAT1 then
     BUY 10000 LOTS AT MARKET
     SET STOP PLOSS MYSTOP
     SET TARGET PPROFIT MYPROFIT
    ENDIF
    
    IF VENTE1 then
     SELLSHORT 10000 LOTS AT MARKET
     SET STOP PLOSS MYSTOP
     SET TARGET PPROFIT MYPROFIT
    ENDIF

    Pour mémoire le code est lu de haut en bas, donc si tu veux initialiser des valeurs statiques dans tes variables, place les en tête de code.

    #200379 quote
    Samir pluquin
    Participant
    Junior

    Bonsoir,

    le forex sur EUR/USD en 1min

    merci beaucoup

    #200384 quote
    Samir pluquin
    Participant
    Junior

    juste pour te donner encore un autre exemple, tu prend la journée du 29 aout de 09h00 à 17h59, tu verra que il y a deux Trade perdant, un trade a 16h17 et un autre a 17h28 , tu teste le code suivant en 1 min avec un spread a 0.8 pip et tu verra les deux trade sont perdant et dur longtemps,

    c’est ce que j’essaye de comprendre mais je n’arrive pas a trouver la solution

    voici le code :

    a=Average[200](close)
    b= MACDline[12,26,9](close)
    c=MACDSignal[12,26,9](close)

    ACHAT1= b CROSSES OVER c and close>a
    VENTE1= b CROSSES UNDER c and close<a

    IF ACHAT1 then
    BUY 10000LOTS AT MARKET
    SET STOP PLOSS MYSTOP
    SET TARGET PPROFIT MYPROFIT
    MYSTOP= -0.01
    MYPROFIT = +0.01
    ENDIF

    IF VENTE1 then
    SELLSHORT 10000LOTS AT MARKET
    SET STOP PLOSS MYSTOP
    SET TARGET PPROFIT MYPROFIT
    MYSTOP= -0.01
    MYPROFIT = +0.01
    ENDIF

    #200387 quote
    fifi743
    Participant
    Master

    le code doit etre ecrit comme ceci

     

    a=Average[200](close)
    b= MACDline[12,26,9](close)
    c=MACDSignal[12,26,9](close)
    
    ACHAT1= b CROSSES OVER c and close>a
    VENTE1= b CROSSES UNDER c and close<a
    
    IF ACHAT1 then
    BUY 10000LOTS AT MARKET
    MYSTOP= -0.01
    MYPROFIT = +0.01
    SET STOP PLOSS MYSTOP
    SET TARGET PPROFIT MYPROFIT
    
    ENDIF
    
    IF VENTE1 then
    SELLSHORT 10000LOTS AT MARKET
    MYSTOP= -0.01
    MYPROFIT = +0.01
    SET STOP PLOSS MYSTOP
    SET TARGET PPROFIT MYPROFIT
    
    ENDIF
    #200388 quote
    fifi743
    Participant
    Master

    bien respecter ceci
    Distance minimum du stop 3
    Distance minimum du stop garanti 5
    et mettre en spread 2

    #200406 quote
    Nicolas
    Keymaster
    Master

    Voir mon message ci-dessus où le code a été corrigé: https://www.prorealcode.com/topic/perte-incomprehensible-sur-un-backteste/#post-200344

    Merci d’utiliser cette version pout les tests 🙂

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

Perte incompréhensible sur un BACKTESTE


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 10 replies,
has 4 voices, and was last updated by Nicolas
3 years, 6 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 08/23/2022
Status: Active
Attachments: No files
Logo Logo
Loading...