Optimierung
<< Click to Display Table of Contents >> Optimierung |
Sie können die Eingabeparameter einer Strategie durch Optimierung verfeinern. Optimierung ist der Prozess des Testens einer Reihe von Werten durch iterative Backtests, um die optimalen Eingabewerte über den historischen Testzeitraum basierend auf Ihrer Optimierungsfähigkeit zu bestimmen. Um eine Optimierung durchzuführen, benötigen Sie:
•Zugriff auf historische Daten
•Benutzerdefiniertes NinjaScript *Strategie
•Ein gründliches Verständnis der Backtesting-Fähigkeiten der Handelssystemanalyse
Hinweis: Es gibt mehrere vordefinierte Beispielstrategien, die mit NinjaTrader installiert sind und die Sie ausprobieren können. |
Wie man eine Optimierung durchführt
Durchführen einer OptimierungUm eine Optimierung durchzuführen, wählen Sie im Einstellungsfenster der Handelssystemanalyse den Backtesttyp "Optimierung".
Einstellen des TestbereichsSie können den Testbereich der zu testenden Strategieparameter durch Linksklick auf das Dreieck erweitern, um die Unterparameter der Strategien zu erweitern.
Hinweis: Wenn Sie das Dreieck nicht sehen, stellen Sie sicher, dass der Backtesttyp auf "Optimierung" eingestellt ist.
Min. - Der Startwert, den Sie testen möchten
Im obigen Bild hat der Input "Fast" einen Anfangswert von 10 und einen Endwert von 30 mit einer Schrittweite von 1. Das bedeutet, dass der erste getestete Wert 10, dann 11, dann 12 bis 30 ist. Der Input "Slow" hat einen Startwert von 6, einen Endwert von 16 und eine Schrittweite von 1. Basierend auf diesen Einstellungen werden insgesamt 200 (20 eindeutige Werte für "Fast" multipliziert mit 10 einzigartigen Werten für "Slow") Backtestiterationen verarbeitet, um die optimale Kombination von Eingabewerten basierend auf der besten Optimierungsfitness zu finden.
Einstellen der Optimierungs-FitnessDie Optimierung basiert auf der besten Optimierungseignung, die Sie auswählen. Wenn Sie die Eigenschaft "Optimieren auf..." auf "Max. Nettogewinn" setzen, sucht die Optimierung nach den optimalen Eingabewerten, die den maximal möglichen Gewinn liefern. Es gibt über 10 verschiedene Optimierungskriterien, die Sie auswählen können und die über NinjaScript angepasst werden können. Weitere Informationen finden Sie im Abschnitt "Optimierungseigenschaften verstehen" weiter unten. |
Verständnis der Optimierungseigenschaften
OptimierungseigenschaftenAbgesehen von den nachfolgend beschriebenen optimierungsspezifischen Eigenschaften sind die Eigenschaften identisch mit denen im Fenster Backtest Eigenschaften. Weitere Informationen finden Sie im Abschnitt "Verständnis der Backtest-Eigenschaften" auf der Seite Eine Strategie backtesten im Hilfeleitfaden.
Die folgenden optimierungsspezifischen Eigenschaften sind verfügbar:
|
Verständnis der Optimierungsergebnisse
Verständnis der OptimierungsergebnisseSobald der Optimierungsprozess abgeschlossen ist, wird auf der Registerkarte Analyse ein Raster der Optimierungsergebnisse angezeigt. Die Ergebnisse werden pro Instrument gruppiert und zeigen die Parameterkombination, die die höchste Leistungsfähigkeit erreicht hat. Die Spalte " Performance " ist dynamisch und wird immer die Optimierungs-Fitness sein, die Sie beim Ausführen der Optimierung für den Parameter " Optimieren " ausgewählt haben.
Die besten OptimierungsergebnisseDie Registerkarte Optimierer zeigt die höchste Anzahl von Ergebnissen basierend auf dem Wert, den Sie für die Eigenschaft "Keep best # results" im Optimiererdialogfenster eingestellt haben. In der Spalte Parameter werden die optimierten Eingabewerte angezeigt.
1.Der optimale Wert für die "Schnelle" Eingabe für die für diese Optimierung verwendete Demonstrationsstrategie. 2.Der optimale Wert für die Eingabe "Slow" für die Demo-Strategie, die für diese Optimierung verwendet wird. |
Durchführung eines Basket-Tests
Basket-TestDie Durchführung einer Optimierung über eine Liste von Instrumenten hinweg funktioniert sehr ähnlich wie die Durchführung eines normalen Basket-Backtestes. Allgemeine Informationen finden Sie auf der Seite Basket-Test mehrerer Instrumente. Wenn eine Optimierung jedoch über mehrere Instrumente hinweg durchgeführt wird, steht eine optionale Option "Aggregiert" zur Verfügung.
|
Faktoren verstehen, die die Optimierungsleistung beeinflussen
32 Bit vs. 64 BitWenn Sie eine Optimierung in der 32-Bit-Version von NinjaTrader durchführen, um weniger Speicherplatz zu verbrauchen, speichern wir keine Handelsdaten für jeden durchgeführten Backtest. Wenn Sie also eine Handelsanalyse für eines der Backtestergebnisse durchführen möchten, die von einer Optimierung zurückgegeben wurden, mussNinjaTrader den Backtest erneut ausführen, um die Handelsdaten zu erhalten, was eine kleine Verzögerung beim Wechsel zwischen den Tests mit sich bringt. Die 64-Bit-Version von NinjaTrader nutzt den zusätzlichen RAM, der NinjaTrader zur Verfügung steht, und speichert die Handelsergebnisse für jeden gehaltenen Backtest, so dass Sie schnell zwischen den Backtest-Ergebnisberichten wechseln können.
Die besten # Ergebnisse behalten Wenn Sie feststellen, dass Sie während Ihrer Backtests wenig Systemspeicher haben, reduzieren Sie diese Anzahl der zu haltenden Ergebnisse, um eine signifikante Verbesserung des von NinjaTrader verwendeten Speichers zu erzielen.
Mehrere Tests gleichzeitig durchführenSie werden in einem kleineren Zeitrahmen nicht mehr erreichen, indem Sie mehrere Tests manuell trennen und gleichzeitig auf dem gleichen PC ausführen. NinjaTrader wird alle CPU-Kerne für jede Optimierung effizient nutzen, um schnellstmögliche Tests durchzuführen.
CPU-RessourcenBitte stellen Sie sicher, dass Sie über so viele Systemressourcen wie möglich für die Optimierung verfügen, das bedeutet in der Regel, dass alle anderen Anwendungen geschlossen sind. Da das Optimierungs-Engine von NinjaTrader dahingehend optimiert ist, um so viele Systemressourcen wie möglich zu nutzen, ist es außerdem ratsam, keine Optimierung in einer Zeit auszulösen, in der Sie den PC verwenden müssten. Beispielsweise ist es nicht ratsam, eine Optimierung zu starten, während Sie den Exit eines Trades verwalten.
Historische HandelsdatenDie Eigenschaft IncludeTradeHistoryInBacktest wird standardmäßig auf false gesetzt, wenn eine Strategie im Handelssystemanalyse zur Optimierung angewendet wird. Dies sorgt für eine schlankere Speichernutzung, jedoch auf Kosten der Möglichkeit, nicht auf Handelsobjekte für historische Trades zugreifen zu können. So haben Felder wie SystemPerformance.AllTrades.Count, die auf Referenzen auf Trade-Objekte angewiesen sind, keine solchen Referenzen, mit denen sie arbeiten können. Wenn Sie diese Objekte zur Referenz in Ihrem Code speichern möchten, können Sie Include TradeHistoryInBacktest im Zustand Konfigurieren auf true setzen, was jedoch zu einem höheren Speicherverbrauch führen kann. Weitere Informationen finden Sie auf der Seite Arbeiten mit historischen Handelsdaten.
Effiziente Optimierungen durchführenVon Strategieoptimierungen wird erwartet, dass sie eine Menge CPU-Ressourcen verbrauchen, allein schon aufgrund der Art der iterativen Datenverarbeitung, die sie durchführen. Strategien mit einer relativ großen Anzahl von Parametern für die Optimierung können diese Auswirkungen vervielfachen. Wenn Sie mit Strategien mit einer großen Anzahl von Parametern arbeiten, vermeiden Sie die Verwendung von "1" als Inkrementwert für den Optimierer, um zu vermeiden, dass der Optimierungsalgorithmus gezwungen wird, die maximale Anzahl von Permutationen auszuführen. Das Ändern des Inkrementwertes auf bis zu "2" kann die Anzahl der Permutationen halbieren, und das Erhöhen dieses Wertes kann nach und nach weniger Auswirkungen haben.
Der genetische Algorithmus kann eine alternative Lösung zur Erhöhung der Parameterinkrementwerte bieten. Anstatt Brute-Force-Tests durchzuführen, indem er über alle Permutationen iteriert, ignoriert der Genetische Algorithmus bewusst Parameterkombinationen, die wahrscheinlich suboptimale Ergebnisse liefern.
Insbesondere bei größeren Parametersätzen mit feineren Inkrementwerten könnten für beide Optimierungsansätze die Obergrenzen möglicher Permutationen / Parameterkombinationen erreicht werden - die Fehlermeldung "Die Strategie benötigt mindestens einen Parameter zur Optimierung" wäre dann ein Hinweis auf eine Überarbeitung der Anzahl der Parameter oder eine Erhöhung der Inkrementwerte, um eine sinnvollere Permutationszahl zu erreichen.
Verwendung eines virtuellen / Cloud-ServersWenn Sie einen virtuellen oder Cloud-Server als Grundlage für Ihr Setup beim Ausführen von Optimierungstests im Strategy Analyzer verwenden, denken Sie bitte daran, dass solche Umgebungen typischerweise bei Bedarf verfügbare Ressourcen zuweisen können. NinjaTrader wird weiterhin alle verfügbaren Threads für seine Verarbeitung nutzen, jedoch werden die verfügbaren Ressourcen beim Start der NinjaTrader-Plattform ermittelt. Wenn sich also Ihre virtuellen Ressourcen während einer Arbeitssitzung geändert hätten, starten Sie bitte neu, um sicherzustellen, dass die Leistung optimal ist. |