Pending Order Grid EA MT5
- Utilitys
- Francisco Manuel Vicente Berardo
- Version: 1.6
- Aktualisiert: 5 Oktober 2024
- Aktivierungen: 20
Das Pending Order Grid ist ein Multi-Symbol Multi-Timeframe Expert Advisor, der eine Multi-Strategie-Implementierung auf Basis von Pending Order Grids ermöglicht.
Allgemeine Beschreibung
Das Pending Order Grid ermöglicht die Ausführung einer benutzerdefinierten Strategie durch die Erstellung von Pending Order Grids. Der Expert Advisor platziert Pending Orders eines bestimmten Typs (Buy Limit, Sell Limit, Buy Stop oder Sell Stop) auf äquidistanten Kursniveaus, um jedes Raster zu bilden. Der Benutzer kann verschiedene Raster gleichzeitig einrichten - es ist nur erforderlich, den EA an mehrere Chart-Fenster des/der gewünschten Symbols/Symbole anzuhängen.
Für den Start und Stopp eines Gitters kann zwischen zwei Modi gewählt werden: Preis oder Zeit. Je nach gewähltem Modus beginnt der Handelsroboter erst dann mit der Platzierung von Pending Orders, wenn der aktuelle Kurs "nahe" dem ersten Zielkurs (Startkurs) liegt oder die Startzeit erreicht ist, und stoppt die Platzierung, wenn der letzte Zielkurs den Stoppkurs überschreitet oder die Stoppzeit erreicht ist, wobei Startkurs, Startzeit, Stoppkurs und Stoppzeit Eingabeparameter sind.
Die Platzierung einer schwebenden Order wird durch ein Preisintervall geregelt, dessen Grenzen bei den Abständen Stop Level und Stop Level + Extra Level zum Zielpreis der Order liegen, wobei Extra Level ein Eingabeparameter ist. Jedes Mal, wenn neue Notierungen verfügbar sind und der Preis des Symbols in diesem Intervall liegt, wird die Pending Order platziert. Der Zielpreis der nächsten Order ergibt sich einfach aus dem vorherigen Preis, der mit dem Eingabeparameter Price Level addiert (Sell Limit oder Buy Stop) oder subtrahiert (Buy Limit oder Sell Stop) wird.
Eine Ausnahme von der vorherigen Prozedur besteht, wenn die erste schwebende Order des Rasters durch die Startzeit ausgelöst wird. In diesem Fall versucht der Handelsroboter , die Order sofort im Abstand des Stop Levels zu platzieren. Im Falle einer Ablehnung durch den Handelsserver fügt er 1 Pip zum vorherigen Abstand hinzu und versucht erneut, die Order zu platzieren. Dieser Vorgang wird so lange wiederholt, bis der Abstand Stop Level + Extra Level erreicht ist.
Die maximale Anzahl von gleichzeitig ausstehenden Aufträgen, die vom EA platziert werden können, wird durch den Ausdruck angegeben:
- Ceil ( (Stop Level + Extra Level) / Price Level ), für Price Level > 0,
wobei Ceil die übliche mathematische Funktiondarstellt. Der Ausdruck kann die folgenden Werte annehmen:
- 1 für Preisniveau ≥ Stop Level + Extra Level,
- 2 für (Stop Level + Extra Level)/2 ≤ Price Level < Stop Level + Extra Level,
- 3/more für Preisniveau < (Stop Level + Extra Level)/2.
Risikomanagement
Das Volumen, das für die Platzierung einer Pending Order verwendet wird, wird zwischen einer festen und einer variablen Losgröße gewählt, die über die Eingabeparameter Volumen und Freie Marge % verfügbar sind. Wenn auf dem Konto nicht genügend Geld für das gewählte Volumen vorhanden ist, wird dennoch eine Anfrage zur Platzierung der Order an den Handelsserver gesendet. Der Zweck besteht darin, die entsprechende Positionseröffnung zu ermöglichen, wenn die freie Marge bis zum Erreichen des Zielpreises ausreichend ansteigt. Dieser Anstieg könnte auf eine Kontoeinlage oder einen Positionsgewinn zwischen der Platzierung und der Auslösung der Pending Order zurückzuführen sein.
Eingabeparameter
PENDING-ORDER-RASTER
- Startpreis: Preis, der verwendet wird, um den Start des Rasters zu definieren.
- Startzeit: Zeit, die verwendet wird, um den Start des Gitters zu definieren.
- Stop Preis: Preis, der verwendet wird, um den Stop des Grids zu definieren.
- Stop-Zeit: Zeit, die verwendet wird, um den Stop des Grids zu definieren.
- Preisniveau: Abstand zwischen schwebenden Aufträgen desselben Typs (Pips).
- Extra Level: Abstand zum Stop-Level, der wiederum ein Abstand zum Zielpreis ist. Beide stellen die Grenzen des Preisintervalls dar, in dem der Preis des Symbols für die Platzierung der Pending Order liegen muss (Pips).
PLATZIERUNG VON PENDING ORDERS
- Magische Zahl: Die Kennung des Expert Advisors.
- Typ: Typ der Pending Order, die zur Bildung des Rasters verwendet wird.
- Volumen: Losgröße pro Geschäft (Lots).
- Freie Marge %: Prozentsatz der freien Kontomarge, der zur Berechnung der Losgröße des aktuellen Geschäfts verwendet wird (%).
- Stop-Loss: Abstand zum Zielkurs der schwebenden Order für die Platzierung eines Stop Loss (Pips).
- Gewinnmitnahme: Abstand zum Zielpreis der schwebenden Order, um einen Take Profit zu platzieren (Pips).
- Abweichung: Maximal zulässige Abweichung vom gewünschten Preis (Pips).
- Fill-Politik: Richtlinie zur Volumenausführung.
- Verfallstyp: Gültigkeitsmodus der Order.
- Ablaufzeit: Gültigkeitsdauer des Auftrags (wird nur mit dem Gültigkeitsmodus ORDER_TIME_SPECIFIED verwendet).
- Kommentar: Textnachricht, die im Chart-Fenster nach einer (Neu-)Initialisierung des EA, in der Objektliste nach dem Erstellen einer horizontalen/vertikalen Linie (an jeder der Grenzen des Gitters) oder dem Platzieren einer schwebenden Order und in den Registerkarten Handel oder Historie des Toolbox-Fensters nach dem Platzieren einer schwebenden Order angezeigt wird (es sind nur 31 Zeichen zulässig).
ÄNDERUNG DER POSITION
- Trailing Stop - SL: Abstand zum Marktpreis für die Platzierung eines Stop Loss nach einer günstigen Kursbewegung (Pips).
- Trailing Start - SL: Abstand vom Eröffnungskurs der Position, der erreicht werden muss, damit die Funktion "Trailing Stop - SL" aktiviert wird (Pips).
- Trailing Step - SL: Abstand von dem Preis, bei dem die vorherige Stop-Loss-Änderung stattgefunden hat, der erreicht werden muss, bevor ein neuer Stop-Loss gesetzt wird (Pips).
- Trailing Stop - TP: Abstand vom Marktpreis für die Platzierung eines Take Profits nach einer ungünstigen Kursbewegung (Pips).
- Trailing Start - TP: Abstand vom Eröffnungskurs der Position, der für die Aktivierung der Funktion "Trailing Stop - TP" erreicht werden muss (Pips).
- Trailing Step - TP: Abstand von dem Kurs, bei dem die vorherige Take-Profit-Änderung stattgefunden hat, der erreicht werden muss, bevor ein neuer Take-Profit platziert wird (Pips).
OPTIMIERUNGSKRITERIUM
- Mathematischer Ausdruck: Mathematischer Ausdruck, der zur Berechnung eines benutzerdefinierten statistischen Parameters zur Sortierung der Optimierungsergebnisse verwendet wird (siehe Abschnitt Optimierungskriterium unten).
Einige der verfügbaren Parameter akzeptieren Werte, die zu bestimmten Optionenführen .
- Startkurs oder Stoppkurs: Ein null/negativer Wert bedeutet, dass die Funktion des Parameters inaktiv ist.
- Startzeit oder Stoppzeit: Ein Wert vor der aktuellen Zeit bedeutet, dass die Funktion des Parameters inaktiv ist.
- Preisniveau: Ein Nullwert bedeutet, dass der Zielpreis für alle schwebenden Aufträge konstant ist.
- Extra Level: Ein Nullwert bedeutet, dass der Preis des Symbols genau auf dem Stop-Level-Abstand vom Zielpreis liegen muss, damit die Pending Order platziert werden kann.
- Volumen: Ein Wert, der niedriger ist als das vom Broker zugelassene Mindestvolumen, wird in diesen letzten Wert umgerechnet. Ein Wert, der höher ist als das maximal verfügbare Volumen der freien Marge, wird in diese Leiste umgerechnet.
- Freie Marge %: Ein Wert, dessen Volumen das vom Makler zugelassene Mindestvolumen nicht erreicht, wird in diese Leiste umgerechnet. Ein Wert, dessen Volumen das maximal verfügbare Volumen durch die freie Marge überschreitet, wird in diese Leiste umgerechnet.
- Stop Loss, Take Profit, Trailing Stop - SL oder Trailing Stop - TP: Ein Nullwert bedeutet, dass die Funktion des Parameters inaktiv ist. Jeder Wert zwischen 0 und dem Stop Level wird in diese Leiste umgerechnet.
- Trailing Start - SL oder Trailing Start - TP: Ein Nullwert bedeutet die sofortige Aktivierung der Funktion "Trailing Stop - SL" bzw. "Trailing Stop - TP".
- Trailing Start - SL: Der Spread-Wert bedeutet die Aktivierung der Funktion "Trailing Stop - SL" bei Break-Even, obwohl dies nicht garantiert ist. Die Werte Spread + "Trailing Stop - SL" bedeuten die Aktivierung der Funktion "Trailing Stop - SL" bei einem Gewinn, bei dem die Gewinnschwelle garantiert ist.
- Trailing Step - SL oder Trailing Step - TP: Ein Nullwert bedeutet, dass die Funktion "Trailing Stop - SL" bzw. "Trailing Stop - TP" kontinuierlich arbeitet.
Die Eingabeparameter, die die Grenzen des Rasters definieren, müssen einigen Regeln folgen.
- Es müssen sowohl der Start als auch der Stop des Rasters ausgewählt werden, jeweils zwischen einem Preis oder einer Zeit.
- Es kann jede beliebige Kombination zwischen Start und Stop des Gitters verwendet werden: Startkurs + Stoppkurs, Startkurs + Stoppzeit, Startzeit + Stoppkurs und Startzeit + Stoppzeit.
- Der Startkurs kann den Stoppkurs im Raster der Sell Limit- oder Buy Stop-Orders nicht überschreiten.
- Der Stoppkurs kann den Startkurs im Raster der Kauflimit- oder Verkaufsstopp-Aufträge nicht überschreiten.
- Die Startzeit kann die Stopzeit in keinem der Raster für schwebende Aufträge überschreiten.
Optimierungskriterium
Der Expert Advisor ermöglicht die Erstellung und Verwendung eines neuen statistischen Parameters (neben den bereits vorhandenen) zur Sortierung der Optimierungsergebnisse. Dieser benutzerdefinierte statistische Parameter ergibt sich aus einem mathematischen Ausdruck, der nach dem Testen berechnet wird. Der Ausdruck muss die Syntaxregeln und die Rangfolge einhalten und aus den folgenden Elementen bestehen:
- Ganzzahlige und reelle Zahlen.
- Statistische Parameter.
- Mathematische Operatoren für Addition (+), Subtraktion (-), Multiplikation (*), Division (/) und Potenzierung (^).
- Mathematische und trigonometrische Funktionen.
- Gekrümmte Klammern (()) zur Festlegung der Rangfolge und zur Aufnahme der Argumente der Funktion(en).
- Punkt (.) als Dezimalpunkt und Komma (,) als Trennzeichen für die Argumente der Funktion.
Die statistischen Parameter werden verwendet, indem die entsprechenden Bezeichner-Initialen hinter den Begriff "STAT"geschrieben werden. Falls es zwei Bezeichner mit denselben Initialen gibt, muss auch "1" oder "2" hinzugefügt werden, je nach der Reihenfolge, in der beide in der Liste erscheinen. Zum Beispiel wären "STAT_PROFIT" und "STAT_MAX_CONLOSS_TRADES" jeweils "P" und "MCT2". Liste der Identifikatoren ohne "STAT_", deren Anfangsbuchstaben "1" oder "2 " erfordern:
CONPROFITMAX (C1), CONPROFITMAX_TRADES (CT1), MAX_CONWINS (MC1), MAX_CONPROFIT_TRADES (MCT1), CONLOSSMAX (C2), CONLOSSMAX_TRADES (CT2), MAX_CONLOSSES (MC2), MAX_CONLOSS_TRADES (MCT2), EQUITYDD_PERCENT (EP1), EXPECTED_PAYOFF (EP2), LOSS_TRADES (LT1), LONG_TRADES (LT2).
Die mathematischen/trigonometrischen Funktionen werden verwendet, indem man den entsprechenden Namen hinter "Math" und ein oder zwei Argumente in Klammernschreibt, im letzteren Fall durch ein Komma getrennt. Zum Beispiel wären "MathLog10()" und "MathPow()" "Log10(Argument)" bzw. "Pow(Argument1,Argument2)". Liste der Namen, die den verfügbaren Funktionen entsprechen:
Abs, Arccos, Arcsin, Arctan, Arctan2, Ceil, Cos, Exp, Floor, Log, Log10, Max, Min, Mod, Pow, Rand, Round, Sin, Sqrt, Tan, Expm1, Log1p, Arccosh, Arcsinh, Arctanh, Cosh, Sinh, Tanh.
Hinweis: "MathRand()" wird nur mit "GetTickCount()" als Argument von "MathSrand()" ausgeführt, wird ohne etwas in Klammern verwendet - es wird einfach "Rand()" geschrieben.
Außerdem hat der Ausdruck die folgenden Eigenschaften:
- Die wissenschaftlichen, technischen und E-Notationen sind erlaubt.
- Die Multiplikation muss explizit angegeben werden (durch das entsprechende Symbol).
- Das System unterscheidet nicht zwischen Groß- und Kleinschreibung.
- Das Leerzeichen ( ) ist erlaubt und hat keinen Einfluss auf die Berechnung des Ausdrucks.
- Der Eingabeausdruck ist auf 233 Zeichen begrenzt.
Beispiele für eine Zahlendarstellung mit verschiedenen Notationen: "0.0000325" (dezimal), "3.25*10^-5" (wissenschaftlich), "32.5*10^-6" (technisch) und "32.5E-6" (E).
WICHTIG! Der EA prüft nicht, ob der eingegebene Ausdruck alle Anforderungen erfüllt, d.h. ob er den Syntax-/Standardregeln gehorcht, daher führt jede Verletzung dieser Regeln zu einem unzuverlässigen Ergebnis.
Angezeigte Informationen
Der Expert Advisor verfügt über eine große Anzahl von Meldungen, die den Benutzer über Fehler und Änderungen der Bedingungen informieren, die während des Betriebs auftreten können. Die Meldungen werden über die Funktion "Alert" (durch ein Pop-up-Fenster) angezeigt und enthalten folgende Informationen:
- Die Warnung, dass ein Eingabeparameter falsch gesetzt wurde.
- Die Information, dass das Konto nicht genug Geld für das gewählte Volumen hat (siehe Abschnitt Risikomanagement oben).
- Die Information, dass die Anzahl der vom Broker zugelassenen Aufträge erreicht wurde.
- Der vorherige und der aktuelle Wert des Stop Levels des Symbols, wenn dieses aktualisiert wird.
- Die Beschreibung der Trade Server Return Codes.
- Die Notierungen des Symbols (unmittelbar) vor dem Zustandekommen der Handelsanfrage, gefolgt von den Notierungen des Symbols (unmittelbar) nach der Entscheidung des Handelsservers.
- Die Beschreibung der Runtime Errors.
- Die Standardfunktion in der Include-Datei, bei der der Laufzeitfehler festgestellt wurde (nur für den Programmierer relevant).
- Die Uninitialization Reason Codes Beschreibung.
Hinweis: Einige Elemente der Liste werden gleichzeitig angezeigt (in derselben Textzeile): 5, 6 und 7; 7 und 8.
Während des Betriebs des EA werden die angezeigten Meldungen nach Art des Auftretens gruppiert (bezogen auf jedes Listenelement, außer 1, 6 und 8) und gezählt. Unmittelbar vor dem Entladen des EA wird eine abschließende Meldung angezeigt, die die Gruppen mit den jeweiligen Zählungen (falls diese > 0 waren)enthält.
Nach der (Neu-)Initialisierungdes EA werden im Diagramm zwei Referenzlinien an den Grenzen des Gitters (Start und Stopp) angezeigt. Jede Linie ist horizontal/vertikal, wenn die Grenze des Rasters der Preis bzw. die Zeit ist. Beide Linien sind blau/rot, wenn der Typ der schwebenden Order des Gitters Kauf/Verkauf ist. Tipp: Bewegen Sie den Mauszeiger über eine dieser Linien, um den Objektnamen zu sehen ("Buy/Sell Limit/Stop - Start/Stop Price/Time"). Hinweis: Die Eigenschaften eines grafischen Objekts können in der Liste "Objekte" bearbeitet werden.
Nach dem Testen/Optimieren des EA wird das Ergebnis des mathematischen Ausdrucks, der in den Eingabeparameter Math Expression eingegeben wurde, auf den Registerkarten Journal/Optimierungsergebnisse des Fensters Strategy Tester angezeigt. Nach dem Testen des EA werden die Werte der verfügbarenstatistischen Parameter auch auf der Registerkarte Journal angezeigt.
Beobachtungen
In einigen Fällen kann die Quotierungssitzung früher beginnen oder später enden als die entsprechende Handelssitzung (z. B. mit einem Unterschied von fünf Minuten). Während des Zeitintervalls, in dem die Börsensitzung geöffnet, die Handelssitzung aber noch/bereits geschlossen ist, beginnt der Expert Advisor mit der Verarbeitung der verfügbaren Ticks bzw . setzt diese fort. Wenn die vorliegenden Bedingungen die Handelskriterien des EA erfüllen, wird eine Handelsanfrage gebildet und an den Server gesendet. Dies gelingt jedoch nicht, und es wird eine Fehlermeldung angezeigt: "Senden der Handelsanfrage fehlgeschlagen; Markt ist geschlossen".
In Zeiten hoher Aktivität kann die Entscheidung des Handelsservers, ob eine Handelsanfrage ausgeführt oder abgelehnt wird, erhebliche Verzögerungen aufweisen. Einige Daten, die in der an den Server gesendeten Anfrage verwendet werden, können fehlerhaft sein, was zur Ablehnung des Auftrags führt. Wenn der Server eine Anfrage prüft und die Notierungen des Symbols aktualisiert werden, können drei Fälle auftreten:
- Platzierung einer schwebenden Order - der Zielpreis der schwebenden Order wird zu einem falschen Abstand.
- Eröffnung/Änderungeiner Position - das beabsichtigte Stop-Loss- oder Take-Profit-Niveau der Position wird zu einem falschen Abstand.
- Position Änderung der Position - das vorherige Niveau des Stop Loss oder Take Profit der Position wird auf das Schlussniveau gesetzt.
Die Notierungen des Symbols, die im sechsten Element der Liste im Abschnitt "Angezeigte Informationen" erwähnt werden, sind hier besonders nützlich (da sich die Erstnotierungen in der Regel von den Letztnotierungen unterscheiden). Eine sorgfältige Analyse dieser Kurse und die Kenntnis der Auswirkungen, die bestimmte Kursänderungen auf die Bewertung der Anfrage haben, ermöglicht es, den Grund für das Auftreten dieser Fälle zu verstehen. Um zu vermeiden, dass die Anfrage vom Handelsserver wegen "ungültiger Stops" abgelehnt wird (Fälle 1 und 2), sollten die verwendeten Kurse/Levels das Stop-Level des Symbols um einige Pips überschreiten.
Die Eingabeparameter Start Price, Start Time, Stop Price, Stop Time oder Type haben im Programm einen besonderen Status. Jedes Mal, wenn einer davon geändert wird, geschehen zwei Dinge: Der EA beendet das aktuelle Raster und überprüft die Bedingungen, um ein neues zu erstellen. Wenn alle Start-/Stop-Werte diese Prüfung bestehen, beginnt der EA ein neues Raster. Wenn jedoch mindestens ein Wert nicht erfüllt wird, fährt der EA nicht mit dem neuen Raster fort und beendet seine Operation.
Eine Buy/Sell-Position wird zum Ask/Bid-Kurs eröffnet und zum Bid/Ask-Kurs geschlossen. Da die Stop-Orders der Position (Stop Loss und Take Profit) zu diesem letzten Preis ausgelöst werden, werden sie bei einer Pending Order aus dem Zielpreis der Order -/+ dem aktuellen Spread (Ask - Bid) berechnet.
Wenn Sie eine Pending Order platzieren , darfdie Gültigkeitsdauer nicht weniger als 1 Minute betragen. Während der Erstellung eines Grid platziert der Expert Advisor keine Pending Orders, wenn die aktuelle Zeit die Expiration Time minus 1 Minute überschreitet (wenn die Gültigkeitsdauer zuvor ausgewählt wurde).
Fazit
Das Pending Order Grid ist ein hilfreiches und effizientes Tool für die automatische Erstellung von Pending Order Grids, insbesondere wenn die Grids aus einer großen Anzahl von Orders bestehen, und ermöglicht eine einfache und intuitive Einstellung der zu bildenden Grids.

Der Benutzer hat keinen Kommentar hinterlassen