MMA_Breakout_strategy_volume I (ohne MM oder MF) - codiert von WhooDoo22 - Seite 4

 

Simon,

1. ... welche Ticketnummer wählt er aus?

RE 1.: Ich hatte ein Missverständnis bei der Verwendung der Funktion OrderSelect() in Kombination mit der Funktion OrdersHistoryTotal(). Keine der beiden Funktionen hat etwas mit der anderen zu tun. Wenn ich das verstanden habe, kann ich die Funktion OrderSelect() einfach am Anfang des ersten Codeblocks für das Senden von Bestellungen entfernen. Sie ist unnötig (bedenken Sie, dass dieser Code nur zu Testzwecken geschrieben wurde und nicht in der Demo oder im Live-Betrieb laufen soll. Natürlich muss er irgendwann korrigiert werden, damit er auf Demo- und Live-Konten verwendet werden kann.).

Ich glaube auch, dass ich Ihren wiederholten Punkt verstehe: "Überprüfen Sie die Rückgabewerte mit der Funktion GetLastError()." GOT IT. Ha ha :)

2. Wenn Sie OrderHistoryTotal() verstanden haben, dann...

RE 2: Ich verstehe den Zweck der OrderHistoryTotal()-Funktion. Ich hatte eine falsche Vorstellung von der Verwendung der OrderSelect()-Funktion in Kombination mit der OrderHistoryTotal()-Funktion.

3. Wenn Sie verstanden hätten, wie { } Klammern funktionieren...

RE 3: Ich glaube, ich verstehe die richtige Verwendung von geschweiften Klammern. Ich weiß auch, dass geschweifte Klammern in diesem Fall unnötig sein können.

if(OrderType()==OP_BUY)  
   OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue);

Ich beschloss, unnötige geschweifte Klammern zu verwenden, um sicherzustellen, dass die Funktionsaufrufe der einzelnen Codeblöcke auf die jeweils verwendeten Codeblöcke beschränkt sind. Ich möchte nicht, dass die Codeblöcke des EA versehentlich ihre Funktionsaufrufe auslassen, weil Klammern fehlen.

4. Verwendung der Variablen i als Ticketnummer:

RE 4: Ich bin etwas überrascht, dass Sie meine Interpretation der Verwendung der Variable i als Dummy-Ticketnummer, nicht als Ticketnummer, nicht verstehen. Die Variable i ist einfach eine Ziffer, die jedes Mal hinzugefügt wird, wenn die Funktion OrderClose() ausgeführt wird. Die Variable i ist nicht als tatsächliche Ticketnummer definiert. Ich habe es mit einem teilweisen Auftragsabschluss zu tun. Dies ist die einzige Möglichkeit, die mir bekannt ist, um diese Aufgabe zu erfüllen. Ich wäre offen für eine andere Lösung. Haben Sie eine bessere Lösung? :) Ich glaube, dass es einen anderen Weg geben könnte, aber im Moment sehe ich keinen Grund, das derzeitige Verfahren zu ändern. Nochmals, ich bin offen für produktive Ideen.

5. . . . wenn OrderSend() fehlschlägt, wirdTicket = -1:

RE 5.: Bitte präzisieren Sie, auf welche OrderSend()-Funktion Sie sich beziehen (entweder auf den "Ball Roller", den ersten Order-Send ODER auf Order-Sends innerhalb der Order-Close-Funktionsaufrufe). Diese Klarstellung würde unsere Gedanken in die gleiche Richtung lenken und die Kommunikation zwischen den beiden Mitgliedern dieser Diskussion stärken.

1. Warum sollte der 1. oder 2. (bitte korrigieren Sie das) Orderversand fehlschlagen? (vielleicht wegen eines Missbrauchs der OrderSelect() und OrdersHistory...() Funktion? Dies wird korrigiert werden.)

2. Wenn das Senden der Bestellung fehlgeschlagen ist, warum steht dann die Ticket-Variable auf -1? Ich glaube, wenn das Senden der Bestellung fehlgeschlagen ist, würde die Ticket-Variable immer noch 0 und nicht -1 anzeigen. Bitte erklären Sie das.

Ich danke Ihnen.

 
WhooDoo22:

Simon,

RE 5.: Bitte präzisieren Sie, auf welche OrderSend()-Funktion Sie sich beziehen (entweder auf den "Ballroller", den ersten OrderSend ODER auf OrderSend innerhalb der OrderClose-Funktionsaufrufe). Diese Klarstellung würde unsere Gedanken in die gleiche Richtung lenken und die Kommunikation zwischen den beiden Mitgliedern dieser Diskussion stärken.

1. Warum sollte der 1. oder 2. (korrigieren Sie das bitte) Sendeauftrag fehlschlagen? (vielleicht wegen eines Missbrauchs der OrderSelect() und OrdersHistory...() Funktion? Dies wird korrigiert werden.)

2. Wenn das Senden der Bestellung fehlgeschlagen ist, warum steht dann die Ticket-Variable auf -1? Ich glaube, wenn das Senden der Bestellung fehlgeschlagen ist, würde die Ticket-Variable immer noch 0 und nicht -1 anzeigen. Bitte erklären Sie das.

