Erreur code probacktest

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #27592 quote
    Phil4910
    Participant
    Average

    Bonjour,

    J’essaie de faire un probacktest avec un code simplissime mais le test prend des positions non conformes.

    Le principe :Dax 25 ticks; si la clôture est égale au plus haut/plus bas, prise de position sur la bougie suivante si dépassement (0.5 par exemple) du plus haut/plus bas (et donc de la clôture) de la bougie signal. TP à 1 et stoploss à 5.

    Quelqu’un peut-il vérifier mon code en image jointe?

    Merci d’avance.

    Phil4910

    #27603 quote
    arcane
    Participant
    Senior

    Bonjour,

    On ne peut pas faire un programme sur les ticks

    Unité de temps minimum 1 s.

    #27697 quote
    Phil4910
    Participant
    Average

    Merci de ta réponse Arcane.

    Cependant, même en 1 minute, il me prend des positions non conformes.

    Je pense savoir d’oµ provient l’erreur mais je ne sais pas comment la résoudre : le système “garde en mémoire” le signal et l’exécute parfois 10 minutes après. Moi, ce que je souhaiterais, c’est qu’il l’exécute uniquement sur la bougie suivante. Si les conditions de dépassement du +haut/+bas de la bougie signal ne sont pas remplies sur la bougie qui suit, le signal doit “s’éteindre”.

    Comment faire?

    Phil4910

    #28082 quote
    larouedegann
    Participant
    Master

    le stop n’est il pas de trop ?

    #28490 quote
    Phil4910
    Participant
    Average

    Désolé du retard de ma réponse.

    Non, le stop ne joue aucun rôle dans la prise de position.

    Quelqu’un peut-il m’aider?

    Merci,

    Phil4910

    #28493 quote
    JC_Bywan
    Moderator
    Master

    En l’absence de suffisamment d’infos, ce qui saute aux yeux dans un premier temps, c’est l’imbrication des boucles if pour c1 et c2, au lieu d’être séparées… Si ce n’était pas voulu, cela va affecter la logique de prise de positions. Aussi, si le respect de la condition c2 du 2e if est pour engager un short plutôt qu’une vente de position existante, mieux vaut utiliser sellshort plutôt que sell.

    Si jamais séparer les 2 boucles if/endif ne suffit pas à résoudre le problème dans un nouveau backtest, alors pour obtenir davantage de réponses, il va falloir aider ceux qui potentiellement peuvent t’aider en leur fournissant davantage d’infos disponibles:

    1. merci d’insérer le code via le bouton “insert PRT code” plutôt que par image, afin que celui qui veut aider puisse rapidement le copier coller plutôt que de devoir le retaper, et ce aussi bien pour ceux qui tenteront de reproduire le problème en faisant tourner le code chez eux que pour ceux qui vont copier coller des bouts de code dans leur posts sur ce topic
    2. merci de décrire ou donner un exemple concret de ce que tu appelles “une position non conforme”, car bien souvent on part d’un exemple concret pour soit trouver l’erreur de programmation, soit un éventuel bug plateforme (ou réglage à modifier), soit conclure qu’il n’y a pas d’erreur de programme ou de plateforme mais erreur d’interprétation
    3. merci de fournir en image un zoom du backtest dax 25 ticks avec cas de “position non conforme” et avec la fenêtre des variables du code affichées avec la fonction GRAPH (graph c1 as “c1”, graph c2 as “c2” etc…)
    Nicolas thanked this post
    #28513 quote
    Phil4910
    Participant
    Average

    Merci Noobywan pour tes explications qui m’ont déjà permis de rectifier une première erreur : il fallait séparer les boucles if/endif. De la sorte, les prises de position à l’achat tout comme à la vente sont maintenant “conformes”.

    Subsiste une erreur : dans mon code, je demande un  target profit à 1 (soit 25€ pour un lot plein dax30) et un stop loss à 5 (soit 125€). Cependant, au  vu de la liste des positions clôturées en perf absolues (cfr image jointe), le code semble ne pas respecter mes instructions -> ?

    Je voulais tester ce code en 100 ticks mais il ne fonctionne pas. Il faut aller sur une UT >= 1 minute 🙁

    defparam flatbefore=091000
    defparam flatafter=173000
    
    C1 = close = high
    C2 = close = low
    // Conditions pour ouvrir une position acheteuse
    IF NOT LongOnMarket AND C1 THEN
    BUY 1 CONTRACTS AT (close+0.5)stop
    ENDIF
    
    // Conditions pour ouvrir une position en vente à découvert
    IF NOT ShortOnMarket AND C2 THEN
    SELLSHORT 1 CONTRACTS AT (close-0.5)stop
    ENDIF
    
    // Stops et objectifs : entrez vos stops et vos objectifs ici
    Set stop loss 5
    Set target profit 1
    #28517 quote
    JC_Bywan
    Moderator
    Master

    Pour les clotures de positions, sur les quelques unes que j’ai regardé (pas toutes), ce sont des cas où le programme veut rentrer en position inverse d’une position existante, et cumuler des positions inverses PRT ne sait pas faire, à la place il calcule une position “nette” différence entre long et short (même si rajoute un defparam cumulate order = true).

    Donc tu peux te retrouver avec ton stoploss 5 et target 1 pas encore atteints ni l’un ni l’autre et une entrée en position inverse, qui au lieu de rajouter une position dans l’autre sens en plus de celle existante, va juste fermer la position en cours résultant en un gain/perte quelque part entre +25 et -125 sur la position fraichement fermée et pas de position inverse réellement ouverte…

    En ce qui concerne les légers surpassements de +25, voir si ça peut correspondre pas à un léger slippage favorable de 0.2 ou 0.3 sur le tick par tick (on est à 0.9 de gain, le +1 pas encore atteint, et on “saute” à 1.1 ou 1.2 sans passer par le +1), ça me semble probable.

    #28518 quote
    Phil4910
    Participant
    Average

    Noobywan, merci beaucoup de tes explications et du temps que tu m’as consacré.

    Bon trading,

    Phil4910

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

Erreur code probacktest


Support ProOrder

New Reply
Author
author-avatar
Phil4910 @phil4910 Participant
Summary

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

Topic Details
Forum: Support ProOrder
Language: French
Started: 03/07/2017
Status: Active
Attachments: 2 files
Logo Logo
Loading...