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/21/2016 at 9:52 PM #7656
Bonjour,
Je cherche désespérément à faire en sorte que mon backtest ne puisse pas prendre ni le SL, ni le TP, sur la bougie d’entrée.
Malgré la commande :
1234IF barindex - tradeindex >= 1 THENSet stop loss xxSet target profit xxENDIFCa ne fonctionne pas, car si la bougie d’entrée est grande et que les 2 sont touchés, c’est encore le TP qui compte même si c’est évidemment perdant.
Merci pour votre aide.
Voici le code complet (que je publierai dans la librairie une fois qu’il sera corrigé). Il s’applique sur l’EUR/USD en graphes M15.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758Defparam 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) / 3//Res3 = Pivot + ((Ht - Bs)*2)Res2 = Pivot + Ht - Bs//Res1 = (2 * Pivot) - Bs//Sup1 = (2 * Pivot) - HtSup2 = Pivot - (Ht - Bs)//Sup3 = Pivot - ((Ht - Bs)*2)Ctime = time > 070000 and time < 180000Czone = Close > Sup2 and Close < Res2IF Ctime and Czone THENbuy n shares at Sup2 limitsellshort n shares at Res2 limitENDIF// STOP LOSS & TAKE PROFITxx = 0.0020IF barindex - tradeindex >= 1 THENSet stop loss xxSet target profit xxENDIFIF time >= 210000 THENIF longonmarket THENsell at marketENDIFIF shortonmarket THENexitshort at marketENDIFENDIF05/21/2016 at 9:56 PM #765705/22/2016 at 9:59 AM #7663Bonjour,
Oui, par exemple, je n’ai pas trouvé comment faire.
05/22/2016 at 4:59 PM #7694Ce sont des ordres LIMIT, je n’avais pas vu. Si tu places ton instruction SET STOP LOSS au même moment que ton ordre LIMIT est envoyé au courtier, je pense que le SL sera inscrit à ce moment là.
Ensuite avec :
123IF barindex - tradeindex >= 1 THENSet target profit xxENDIFça devrait le faire.
Avec des réserves toutefois, il faut que je vérifie si le tradeindex commence quand l’ordre est lancé au marché où si c’est au moment où l’ordre limite est placé. C’est une excellente question ..
05/22/2016 at 8:20 PM #7706Merci pour ta réponse.
Le problème, c’est que c’est exactement ce que j’ai écrit (cf mon code plus haut), etc an e fonctionne pas.
C’est pour cela que je me creuse encore la tête…Je peux très bien faire :
123IF barindex - tradeindex = 2 THENsell at marketENDIFet ça fonctionne, mais bizarrement ça ne fonctionne pas avec les ordres stop.
Bonne soirée.
05/22/2016 at 10:08 PM #7717Bonsoir,
Et si tu essaies ça:
1234<span class="token keyword">IF</span> <span class="token keyword">OnMarket</span> <span class="token keyword">THEN</span>Set <span class="token keyword">stop</span> <span class="token keyword">loss</span> xxSet <span class="token keyword">target</span> profit xx<span class="token keyword">ENDIF</span>Bonne soirée
05/23/2016 at 8:01 AM #7720Non moi je voulais faire ça plutôt :
12345678910IF Ctime and Czone THENbuy n shares at Sup2 limitsellshort n shares at Res2 limitxx = 0.0020Set stop loss xxENDIFIF barindex - tradeindex >= 1 THENSet target profit xxENDIFC’est pas tout à fait pareil puisqu’on place bien le stoploss à l’ouverture du trade ou plutôt lors du placement de l’ordre LIMIT.
Le problème est qu’on veut ensuite placer le take profit sur l’ordre si il a au moins une barre d’ancienneté, mais je ne sais pas si le tradeindex s’incrémente si l’ordre LIMIT n’a pas déclenché par contre, car si oui alors ça ne fonctionnera pas.
05/23/2016 at 11:00 AM #7748@ eba973 :
Merci pour ta proposition.
Mais le problème est le même
@ Nicolas :
Je vais essayer, je vous tiens au courant. Et si le code fonctionne bien il ira en librairie bien sûr
Bonne journée
05/23/2016 at 11:58 AM #7755Ça ne marche pas mieux… je donne ma langue au chat.
C’est vraiment bizarre !Ça devrait pourtant fonctionner…
05/23/2016 at 12:19 PM #7760Pourtant avec un petit programme simple:
12345defparam cumulateorders = falseBUY 1 SHARE AT 1.1310 LIMITGRAPH tradeindexLe graph retourne 0 tant que l’ordre n’est pas exécuté (ici sur eurodol le 16 Mai à partir de 10h00).
05/23/2016 at 1:28 PM #7786Bizarre que sur ce graph ça reste coincé à la même valeur (que je suppose être “1”)
05/23/2016 at 1:43 PM #7787En fait, lorsque je lance mon bakctest avec la fonction “graph tradeindex”, la valeur de ce dernier ne fait qu’augmenter, et ne revient jamais à zéro.
Le problème vient donc de là.De plus, il n’augmente pas de 1 en 1, mais de façon non linéaire.
cf capture d’écran, fenêtre du milieu.
Une idée ?Merci
05/23/2016 at 2:43 PM #7797Je crois que tu n’as pas saisi TRADEINDEX
Non c’est pas bizarre justement ! c’est très bien. ça signifie que: l’ordre LIMIT est placé (et donc n’est pas au marché), alors le système nous retourne que le tradeindex n’existe pas (et donc à 0). Par contre dés que l’ordre s’exécute et passe donc au marché, alors le tradeindex s’incrémente au barindex où l’ordre a été effectivement placé au marché.
Il est logique que ta courbe de tradeindex monte, puisqu’elle reflète le barindex de l’ordre en cours (si TRADEINDEX sans (n) derrière) et que le barindex est le x-éme numéro de la barre depuis le début de l’historique affiché.
Sur mon image, le premier tradeindex est à 0 car il n’y a jamais eu d’ordre.
Donc si on résume, le fait de placer ton stoploss au courtier quand tu lances l’ordre doit pouvoir l’inscrire dans son carnet à ce moment là. Ensuite, on attend quelques bars (1 ou plusieurs à toi de voir) et on place le takeprofit. Ce qui en toute logique devrait éviter les TP/SL sur la même barre. La difficulté ici étant les ordres LIMIT. Sur une stratégie d’ordres directement au marché, cela pourrait nous faire avancer sur le problème des backtests erronées à cause des TP/SL immédiat au lancement de l’ordre. Qu’en penses-tu ?
05/23/2016 at 8:10 PM #7823J’ai compris, je pensais que tradeindex se remettait toujours à zéro après chaque trade… Je ne lis pas beaucoup les notices ! lol
Par contre le problème est toujours le même, je ne comprends vraiment pas pourquoi.
Merci pour ton aide.
Si je parviens à résoudre ce problème avec ton aide, je pourrai mettre en ligne 2 stratégies très performantes sur les points pivot… pour peu que le problème résolu ne casse pas trop la performance du backtest.Je mets pourtant :
123IF barindex - tradeindex > 1 THENset target profit 0.0020ENDIFpar exemple.
Et pourtant, Même en supprimant le stop loss par exemple, j’ai encore des prises de profit sur la même barre.
05/23/2016 at 8:15 PM #7824Je pense avoir contourné le problème avec, par exemple pour un take profit :
12345xx = 0.0012IF barindex - tradeindex >= 1 THENsell at tradeprice + xx limitexitshort at tradeprice - xx limitENDIFEt évidemment, le backtest devient mauvais… encore du travail !
A bientôt
-
AuthorPosts
Find exclusive trading pro-tools on