Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich versuche, den Stop-Loss für den Hauptstopp zu ändern... Wie kann ich das tun?
Das ist es, was ich tue:
COrder *order=orders.At(i); .... COrderStop *order_stop=order.MainStop(); double new_sl=...; order_stop.StopLoss(new_sl); order.MainStop(order_stop); order.CheckStops();Ich habe mir wirklich den Kopf zerbrochen, als ich das versuchte...
Die Aktualisierung erfolgt nicht aufgrund der Überprüfung in COrderStopVirtualBase::Update
StopLoss() gibt neuen Wert zurück, aber sl_line ist immer noch alt...
Hallo Shep,
vielen Dank für den Hinweis auf diese Dinge. Ich habe dies bis jetzt nicht bemerkt. Ich werde den Code aktualisieren.
Ja, ich bin mir dessen bewusst. Das liegt immer noch an den Forward-Deklarationen. CStop benötigt Instanzen von COrder und COrderStop in seinen Methoden. Das gleiche gilt auch, wenn Sie versuchen, CStop zu kompilieren. Alle diese Klassen, die sich gegenseitig benötigen, sollten zusammen kompiliert werden. Es würde Fehler geben, wenn jede für sich kompiliert wird. Zum Beispiel:
Dies wird nicht kompiliert. Sie müssen eine Vorwärtsdeklaration angeben, damit der Compiler das Klassenmitglied m_object2 innerhalb der Klasse object1 erkennt:
Dies ist in Ordnung, wenn sich Object1 und Object2 in derselben Datei befinden. Wenn sie sich in zwei getrennten Dateien befinden, müssen Sie eine Vorwärtsdeklaration für Object2 in der Klassendatei von Object1 und für Object1 in der Klassendatei von Object2 machen, damit der Compiler keine Fehler zurückgibt, wenn Sie eine der beiden Dateien kompilieren. Das gilt so lange, bis Sie Methoden zu einer der beiden Klassen hinzufügen.
Die aktuelle Version des Compilers erkennt zwar Forward-Deklarationen, aber nicht die aufgelisteten Methoden der forwardly deklarierten Klasse. Deshalb erhalten Sie keine Fehlermeldungen wie "CStop - declaration without type", aber Sie erhalten Compiler-Fehlermeldungen für die Methoden, wie die, die Sie oben gepostet haben. Der Compiler erkennt die Klasse, aber nicht die Methoden der Klasse, die vorwärts deklariert wurde.
Hallo Enrico,
Danke für die schnelle Antwort. Du hast Recht, was die Forward-Deklarationen angeht. Ich hatte die Befürchtung, dass es sich um ein tiefergehendes Problem handeln könnte. Es macht Sinn, dass das Objekt, das die forwardly deklarierte Klasse verwendet, keine Kenntnis von den Mitgliedern dieser Klasse hat.
Ich verwende ein anderes Modell für meine Ausführungsmaschine, das das Strategiemuster verwendet. Ich habe ein paar ärgerliche Probleme damit und habe mir gerade Ihre Bibliothek angeschaut, als ich auf diese Probleme gestoßen bin.
Ihre Arbeit ist wirklich großartig, Sie haben solide Design- und Ingenieursfähigkeiten, und vielen Dank, dass Sie so freundlich sind, sie mit uns zu teilen.
Danke, Shep.
Hallo Enrico,
danke für die schnelle Antwort. Du hast recht mit den Forward-Deklarationen. Ich hatte die Befürchtung, dass es sich um ein tiefergehendes Problem handeln könnte. Es macht Sinn, dass das Objekt, das die forwardly deklarierte Klasse verwendet, keine Kenntnis von den Mitgliedern dieser Klasse hat.
Ich verwende ein anderes Modell für meine Ausführungsmaschine, das das Strategiemuster verwendet. Ich habe ein paar ärgerliche Probleme damit und habe mir gerade Ihre Bibliothek angeschaut, als ich auf diese Probleme gestoßen bin.
Ihre Arbeit ist wirklich großartig, Sie verfügen über solide Design- und Ingenieursfähigkeiten, und ich danke Ihnen, dass Sie so freundlich sind, sie mit uns zu teilen.
Danke, Shep.
Hallo Shep,
Gern geschehen und danke für den Hinweis. Ich erinnere mich, dass ich auch etwas verwirrt war, als ich auf dieses Problem mit den Vorwärtserklärungen stieß.
Es freut mich zu hören, dass Sie die Artikel als nützlich empfunden haben. Ich wünsche Ihnen alles Gute bei Ihren Bemühungen, Ihre eigene EA-Engine zu entwickeln.
Mit freundlichen Grüßen, Enrico
Die Aktualisierung erfolgt nicht aufgrund der Überprüfung in COrderStopVirtualBase::Update
StopLoss() liefert einen neuen Wert, aber sl_line ist immer noch alt...
Der Zweck von COrderStopVirtualBase::Update ist eigentlich das Gegenteil von dem, was Sie beabsichtigen. Sie ist dazu gedacht, den sl/tp-Wert anzupassen, wenn die eigene Stop-Linie aktualisiert wird, normalerweise von außerhalb des EA (durch Ziehen auf dem Chart oder durch direkte Änderung des Wertes im Objekteigenschaften-Fenster ). Verwenden Sie stattdessen die Methoden MoveStopLoss() und MoveTakeProfit() für virtuelle Stopps.
Dies ist eigentlich für den nächsten Artikel vorgesehen, aber wenn Sie schon neugierig sind, sollten Sie sich die CheckTrailing()-Methode von COrderStopBase ansehen. Sie ändert den Orderstopp, wenn er für Trailing in Frage kommt. Die Methode gilt für alle drei Typen:
Alternativ kann die Klasse CTrail auch verwendet werden, um sl/tp-Levels zu ändern, ohne eine Instanz eines Orderstopps abrufen zu müssen (nicht nur für Trailing oder Breakeven).
Wie weit ist der vorgeschlagene plattformübergreifende Ansatz von der Praxis und der Bequemlichkeit entfernt. Als sein eigenes, schwerfälliges Fahrrad ist er in Ordnung. Aber warum es veröffentlichen! Es ist einfacher, alles komplett selbst zu schreiben, selbst für einen Anfänger, als dieses Monstrum zu studieren und zu beherrschen. Das verstehe ich nicht.
SB unter MT5 ist ein Beispiel für Eleganz im Vergleich zu diesem Zyklus von Artikeln. Und es ist auch auf MT4 portiert.
Der Artikel hat mir sehr gut gefallen, er hat mir die Augen geöffnet. Bitte, schreiben Sie eine Follow-up-Artikel. Ich bin wirklich daran interessiert, wie Sie Scalping mit diesem Tool angehen würden.
Vielen Dank für diesen und all Ihre anderen Arbeiten.
Wie weit ist der vorgeschlagene plattformübergreifende Ansatz von der Praxis und der Bequemlichkeit entfernt. Als sein eigenes, schwerfälliges Fahrrad ist er in Ordnung. Aber warum es veröffentlichen! Es ist einfacher, alles komplett selbst zu schreiben, selbst für einen Anfänger, als dieses Monstrum zu studieren und zu beherrschen. Das verstehe ich nicht.
SB unter MT5 ist ein Beispiel für Eleganz im Vergleich zu diesem Zyklus von Artikeln. Und es ist auf MT4 portiert.
Ich stimme völlig zu. Auch wenn ich mit OOP sehr vertraut bin, ist der Ansatz dieses Autors zu pervers. Es gibt zu viele Auswüchse und der Code ist überhaupt kein Code, sondern ein "Monster" .....