Empêcher les SL et TP sur la bougie d'entrée

Viewing 8 posts - 16 through 23 (of 23 total)
  • Author
    Posts
  • #7872 quote
    Nicolas
    Keymaster
    Master

    Cela aurait du fonctionner logiquement en effet:

    IF barindex - tradeindex > 1 THEN
     set target profit 0.0020
    ENDIF

    Mais je pense que pour bien faire on devrait tagger nous même le barindex quand on est en position et ensuite vérifier qu’1 barre est terminé pour placer le takeprofit. Et là on en aura le cœur net.

    #7974 quote
    Doctrading
    Participant
    Master

    En fait, j’ai constaté que les “set stop loss” et “set target profit” ne tiennent pas compte de “IF barindex – tradeindex > 1”.

    J’ai résolu le problème en mettant à la place “sell at… limit” et “sell at… stop” (pour un achat)… et là ça fonctionne !

    Bizarre quand même.

    Ce qui est moins bizarre mais désolant, c’est que du coup ma stratégie tombe à l’eau, mauvaises performances… Il faudrait quand même pouvoir prendre profit ou stop loss sur la bougie d’entrée, mais j’attends la mise à jour PRT qui déterminera lequel est touché le premier.

    Encore merci pour ton aide 🙂

    #7982 quote
    Nicolas
    Keymaster
    Master

    C’est plutôt étrange car les conditions sont strictes pour ces fonctions, on considère bien attendre qu’une barre soit dépassé.

    J’ai repris ton code en entier en flaggant nous même le barindex au moment où on place l’ordre:

    Defparam cumulateorders = false
    
    REINV = 0
    
    IF REINV = 0 THEN
    n = 8
    ELSIF REINV = 1 THEN
    capital = 10000 + strategyprofit
    n = (capital / 10000)*8
    ENDIF
    
    IF dayofweek = 1 THEN
    Ht = DHigh(2)
    Bs = DLow(2)
    C = DClose(2)
    ENDIF
    
    IF dayofweek >=2 and dayofweek < 6 THEN
    Ht = DHigh(1)
    Bs = DLow(1)
    C = DClose(1)
    ENDIF
    
    
    Pivot = (Ht + Bs + C) / 3
    Res2 = Pivot + Ht - Bs
    Sup2 = Pivot - (Ht - Bs)
    
    Ctime = time > 070000 and time < 180000
    Czone = Close > Sup2 and Close < Res2
    
    IF Ctime and Czone THEN
    buy n shares at Sup2 limit
    sellshort n shares at Res2 limit
    xx = 0.0020
    Set stop loss xx
    barflag = barindex
    ENDIF
    
    // STOP LOSS & TAKE PROFIT
    
    IF onmarket and barindex - barflag > 1 THEN
    Set target profit xx
    ENDIF
    
    IF time >= 210000 THEN
    IF longonmarket THEN
    sell at market
    ENDIF
    IF shortonmarket THEN
    exitshort at market
    ENDIF
    ENDIF

    J’ai pas essayé par contre, dit moi si ça change quelque-chose ..

    #8215 quote
    Doctrading
    Participant
    Master

    Désolé, encore des bizarreries avec une courbe de capital trop parfaite…

    Merci quand même

    #8220 quote
    Doctrading
    Participant
    Master
    J’ai la confirmation qu’avec
    IF onmarket and barindex - barflag > 1 THEN
    Set target profit xx
    ENDIF
    
    on a le même problème. Il faut impérativement mettre :
    IF onmarket and barindex - barflag > 1 THEN
    sell at tradeprice + xx limit
    exitshort at tradeprixe - xx limit
    ENDIF
    
    Et là le backtest fonctionne parfaitement… et il passe d’un backtest de rêve à un GROS flop. Dure la vie de codeur…
    #97183 quote
    Be-n
    Participant
    Average
    Bonjour, Je déterre ce vieux post car j’ai exactement le même problème que Doctrading avec ce fameux SET STOP LOSS. Comme j’ai en fait part également sur un post que j’ai ouvert récemment (ici), je souhaiterais que ce STOP LOSS soit décleclencher seulement à partir de la barre qui suit ma prise de position et non sur la barre d’entrée. Le comportement de cette instruction est extrêmement frustrant et je ne comprends pas cette impasse. Pour ma part, j’ai tout essayé (selon mes connaissances) et les recommandations de Nicolas :  
    • Placer ce STOP LOSS dans le haut de mon code (échec)
    • Imbriquer cette instruction dans la condition IF ONMARKET… ONMARKET nécessitant une bougie révolue (échec)
    • Utiliser le fameux mais inutile BARINDEX – TRADEINDEX > 0 (échec)
    • Combiner les 3 situations ci-dessus (échec)
      Simplement, est-il possible d’empêcher le SL et TP sur la bougie d’entrée ? A la lecture de ce post, je m’en remets donc au fameux : SELL AT prix LIMIT EXISHORT AT prix LIMIT Qui semble être une solution alternative… Néanmoins, j’ai cru comprendre dans la notice que :
    ces ordres limites et stops à niveaux de prix déterminés sont valables par défaut pour une durée d’une barre, à partir de l’ouverture de la barre suivante. Ils sont donc annulés à sa clôture s’ils n’ont pas été exécutés.
    A la suite de ce commentaire, le manuel donne un exemple qui illustre l’utilisation de certaines variables pour déterminer la durée de validité d’un ordre limite. Mais je n’arrive pas à l’appliquer à mon code. Une bonne âme passerait-elle par là ? Merci d’avance ! Voici mon code :
    IF c1 THEN
    buy 1 contract at market
    barflag = BARINDEX
    ELSIF c2 THEN
    sellshort 1 contract at market
    barflag = BARINDEX
    ENDIF
    
    //STOP DE PROTECTION
    
    IF ONMARKET AND (BARINDEX - barflag > 1) THEN
    IF LONGONMARKET AND close<POSITIONPRICE-objectifperte THEN
    SELL AT POSITIONPRICE-objectifperte LIMIT
    ELSIF SHORTONMARKET AND close>POSITIONPRICE+objectifperte THEN
    EXITSHORT AT POSITIONPRICE+objectifperte LIMIT
    ENDIF
    ENDIF
    Pour résumer, j’ai donc deux questions :
    • Ma première question concerne l’instruction SET STOP LOSS. Est-il possible d’empêcher le SL et TP sur la bougie d’entrée ? Avons-nous une solution à cette impasse.
    • Ma seconde question concerne la durée de validité d’un ordre limite.
    • Une troisième question subsidiaire pour la route : pouvez-vous m’expliquer la différence entre un AT price LIMIT et un AT price STOP svp ?
      Merci !
    #97192 quote
    Be-n
    Participant
    Average
    Voici le lien du post que j’ai récemment ouvert sur le même sujet : https://www.prorealcode.com/topic/comment-placer-un-stop-loss-qua-partir-de-la-ligne-suivante/
    #98338 quote
    Be-n
    Participant
    Average
    Salut Marc ! J’ai sans doute la solution pour empêcher les SL et TP sur la bougie d’entrée. Il suffit de placer SET STOP LOSS 0 pour éliminer tout stop loss dès la prise de position (buy ou sell) :
    IF c1 THEN
    buy 1 contract at market
    SET STOP LOSS 0
    ENDIF
    
    SET STOP pLOSS 20
    La réponse a été apportée par Robertogozzi sur un post que j’ai ouvert sur le forum Anglais : ici Tiens-nous informé ! 😉 Au plaisir !
Viewing 8 posts - 16 through 23 (of 23 total)
  • You must be logged in to reply to this topic.

Empêcher les SL et TP sur la bougie d'entrée


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Doctrading @doctrading Participant
Summary

This topic contains 22 replies,
has 4 voices, and was last updated by Be-n
6 years, 9 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 05/21/2016
Status: Active
Attachments: 2 files
Logo Logo
Loading...