Ich danke Ihnen.

Wenn OrderSend() aus irgendeinem Grund fehlschlägt..."Gibt die Nummer des Tickets zurück, das der Bestellung vom Handelsserver zugewiesen wurde, oder -1, wenn der Vorgang fehlschlägt" aus der Dokumentation. Sie verwenden die Variable ticket, um den zurückgegebenen Wert zu behalten. . wenn also OrderSend() fehlschlägt (aus welchem Grund auch immer), ist Ihre Ticketnummer jetzt -1 ... Sie prüfen nicht, sondern hoffen einfach das Beste und verwenden das, was Sie bekommen ...


Sie verwenden die Variablei als Ticketnummer... . in diesem Code . . .

OrderClose(i, 0.01, Ask, 30, CLR_NONE);

. . . aus der Dokumentation für OrderClose() ist die erste Variable im Funktionsaufruf ein int. . .ticket - Eindeutige Nummer des Auftragstickets. Nehmen wir also an, Sie haben soeben das Ticket mit der Nummer34282694 abgeschlossen. Wie kommen Sie darauf, dass Ihnen die Funktion i++; next in irgendeiner Form weiterhilft? Vielleicht könnten Sie diesen Punkt beantworten und erklären, wie er funktioniert?



"Ich möchte nicht, dass die Codeblöcke des EA ihre Funktionsaufrufe aufgrund fehlender geschweifter Klammern versehentlich überspringen." ... versehentlich überspringen ? wie könnte das passieren ? bekommt die CPU einen Hustenanfall oder erkältet sich ?


OK, Sie sagen also, dass Sie alle Probleme voll und ganz verstehen, doch anstatt einen Code zu schreiben, der sowohl im Strategietester als auch in einer Live-/Demo-Umgebung funktionieren könnte, haben Sie sich bewusst dafür entschieden, Ihren Code zu verkrüppeln, indem Sie ihn so geschrieben haben, dass er nur im Strategietester funktionieren würde? wollen Sie das damit sagen?

 

Simon,

1. Wenn OrderSend() aus irgendeinem Grund fehlschlägt... .

RE 1: Angenommen, eine Bestellung schlägt fehl... Wenn das, was Sie gesagt haben, wahr ist, dann wird die Ticketanzahl um 1 subtrahiert (-1 von der Ticketsumme). Also, der EA hat 25 erfolgreiche Orders gesendet und geschlossen. Das Signal zum Senden der Order kommt an und die Funktion OrderSend() schlägt fehl. Ist die aktuelle Ticketanzahl 24? Wenn ja, würde die i-Variable eine falsche Ticketanzahl angeben , da die i-Variable nicht auch noch 1 abziehen würde (-1). Die i-Variable würde sich einfach nicht erhöhen, und jetzt gibt es eine falsche Ticketanzahl. Die korrekte Ticketanzahl ist 24 und die i-Variable ist 25. Die Funktion OrderSelect() wählt nun die falsche Ticketnummer aus. Sind wir uns einig? :) Es scheint also, dass die offensichtliche Lösung darin besteht, 1 von der i-Variablen abzuziehen , wenn die Funktion OrderSend() fehlschlägt. Uff... Ich wische mir gerade den Schweiß von der Stirn :).

2. die CPU bekommt einen Hustenanfall oder eine Erkältung ?..

RE 2.: Wenn ich einen Grippevirus habe, neige ich dazu, beim Sprechen ein paar vernünftige Gedanken auszulassen. Ich nehme an, das gilt auch für CPUs :) Aber Spaß beiseite, ich glaube, dass jede Möglichkeit, dass ein Funktionsaufruf aufgrund des Fehlens von "{ }" übersprungen wird, ein einfach zu behebendes Problem wäre. Warum nicht besonders vorsichtig sein? Wenn es wirklich keine Bedenken gibt, dass ein Funktionsaufruf übersprungen wird, dann sehe ich keinen Grund, warum die geschweiften Klammern nicht entfernt werden sollten.

3. OK, Sie wollen also sagen...

RE 3: Ich glaube, ich verstehe die Probleme, die Sie mir bis jetzt dargelegt haben.

4. Sie haben sich bewusst dafür entschieden, Ihren Code zu verkrüppeln, indem Sie ihn so geschrieben haben, dass er nur im Strategietester funktioniert ...

RE 4: Ich habe mich dafür entschieden, das zu opfern, was meiner Meinung nach die geringste Priorität hat, und das zu behalten, was meiner Meinung nach die höchste Priorität hat. Dies war eine Entscheidung, die aufgrund von Zeitbeschränkungen und Prioritäten getroffen wurde.

Ich danke Ihnen.

 
WhooDoo22:

Simon,

1. Wenn OrderSend() aus irgendeinem Grund fehlschlägt... .

