In den letzten Monaten wurden sowohl der Sharing Server als auch Strategy Quant X mit neuen Snippets aktualisiert, die es ermöglichen, die Robustheit von Strategien zu bewerten. Wir definieren "Robustheit" als die Fähigkeit von Strategien, ihre qualitativen Eigenschaften im Laufe der Zeit beizubehalten.
Wir haben drei neue Monte-Carlo-Tests und ein Money-Management-Snippet aufgenommen. Wir werden nun eine kurze Beschreibung der einzelnen Tests geben und erläutern, wie sie Ihnen dabei helfen können, die Equity-Kurve Ihrer Strategien erfolgreich zu erweitern und so den Weg eines algorithmischen Händlers erfolgreich zu beschreiten.
Wir haben die folgenden neuen Snippets hinzugefügt:
- Monte Carlo - Modifizierte Randomisierung der Strategieparameter
- Monte Carlo - SWAP eines ganzen Backtests randomisieren
- Monte Carlo - Zufälliger SWAP eines jeden Geschäfts
- Feste proportionale Positionsgrößen
- Neue benutzerdefinierte Blöcke, die auf der Logik "Ist steigend/ Ist fallend" basieren
In diesem Blog-Artikel werden diese Snippets und ihre Verwendung ausführlich erläutert.
Monte Carlo - Anpassbare Randomisierungsstrategie-Parameter
Es handelt sich um eine modifizierte Randomisierung der Strategieparameter Test. Für den Standardtest sind die Parameter, die nach dem Zufallsprinzip ermittelt werden, vorgegeben. Die Handelsoptionen werden in der Praxis nach dem Zufallsprinzip ausgewählt, die Verschiebungen hingegen nicht. Meiner Meinung nach hindert uns ein solches Setup daran, die Startstrategien so detailliert zu bewerten, wie es nötig wäre.

Sie können die Einstellung des Snippets im obigen Beispiel sehen.
Monte Carlo Modified Randomize Strategy parameters ist ein parametrisierbares Snippet, mit dem Sie die in Strategien verwendeten Parameter randomisieren können. Sie können angeben, was Sie randomisieren möchten.
- Zeiträume
- Schicht
- Konstanten
- Andere Parameter
- Beenden Verwendet
- Beenden Unbenutzt
- Boolesche
- Handelsoptionen
Dieser Test verbessert Ihre Fähigkeit, Strategien zu testen, erheblich. Mein typischer Arbeitsablauf umfasst mehrere Schritte zur Verwendung dieser Tests.
- Ich habe die Zeiträume der Indikatoren zufällig gewählt.
- Ich wähle den Ausstieg nach dem Zufallsprinzip - Stop Loss und Gewinnziele.
- Ich habe die Konstanten zufällig gewählt.
- ...
Die meisten Strategien enthalten einen Indikator mit einem Parameter des Typs Periode (z. B. hat der gleitende Durchschnitt eine Periode von 20), mit dem ich zunächst feststelle, ob die Strategie auf der Ebene der Periode nicht überoptimiert ist. Dann werden die Parameter eines Typs randomisiert: Exit Used (Stop Loss und Gewinnziele). Wenn Sie die Parameter des Typs Shift testen, verwenden Sie maximale Änderungswerte von 100 oder mehr. Eine maximale Veränderung von 100 oder mehr bedeutet, dass sich der Shift um 100% oder mehr (von 1 auf 2) nach unten oder oben bewegen kann.
Die Symmetrie der Parameter (dieselben Parameter gelten für Long- und Short-Trades) kann ebenfalls eingestellt werden. Standardmäßig ist dieser Parameter auf True gesetzt.
Monte Carlo Randomize SWAP eines ganzen Backtests
Ein SWAP ist die Zinsgebühr oder -gutschrift, die dem Konto eines Händlers gutgeschrieben wird, wenn er beim Devisen- oder CFD-Handel über Nacht eine Position hält. Diese Gebühr wird durch die Zinsdifferenz zwischen den beiden Währungen eines Devisenpaares oder die Kosten für die Aufrechterhaltung einer Position bei CFDs bestimmt. Sie kann entweder positiv (eine Gutschrift) oder negativ (eine Belastung) sein, abhängig von der Richtung des Handels und der Zinsdifferenz.
Wenn wir diesen Monte-Carlo-Test anwenden, enthält jeder Backtest Swap-Werte, die nach dem Zufallsprinzip innerhalb des Bereichs [-Range,Range] generiert werden. 500 Backtests (oder eine andere Anzahl) mit nach dem Zufallsprinzip generierten Swaps ermöglichen es Ihnen, eine Monte-Carlo-Analyse über die Veränderung der Swaps durchzuführen.

