Frage zu OrderModify() - Seite 3

 

Simon,

Ich versuche zu überlegen, wie ich das anstellen könnte, aber mir fällt nichts ein. Ich durchforste das Wörterbuch in MetaEditor nach möglichen Wegen. Ich erwäge, die Funktionen OrderSymbol() und OrderSelect() gemeinsam zu verwenden. Wenn Sie mir eine Option für einen Hinweis geben, werde ich sie natürlich annehmen. Was ist der Hinweis? ;) Ich betrachte dies eher als eine Diskussion denn als eine Herausforderung. Wenn Sie dies als Herausforderung betrachten, werde ich keine Hinweise akzeptieren. Ich habe volles Vertrauen in meine Fähigkeiten.

Ich danke Ihnen.

 

Warum sollten Sie MarketInfo() verwenden, um Ihnen was zu sagen?


Bevor Sie dies kodieren können, müssen Sie herausfinden, wie es geht, und dann in der Lage sein, dies in einfacher Sprache, nicht in Code, auszudrücken.


Der Code, der benötigt wird, um diese Anforderung zu erfüllen, enthält viele Aspekte dessen, was Sie mit dem Code, den Sie in die Code Base gestellt haben, tun mussten.


Für mich ist jetzt Schlafenszeit ... deshalb hier ein Tipp für den Anfang: Sie haben mehrere Aufträge, also müssen Sie sie alle in einer Schleife durchgehen, um den richtigen zu finden ... oder vielleicht mehr als einen, um so viele Optionen wie möglich abzudecken.

Wenn Sie keinen Weg finden, lassen Sie es mich wissen, und ich werde eine Lösung finden, die ich für richtig halte, und sie veröffentlichen ... dann können Sie sie lesen, verstehen und auseinandernehmen und mich bitten, jeden Teil zu rechtfertigen, den Sie für falsch oder überflüssig halten.

In jedem Fall bin ich überzeugt, dass Sie dabei etwas lernen werden.

 

Simon,