RE 1: Angenommen, eine Bestellung schlägt fehl... Wenn das, was Sie gesagt haben, wahr ist, dann wird die Ticketanzahl um 1 subtrahiert (-1 von der Ticketsumme). Also, der EA hat 25 erfolgreiche Orders gesendet und geschlossen. Das Signal zum Senden der Order kommt an und die Funktion OrderSend() schlägt fehl. Ist die aktuelle Ticketanzahl 24? Wenn ja, würde die i-Variable eine falsche Ticketanzahl angeben , da die i-Variable nicht auch noch 1 abziehen würde (-1). Die i-Variable würde sich einfach nicht erhöhen, und jetzt gibt es eine falsche Ticketanzahl. Die korrekte Ticketanzahl ist 24 und die i-Variable ist 25. Die Funktion OrderSelect() wählt nun die falsche Ticketnummer aus. Sind wir uns einig? :) Es scheint also, dass die offensichtliche Lösung darin besteht, 1 von der i-Variablen abzuziehen , wenn die Funktion OrderSend() fehlschlägt. Uff... Ich wische mir gerade den Schweiß von der Stirn :).

Wenn das, was ich gesagt habe, wahr ist ... lesen Sie selbst die Dokumentation, ich habe Ihnen einen Link gegeben, klicken Sie ihn an und lesen Sie ...

Du verstehst nicht, wie das funktioniert ... tut mir leid, aber so ist es. Ticketnummern laufen im Strategy Tester nur sequentiell ab ... die Ticketanzahl wird nicht subtrahiert ... die Variable, die du für die Ticketnummer verwendest, ist -1, du subtrahierst die Variable ticket niemals von irgendetwas in deinem Code . . .

"Das Signal zum Senden der Bestellung kommt an und die Funktion OrderSend() schlägt fehl.Ist die aktuelle Ticketanzahl 24?" Nein, die Variableticket enthält die Zahl -1, nicht 25 oder 24, sondern -1, so dass alle OrderSelect(ticket, . . .)-Aufrufe, die darauf folgen, fehlschlagen, weil es keine Bestellung mit der Ticketnummer -1 gibt, es ist eine ungültige Ticketnummer ... dann werden auch alle OrderType()-Aufrufe fehlschlagen, weil OrderSelect() fehlgeschlagen ist ... und dann schlägt auch OrderModify(ticket, ...) fehl ... .

Sie haben gesagt, dass Sie all diese Probleme verstehen, sich aber dafür entschieden haben, sie zu ignorieren und den Code an die Codebasee zu übermitteln ... ich denke, ich brauche keine Zeit mehr zu verschwenden, um das alles zu erklären, da Sie es bereits gut im Griff haben. Entschuldigen Sie die Unannehmlichkeiten, ich werde nicht noch mehr Ihrer Zeit in Anspruch nehmen, um zu helfen.

 

Simon,

Ich werde die Dokumentation lesen, wie Sie es gewünscht haben.

1. die Variable, die Sie für die Ticketnummer verwenden, ist -1

RE 1.: Auf welche Variable weisen Sie hin? Die Variable i ODER die Variable ticket?

2. die Variable, die Sie zur Speicherung der Ticketnummer verwenden = -1

RE 2: Kann man das auch so sagen: "Wenn das Senden einer Bestellung fehlschlägt, ist die Ticketnummer minus eins (-1)?"

Wenn dies der Fall ist, wenn der EA 24 erfolgreiche Orders gesendet und geschlossen hat und die 25. Order nicht gesendet werden konnte, ist die aktuelle Ticketnummer minus eins (-1). Korrekt? :)

Offensichtlich werden alle Codeblöcke, die die Funktion OrderSelect() enthalten, aufgrund des Fehlers "ungültige Ticketnummer" fehlschlagen. Ich denke, die Fehlernummer ist 4108, wie Sie zuvor geschrieben haben, und das steht auch in der Dokumentation.

Ich habe nicht geschrieben: "Ich verstehe alle diese Probleme". Ich habe geschrieben:"Ich glaube, ich verstehe die Probleme, die Sie mir bisher dargelegt haben".

3. "Da Sie gesagt haben, dass Sie all diese Probleme verstehen, sich aber dafür entschieden haben, sie zu ignorieren und den Code an die Codebasee zu übermitteln, brauche ich wohl keine Zeit mehr mit Erklärungen zu verschwenden, da Sie es bereits gut im Griff haben. Tut mir leid für die Unannehmlichkeiten, ich werde nicht noch mehr Ihrer Zeit in Anspruch nehmen, um zu helfen."

RE 3: Ich ignoriere diese Fragen derzeit nicht. Meine Diskussion mit Ihnen zeigt dies. Ich bin an allen Punkten interessiert, die Sie angesprochen haben und weiterhin ansprechen. Außerdem respektiere ich Ihr Wissen über die MQL4-Dokumentation und schätze Ihren Wunsch zu helfen. Das ist nicht unbemerkt geblieben, und ich danke Ihnen dafür.

Ich danke Ihnen.

 

Hallo zusammen,

In diesem Code erkenne ich, dass ich nicht ändern können, eine der lot price....why ist, dass...

die ganze Zeit, die ich versucht habe, dies zu tun, bekam ich einen Fehler....

Danke...und warte auf deine Antwort....

Sehr gute Arbeit WhooDoo22!!!! ;)

Grund der Beschwerde: