Frage zu OrderModify()

 

Hallo MQL4 Forum,

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

Der Code oben funktioniert, aber bewegt die sl nach oben oder unten, wie der Briefkurs bewegt sich nach oben oder unten.

Ich habe dies versucht, als eine Lösung...

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

(der gewählte Auftrag ist ein Kaufauftrag)

Ich habe das Journal auf den empfangenen Fehler hin überprüft, und dort stand 4051. Es gibt mehrere Fehler 4051. Im Grunde genommen funktioniert es nicht, und ich bin neugierig, ob jemand anderes dieses Problem schon einmal gelöst hat und eine Erklärung dafür hat.

Ich verstehe nicht, warum diese Lösung nicht funktionieren sollte (ja, ich glaube, ich wähle den Auftrag richtig aus, weil die erste falsche OrderModify-Lösung funktioniert).

Ich danke Ihnen.

 
WhooDoo22:


Ich habe das Journal auf den empfangenen Fehler hin überprüft, und dort steht 4051. Es gibt mehrere Fehler 4051. Im Grunde genommen funktioniert es nicht, und ich bin neugierig, ob jemand anderes dieses Problem schon einmal gelöst hat und eine Erklärung dafür hat.

Wenn Sie ein Problem mit einer Funktion haben, lesen Sie die Dokumentation zu dieser Funktion ... OrderModify()<----- Click ME ! ! !

Sie können den Eröffnungskurs der Order nicht auf 0,0 ändern . ... vorausgesetzt, Sie haben eine OrderSelect() korrekt ausgeführt, verwenden Sie OrderOpenPrice() für den zweiten Parameter, den Sie an OrderModify() übergeben

 

Simon, ich habe die Dokumentation der Funktion OrderModify() gelesen und festgestellt, dass das verwendete Beispiel ein Trailing-Stop ist. Ich möchte keinen Trailing-Stop für den EA verwenden. Denn wenn ich einen Trailing-Stop verwenden würde, müsste der EA (dem Beispiel zufolge) den Markt um x Punkte über den aktuellen Sl bewegen, um den Sl auf den angegebenen Preis zu ändern. Im Grunde ist das zu kompliziert. Ich möchte lediglich einen Stop-Loss zu der Order hinzufügen, NACHDEM die Order an den Markt übermittelt wurde.

Wie auch immer, ich versuche derzeit auch neue Lösungen.

Ich danke Ihnen.

 
WhooDoo22:

Simon, ich habe die Dokumentation der Funktion OrderModify() gelesen und festgestellt, dass das verwendete Beispiel ein Trailing-Stop ist. Ich möchte keinen Trailing-Stop für den EA verwenden. Denn wenn ich einen Trailing-Stop verwenden würde, müsste der EA (dem Beispiel zufolge) den Markt um x Punkte über den aktuellen Sl bewegen, um den Sl auf den angegebenen Preis zu ändern. Im Grunde ist das zu kompliziert. Ich möchte lediglich einen Stop-Loss zu der Order hinzufügen, NACHDEM die Order an den Markt übermittelt wurde.

Wie auch immer, ich versuche derzeit auch neue Lösungen.

Ich danke Ihnen.

Warum versuchen Sie also, den Eröffnungskurs auf 0,0 zu ändern? Sie müssen den Eröffnungskurs unverändert lassen, d.h. OrderOpenPrice() versuchen Sie es...
 

Simon,

Strategie-Tester:

1. Visueller Modus

2. Geschwindigkeit 31

3. 2010.12.29

4. EURUSD

5. M15

nur "Offene Kurse" ausführen, nicht jeden Tick.


MetaEditor: Bearbeiten -> Suchen... -> "// Wahl 1."


Wahl 1 = keine Fehler, aber das will ich natürlich nicht.

Wahl 2 = Registerkarte Journal -> Journal liest: "Fehler 4051".

Ich danke Ihnen.

Dateien:
test1.mq4  12 kb
 

Offensichtlich wird die Verwendung der Funktion OrderOpenPrice() innerhalb der OrderModify()-Parameter laut Fehler 4051 als "ungültiger Funktionsparameter" betrachtet. Ich denke "?". :) Ich könnte den OrderOpenPrice()-Wert speichern und ihn in die Parameter der OrderModify()-Funktion einfügen, um das zu tun, was ich tun möchte, aber wirklich? Sicherlich gibt es einen einfacheren Weg! Also zurück an den alten Schleifstein für mich ;)

Ich danke Ihnen.

 
WhooDoo22:
Offensichtlich wird die Verwendung der Funktion OrderOpenPrice() innerhalb der OrderModify()-Parameter gemäß Fehler 4051 als "ungültiger Funktionsparameter" betrachtet.
Offensichtlich ist Ihr Code falsch. OrderOpenPrice() ist in Ordnung. Posten Sie den Code einschließlich Ihrer orderSelect.
 

William,

Offensichtlich habe ich den EA in einem Link gepostet, den Sie herunterladen und im MetaEditor ansehen können, wenn Sie Ihre Unterstützung anbieten möchten. Die Funktion OrderSelect() ist derzeit kein Thema. Aber wissen Sie was? Ich werde dies nur für Sie posten, 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);}}}}

Wie Sie gewünscht haben.

Ich danke Ihnen.

 
WhooDoo22:

William,

Offensichtlich habe ich den EA in einem Link gepostet, den Sie herunterladen und im MetaEditor ansehen können, wenn Sie Ihre Unterstützung anbieten möchten. Die Funktion OrderSelect() ist derzeit kein Thema. Aber wissen Sie was? Ich werde dies nur für Sie posten, William.

Wie Sie gewünscht haben.

Ich danke Ihnen.

0 ist KEINE gültige Ticketnummer, auch nicht im Strategy Tester, testen Sie Ihre OrderSelect() und Sie werden es selbst sehen....
 

Simon, ich werde Tests durchführen, um das herauszufinden.

Ich danke Ihnen.

 

Aha! Ich habe die Ticketnummer von 0 auf 1 geändert, dann lief alles wie am Schnürchen. Ja, ich hatte Unrecht, William... Die Funktion OrderSelect() war ein Problem. Offensichtlich muss die Funktion OrderSelect() ein Ticket auswählen. Wenn die Ticketnummer 0 ist, welches Ticket wählt der EA dann aus? :O "?". Vielen Dank an Sie beide für Ihre Hilfe.

Ich danke Ihnen.