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
Gelegentlich lösche ich alle offenen Orders, damit unsere MT4-Freunde sich nicht aufregen.
Sie werden dieses Problem beim Backtesting bekommen, aber das ist kein Skriptproblem, sondern ein MT4-Backtesting-Problem.
Wenn es weiterhin auftritt, lassen Sie es mich bitte wissen oder senden Sie mir einige Berichte, die das Problem zeigen...
Danke und Reagrds,
hugues
Der Advisor erstellt das Grid mit meinem angegebenen Kommentar "GridEURUSD". Dieser Kommentar steht im Kommentarfeld, solange die Order wartet. Wenn die Order aktiviert wird, ändert sich der Kommentar in "activate/auto". Nach allem ist klar, dass dieses Verhalten zu dem beschriebenen Problem führt.
Ich handle mit Alpari. Sie unterstützen MT4 in Demokonten.
Ich werde prüfen, ob ich dieses Verhalten umgehen kann, d.h. die Magie der Order als Identifikator für das Grid verwenden kann und Sie über die Ergebnisse informieren.
Während ich das getestet habe, habe ich auch Änderungen am Bereinigungsskript für das Grid vorgenommen. Ich habe eine Funktion hinzugefügt, um auch offene Aufträge zu schließen. Leider erhalte ich die Fehlermeldung 129, d.h. Order locked, wenn ich versuche, eine offene Order zu schließen. Aber es löscht alle schwebenden Aufträge für das gegebene Raster.
cori
lass mich wissen, ob es funktioniert, und ich werde die Magie nutzen, denn ich wusste nicht, dass der Broker solche seltsamen Dinge tut!
danke und grüsse,
hugues
Ich habe den GridMaker geändert, um die OrderMagicNumber anstelle des Kommentars zu verwenden. Ich habe auch einige kleine Änderungen an der Erstellung des Kommentars vorgenommen.
Hier ist das Ergebnis.
mit freundlichen Grüßen, cori
da ich selbst schon ein paar Änderungen vorgenommen hatte, habe ich deine Änderungen in die neuere Version integriert.
Ich habe 1 kleine Variation gemacht: um meine aktuellen Grids aktiv zu halten, habe ich einen Test auf magic OR gridname gesetzt...
kannst du überprüfen, ob ich es richtig gemacht habe?
scheint ok zu sein. Aber du solltest den GridName als extern definieren, was ich geändert habe, weil ich ihn nicht als Parameter brauchte.
Grüße, cori
Sie können die Zeile ändern:
if (MathAbs( OrderOpenPrice() - atRate ) < inRange) // suche nicht nach exaktem Preis, sondern nach Preisnähe (kleiner als gridsize)
zu
if (MathAbs( OrderOpenPrice() - atRate ) < (inRange*0.9)) // sucht nicht nach dem exakten Preis, sondern nach der Preisnähe (kleiner als gridsize) - fügte 0,9 hinzu, um den Floating-Pont-Fehler zu vermeiden
und behebt damit das Problem.
Sorry für die Unannehmlichkeiten...
Umarmungen
Gibt es dieses Problem schon?
Habe etwas ähnliches im alten MQL2 gefunden.
Der wirklich sichere Weg, um dieses Problem zu umgehen ist, etwas wie zu tun:
intOOP = MathRound( OrdeOpenPrice() / Point );
für alle Ihre Double-Variablen. Dann haben Sie alle direkten int-Variablen, die ohne Fehler vergleichbar sind.
Es ist ein bisschen mehr zu schreiben, um es klar und verständlich zu halten, aber es ist weniger fehlerhaft.
Mit freundlichen Grüßen,
cori
Grüße,
hugues
1) die Logik für UseMACD, wantLongs, wantShorts geändert. Zuvor, wenn useMACD gesetzt war, nahm der EA Longs und Shorts, unabhängig von wnatLongs und wantShorts Flags. Jetzt setzt useMACD diese Flags nicht mehr außer Kraft, so dass man mit useMACD nur long oder nur short sein kann.
2) Ich habe eine zusätzliche Prüfung hinzugefügt, um sicherzustellen, dass es keine offenen Aufträge auf der falschen Seite des EMA gibt, wenn das limitEMA34 gesetzt wurde. Früher wurden die Aufträge über oder unter dem EMA platziert, aber nach ein paar Stunden verschob sich der EMA, so dass es Aufträge auf beiden Seiten des EMAs gab.
3) Es scheint einen Fehler in der switch-Anweisung auf OrderType() zu geben. Ich bin nicht sicher, was es ist, aber es verhält sich wirklich komisch. Ich habe einfach die switch-Anweisungen eliminiert und durch "if" ersetzt... ich mag es nicht, aber es funktioniert!
4) Ich habe die EMA-Periode variabel gemacht... schön für Backtesting...
Ich habe auch ein paar begleitende Skripte, wenn jemand möchte:
1) um nicht ausgefüllte offene Aufträge für ein Paar zu entfernen
2) um alle offenen Aufträge für alle Paare in einem Rutsch zu entfernen
3) um alle Positionen zu schließen und offene Aufträge zu entfernen.
4) um einige einfache Statistiken über das Verhalten des Gitters anhand der offenen Positionen und der Historie zu erhalten.
Hier ist der Code von V1.08: