TrailingStopEA für alle Charts funktioniert nicht
Hallo,
der folgende Code ist der vollständige EA um den es geht. Wenn ich beispielsweise den EA auf EURUSD installiere, dann setzt er nur TrailingStops bei EURUSD mit der MagicNumber von 1000, doch warum ignoriert der EA offene Order bei beispielsweise GBPUSD mit MagicNumber 1000? Die MagicNumber ist natürlich immer gleich. Ich lasse die Order mit einer MagicNumber von 1000 jeweils mit ein Buy und Sell - Script eröffnen. Mit freundlichen Grüßen Elfenstein PHP-Code:
|
Wenn der für alle Orders funktionieren soll, dann versuchs mal ohne MagicNumber-Abfrage. Nur nach OrderType() gehn.
For-Loops sind echt nicht mein Gebiet, aber kanns sein, dass Deine immer nur eine Order sucht, und die Restlichen nicht? Code:
for(i=OrdersTotal()-1;i>=0;i--){ Wenn ein EA nur SL, TP, BreakEven, TrailingStop nachträglich einfügen/anpassen soll, er eigentlich nur Orders, die schon im Markt sind, modifizieren soll, muss er dann eigentlich Init/Deinit haben? Statt OnStart() könnte man vielleicht OnEvent() oder sowas benutzen? Man müsste man ihn nicht mal in den Chart ziehn, sondern nur im EA-Verzeichnis haben. Aktivieren oder Stoppen müsste man ihn auch nicht, oder? :confused: :rolleyes: |
Überlese mal das von @MA-EA ganz schnell!
Da muss nach OrderSelect() noch die Abfrage nach dem OrderSymbol(), um z.B. EURUSD von GBPUSD zu unterscheiden, weil für beide dieselbe MN gilt. Das ist per se schon mal ungünstig. Wenn möglich immer pro Chart eine eigene MN vergeben. traderdoc |
Danke für die Hilfe @MA-EA.
Das "for(i=OrdersTotal()-1;i>=0;i--)" und das "for(i = 0; i < OrdersTotal(); i++)" macht genau das gleiche und bei beispielsweise 3 offenen Ordern, wird die For-Schleife auch 3 mal eine Schleife machen. Und egal wie du den EA programmierst, dieser muss für die Ausführung immer erst auf ein Chart installiert sein. Init/Deinit muss für die korrekte Ausführung im Code generell nicht vorhanden sein. @traderdoc, dein Beitrag konnte mir diesmal nicht helfen, doch natürlich danke trotzdem. Hier ist nun der fertige EA, der genau das macht, so wie ich es möchte: Code:
int Trailing = 20; |
Und dennoch sollte saubererweise nach
if (OrderSymbol() == Symbol()) selektiert werden. traderdoc |
Damit der EA alle Order modifiziert und nicht nur des Symbols, wo der EA installiert ist, muss ich ja "if (OrderSymbol() == Symbol())" weglassen. Das war ja mein Ziel, dass alle Order mit der MagicNumber von 1000 der Stoploss modifiziert wird, weshalb ich ja auch diese Frage stellte: "Wenn ich beispielsweise den EA auf EURUSD installiere, dann setzt er nur TrailingStops bei EURUSD mit der MagicNumber von 1000, doch warum ignoriert der EA offene Order bei beispielsweise GBPUSD mit MagicNumber 1000?"
|
Na dann helfe ich dir mal...
Ich gehe davon aus, das du hier einfach nur ein Problem mit der nicht vorhanden Klammersetzung hast: Code:
Code:
|
Danke für deine Hilfe Indikator-Trading, doch es gibt kein Problem, denn ich schrieb doch schon: "Hier ist nun der fertige EA, der genau das macht, so wie ich es möchte" Und zwar alle Order aller Symbole mit Beachtung der MagicNumber den Trailingstop modifizieren zu lassen. Ich hatte nur noch dem traderdoc geantwortet. Thema kann geschlossen werden.
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:11 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum