TradeShield Position Manager Library
- Bibliotheken
-
AL MOOSAWI ABDULLAH JAFFER BAQER
To trade successfully we need to go through the proven path that others had gone and reached!
Here are 17 quotes from such successful investors:
1- Limit your size in any position so that fear does not become the prevailing instinct guiding your judgment.
Joe Vidich - Version: 1.0
- Aktivierungen: 10
Probieren Sie es aus, bevor Sie sich entscheiden: Fügen Sie den kostenlosen Demo-EA im Strategietester bei aktiviertem visuellen Modus hinzu, eröffnen Sie ein paar manuelle Trades und beobachten Sie, wie das goldene TradeShield-Fenster jeden Wert aus dem Basket anzeigt, den die Bibliothek zurückgibt – Tick für Tick.
Eine kompilierte Bibliothek, die sich um die Trades kümmert, die Ihr Expert Advisor bereits eröffnet hat – so kann sich Ihr eigener Code darauf konzentrieren, wann der Einstieg erfolgen soll, und nicht auf die Dutzenden kleiner Regeln, die entscheiden, ob eine Stop-Änderung oder ein Close vom Server akzeptiert wird.
Warum es „TradeShield“ heißt
Das Eröffnen einer Position ist eine einzige Codezeile. Bei deren Absicherung scheitern die meisten EAs: ein Stop, der innerhalb der Stop-Grenze des Brokers verschoben wurde, eine Änderung, die gesendet wurde, während die Position gesperrt war, ein Teilschluss, der einen Rest unterhalb des Mindestlots hinterlässt, eine Trailing-Schleife, die die Trades eines anderen EAs erfasst, weil sie nur das Symbol überprüft hat. Jedes dieser Probleme führt zu einer abgelehnten Anfrage im Journal, einer fehlgeschlagenen Marktvalidierung oder – schlimmer noch – zu einer Situation auf einem Live-Konto, in der zwei Roboter um dieselben Positionen kämpfen. TradeShield schiebt einen Schutzschild zwischen Ihre Logik und den Handelsserver: Jede Anfrage wird normalisiert, anhand der symbolspezifischen Limits überprüft und erst dann gesendet – mit Wiederholungsversuchen, wo dies sinnvoll ist.
Magische Isolierung, in jeden Aufruf integriert
Jede Basket-Funktion nimmt das Symbol und die Magic-Nummer als Parameter entgegen und liest oder verändert nur Positionen, die beiden Kriterien entsprechen. Führen Sie denselben EA auf EURUSD und XAUUSD mit unterschiedlichen Magic-Nummern aus oder drei verschiedene Roboter auf einem Symbol, und jeder verwaltet streng seine eigenen Trades. Es gibt keinen gemeinsamen Status, keine globalen Variablen und keine Dateien, sodass nichts zwischen den Charts durchgesickert wird.
Was ist enthalten – 26 Funktionen in sechs Gruppen
1. Sicherheit und Verwaltung. TS_Version gibt die Bibliotheksversion für Ihre Protokolle zurück. TS_LastError gibt ein in Klartext formuliertes Ergebnis des letzten Aufrufs zurück – „OK“, „Kauf-SL innerhalb des Stop-Levels“, „Restbetrag würde unter dem Minimum liegen“, „Schließen fehlgeschlagen, Retcode …“ – bereit für die Ausgabe über „Drucken“ oder eine Statuszeile im Chart. TS_TradeAllowed prüft in einem einzigen Aufruf die Verbindung, die AutoTrading-Schaltfläche des Terminals, die Berechtigung des Programms, das Expert-Trading-Flag des Kontos und den Handelsmodus des Symbols; jede Handelsfunktion führt diese Funktion zuerst aus, sodass nichts gesendet wird, wenn der Handel nicht erlaubt ist.
2. Normalisierung. TS_NormalizePrice rundet jeden Kurs auf die Tick-Größe des Symbols (nicht nur auf die Stellenanzahl, was bei Indizes und Metallen von Bedeutung ist). TS_NormalizeVolume rundet ein Volumen auf die nächste Volumensprungstufe ab, begrenzt es auf das Maximum und gibt 0 zurück, wenn es unter dem Minimum liegt, sodass niemals ein ungültiges Lot gesendet wird.
3. Auslesen des Portfolios. TS_CountPositions, TS_BasketVolume und TS_BasketProfit (Gewinn plus Swap) funktionieren für alle Positionen, sei es nur für Kauf- oder nur für Verkaufspositionen. TS_AveragePrice liefert den volumengewichteten Einstiegskurs einer Seite. TS_BreakevenPrice gibt den Kurs an, bei dem der Basket dieser Seite, einschließlich Swap, genau ausgeglichen ist – das Niveau, das ein Grid- oder Averaging-EA wirklich benötigt. TS_LockedProfit gibt an, welchen garantierten Ertrag der Basket liefert, wenn jeder Stop-Loss erreicht wird, und TS_CountProtected, wie viele Positionen bereits einen Stop auf oder über dem Einstiegspreis haben.
4. Broker-Limits. TS_StopsLevelPoints und TS_FreezeLevelPoints stellen SYMBOL_TRADE_STOPS_LEVEL und SYMBOL_TRADE_FREEZE_LEVEL bereit. TS_StopsLevelOK gibt an, ob ein vorgeschlagener SL und TP für einen Kauf oder Verkauf weit genug vom aktuellen Schlusskurs entfernt sind. TS_FreezeLevelOK gibt an, ob eine Position derzeit geändert oder geschlossen werden kann oder ob ihr aktueller Stop oder ihr Ziel innerhalb der Freeze-Zone liegt.
5. Stop-Management. TS_ModifySLTP ist die sichere Hülle, auf der der Rest der Bibliothek aufbaut: Sie normalisiert beide Kurse, gibt „Erfolg“ zurück, ohne etwas zu senden, wenn sich nichts ändern würde (keine „Keine Änderungen“-Fehler mehr), validiert die Stop- und Freeze-Levels, sendet die Anfrage und versucht es erneut bei Requotes, Kursänderungen, Timeouts und ausgelasteten Servern. TS_MoveToBreakeven verschiebt den Stop auf den Einstiegskurs plus einen Lock Ihrer Wahl, sobald ein Auslöseabstand erreicht ist, und verschiebt einen Stop niemals rückwärts. TS_TrailFixed folgt in einem festen Abstand in Punkten, beginnend nach Erreichen einer Gewinnschwelle und bewegt sich nur in von Ihnen definierten Schritten, sodass der Server nicht bei jedem Tick überlastet wird. TS_ATR gibt den ATR des zuletzt geschlossenen Balkens sicher zurück, und TS_TrailATR folgt einem Abstand, der dem ATR multipliziert mit einem Multiplikator entspricht, sodass der Stop mit der Volatilität „atmet“.
6. Schließen. TS_ClosePosition schließt ein Ticket mit dem vom Symbol unterstützten Ausführungsmodus. TS_PartialClose schließt einen prozentualen Anteil einer Position, abgerundet auf die Volumenschrittgröße, und bricht den Vorgang sauber ab, wenn der Teil oder der Rest unter das Mindestlot fallen würde. TS_CloseAll schließt alle Positionen eines Symbols und einer Magic-ID, optional nur auf einer Seite. TS_CloseBasketAtProfit und TS_CloseBasketAtLoss schließen den gesamten Basket, sobald dessen Ergebnis ein Gewinnziel oder ein Verlustlimit erreicht.
Der Demo-EA und sein Bedienfeld
Die Screenshots zeigen TradeShieldDemo, einen kleinen Expert Advisor, der in der Bibliothek enthalten ist. Er dient ausschließlich der Überwachung: Er eröffnet, ändert oder schließt niemals einen Trade. Er liest alle Daten über die Bibliothek ein und stellt sie in einer kompakten, goldfarbenen Karte auf schwarzem Hintergrund in der oberen linken Ecke dar, wobei die rechte Seite und die Kursskala frei bleiben. Zeilen: Positionen pro Seite, Volumen, Korbgewinn pro Seite und netto, Durchschnittspreise, Breakeven-Preise, die Breakeven-Regel mit der Anzahl der bereits abgesicherten Positionen, feste und ATR-Trailing-Abstände, die Stopps und Freeze-Levels des Brokers sowie eine neue „Shield Lock“-Zeile, die den durch Ihre aktuellen Stopps bereits gesicherten Gewinn anzeigt. Darunter markiert eine kurze Liste der offenen Positionen jede einzelne als „NO SL“, einen Stop-Preis oder „BE OK“. Die Karte passt ihren Text automatisch an und verkleinert sich, um auf jeden Bildschirm zu passen. Ihre Einstellungen: zu beobachtende „Magic Number“ (0 = manuelle Trades), Breakeven-Auslöser und Lock-in-Punkte, fester Trailing-Start und -Abstand, ATR-Zeitrahmen, Periode und Multiplikator, Anzahl der Positionszeilen sowie Panel-Ecke, Versätze und Schriftgröße.
So verwenden Sie sie
1. Kopieren Sie „TradeShieldLib.ex5“ in den Ordner „MQL5\Libraries“ Ihres Terminals.
2. Fügen Sie in Ihrem EA einen #import „TradeShieldLib.ex5“ ... #import-Block mit den von Ihnen benötigten Funktionen ein (Signaturen siehe unten).
3. Rufen Sie diese aus OnTick oder OnTimer auf, immer mit Ihrem eigenen Symbol und Ihrer eigenen Magic-Nummer, zum Beispiel:
TS_MoveToBreakeven(_Symbol, Magic, 150, 10);
TS_TrailATR(_Symbol, Magic, PERIOD_H1, 14, 2.0);
if(TS_CloseBasketAtProfit(_Symbol, Magic, -1, 50.0) > 0) Print("Korb realisiert");
if(!TS_ModifySLTP(ticket, sl, tp, 3)) Print(TS_LastError());
4. Kompilieren. Keine DLL, kein Dateizugriff, keine zusätzlichen Ressourcen – und es funktioniert bei Hedging- und Netting-Konten, jedem Symbol und jeder Kontowährung.
Funktionssignaturen
Seite: -1 = alle, 0 = Käufe, 1 = Verkäufe.
string TS_Version()
string TS_LastError()
bool TS_TradeAllowed(string symbol)
double TS_NormalizePrice(string symbol, double price)
double TS_NormalizeVolume(string symbol, double lots)
int TS_CountPositions(string symbol, long magic, int side)
double TS_BasketProfit(string symbol, long magic, int side)
double TS_BasketVolume(string symbol, long magic, int side)
double TS_AveragePrice(string symbol, long magic, int side)
double TS_BreakevenPrice(string symbol, long magic, int side)
double TS_LockedProfit(string symbol, long magic, int side)
int TS_CountProtected(string symbol, long magic, int side)
int TS_StopsLevelPoints(string symbol)
int TS_FreezeLevelPoints(string symbol)
bool TS_StopsLevelOK(string symbol, bool isBuy, double sl, double tp)
bool TS_FreezeLevelOK(ulong ticket)
bool TS_ModifySLTP(ulong ticket, double sl, double tp, int retries)
bool TS_ClosePosition(ulong ticket)
bool TS_PartialClose(ulong ticket, double percent)
int TS_CloseAll(string symbol, long magic, int side)
int TS_CloseBasketAtProfit(string symbol, long magic, int side, double targetMoney)
int TS_CloseBasketAtLoss(string symbol, long magic, int side, double maxLossMoney)
int TS_MoveToBreakeven(string symbol, long magic, int triggerPts, int lockPts)
int TS_TrailFixed(string symbol, long magic, int startPts, int distPts, int stepPts)
double TS_ATR(string symbol, ENUM_TIMEFRAMES tf, int period)
int TS_TrailATR(string symbol, long magic, ENUM_TIMEFRAMES tf, int period, double mult)
Hinweise zu den Parametern
magic – die genaue magische Zahl der zu verwaltenden Positionen (0 für manuelle Trades). triggerPts / lockPts – Gewinn in Punkten, bei dem der Breakeven aktiviert wird, und die Gewinnpunkte, bei denen der Stop dann fixiert wird. startPts / distPts / stepPts – erforderlicher Gewinn vor Beginn des Trailing, Abstand zum Kurs und die minimale Kursbewegung, bevor der Stop aktualisiert wird. mult – ATR-Multiplikator. percent – Anteil der zu schließenden Position (100 = alles). targetMoney / maxLossMoney – Gewinnziel und Verlustlimit für den Basket in Kontowährung, beides positive Zahlen; 0 deaktiviert beide. retries – wie oft eine Änderung nach einem Requote oder Timeout erneut gesendet wird.
Realistische Erwartungen
TradeShield entscheidet nicht, wann ein Markteinstieg oder -ausstieg erfolgt – das bleibt Aufgabe Ihrer Strategie. Stattdessen stellt es sicher, dass die von Ihrer Strategie angeforderten Schutz- und Schlussmaßnahmen korrekt berechnet werden, die Limits Ihres Brokers einhalten und innerhalb Ihrer eigenen „Magic Number“ bleiben. Testen Sie es im Strategietester mit dem Demo-EA und Ihrem eigenen EA anhand der Daten Ihres Brokers, bevor Sie live handeln.
Wenn TradeShield Ihnen Entwicklungszeit spart oder Ihren EA vor Validierungsproblemen bewahrt, würde uns eine ehrliche Bewertung auf dieser Seite sehr viel bedeuten – sie ist der nützlichste Weg, anderen Entwicklern mitzuteilen, ob es sich lohnt, diese Bibliothek in ihren Werkzeugkasten aufzunehmen.