In diesem speziellen Beispiel haben wir 100 Simulationen mit zufälligen SWAPs für jeden Handel durchgeführt.
Dieser Parameter in dem Schnipsel unterliegt der Zufallsauswahl:
- Bereich: der Bereich, in dem der Swap ausgewählt wird.
Eine Zufallszahl im Bereich von -20 bis 20 wird erzeugt, wenn Bereich = 20 gewählt wird. Die zweite Zufallszahl wird negativ sein, wenn die erste positiv ist. Auf diese Weise wird sichergestellt, dass wir durchgängig sowohl positive als auch negative Streuungen angeben.
Die folgenden Parameter sind fest und unterliegen nicht der Randomisierung:
- Swap-Typ - Methode der Swap-Berechnung (Punkte, Geld, Prozentsätze)
- Tripple Swap Der Tag, an dem ein Tripple Swap durchgeführt wird
- Stunde, in der der Swap gezählt wird
Es ist möglich, jeden der zuvor genannten Parameter zu ändern.
Monte Carlo Randomize SWAP für jeden Handel

In diesem speziellen Beispiel haben wir 100 Simulationen mit zufälligem SWAP für jeden Handel durchgeführt.
Dieser Test unterscheidet sich vom vorhergehenden dadurch, dass er jeden Handel im aktuellen Backtest zufällig bestimmt. Der erste Trade kann einen positiven Long-Swap und einen negativen Short-Swap beinhalten, während die nachfolgenden Trades Swap-Kombinationen aufweisen können, die völlig unterschiedlich sind. Daher implementiert dieser Test einen zufälligen Swap für jeden Trade. Wenn die Anzahl der Monte-Varlo-Simulationen auf 500 gesetzt wird, gibt es 500 Backtests, von denen jeder einen einzigartigen Swap hat.
Die Leistung der Strategie bei sich ändernden Zinssätzen, die den Umfang der Swaps beeinflussen, sollte durch diese beiden Tests simuliert werden.
Feste proportionale Positionsgrößen.
Fixed Proportional Position Sizing ist ein Money Management Snippet, das es Ihnen ermöglicht, die feste Größe von Lot-Kontrakten mit einem bestimmten Anteil des Saldos zu verbinden. Dies ermöglicht eine effektivere Anpassung an die Zunahme oder Abnahme des Saldos während Backtests.

Das obige Beispiel veranschaulicht die steigende Equity/Balance-Kurve und die zunehmende Anzahl der bei jedem Handel gehandelten Lots.
Beispiel für Fixed Proportional Sizing in Futures
Die Strategie mit Fixed Money proportional sizing handelt einen Mikro-Nasdaq-Kontrakt pro 2000 Saldo. Wenn der Saldo 4000 beträgt, handelt die Strategie zwei Mikrokontrakte.
Beispiel für die feste Pro-Proportional-Bemessung im Devisenhandel
Ich habe ein Guthaben von 2000 und möchte alle 500 0,01 Lots handeln. In diesem Fall würde ich 0,04 Lots handeln und hätte zwischen $2000 und $2500 auf meinem Konto. Wenn mein Kontostand 2501 erreicht, werde ich mit 0,05 Lots handeln.
Paramater
- Bestellgröße pro pro Saldoanteil
- Proeil des Restbetrags
- Minimale Bestellgröße
Die Geldverwaltung ist für die Plattformen Metatrader 4, Metatrader 5, Tradestation und Multicharts implementiert.
Steigt/fällt Benutzerdefinierte Blöcke
Benutzerdefinierte Blöcke sind für die Optimierung der Flexibilität von algorithmischen Handelsstrategien in StrategyQuant X unerlässlich. Sie ermöglichen es den Benutzern, ihre eigene Handelslogik und -regeln zusätzlich zu den Standardindikatoren oder -aktionen, die auf der Plattform verfügbar sind, zu erstellen.
Benutzerdefinierte Blöcke können verwendet werden, um einzigartige Bedingungen, Signale oder Indikatoren zu erzeugen, die für bestimmte Handelsstrategien geeignet sind. So ist es beispielsweise möglich, einen benutzerdefinierten Block einzurichten, der feststellt, ob der Relative-Stärke-Index (RSI) für eine bestimmte Anzahl von Balken über einem vorgegebenen Schwellenwert bleibt. Auf diese Weise können die Benutzer die Art und Weise regulieren, in der ihre Strategien im Laufe der Zeit auf bestimmte Marktbedingungen reagieren.
Erweiterte Logik, wie z. B. die Erkennung falscher Ausbrüche, aufeinanderfolgender Kursbewegungen oder benutzerdefinierter Bedingungen, die mehrere Vergleiche umfassen, kann ebenfalls in benutzerdefinierte Blöcke integriert werden. Diese Blöcke können im Algo-Assistenten konfiguriert oder direkt im Builder von StrategyQuant oder in der Strategievorlage verwendet werden.
Die benutzerdefinierte Blocklogik isRising/isFalling hat die Möglichkeit der Anpassung ermöglicht. Diese sind genauer parametrisiert als die Standardwerte -> Sie können die Dauer des Anstiegs oder Abfalls um mehr als 2 Takte einstellen/optimieren.

In diesem Beispiel können wir sehen, dass der benutzerdefinierte Block Is Rising BarRange von 2 - 24 Takten optimiert werden kann.
Insgesamt gibt es 54 neue benutzerdefinierte Blöcke.
Sie können alle Schnipsel in der Codebase herunterladen hier.
Das ist unglaublich, das Montecarlo im Detail wird immer gebraucht!!!