Question OrderModify()

 

Bonjour le forum MQL4,

{OrderModify(ticket,0,Ask-500*Point,0,0,Blue);}}}}

Le code ci-dessus fonctionne, mais déplace le sl vers le haut ou vers le bas comme le prix de demande se déplace vers le haut ou vers le bas.

J'ai essayé ceci, comme solution...

{OrderModify(ticket,0,OrderOpenPrice()-500*Point,0,0,Blue);}}}}

(l'ordre sélectionné est un ordre d'achat)

J'ai vérifié dans le journal l'erreur reçue et j'ai trouvé 4051. Il y a plusieurs erreurs 4051. En gros, cela ne fonctionne pas, et je suis curieux de savoir si quelqu'un d'autre a déjà résolu ce problème auparavant et a une explication.

Je ne vois pas pourquoi cette solution ne fonctionnerait pas (oui, je crois que je sélectionne correctement la commande car la première solution incorrecte OrderModify fonctionne).

Merci.

 
WhooDoo22:


J'ai vérifié le journal pour l'erreur reçue et il indique 4051. Il y a plusieurs erreurs 4051. En gros, ça ne fonctionne pas et je suis curieux de savoir si quelqu'un d'autre a déjà résolu ce problème auparavant et a une explication.

Lorsque vous avez un problème avec une fonction, lisez la documentation de cette fonction... OrderModify()<----- Click ME ! ! !

Vous ne pouvez pas modifier le prix d'ouverture de l'ordre à 0.0 ... en supposant que vous avez correctement effectué un OrderSelect(), utilisez OrderOpenPrice() pour le 2ème paramètre que vous passez à OrderModify().

 

Simon, j'ai lu la documentation de la fonction OrderModify() et j'ai remarqué que l'exemple utilisé est un trailing stop. Je ne souhaite pas utiliser un trailing stop pour l'EA. En effet, si j'utilisais un trailing stop, (selon l'exemple) l'EA aurait besoin que le marché se déplace de x points au-dessus du sl actuel pour modifier le sl au prix spécifié. En fait, c'est trop compliqué. Je veux juste ajouter un stop loss à l'ordre APRÈS que l'ordre ait été soumis au marché.

Quoi qu'il en soit, j'essaie également de nouvelles solutions en ce moment.

Merci.

 
WhooDoo22:

Simon, j'ai lu la documentation de la fonction OrderModify() et j'ai remarqué que l'exemple utilisé est un trailing stop. Je ne souhaite pas utiliser un trailing stop pour l'EA. En effet, si j'utilisais un trailing stop, (selon l'exemple) l'EA aurait besoin que le marché se déplace de x points au-dessus du sl actuel pour modifier le sl au prix spécifié. En fait, c'est trop compliqué. Je veux juste ajouter un stop loss à l'ordre APRÈS que l'ordre ait été soumis au marché.

Quoi qu'il en soit, j'essaie également de nouvelles solutions en ce moment.

Merci.

Pourquoi essayez-vous de changer le prix d'ouverture à 0.0 ? Vous devez laisser le prix d'ouverture inchangé, c.-à-d. OrderOpenPrice() essayez-le . . .
 

Simon,

Testeur de stratégie :

1. Mode visuel

2. Vitesse 31

3. 2010.12.29

4. EURUSD

5. M15

Exécuter"Prix ouverts seulement", pas chaque tick.


MetaEditor : Editer -> Trouver... -> "// choix 1.


choix 1. = pas d'erreur, mais je ne veux évidemment pas cela.

choix 2. = onglet Journal -> Journal lit : "erreur 4051".

Merci.

Dossiers :
test1.mq4  12 kb
 

Apparemment, l'utilisation de la fonction OrderOpenPrice() dans les paramètres OrderModify() est considérée comme un "paramètre de fonction invalide" selon l'erreur 4051. Je pense que " ?". :) Je pourrais enregistrer la valeur de la fonction OrderOpenPrice() et l'inclure dans les paramètres de la fonction OrderModify pour faire ce que je souhaite faire, mais vraiment ? Il existe sûrement un moyen plus simple ! C'est le retour à la case départ pour moi ;)

Merci.

 
WhooDoo22:
De toute évidence, l'utilisation de la fonction OrderOpenPrice() dans les paramètres OrderModify() est considérée comme un "paramètre de fonction invalide" selon l'erreur 4051.
De toute évidence, votre code est erroné. La fonction OrderOpenPrice() est correcte. Affichez le code incluant votre orderSelect.
 

William,

Evidemment, j'ai posté l'EA dans un lien pour que vous puissiez le télécharger et le visualiser dans MetaEditor si vous souhaitez apporter votre soutien. La fonction OrderSelect() n'est actuellement pas un problème. Vous savez quoi ? Je vais poster ceci juste pour vous, William.

//***************************************************
// EMERGENCY BUY ORDER STOP LOSS PROTECTION SECTION ;
//***************************************************

   OrderSelect(0,SELECT_BY_TICKET,MODE_TRADES); // was ticket.
   if(OrdersTotal()>0)                                                                         {
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderSend1==true)                                                                        {
//   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<=OrderOpenPrice()-500*Point)                     {
     
// choice 1.     
//     {OrderModify(ticket,OrderOpenPrice(),Ask-500*Point,0,0,Blue);}}}}
// choice 2.
     {OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice()-500*Point,0,0,Blue);}}}}

Comme vous l'avez demandé.

Merci.

 
WhooDoo22:

William,

Evidemment, j'ai posté l'EA dans un lien pour que vous puissiez le télécharger et le visualiser dans MetaEditor si vous souhaitez apporter votre soutien. La fonction OrderSelect() n'est actuellement pas un problème. Vous savez quoi ? Je vais poster ceci juste pour vous, William.

Comme vous l'avez demandé.

Merci.

0 n'est PAS un numéro de ticket valide, pas même dans le Strategy Tester, testez votre OrderSelect() et vous verrez par vous-même . . .
 

Simon, je vais faire des tests pour le savoir.

Merci.

 

Ah-ha ! J'ai changé le numéro de ticket 0 en 1, et tout a marché comme sur des roulettes. Oui, j'avais tort William... La fonction OrderSelect() était un problème. Évidemment, la fonction OrderSelect() doit sélectionner un ticket. Si le numéro du ticket est 0, quel ticket l'EA va-t-il sélectionner ? :O " ?". Merci à tous les deux pour votre aide.

Merci.