Tagesverlustlimit im Expert Advisor: vier Entscheidungen, die Prop-Firmen richtig verlangen
Ein Tagesverlustlimit klingt nach einer Zeile Code: "Wenn der heutige Verlust mehr als X % beträgt, aufhören." In der Praxis sind es vier Entscheidungen, und jede verändert, wann das Limit greift. Prop-Firmen haben sie unvermeidlich gemacht: Wer das Tageslimit einmal bricht, verliert das Konto, egal was die Strategie im Rest des Monats geleistet hat. So wird das Limit üblicherweise gezählt, hier scheitert eine einfache Umsetzung, und das ist der Code, den ich in meinem Expert Advisor verwende.
1. Was ist "heute"?
Der Tag des Handelsservers, nicht Ihres Computers: TimeCurrent() ist die Uhr, die MetaTrader überall zeigt. Prop-Firmen setzen das Limit um Mitternacht ihres Servers oder einer festen Zeitzone zurück - prüfen Sie, welche Ihre Firma verwendet; ist es nicht die Mitternacht des Servers, muss die Rücksetzstunde verschoben werden. Der Beginn des Servertages ist einfach:
datetime now = TimeCurrent(); datetime day = now - now % 86400; // 00:00 server time
2. Verlust gegenüber was?
Gegenüber dem Kontostand zu Tagesbeginn. Viele Prop-Firmen nehmen Kontostand oder Eigenkapital in diesem Moment, je nachdem, was höher ist - die strengere Wahl ist also die sichere: Gehen Sie mit 300 schwebendem Gewinn in die Nacht, gehört dieser Gewinn zur Basis, und ihn wieder abzugeben zählt als Verlust.
double base = MathMax(AccountInfoDouble(ACCOUNT_BALANCE), AccountInfoDouble(ACCOUNT_EQUITY));
3. Wie wird der Verlust gemessen?
Am Eigenkapital, nicht an geschlossenen Trades. Ein Limit, das nur geschlossene Trades betrachtet, lässt eine offene Position weit darüber hinauslaufen: Der Monitor der Prop-Firma sieht den schwebenden Verlust, Ihr Code nicht. Deshalb läuft die Prüfung bei jedem Tick:
if(AccountInfoDouble(ACCOUNT_EQUITY) <= base * (1.0 - limitPercent / 100.0)) stopped = true; // close the positions, open nothing until the next day
und zwar für das ganze Konto. Ein Limit pro Expert Advisor ist für die eigene Risikokontrolle in Ordnung, aber die Prop-Firma zählt alle Positionen zusammen. Laufen mehrere Kopien des Programms auf mehreren Charts, sieht jede dasselbe Kontoeigenkapital und jede schließt ihre eigenen Positionen.
4. Was übersteht einen Neustart?
Das ist der Punkt, an dem eine einfache Umsetzung immer scheitert. Die Basis steht in einer Variablen; das Terminal startet um 14:00 neu (ein Update, ein VPS-Neustart, geänderte Parameter); das Programm beginnt von vorn, nimmt den aktuellen Kontostand als "Tagesbeginn" - nach den Verlusten des Vormittags - und erlaubt ein weiteres volles Limit. Der Tageszustand muss außerhalb des Programms gespeichert werden. Globale Variablen des Terminals sind genau dafür da:
string key = StringFormat("DL_%I64d_%I64u_%s_", AccountInfoInteger(ACCOUNT_LOGIN), magic, _Symbol);
if(GlobalVariableCheck(key + "day") && (datetime)GlobalVariableGet(key + "day") == day)
{
base = GlobalVariableGet(key + "base"); // the real start of the day
stopped = GlobalVariableGet(key + "stop") != 0.0;
}
else
{
GlobalVariableSet(key + "day", (double)day); // a new day: remember it
GlobalVariableSet(key + "base", base);
GlobalVariableSet(key + "stop", 0.0);
} Das Terminal hält globale Variablen vier Wochen nach dem letzten Zugriff und schreibt sie auf die Festplatte; sie überstehen also einen Neustart, eine Neukompilierung und geänderte Parameter.
Kleine Details, die zählen
- Schließen und anhalten: Greift das Limit, schließen Sie die Positionen dieses Programms und lehnen bis zum nächsten Tag jedes neue Signal ab. Melden Sie es dort, wo der Nutzer hinschaut (eine Zeile im Chart-Panel, ein Alarm, eine Push-Benachrichtigung), nicht nur im Journal.
- Ein Schließen kann scheitern - der Markt ist geschlossen, der Preis hat sich bewegt, der Server ist ausgelastet. Wiederholen Sie es, aber nicht bei jedem Tick: einmal pro Sekunde, solange die Handelssitzung offen ist, genügt.
- Im Strategietester gehören die globalen Variablen dem Test-Agenten, und ein Test startet nicht mittendrin neu: Dort genügt der Zustand im Speicher.
- Wählen Sie den Prozentsatz unter dem Limit der Prop-Firma. Bei 1 % Risiko pro Trade sind 3 % Tageslimit drei ausgestoppte Trades; setzen Sie Ihr eigenes Limit auf 4 %, wenn das der Firma 5 % beträgt, denn der Preis kann über Ihren Stop hinaus springen.
Im Produkt
Seit Version 1.09 hat Indicator Signal Trader Kb genau das: "Daily loss limit" in den Parametern, standardmäßig aus, gezählt für das ganze Konto ab dem höheren Wert von Kontostand und Eigenkapital zu Beginn des Servertages, über Neustarts hinweg gespeichert, mit einer roten Zeile im Panel, wenn es greift. Im Strategietester hat es mit 0,5 % Limit und 1 % Risiko pro Trade auf GBPUSD 2022-2026 372-mal gegriffen, und am selben Tag wurde danach keine einzige Position mehr eröffnet - das Einzige, was ein Tageslimit garantieren muss.


