Empêcher les SL et TP sur la bougie d'entrée
Forums › ProRealTime forum Français › Support ProOrder › Empêcher les SL et TP sur la bougie d'entrée
- This topic has 22 replies, 4 voices, and was last updated 5 years ago by Be-n.
-
-
05/24/2016 at 12:16 PM #7872
Cela aurait du fonctionner logiquement en effet:
123IF barindex - tradeindex > 1 THENset target profit 0.0020ENDIFMais 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.
05/25/2016 at 11:01 AM #7974En 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 🙂
05/25/2016 at 11:22 AM #7982C’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:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253Defparam cumulateorders = falseREINV = 0IF REINV = 0 THENn = 8ELSIF REINV = 1 THENcapital = 10000 + strategyprofitn = (capital / 10000)*8ENDIFIF dayofweek = 1 THENHt = DHigh(2)Bs = DLow(2)C = DClose(2)ENDIFIF dayofweek >=2 and dayofweek < 6 THENHt = DHigh(1)Bs = DLow(1)C = DClose(1)ENDIFPivot = (Ht + Bs + C) / 3Res2 = Pivot + Ht - BsSup2 = Pivot - (Ht - Bs)Ctime = time > 070000 and time < 180000Czone = Close > Sup2 and Close < Res2IF Ctime and Czone THENbuy n shares at Sup2 limitsellshort n shares at Res2 limitxx = 0.0020Set stop loss xxbarflag = barindexENDIF// STOP LOSS & TAKE PROFITIF onmarket and barindex - barflag > 1 THENSet target profit xxENDIFIF time >= 210000 THENIF longonmarket THENsell at marketENDIFIF shortonmarket THENexitshort at marketENDIFENDIFJ’ai pas essayé par contre, dit moi si ça change quelque-chose ..
05/27/2016 at 10:12 AM #8215Désolé, encore des bizarreries avec une courbe de capital trop parfaite…
Merci quand même
05/27/2016 at 10:27 AM #8220J’ai la confirmation qu’avec
123IF onmarket and barindex - barflag > 1 THENSet target profit xxENDIFon a le même problème.
Il faut impérativement mettre :
1234IF onmarket and barindex - barflag > 1 THENsell at tradeprice + xx limitexitshort at tradeprixe - xx limitENDIFEt là le backtest fonctionne parfaitement… et il passe d’un backtest de rêve à un GROS flop.
Dure la vie de codeur…
04/26/2019 at 8:37 AM #97183Bonjour,
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 LIMITQui 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 :
Déterminer la durée de validité d'un ordre limite1234567891011121314151617IF c1 THENbuy 1 contract at marketbarflag = BARINDEXELSIF c2 THENsellshort 1 contract at marketbarflag = BARINDEXENDIF//STOP DE PROTECTIONIF ONMARKET AND (BARINDEX - barflag > 1) THENIF LONGONMARKET AND close<POSITIONPRICE-objectifperte THENSELL AT POSITIONPRICE-objectifperte LIMITELSIF SHORTONMARKET AND close>POSITIONPRICE+objectifperte THENEXITSHORT AT POSITIONPRICE+objectifperte LIMITENDIFENDIFPour 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 !
04/26/2019 at 10:45 AM #97192Voici 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/
05/13/2019 at 11:00 AM #98338Salut 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) :
SET STOP LOSS 0123456IF c1 THENbuy 1 contract at marketSET STOP LOSS 0ENDIFSET STOP pLOSS 20La 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 !
-
AuthorPosts
Find exclusive trading pro-tools on