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
DEFPARAM CumulateOrders=true
PIJ=12149
SECOURS=12139
ONCE TP=1
MEDIUM=(PIJ+SECOURS)/2
ARRONDIMEDIUM=(ROUND(MEDIUM))+1
IF ONMARKET = 0 AND ONMARKET[1]=1 THEN
QUIT
ENDIF
IF ONMARKET = 1 AND Open<=(PIJ-3) THEN
IF COUNTOFPOSITION=2 THEN
SELLSHORT 1 CONTRACT AT (ARRONDIMEDIUM) LIMIT
ELSE
TP=ARRONDIMEDIUM-SECOURS
BUY 1 CONTRACT AT (SECOURS) LIMIT
ENDIF
ENDIF
IF Open>=PIJ then
BUY 1 CONTRACT AT (PIJ) LIMIT
IF RSI(14)[1]<32 THEN
QUIT
ENDIF
ENDIF
// Stops et objectifs : entrez vos stops et vos objectifs ici
SET TARGET PROFIT TP