Richard Bhauer hat mir eine überarbeitete Version dessen geschickt, was ich vorhin gepostet habe. Es ist definitiv NICHT mein bevorzugter Kodierungsstil, aber ich finde ihn beeindruckend. Ich dachte, ich würde es mit Ihnen teilen, um zu sehen, ob dieser Code irgendeine Verbindung zu einer Methode hat, die Sie für die Auftragsauswahl und den Auftragsabschluss fördern. Nochmals vielen Dank an Richard. Ich wollte OrderSymbol() auch deshalb ausprobieren, weil ich EAs geschrieben habe, die mehrere OrderSend("GBPUSD"...); oder ein beliebiges Währungspaar verwenden. Ich nahm an, ich könnte einfach einen ähnlichen Prozess versuchen, um Aufträge zu schließen. Offensichtlich wird die Auswahl der Order (um sie zu schließen) innerhalb der OrderSelect()-Funktion durchgeführt. Im vorigen Beitrag erwähnten Sie als Tipp, eine Schleife laufen zu lassen, um die richtige Ticketnummer zu finden (ich nehme an, dass die Schleife zuerst läuft und, wenn das Ticket gefunden ist, zum nächsten Codeblock heruntergeht, der zunächst die Funktion OrderSelect() enthält. Innerhalb der Funktion OrderSelect() würde die Variable stehen, die im vorherigen Codeblock der Schleife verwendet wurde, um die richtige Ticketnummer zu finden. Die Funktion OrderSelect() verwendet diese Variable, um das Ticket auszuwählen. Sobald das Ticket ausgewählt ist, ist alles andere ziemlich einfach. Ich werde Ihre Antwort morgen früh lesen.

Ich danke Ihnen.

Dateien:
 
WhooDoo22:

Offensichtlich wird die Auswahl des Auftrags (um ihn zu schließen) in der Funktion OrderSelect() durchgeführt.

Lesen Sie die Dokumentation für die folgenden Funktionen: OrderTicket(), OrderLots(), OrderClosePrice(), OrderProfit(), OrderType(), OrderTakeProfit(), OrderSymbol(), OrderStopLoss(), OrderOpenTime(), OrderOpenPrice(), sie alle haben die folgende Aussage:Hinweis: Die Order muss zuvor mit der FunktionOrderSelect()ausgewählt worden sein.

OrderClose() hat diese Anweisung nicht, weil Siedie Ticketnummer als ersten Parameteran OrderClose() übergeben... bei allen oben aufgeführten Funktionen ist das nicht der Fall, so dass Sie, um sie zu verwenden, zunächst die gewünschte Order auswählen müssen, das ist die Aufgabe von OrderSelect() . . dann können Sie die Positionsgröße mit OrderLots() oder den Eröffnungskurs mit OrderOpenPrice() ermitteln, aber zuerst muss die Order ausgewählt werden.


Sie müssen dieses Konzept begreifen und verstehen ... . .

WhooDoo22:

Im vorigen Beitrag erwähnten Sie als Hinweis, dass Sie versuchen sollten, eine Schleife auszuführen, um die richtige Ticketnummer zu finden (ich nehme an, dass die Schleife zuerst ausgeführt wird, und wenn das Ticket gefunden ist, gehen Sie zum nächsten Codeblock, der zunächst die Funktion OrderSelect() enthält. Innerhalb der Funktion OrderSelect() würde die Variable stehen, die im vorherigen Codeblock der Schleife verwendet wurde, um die richtige Ticketnummer zu finden.

Wie finden Sie die richtige Ticketnummer aus einer Schleife heraus? Sie wissen nicht, welche Ticketnummer die richtige ist ... welche Informationen haben Sie, die Sie verwenden können?
 

Simon,

Die folgenden Funktionen, OrderTicket(), OrderLots(), OrderClosePrice(), OrderProfit(), OrderType(), OrderTakeProfit(), OrderSymbol(), OrderStopLoss(), OrderOpenTime(), OrderOpenPrice() müssen zuvor von der Funktion OrderSelect() ausgewählt werden.

Die Funktion OrderClose() muss nicht zuvor von der Funktion OrderSelect() ausgewählt worden sein, da die Funktion OrderClose() die Ticketnummer als ersten Parameter übergibt.

Der Zweck von OrderSelect() ist es, eine Bestellung auszuwählen.

Konzepte verstanden, ich werde die Dokumentation überprüfen.

Wie werden Sie finden...

RE: Ich arbeite noch daran.

Dankeschön

 

Simon,

Es scheint, dass Sie immer wieder auf die "Ticketnummer" hinweisen. Ich verstehe das. Die Sache ist jedoch die, dass ich nur zwei Möglichkeiten kenne, Tickets mit der Funktion OrderSelect() zu isolieren. Ich kann die "Order pool"-Methode verwenden, bei der es keine spezifische Ticketnummer-Variable gibt, ODER ich kann die andere Methode verwenden, bei der ich eine spezifische Ticket-Variable mit dem Namen "ticket", "bababab22", "lambchops", was auch immer, verwenden kann, um das Ticket zu isolieren. Ich glaube, dass der Weg über den "Auftragspool" am praktischsten ist, daher erwäge ich, diese Funktion auf diese Weise zu verwenden. Ich mag das.


Außerdem habe ich Roberts Überarbeitung überflogen und festgestellt, dass er beim Schließen von Aufträgen einfach die OrderSelect()-Funktion verwendet hat (die Funktion, bei der man aus einem Pool von Aufträgen auswählt), und die einzige "if"-Bedingung, die neben dem offensichtlichen Signalschluss verwendet wurde, war die Losgröße und die Frage, ob der Auftrag gekauft oder verkauft wurde. Das war's auch schon. Mir gefällt es, aber das ist nicht die aktuelle Aufgabe. Bei dieser Aufgabe, ja sicher, könnte ich das Gleiche tippen, aber ich würde nichts lernen. Das Problem ist, wie kann ich lernen, was Sie mir beibringen wollen, wenn ich nicht weiß, was Sie mir beibringen wollen. Ich glaube, wenn Sie Ihre Gedanken direkter formulieren würden, könnte ich schneller begreifen, was Sie mir mitteilen wollen. Ich werde versuchen, mehr Verständnis aufzubringen.

Ich danke Ihnen.

 
WhooDoo22:

Simon,

Es scheint, dass Sie immer wieder auf die "Ticketnummer" hinweisen. Ich verstehe das. Die Sache ist jedoch die, dass ich nur zwei Möglichkeiten kenne, Tickets mit der Funktion OrderSelect() zu isolieren. Ich kann die "Order pool"-Methode verwenden, bei der es keine spezifische Ticketnummer-Variable gibt, ODER ich kann die andere Methode verwenden, bei der ich eine spezifische Ticket-Variable mit dem Namen "ticket", "bababab22", "lambchops", was auch immer, verwenden kann, um das Ticket zu isolieren. Ich glaube, dass der Weg über den "Auftragspool" am praktischsten ist, daher erwäge ich, diese Funktion auf diese Weise zu verwenden. Das gefällt mir.

In diesem Fall können Sie die Ticketnummer nicht in einer Variablen speichern, da die Aufträge manuell platziert werden, so dass der Code keine Ticketnummern kennt, bis er sie entdeckt, so dass Sie nur die erste Option mit einer Schleife und OrderSelect() verwenden können.

Das Speichern von Ticketnummern ist eine große Unannehmlichkeit und sollte vermieden werden, es sei denn, Sie müssen es tun, d.h. es gibt keine Möglichkeit, es zu vermeiden ... warum? weil Ihr Code in der Lage sein muss, sich von einem MT4-Neustart zu erholen, was bedeutet, dass die Informationen über die Tickets in Dateien gespeichert werden und die Dateien idealerweise auf einen zweiten PC kopiert werden, um zusätzliche Sicherheitskopien zu erstellen. Wenn der Code dann neu startet, muss er die Datei lesen, die Ticketnummern abrufen und versuchen, dort weiterzumachen, wo er aufgehört hat ... . diese Art von Komplexität wird von den meisten Leuten nicht benötigt, aber oft denken sie, dass das Speichern von Ticketnummern die einfachere Option ist ... und sie brauchen die Informationen nicht wirklich in Dateien zu speichern, usw. ... dann, wenn alles schief geht, wünschen sie sich, sie hätten es getan.

OK, ich habe meine Version des Codes so kodiert, dass er meine Anforderungen erfüllt, ich habe einige Prüfungen hinzugefügt, um mehrere USDJPY-Aufträge zu erkennen und alle USDJPY-Aufträge zu ändern und zu schließen ... hier sind einige Bildschirmfotos, um zu zeigen, wie die endgültige Version aussah.


Die Orders, die ich manuell platziert habe...

Alle Bestellungen

Die USDJPYi-Aufträge, die mein Code modifiziert hat (beachten Sie die TP & SL) und geschlossen wurden, sowie die Ticket-Nummer. Beachten Sie auch die Mischung aus Kauf- und Verkaufsaufträgen.

Geschlossene USDJPYi-Aufträge

Die übrigen Aufträge...

Verbleibende Aufträge

 

Simon,

In diesem Fall können Sie die Ticketnummer nicht in einer Variablen speichern...

RE: Sie entscheiden sich in diesem Beispiel also für den Weg des "Auftragspools", richtig?

// order pool example

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){

Das Speichern von Ticketnummern ist eine große Unannehmlichkeit...

RE: Einverstanden.

die Informationen über die Tickets in Dateien zu speichern und idealerweise die Dateien auf einen 2. PC zu kopieren, um eine zusätzliche Sicherung zu gewährleisten...

RE: Ja, aber das Speichern von Informationen über Tickets in Dateien ist eine separate Gruppe von Codeblöcken für meine derzeitige Situation. Ich würde nicht mit der Codierung beginnen, bevor die Grundlagen geschrieben sind.

Ich habe meine Version des Codes so kodiert, dass er meine Anforderungen erfüllt...

RE: Ja, das kann ich sehen. Es scheint gut zu sein :)


Nachdem ich diese Aufgabe abgeschlossen habe, werde ich mit Band II weitermachen. Es wird sich nicht von selbst schreiben ;)

Ich danke dir.

 
WhooDoo22:

Simon,

In diesem Fall können Sie die Ticketnummer nicht in einer Variablen speichern...

RE: Sie verwenden also den Weg des "Auftragspools" für dieses Beispiel, richtig?


Gibt es eine andere Möglichkeit?
 

Simon,

Nein, nicht dass ich wüsste. Es scheint nur zwei Optionen zu geben, und diese Option scheint die beste für Band II zu sein. Außerdem scheint sie weniger kompliziert zu sein, und das stört mich nicht im Geringsten ;)

Zurück zu dieser Aufgabe: Ich verstehe, dass Sie die Order-Pool-Methode für die Auswahl der Order auf dem usdjpy-Paar verwendet haben, aber welche Bedingung haben Sie verwendet, um die Order auf usdjpy zu isolieren?

Ich danke Ihnen.

Grund der Beschwerde: