sortie d’achat non respectée

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #194889 quote
    rominet44
    Participant
    Average

    Bonjour Nicolas, j’ai un algo sur le Dax H1 qui commence à donner des résultats corrects. Je ne comprends pas pourquoi dans 2 positions à l’achat (sur 177 positions sur une période de 10K) les critères de sortie ne sont pas respectés par l’algo alors que dans l’ensemble çà se passe bien : le backtest me donne 55% de réussite avec un taux de conversion de 1,99 . Mais ces 2 positions m’apportent 2 pertes impressionnantes incompréhensibles , car les critères de sortie sont d’après le graphique respectés. Pourriez-vous m’apporter votre expertise sur ce pb ? si oui comment dois-je procéder ?

    Cdlmt, JP

    #194891 quote
    Nicolas
    Keymaster
    Master

    Bonjour, pas de soucis pour t’aider à comprendre ces événements avec ta stratégie.

    2 possibilités :

    1. poster le code ici et nous indiquer les détails des 2 positions problématiques afin de reproduire et de résoudre
    2. me contacter pour une assistance privée (et payante) via le formulaire dédié du site: https://www.prorealcode.com/trading-programming-services/
    #194909 quote
    rominet44
    Participant
    Average

    Ok merci, je considère pas mon projet comme ultra secret !!!!  donc je joins le code dans son état sachant qu’il aura sans doute besoin de qq améliorations.

    La période de backtest est sur 10K en H1. Les 2 positions évoquées sont (en remontant le temps) :

    1 – entrée 23/7/2020 10h00  sortie 4/8/2020 soit 190 B  !!sans sortie et une perte de 633€

    2 -entrée 3/5/2019 13h00      sortie 15/5/2019  10h     avec une perte de 448€

    J’ai essayé de positionner un stploss à 400€ mais là aussi  je ne comprends pas il n’set pas pris en compte ???

    //  DJ- par JP  en H1  nouvelle version  v2 dernière modif 6/6/2022
    //  version provisoire en achat uniquement
    //
    
    DEFPARAM CumulateOrders = false // Cumul des positions activé
    DEFPARAM Preloadbars = 8000
    
    AchatOK=1
    //VenteOK=0
    nA=1
    //nV=1
    //  ***  periode time   ***********
    CtimeA= time>081000 and time<190000 //  8h10  19h00
    
    //  *** filtre Moy Mob
    M200 = Average[173](open)  //  173
    T200B=M200<M200[6]
    T200H=M200>M200[3]
    
    M100=average[115](close)
    T100H=M100>M100[3]
    
    MH50=HullAverage[55](close)  //  v1 55
    TH50H=MH50>MH50[1]   // dmmh50H=1
    TH50B=MH50<MH50[1]   // =2
    
    M8=Average[6](open)  //  v1 6
    
    if MPmoy CROSSES OVER MH50 then
    ca1=1
    cv1=0
    endif
    
    if MPmoy CROSSES UNDER MH50 then
    cv1=1
    ca1=0
    endif
     
    //  ***  filtre Parabolic SAR ***
    Indsar=SAR[0.02,0.021,0.20]
    csarv=close<Indsar
    csara=close>Indsar
    
    // *** filtre MACD  ****
    C = 12
    L = 26
    MMC = exponentialAverage[C](close)  //
    MML = exponentialAverage[L](close)
    
    MACDligne = MMC - MML
    ligne = exponentialAverage[9](MACDligne)
    MACDHisto = MACDligne - ligne
    cmacdA=MACDHisto>MacdHisto[9]  // v1 9
    
    // ***  filtre amplitude  ****
    campl=abs(close-open)>4
    
    //  Poids moyen
    Poids=(close-open)/2+open
    MPmoy=average[3](Poids)
    MPmoy1=MPmoy[1]
    
    // *** filtre rsi  ***
    IndrsiA = RSI[12](close)  //  v1 12
    crsiA = IndrsiA >= 63 and IndrsiA<76  //  v1  s1 63
    
    
    // *** sortie de Achats  ********************
    // Conditions pour fermer une position acheteuse
    
    if longonmarket then
    
    c1stpA= close < M8
    c2stpA = close < MPmoy
    c3stpa=MPmoy<MPmoy1
    c6stpa=close<open[2]//  =2
    
    IF  cv1  and csarv  then
    if c1stpA AND c2stpA and c3stpa and c6stpa THEN  //
    STPA=1
    ENDIF
    endif
    IF STPA then
    SELL AT MARKET
    STPA=0
    ENDIF
    
    endif
    
    //  ***********  ACHATS   ********************
    IF not longonmarket and CtimeA THEN
    
    // Conditions pour ouvrir une position acheteuse
    if  AchatOK then
    
    ca2 = close > MH50
    ca4 = MH50 > MH50[1]  //  v1  1
    ca6 = (close > open)
    
    IF T200H AND T100H AND ca2  AND ca4  and ca6 and csara and csara[1] AND cmacdA AND crsiA AND campl THEN
    
    BUY nA CONTRACT AT MARKET
    ENDIF
    endif
    ENDIF

    au passage dans les résultats du backtest à quoi correspondent les valeurs MFE et MAE ?

    Merci pour ton aide,

    Cdlmt, JP

    #194960 quote
    Nicolas
    Keymaster
    Master

    Ces 2 ordres, pourquoi, selon toi, auraient ils dut être sortis ? Suite à une condition du code ?

    Si oui, pourquoi ne pas GRAPH ces conditions et les vérifier une à une ?

    #194973 quote
    rominet44
    Participant
    Average

    Bonjour Nicolas et merci pour ce 1er retour. J’ai effectivement transformé chq condition en indicateur et bien vu sur les positions la coïncidence effective  qui aurait dû déclencher un stop.

    Mais déjà mes excuses pour les infos de contexte,  les positions évoquées sont obtenues sur une période de 30k et pas 10k comme je l’avais mentionné.

    Je peux te donner les valeurs des différents paramètres sur la zone où normalement le stop doit être activé, mais celà ne va-t-il pas alourdir le forum ??

     

    Qu’appelles-tu Graph ? à introduire dans l’algo ?

    #194975 quote
    JC_Bywan
    Moderator
    Master

    Bonjour,

    Doc du site pour instruction graph: https://www.prorealcode.com/documentation/graph/

    A mettre en fin de stratégie, pour afficher le comportement des variables, très utile pour débugguer son code.

    Voir aussi graphonprice si besoin: https://www.prorealcode.com/documentation/graphonprice/

    #195002 quote
    rominet44
    Participant
    Average

    merci à Bywan, je vais consulter çà et essayer.

    Cdlmt, JP

    #195006 quote
    rominet44
    Participant
    Average

    Bonjour à tous,

    j’ai fait le test avec graph (ci-joint le scan des résultats. Sur les 6 variables qui déclenchent le stop c’est “cv1” (en rouge dans graph) qui ne fonctionne pas.

    cv1 est un flip flop généré par le passage au-dessus ou en-dessous de la moyenne MPmoy  (poids moyen de la bougie ) en noir sur le graphique par rapport à la moyenne Hull à 55  en marron.

    On constate que la bascule ne se fait pas systématiquement. Cette bascule est génére par les instructions  crosses over et crosses under . 

    Je pense que le pb vient de ces 2 instructions, qu’en pensez vous ??

    scan-variables-stop.jpg scan-variables-stop.jpg
    #195009 quote
    Nicolas
    Keymaster
    Master

    Maintenant il faut vérifier si ces calculs de MM sont les mêmes dans ton code backtest et celles de tes indicateurs, tu peux GRAPHer sur le prix pour comparer:

    GRAPHONPRICE MPmoy
    GRAPHONPRICE MH50
    #195045 quote
    rominet44
    Participant
    Average

    ok, c’est fait:  à part quelques petits écarts minimes les courbes se superposent parfaitement, donc les calculs se déroulent de la même façon dans l’algo et sur le graphique…

    J’ai vraiment des doutes sur l’exécution des ordres “crosses” , je vais faire des tests sur un algo bidon .

    Par contre j’ai pas la réponse sur la non prise en compte du stoploss : pour essayer d’écrêter les plus grosses pertes  j’ai tenté un stploss à x€  (x étant mis en variable pour optimisation). A aucun moment le stpl est déclenché , même pour des valeurs de stpl> aux 2  closes évoqués , j’avoue ne pas très bien comprendre.

    #195046 quote
    Nicolas
    Keymaster
    Master

    Dans ton code tu calcules MPmoy après le test de croisement, donc ce test de croisement utilise la valeur du calcul/bougie précédente. Pour mémoire, le code est lu de haut en bas.

    #195047 quote
    Nicolas
    Keymaster
    Master

    Pour le stoploss en monnaie, il faut faire un

    set stop $loss 400
    #195048 quote
    rominet44
    Participant
    Average

    Bon Nicola  j’ai trouvé l’erreur du stploss, avec mes excuses  :  çà marche , donc je protège bien contre les trades perdants bizarres pour lesquels je ne vois toujours pas la cause ! je fais les tests et je t’en reparle.

    Cdlmt,JP

    #195050 quote
    Nicolas
    Keymaster
    Master

    voir mon message https://www.prorealcode.com/topic/sortie-dachat-non-respectee/#post-195046 concernant ton calcul de moyenne mobile.

    #195061 quote
    rominet44
    Participant
    Average

    Ah yes , j’ai modifié l’emplacement du calcul, çà change complètement les performances de l’algo !!! (en moins bien malheureusement !) .

    J’ai essayé dans le test crosses  de remplacer MPmoy par Mpmoy[1], logiquement j’aurai dû retrouver les résultats antérieurs puisque les autres tests sont faits après le calcul de MPmoy.

    Rien à faire l’algo ne revient pas à ses résultats  🙁     . J’ai qd même du mal à comprendre l’impact constaté par le seul fait de prendre dans un test la valeur[1] d’une variable

    surtout en constatant les faibles écarts entre les 2 bougies…     J’ai dû inventer un super algo en faisant une erreur de pgm  🙂   !!!

    Mais ce n’est pas la 1ère fois que j’ai constaté les conséquences en performance lorsqu’on modifie l’emplacement du calcul des variables, même quand il n’y a pas d’inversion dans l’ordre des calculs.

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

sortie d’achat non respectée


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
rominet44 @rominet44 Participant
Summary

This topic contains 15 replies,
has 3 voices, and was last updated by Nicolas
3 years, 9 months ago.

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