TP1 sur support avec secours (DAX)
Forums › ProRealTime forum Français › Support ProOrder › TP1 sur support avec secours (DAX)
- This topic has 24 replies, 2 voices, and was last updated 7 years ago by Nicolas.
-
-
03/16/2017 at 10:00 AM #28738
Bonjour,
Je cherche à crééer un code PRT dont le concept est le suivant : prendre 1 point sur le miniDAX future via achat limite sur un rebond sur support, avec dans le cas où l’ordre est exécuté mais le sens continue à la baisse une 2è prise d’ordre d’achat limite sur un second support de secours pour parvenir globalement à prendre le point recherché.
Afin d’avoir de la réactivité, je fais tourner mon code en UT=1seconde
Par exemple :
DAX au-dessus de 12 150. 1er support identifié = 12 149. Support de secours identifié = 12 139.
Le principe est le suivant : ordre achat limite placé sur 12 149 avec TP=1, de sorte à ce que dès que le marché atteint ce niveau, un ordre d’achat est placé à 12 149. A partir de là, plusieurs scénarios possibles :
1- Le marché remonte. La vente est possible et se produit à 12 150. Le programme s’arrête (on tente le 1er passage uniquement).
2- Le marché descend mais jamais jusqu’à 12 139, il finit par remonter et revient dans le scénario 1. Tout doit se passer comme dans le scénario 1.
3- Le marché descend et touche 12 139. Dans ce cas présent, il convient de réajuster l’ordre de vente à 12 150 (placé automatiquement via le TP1) de sorte à ce que globalement, la vente des 2 positions prises à 12 149 et 12 139 rapporte au moins 1 point. On a donc dans notre cas présent 2 positions globalement situées à 12 144. Le miniDAX quotant par pas de 1, on va donc souhaiter placer un ordre limite pour ses 2 positions à 12 145.
4- Biensur, il se peut que le marché continue de descendre et on serait bien avisés de prévoir un STOP LOSS.
J’ai développé et testé en Paper Trading le code suivant.
Malheureusement, seul le scénario 1 fonctionne. Dès le scénario 2, je ne parviens pas à faire ensemble que mon TP=1 soit maintenu, tout se passe comme si en se rapprochant de 12 139, mon TP est modifié à 6 avant même que 12 139 ne soit touché…
Seriez-vous en mesure de me conseiller svp en m’indiquant les sources de problèmes dans mon code svp ? D’avance merci.
Je précise par ailleurs que je souhaiterais faire en sorte que si le RSI est < à 32, il ne soit pas possible au système de prendre le 1er ordre d’achat… Ca ne fonctionne pas dans mon code malheureusement.
Cordialement,
Thomas
1234567891011121314151617181920212223242526272829303132DEFPARAM CumulateOrders=truePIJ=12149SECOURS=12139ONCE TP=1MEDIUM=(PIJ+SECOURS)/2ARRONDIMEDIUM=(ROUND(MEDIUM))+1IF ONMARKET = 0 AND ONMARKET[1]=1 THENQUITENDIFIF ONMARKET = 1 AND Open<=(PIJ-3) THENIF COUNTOFPOSITION=2 THENSELLSHORT 1 CONTRACT AT (ARRONDIMEDIUM) LIMITELSETP=ARRONDIMEDIUM-SECOURSBUY 1 CONTRACT AT (SECOURS) LIMITENDIFENDIFIF Open>=PIJ thenBUY 1 CONTRACT AT (PIJ) LIMITIF RSI(14)[1]<32 THENQUITENDIFENDIF// Stops et objectifs : entrez vos stops et vos objectifs iciSET TARGET PROFIT TP03/17/2017 at 9:05 AM #28845Si j’ai bien compris la stratégie:
1/ j’achète un support si RSI>32, TP 1 point
2/ prix descend, je moyenne mon premier achat avec un deuxième au support suivant, TP au prix moyen d’ouverture des 2 ordres + 1 point
Est-ce bien cela ?
Par contre, ce que je n’ai pas compris c’est l’utilisation de l’instruction QUIT (qui arrête complétement une stratégie) et de SELLSHORT (dans le cas de ce dernier, pour vendre un ordre d’achat il faut utiliser SELL. L’instruction SELLSHORT initie une position de VAD pour mémoire).
03/17/2017 at 10:02 AM #28866Bonjour Nicolas,
Merci de ta réponse. C’est exactement cela.
L’idée de l’instruction QUIT est de ne prendre que le premier passage, puisqu’il a la meilleure probabilité de passage.
Ah oui, j’ai pu mélangé SELL et SELLSHORT suivant mon besoin.
Je vais essayer d’améliorer. Ton supportcommentaires est/sont le(s) bienvenu(s).
Merci
Cordialement,
Thomas
03/17/2017 at 12:30 PM #28921J’ai modifié comme suit, mais tout se passe comme si le système ignorait la partie du programme à partir du moment où la première position est prise. Il n’y a pas de pose de 2nd ordre limite d’achat en attente…
1234567891011121314151617181920212223242526272829303132DEFPARAM CumulateOrders=truePIJ=12109SECOURS=12099ONCE TP=1MEDIUM=(PIJ+SECOURS)/2ARRONDIMEDIUM=(ROUND(MEDIUM))+1IF ONMARKET = 0 AND ONMARKET[1]=1 THENQUITENDIFIF ONMARKET = 1 THENIF COUNTOFPOSITION=2 THENSELL 1 CONTRACT AT (ARRONDIMEDIUM) LIMITELSETP=ARRONDIMEDIUM-SECOURSBUY 1 CONTRACT AT (SECOURS) LIMITENDIFENDIFIF Open>=PIJ thenBUY 1 CONTRACT AT (PIJ) LIMITIF RSI(14)[1]<32 THENQUITENDIFENDIF// Stops et objectifs : entrez vos stops et vos objectifs iciSET TARGET PROFIT TP03/17/2017 at 2:20 PM #28936Bon je vais tout recoder selon ma propre analyse de la situation 🙂
1234567891011121314151617181920212223niveau1 = 12109niveau2 = 12099//1er tradeif not longonmarket and alreadytraded=0 and rsi[14]>32 thenBUY 1 contract at niveau1 limitendif//2eme tradeif longonmarket and positionperf<0 thenBUY 1 contract at niveau2 limitalreadytraded=1endif//objectif si 1 tradeif countoflongshares=1 thenset target pprofit 1endif//objectif si 2 tradesif countoflongshares=2 thensell at positionprice+1*pointsizeendif(non testé, merci de bien vouloir faire tes propres tests !)
03/17/2017 at 2:58 PM #28943Ok, je vais tester ceci.
Par ailleurs mes ennuis viennent au moins partiellement du fait que je renseigne par habitude TAILLE POSITION MAX à 1 lors de la validation de la stratégie…
Je poursuis mes investigations et reviens vers toi.
Merci
03/17/2017 at 3:04 PM #28946Peux-tu checker dans ton code ce qu’est “pointsize” stp ?
Cette ligne n’est pas acceptée chez moi :
1<span class="token keyword">sell</span> <span class="token keyword">at</span> <span class="token keyword">positionprice</span><span class="token operator">+</span><span class="token number">1</span><span class="token operator">*</span><span class="token keyword">pointsize</span>03/17/2017 at 3:06 PM #2894903/17/2017 at 3:10 PM #28950Ok je checke. Merci.
03/17/2017 at 3:42 PM #28954Retour suite 1er test.
Support : 12 114 / Secours : 12 104.
J’ai tout de suite été dans le scénario où le 1er support lâche, et on va chercher le 2è support.
Tout va bien sur la première partie. 2è achat limite déclenché. (Je n’ai pas pu voir si le 1er achat est bloqué si RSI<32 ; à suivre).
En revanche, sur le secours, il y a 2 achats et une clôture des 3 positions (pratiquement instantané).
Mon relevlé d’ordres donne:
15:14:19 ACHAT LIMITE 12 114
15:37:11 ACHAT LIMITE 12 104
15:37:12 ACHAT LIMITE 12 104
15:37:12 -3 VENTE STOP 12103…
03/17/2017 at 3:50 PM #28956On fait du debugging en direct 🙂
En effet, le code ouvre plusieurs positions dans le cas du 2ème trade à la suite, dans ce cas il faudrait modifier le code comme ceci:
1234567891011121314151617181920212223niveau1 = 12109niveau2 = 12099//1er tradeif not longonmarket and alreadytraded=0 and rsi[14]>32 thenBUY 1 contract at niveau1 limitendif//2eme tradeif longonmarket and positionperf<0 and countoflongshares=1 thenBUY 1 contract at niveau2 limitalreadytraded=1endif//objectif si 1 tradeif countoflongshares=1 thenset target pprofit 1endif//objectif si 2 tradesif countoflongshares=2 thensell at positionprice+1*pointsize STOPendif03/17/2017 at 4:03 PM #28959Je teste et te tiens informé. Merci
03/17/2017 at 4:09 PM #28960Bon déjà le cas classique obtention TP1 direct fonctionne bien. Poursuite du test en-cours.
03/17/2017 at 7:01 PM #28977Le marché étant plutôt haussier ce soir, les rebonds se succèdent… sans mettre en péril le test de support… Je poursuis mais sans grand espoir pour ce soir sans doute.
Pour passer le temps, j’ai fait ce code “inverse” qui fait la même chose pour une résistance.
Peut-être me suis-je trompé, mais j’ai obtenu à peu près la même chose que lors du test de support qui a échoué précédemment.
Ici avec 12 118 et 12 126 comme résistances, j’ai eu :
17:33:55 1 VENTE LIMIT @12 118
17:35:08 1 VENTE LIMIT @12126
17:35:09 2 ACHAT STOP @12 128
Mais peut-être me suis-je trompé dans l’instruction positionprice en particulier. Je joins le code testé.
A+ MERCI BCP et surtout EXCELLENT WE !
1234567891011121314151617181920212223niveau1 = 12118niveau2 = 12126//1er tradeif not shortonmarket and alreadytraded=0 and rsi[14]<68 thenSELLSHORT 1 contract at niveau1 limitendif//2eme tradeif shortonmarket and positionperf<0 and countofshortshares=1 thenSELLSHORT 1 contract at niveau2 limitalreadytraded=1endif//objectif si 1 tradeif countofshortshares=1 thenset target pprofit 1endif//objectif si 2 tradesif countofshortshares=2 thenexitshort at positionprice-1*pointsize STOPendif03/18/2017 at 6:18 PM #29033Voici un code légèrement modifié qui répond à mes attentes il me semble. Je l’ai testé en back-test. A confirmer lundi en réel. J’ai rajouté un petit calcul au départ car je suis sur le miniDAX avec un pas de 1 point et je souhaite être toujours positif (péché mignon peut-être)…
12345678910111213141516171819202122232425262728293031niveau1 = 12109niveau2 = 12099ecart=abs(niveau1-niveau2)ecartabs=ROUND(ecart/2)if ecart/2=ecartabs thenconstante=1elseconstante=0endif//1er tradeif not longonmarket and alreadytraded=0 and rsi[14]>32 thenBUY 1 contract at niveau1 limitendif//2eme tradeif longonmarket and positionperf<0 and countoflongshares=1 thenBUY 1 contract at niveau2 limitalreadytraded=1endif//objectif si 1 tradeif countoflongshares=1 thenset target pprofit 1endif//objectif si 2 tradesif countoflongshares=2 thensell at positionprice+constante LIMITendif -
AuthorPosts
Find exclusive trading pro-tools on