Comptage de trades

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #181730 quote
    Fralex
    Participant
    Junior

    Bonjour à tous,

    Je suis en phase de test avec une stratégie simplissime et je voulais mettre des compteurs d’ouverture de trades (dans un premier temps, compteur de trades totaux, puis des compteurs de trades par tranches horaires)

    Sur Allemagne 40 1€ H5, backtest tick par tick du 02/08/2010 à maintenant.

    //Allemagne 40 1€  H5
    
    defparam cumulateorders = false
    defparam preloadbars = 10000
    once compteur=0
    
    n=1       //  Nombre de contrat
    
    DonchianSupA = highest[5](high)
    graphonprice DonchianSupA as "DonchianSupA"
    c1 = close crosses over DonchianSupA[1]
    
    sl=21
    if c1 then
    BUY n CONTRACTS AT market
    Compteur=Compteur+1
    graph Compteur COLOURED(0,128,0) as "Compteur"
    SET STOP pLOSS sl
    endif
    
    IF NOT ONMARKET THEN
    newSL=0  //reset the stoploss value
    ENDIF
    
    offset=21
    //manage long positions
    IF LONGONMARKET THEN
    //first move
    IF newSL=0 THEN
    newSL = DonchianSupA[1]-offset
    firstmove=newsl
    graphonprice firstmove COLOURED(0,128,0)
    ENDIF
    //next moves (trailing stop)
    IF newSL>0 THEN
    newSL = max(newsl, DonchianSupA[1]-offset)  // trailingstop ne peux pas reculer
    trailingstop=newsl
    graphonprice trailingstop COLOURED(255,0,0)
    ENDIF
    ENDIF
    
    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    ENDIF
    

     

    Le rapport détaillé donne un nombre de trades total de 1198

    La variable Compteur devrait commencer à 1 et terminer à 1198, or le Compteur commence à 370 et termine à 1679 soit une différence de 1309

    Ceci est observé pour Preloadbars = 10000

    Si Preloadbars = 1000      le compteur démarre à 94 et termine à 1403 soit une différence de 1309

    Je ne comprends pas 3 choses :

    -pourquoi le compteur ne démarre pas à 1 ?

    -Pourquoi le compteur est affecté par Preloadbars ?

    -Pourquoi le compteur s’incrémente quelques fois alors qu’on est avec cumulateorders = false, donc pas de nouvelle position à prendre si on est onmarket ?

     

    Cerise sur le gâteau, si je puis dire, en ajoutant not onmarket à la ligne 13 (if not onmarket and c1 then), le résultat change encore une fois (redondance entre not onmarket et cumulateorder=false) :

    le compteur démarre à 94 et termine à 1293 soit une différence de 1199 (presque pareil que le total du rapport détaillé, soit 1198)

    Forum-PRC-02.jpg Forum-PRC-02.jpg Forum-PRC-01.jpg Forum-PRC-01.jpg
    #181735 quote
    JC_Bywan
    Moderator
    Master

    Bonjour,

    1 – le preloadbars permet de s’assurer que suffisamment de barres non affichées soient lues avant, pour que tout ce qui nécessite une période (une moyenne mobile, un highest sur N bougies etc…) soit calculable dès la bougie 1 affichée mais qui sera en fait la bougie “nombre du preloadbars”

    2 – le compteur défini dans ce code s’en retrouve affecté car le code est lu sur chacune des barres du preloadbar, donc il va s’incrémenter avant la 1ère bougie affichée

    3 – le compteur s’incrémente malgré le cumulateorders=false car la lecture de la ligne 16 compteur=compteur+1 ne dépend que d’avoir c1 vrai en ligne 14, pas du buy fait ou pas fait en ligne 15

    Pour retomber sur ses pattes avec le compteur, on peut déjà encadrer la ligne compteur=compteur+1 par un “if barindex>=10000 then…endif” ce qui devrait éviter de l’incrémenter pendant le preloadbars (le 10000 du if étant celui du preloadbars, il serait à modifier si on diminue le preloadbars), et avoir un début d’affichage à 0 et 1ère incrémentation à 1.

    Fralex thanked this post
    #181736 quote
    Fralex
    Participant
    Junior

    Bonjour, merci pour la réponse rapide….je vais tester prochainement

    #181790 quote
    Fralex
    Participant
    Junior

    Bonjour,

    J’ai modifié le pgm en paramétrant BARINDEX avec la valeur de PRELOADBARS et le résultat est parfait :

    Le compteur des positions ouvertes est à 1200 (la dernière étant clôturée, le total des trades du rapport détaillé est aussi 1200, si la dernière ne l’avait pas été, le rapport détaillé aurait mis 1199 ; c’est ce que j’avais pu observer dans un précédent test).

    En H5, les bougies s’ouvrent à 1h, 6h, 11h, 16h, 21h

    La stratégie implique une prise de position à l’ouverture de ces bougies, la répartition des trades ouverts à l’ouverture de ces bougies est donc :

    1h :  176

    6h :  134

    11h :  386

    16h :  261

    21h :  243         soit un total de 1200

    Première constatation et ce n’est pas une surprise, 74% des trades sont pris sur les bougies 11h, 16h et 21h

    Il ne reste plus qu’à déterminer à quel moment les trades sont clôturés ce qui revient à déterminer le nombre de trades clôturés au stoploss initial, ou au premier mouvement du trailingstop ou aux suivants. J’ai fait des essais en s’inspirant de ce qui est fait pour l’ouverture des trades, mais cela ne fonctionne pas car la fermeture des trades se fait n’importe quand sur la durée d’une bougie H5.

    J’ai fait un essai en MTF M15, mais comme le TF de base est H5, M15 n’étant pas un multiple de H5 et le code ne s’exécute pas.

    La solution serait peut-être de mettre la stratégie en TF de base M15 (pour pouvoir connaitre sur quelles bougies M15 les ventes se font) avec les conditions de prise de position, stoploss  et trailingstop  déterminés en H5……à voir………je continue  mes essais………bien sûr, d’autres idées sont bienvenues.

     

    //Allemagne 40 1€  H5
    
    defparam cumulateorders = false
    defparam preloadbars = 1000
    Bars=1000  //preloadbars pour barindex
    
    once compteur=0  //Compteur du nombre total de trades ouverts
    
    //Compteurs des trades ouverts par période
    once ComptA01H=0  //01.00-06.00
    once ComptA06H=0  //06.00-11.00
    once ComptA11H=0  //11.00-16.00
    once ComptA16H=0  //16:00-21.00
    once CompAt21H=0  //21.00-01.00
    
    n=1       //  Nombre de contrat
    
    DonchianSupA = highest[5](high)
    graphonprice DonchianSupA as "DonchianSupA"
    c1 = close crosses over DonchianSupA[1]
    
    sl=21  // stoploss initial
    if not onmarket and c1 then
    BUY n CONTRACTS AT market
    IF barindex>=1000 then
    Compteur=Compteur+1  // le résultat peut être supérieur d'une unité par rapport au rapport détaillé car le trade à été ouvert mais pas encore clôturé
    graph Compteur COLOURED(255,0,255) as "Compteur"
    endif
    
    if (time>=010000 and time<060000) and barindex>=Bars then
    ComptA01H=ComptA01H+1
    graph ComptA01H COLOURED(0,128,0) as "ComptA01H"
    endif
    if (time>=060000 and time<110000) and barindex>=Bars then
    ComptA06H=ComptA06H+1
    graph ComptA06H COLOURED(0,128,0) as "ComptA06H"
    endif
    if (time>=110000 and time<160000) and barindex>=Bars then
    ComptA11H=ComptA11H+1
    graph ComptA11H COLOURED(0,128,0) as "ComptA11H"
    endif
    if (time>=160000 and time<210000) and barindex>=Bars then
    ComptA16H=ComptA16H+1
    graph ComptA16H COLOURED(0,128,0) as "ComptA16H"
    endif
    if (time>=210000) and barindex>=Bars then
    CompAt21H=CompAt21H+1
    graph CompAt21H COLOURED(0,128,0) as "CompAt21H"
    endif
    
    SET STOP pLOSS sl
    endif
    
    IF NOT ONMARKET THEN
    newSL=0  //reset the stoploss value
    ENDIF
    
    offset=21
    //manage long positions
    IF LONGONMARKET THEN
    //first move
    IF newSL=0 THEN
    newSL = DonchianSupA[1]-offset
    firstmove=newsl
    graphonprice firstmove COLOURED(0,128,0)
    ENDIF
    //next moves (trailing stop)
    IF newSL>0 THEN
    newSL = max(newsl, DonchianSupA[1]-offset)  // trailingstop ne peux pas reculer
    trailingstop=newsl
    graphonprice trailingstop COLOURED(255,0,0)
    ENDIF
    ENDIF
    
    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    ENDIF
    Forum-PRC-03.jpg Forum-PRC-03.jpg Forum-PRC-04.jpg Forum-PRC-04.jpg
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Comptage de trades


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Fralex @fralex Participant
Summary

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

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 11/17/2021
Status: Active
Attachments: 4 files
Logo Logo
Loading...