probacktest – achat non déclenché et compteur initial non nul

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #48065 quote
    Jeje
    Participant
    Senior

    Bonjour,

    Je souhaite intégrer un compteur d’achats et un compteur de ventes.

    L’objectif étant le suivant : si le code rencontre plusieurs signaux de ventes successifs, alors il doit réaliser qu’une tendance haussière est forte (nous sommes loin d’un range tranquille !), et à partir d’un certain nombre de signaux de ventes, au lieu de déclencher des ventes, il déclenche à chaque fois des achats –> cette configuration serait très utile en ce moment avec un DAX qui monte fortement depuis de nombreuses heures.

    Je souhaite avoir votre aide sur 2 problèmes sur le code suivant passé en backtest :

    • le code ne prend pas un signal d’achat qui doit se présenter le 22 septembre à 3 heures 15 (alors qu’il devrait le faire) au regard de la condition d’achat pour le test, (il ne prend pas non plus le signal de vente de vendredi 22 septembre à 12 heures 45 alors que la condition de vente est vérifiée)
    • le compteur d’achats (= compteurachat) commence ma période backtestée à la valeur 904 –> alors qu’il devrait commencer à 0 (comme c’est le cas pour le compteur de vente (= compteurvente)

    le code ci-dessous est fait pour inverser une position à chaque fois qu’un signal de retournement se présente –> s’il est déjà en position, il clôture la position ouverte, puis ouvre une autre position dans le sens inverse.

    Par contre, s’il rencontre un nouveau signal identique, il ne clôture pas, mais cumule un nouvelle position.

    Pourriez-vous m’aider s’il vous plaît pour les 2 problèmes rencontrés ?

    les données du backtest sont données sur la capture d’écran jointe. Un GRAND MERCI à vous.

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = True // Cumul des positions désactivé
    
    once compteurachat=0
    once compteurvente=0
    
    nombredecontrats=1
    
    // Conditions 
    achat = (close < 12564)
    vente = (close > 12643)
    
    //  achat
    
    graph compteurachat as "compteurachat"
    
    IF shortonmarket and achat THEN
    EXITSHORT AT MARKET
    BUY nombredecontrats CONTRACT at market
    compteurvente=0
    compteurachat=compteurachat+nombredecontrats
    ENDIF
    
    IF NOT shortonmarket and achat THEN
    BUY nombredecontrats CONTRACT at market
    compteurvente=0
    compteurachat=compteurachat+nombredecontrats
    ENDIF
    
    IF longonmarket and achat THEN
    BUY nombredecontrats CONTRACT at market
    compteurachat=compteurachat+nombredecontrats
    ENDIF
    
    // Vente
    
    graph compteurvente as "compteurvente"
    
    IF longonmarket and vente THEN
    SELL AT MARKET
    SELLSHORT nombredecontrats CONTRACT AT market
    compteurachat=0
    compteurvente=compteurvente+nombredecontrats
    ENDIF
    
    IF NOT longonmarket and vente THEN
    SELLSHORT nombredecontrats CONTRACT AT market
    compteurachat=0
    compteurvente=compteurvente+nombredecontrats
    ENDIF
    
    IF shortonmarket and vente THEN
    SELLSHORT nombredecontrats CONTRACT AT market
    compteurvente=compteurvente+nombredecontrats
    ENDIF
    
    #48067 quote
    Jeje
    Participant
    Senior

    j’ai oublié de joindre aussi le résultat actuel obtenu sur probacktest.

    le voici ci-dessous :

    #48080 quote
    Gertrade
    Participant
    Veteran

    Bonjour,

    A mon avis les lignes 30 à 33 sont à supprimer. Idem, pour la condition Short, supprimer les lignes 52 à 55.

    Essaie ton Backtest comme çà.

    Bon courage à toi

    #48084 quote
    Nicolas
    Keymaster
    Master

    Je n’ai pas vérifier (tester moi même), le code, mais plusieurs choses qui pourraient t’aider :

    • placer les instructions GRAPH à la fin du code permet de vérifier vraiment leurs valeurs à la fin de la lecture du code, pour mémoire ProBacktest lit le code de haut en bas à chaque bougie
    • utilise plutôt les instructions COUNTOFLONGSHARES  et COUNTOFSHORTSHARES pour vérifier la quantité de contrats (dans un sens ou dans l’autre) au marché plutôt que d’incrémenter et de décrémenter toi même des variables
    #48096 quote
    Jeje
    Participant
    Senior

    Je vous remercie beaucoup pour votre aide.

    Je regarde et vous tiens au courant. très bonne journée à vous.

    #48097 quote
    Jeje
    Participant
    Senior

    Nicolas,

    Pourrais-tu voir (si tu en as le temps) pourquoi il ne prend pas en compte l’ordre d’achat de 22 septembre à 3 heures 15, alors que la condition d’achat est respectée s’il te plaît ?

    je t’en remercie beaucoup.

    #48112 quote
    Nicolas
    Keymaster
    Master

    Comme évoqué dans mon précédent message, avec la fonction GRAPH je peux voir que la condition ACHAT n’est pas respectée à cette horaire (en timeframe 1 minute, je ne sais pas quelle est l’unité de temps que tu utilises).

    #48122 quote
    Jeje
    Participant
    Senior

    mon unité de temps est 15 minutes.

    #48124 quote
    Jeje
    Participant
    Senior

    en fait, sur l’image que j’ai posté à 9h32 hier soir, il est entré en vente et à l’achat uniquement aux flèches de signaux de vente et d’achat indiquées sur cette image.

    il n’y a pas d’achat le 22 septembre à 3 h 15 matin alors que la condition d’achat est vérifiée. je ne sais pas pourquoi il n’entre pas en position juste après avoir cloturé la position courte déjà ouverte (il n’a pas non plus cloturé cette position courte).

    #48126 quote
    Nicolas
    Keymaster
    Master

    La condition ACHAT n’est pas vérifiée à 3:00, mais à 3:15, l’ordre s’ouvre donc bien à la bougie suivante.

    Pour mémoire: dans probacktest, le code est lu une seule fois par barre à sa clôture et les ordres sont envoyés au marché à l’open de la barre suivante.

    #48140 quote
    Jeje
    Participant
    Senior

    Merci beaucoup Nicolas, j’ai suivi tes conseils et ça fonctionne très bien maintenant, notamment avec les instructions  COUNTOFLONGSHARES  et COUNTOFSHORTSHARES.

    De plus il prend à présent les ordres d’achat à l’heure et à la date à laquelle il ne prenait pas ces ordres. J’obtient exactement les mêmes profils que toi.

    Gertrade, oui, ces 6 lignes permettent d’ajouter des ordres identiques supplémentaires lorsqu’on est déjà long ou court.

    Merci beaucoup pour votre aide

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

probacktest – achat non déclenché et compteur initial non nul


Support ProOrder

New Reply
Author
author-avatar
Jeje @jeje Participant
Summary

This topic contains 10 replies,
has 3 voices, and was last updated by Jeje
8 years, 3 months ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 10/02/2017
Status: Active
Attachments: 4 files
Logo Logo
Loading...