Ordres ouverts trop tard
Forums › ProRealTime forum Français › Support ProOrder › Ordres ouverts trop tard
- This topic has 6 replies, 3 voices, and was last updated 4 years ago by Nicolas.
-
-
05/25/2020 at 10:21 AM #133138
Bonjour,
j’ai écrit un robot assez simple, mais les ordres sont ouvert à l’open de la bougie suivante et je souhaiterai qu’il s’ouvre à la cassure du haut de la bougie précédente.
La stratégie est simple, elle est prévu pour être exécutée sur le Dax en m5 :
- prix au-dessus des MM 50 en H1, m15 et m5
- retracement de au moins 2 bougies
- une bougie dans le sens de la tendance qui clôture dans les 25% supérieur (pour la hausse)
- achat à la cassure du High + 1 point de cette bougie haussière
J’aurais voulu soit mettre un buy stop dès que la bougie haussière clôture, soit un buy market lorsque la bougie suivante casse le haut de la bougie précédente.
Pour l’instant l’achat est déclenché à l’open de la bougie suivante.
Donc est-ce un problème de numérotation de mes bougies ou de définition du type d’ordre ?
Merci pour votre aide
Thierry
Achat tendance mm5012345678910111213141516171819202122232425262728293031//Déinition des MMmm50H1 = Average[600](close)mm50m15 = Average[150](close)mm50m5 = Average[50](close)c1 = close > mm50H1 AND mm50m15 AND mm50m5// Pente mm50 m5Diffup = mm50m5[0] - mm50m5[5]penteok = Diffup > Pente*POINTSIZE//retracement au moins 2 bougiesc2 = Close[3] < Open[3] and Close[2] < Open[2] and Close[1] > Open[1]// Close dans les 25% supérieur de la bougiecalcul25 = (High[1]-((High[1]-Low[1])/4))c3 = Close[1] > calcul25IF c1 and c2 and c3 and penteok THENsignal = Close[0] >= High[1] +1*pointsizeBUY 1 contract AT signal STOPSET STOP PLOSS 20 //(Low[1] - 1) * POINTSIZETP = ((high[1]+ 1 *pointsize) - (Low[1] - 1 * POINTSIZE))*2SET TARGET PROFIT TPENDIF05/25/2020 at 10:53 AM #133153Donc c’est à la bougie [1] que tu constates le setup ? Si oui, c’est donc à sa clôture que tu décideras de poser ton ordre en attente, celui-ci sera posé à l’Open suivant, c’est le fonctionnement normal.
Je pense que ton problème vient du fait que tu considéres la bougie qui vient de se clôturer comme la bougie 1, sauf que c’est bien la 0, soit la bougie courante, donc décalage de la prise de position.
05/25/2020 at 11:08 AM #13315605/25/2020 at 6:51 PM #133219J’ai fait les modifications et effectivement les ordres s’ouvrent comme il faut maintenant.
Ma nouvelle bataille est au niveau du SL et du TP.
Dans l’idéal j’aimerai que le SL soit sous le dernier plus bas. j’ai essayé avec Lowest[5] mais ça ne fonctionne pas du tout. Le SL était toujours à 5 point.
J’ai trouvé un compromis en le mettant soit sous la bougie[0] soit sous la [1]
.Par contre je ne trouve pas la solution pour le TP. Le code me semble logique car je fait 2 fois le SL mais il ne le place jamais. Donc il ne trouve pas l’info.
Il doit y avoir une erreur dans le code mais je ne la trouve pas.
Un petit coup de pouce ?
Merci encore
<pre class=”lang:probuilder decode:true ” title=”m5 dax”>1234567891011121314151617181920212223242526272829303132333435363738394041//dax m5Defparam CUMULATEORDERS = false//Déinition des MMmm50H1 = Average[600](close)mm50m15 = Average[150](close)mm50m5 = Average[50](close)c1 = close > mm50H1 AND mm50m15 AND mm50m5// Pente mm50 m5Diffup = mm50m5[0] - mm50m5[5]penteok = Diffup > Pente*POINTSIZE//retracement au moins 2 bougiesc2 = Close[1] < Open[1] and Close[1] < Open[1] and Close[0] > Open[0]// Close dans les 25% supérieur de la bougiecalcul25 = (High[0]-((High[0]-Low[0])/4))c3 = Close[0] > calcul25IF c1 and c2 and c3 and penteok THENsignal = High[0]+1*pointsize//Détermination du SLIF Low[0]<Low[1] THENSL = ((signal-Low[0])+1) * pointsizeELSESL = ((signal-Low[1])+1) * pointsizeENDIF//Détermination du TPTP = ((SL *2) + signal) * pointsizeBUY 1 contract AT signal STOPSET STOP pLOSS SLSET TARGET pPROFIT TPENDIF05/25/2020 at 10:31 PM #133251Logiquement le Lowest[X] doit fonctionner pour positionner son SL.
Par contre fait attention de l’implémenter quand tu passes un long ou short et d’ajouter dans les conditions de passage d’ordre le “not longonmarket” ou “not shortonmarket” pour éviter que le code ne modifie le SL.
Pour vérifier le mieux est de tracer le SL/TP avec graphonprice
05/26/2020 at 10:34 AM #133289Merci pour ta réponse.
J’ai essayé de mettre GRAPHONPRICE mais je en vois pas de changement sur le graphique. je ne sais pas sous quelle forme le SL et le TP sont représentés avec GRAPHONPRICE.
J’ai essayé Lowest de nouveau mais sans succés. Finalement ce que j’ai mis semble pas mal.
Merci pour ton aide
Essai Graphonprice12345678910111213141516171819//Détermination du SLIF Low[0]<Low[1] THENSL = ((signal-Low[0])+1) * pointsizeELSESL = ((signal-Low[1])+1) * pointsizeENDIFGRAPHONPRICE SL COLOURED (255,0,0) as "SL"//Détermination du TPTP = (SL *2)GRAPHONPRICE TP COLOURED (0,255,0) as "SL"//TP= ((signal-Low[1])*2*pointsize)+ signalIF not longonmarket ThenBUY 1 contract AT signal STOPSET STOP pLOSS SLSET TARGET pPROFIT TPENDIFendif05/26/2020 at 12:37 PM #133306Si tu ne vois rien sur le graphique avec GRAPHONPRICE, c’est certainement que les valeurs que tu calcules sont hors échelle et donc incorrectes, tu peux l’identifier avec la palette des valeurs (CTRL+D.. de mémoire) ou alors utiliser GRAPH pour visualiser les courbes dans une fenêtre à part de celle du graphique du prix, là tu les verras c’est sûr !
-
AuthorPosts
Find exclusive trading pro-tools on