Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 509

 
Nun ja, das ist offensichtlich, aber es ist nicht gut. Es ist nicht gut, Eingabeparameter in eine Klasse aufzunehmen.
 
Вадим Мотеюнас:

Hallo, könnten Sie mir bitte sagen, warum in diesem Zyklus meine Limit-Orders nur gelöscht werden, wenn nach der Platzierung einer Limit-Order keine weitere Limit-Order auf dem nächsten Balken platziert wurde, d.h. eine Limit-Order wird nur gelöscht, wenn sie platziert wurde und dann zwei Balken folgen, auf denen keine Limit-Order platziert wurde

Welche Reihenfolge haben Sie hier gewählt?

for(i=0;i<=OrderTicket();i++)
 
Nikolay Gaylis:

Und welche Reihenfolge haben Sie hier gewählt?

Ich habe den Fehler, anstelle von OrderTicket() Ich ersetzte auch eine Variable Ticket, die OrderSend zugewiesen wurde, es immer noch nicht alles löschen, aber wie kann ich eine Schleife, um durch die Limit-Order zu gehen und löschen Sie diejenigen, die auf der 2.

 
Вадим Мотеюнас:

Ich sehe den Fehler, ich auch ersetzt eine Variable für OrderTicket() mit Ticket OrderSend, es immer noch nicht löschen nichts, aber wie konfiguriere ich die Schleife, um durch die Limit-Aufträge gehen und löschen diejenigen, die auf der 2.

Dies ist optimal, zumindest habe ich mql so gelernt

Wenn Sie in kodobase einen EA finden, der Ihren Anforderungen annähernd entspricht, sehen Sie sich den Code an, und wenn der Code umfangreich und unübersichtlich ist, suchen Sie nach dem nächsten.

Nachdem Sie einen verständlichen Code gefunden haben, beginnen Sie, ihn zu studieren und zu bearbeiten, damit Sie schnell verstehen, wie er funktioniert

MQL5 Code Base: Советники
MQL5 Code Base: Советники
  • www.mql5.com
В разделе торговых советников вы найдете множество приложений, автоматизирующих вашу аналитику и торговлю. Здесь вы найдете самые разные приложения, обладающие различными торговыми алгоритмами и предоставляющими различную степень автоматизации. Имеются как простенькие эксперты, так и сложные торговые роботы, способные полностью автоматизировать...
 
Juer:
Nun, ja, das ist offensichtlich, aber es ist nicht praktisch. Es ist nicht schön, Eingabeparameter in eine Klasse zu stecken.

Dennoch müssen diese Werte irgendwie dorthin gelangen). Schließlich basiert die Arbeit der Klasse in den meisten Fällen auf den Werten, die der Benutzer angibt. Aber aus irgendeinem Grund wollen Sie das nicht tun. Sie werden dort nicht auf magische Weise erscheinen.

In der Regel werden die Eingabeparameter in der Phase der Programminitialisierung in eine spezielle Struktur übertragen. Meistens werden diese Werte vorverarbeitet (zumindest auf ihre Richtigkeit hin überprüft). Wenn eine neue Instanz der Klasse erstellt wird, wird ein Verweis auf diese Struktur an sie übergeben. Welche Unannehmlichkeiten gibt es hier?

 
Ihor Herasko:

Dennoch müssen diese Werte irgendwie dorthin gelangen). Schließlich basiert die Arbeit der Klasse in den meisten Fällen auf den Werten, die der Benutzer angibt. Aber aus irgendeinem Grund wollen Sie das nicht tun. Sie werden dort nicht auf magische Weise erscheinen.

In der Regel werden die Eingabeparameter in der Phase der Programminitialisierung in eine spezielle Struktur übertragen. Meistens werden diese Werte vorverarbeitet (zumindest auf ihre Richtigkeit hin überprüft). Wenn eine neue Instanz der Klasse erstellt wird, wird ein Verweis auf diese Struktur an sie übergeben. Welche Unannehmlichkeiten gibt es hier?

Die Unannehmlichkeit besteht nur darin, dass diese Werte jedes Mal bei der Erstellung eines Objekts übergeben werden müssen. Sie sind jedes Mal identisch. In Ordnung, ich werde es über den Konstruktor erstellen, aber es ist eine private Lösung. Der Standardkonstruktor kann diese Parameter für einen EA enthalten, während sie für einen anderen EA ganz anders lauten.

Vielleicht besteht die Lösung darin, eine völlig andere Klasse zu erstellen, deren Methoden die Werte der Parameter zurückgeben. Dann bräuchte ich diese neue Klasse nur einmal zu initialisieren. Und in der Originalklasse werden bei der Erstellung eines Objekts (sogar im selben Konstruktor) Parameterwerte von der neuen Klasse angefordert.

 
Juer:

Die einzige Unannehmlichkeit ist die Notwendigkeit, diese Werte jedes Mal zu übergeben, wenn ein Objekt erstellt wird. Sie sind jedes Mal gleich. In Ordnung, ich werde es über den Konstruktor machen, aber es ist eine private Lösung. Der Standardkonstruktor des einen EA kann diese Parameter haben, während der Standardkonstruktor eines anderen EA völlig anders aussieht.

Vielleicht besteht die Lösung darin, eine völlig andere Klasse zu erstellen, deren Methoden die Werte der Parameter zurückgeben. Dann bräuchte ich diese neue Klasse nur einmal zu initialisieren. Und in der Originalklasse werden bei der Erstellung eines Objekts (sogar im selben Konstruktor) Parameterwerte von der neuen Klasse angefordert.

Es scheint, als würden Sie das erfundene Problem heldenhaft lösen.
 
Artyom Trishkin:
Sie scheinen heldenhaft ein erfundenes Problem zu lösen.
Ich habe das Problem nicht genau gelesen, aber mir ist aufgefallen, dass es derselbe Rechen war, auf den ich getreten bin, und Sie haben mir geholfen, ihn aus dem Weg zu räumen. Nicht wahr?
 
Alexey Viktorov:
Ich habe mir das Problem nicht genau durchgelesen, aber mir ist aufgefallen, dass es sich um dieselbe Harke handelt, auf die ich getreten bin, und Sie haben mir geholfen, sie aus dem Weg zu räumen. Nicht wahr?
Nicht ganz. Sie hatten keine Lust, die Leere zu initialisieren.
 
Artyom Trishkin:
Das klingt, als würden Sie heldenhaft ein erfundenes Problem lösen.

Ja, das habe ich oben vorgeschlagen, und zwar auf dieselbe Art und Weise, wie Sie es mit der Struktur gemacht haben, nur komplizierter.

-> Und in der Ausgangsklasse, wenn Sie ein Objekt erstellen (sogar im selben Konstruktor), fordern Sie Parameterwerte von der neuen Klasse an.

Aber im Allgemeinen müsste ich einen Verweis auf diese Hilfsklasse an die Ausgangsklasse übergeben. Kurz gesagt, ja, das Gleiche wie bei der Struktur.

Erstellen Sie eine Containerklasse, durch die all diese Objekte weiter erstellt werden können. Dann können diese Parameter einmalig in dieser Containerklasse initialisiert werden. Ich denke, das werde ich tun.

Grund der Beschwerde: