Wednesday, February 22, 2017

Trading System Optimierung

Optimierung der Trading-Algorithmus: Walk forward Optimierung Hey there, Protraders Im vorherigen Artikel haben wir ausführlich die Optimierer-Setup in der Protrader-Plattform. Im aktuellen Artikel werden wir die Verifizierungsmethode der Trading-System-Optimierungsparameter zur Nachhaltigkeit einführen. Warum ist es so wichtig Praxis zeigt, die Verwendung von verschiedenen Optimierungsalgorithmen nicht garantieren die Nachhaltigkeit der empfangenen optimalen Handelssystem-Einstellungen. Nachhaltigkeit bezieht sich auf die Fähigkeit des Systems, seine statistischen Daten praktisch nicht zu verändern, während auf historische Daten geprüft wird, die nicht Teil der Optimierungsauswahl waren. Die Datenauswahl, auf der die Systemoptimierung beibehalten wurde, wird als In Sample-Abschnitt bezeichnet. Und die Daten, die nicht in der Optimierungsauswahl enthalten waren, werden als Out of Sample-Abschnitt bezeichnet. Oft werden die Sample-Daten nach dem Abschnitt "Sample" in der Zeitleiste angezeigt. Daher befindet sich der Out of Sample-Bereich in der Zukunft relativ zum Abschnitt In Sample. Daher wurde diese Art der Handelssysteme Tests Forward-Test genannt. Der Zweck dieser Testart ist es, die Nachhaltigkeit der während der Optimierung erhaltenen Handelssystemeinstellungen zu bestimmen. Mit dem Forward-Test können Sie die Systemeinstellungen ausschließen, die einfach unter das Verlaufsdiagramm passen, auf dem die Optimierung durchgeführt wurde. Auf der Out of Sample-Sektion, so fit Einstellungen schnell verlieren ihre Wirksamkeit oder sogar aufhören zu arbeiten. Die Systeme mit einer großen Anzahl der optimierten Parameter oder Freiheitsgrade sind am ehesten anpassungsfähig. Dies zeigt an, dass das System nicht die bestimmte Handelssituation tauscht, die in ihrer Logik gelegt wurde, sondern einfach unter den historischen Daten passt. Und da das Verhalten von Finanzinstrumenten ein hohes Maß an Volatilität hat, von der Verwendung von eingebauten Anlagen zu profitieren, ist praktisch unmöglich. Einsatzbereites Tool zur Lösung der Nachhaltigkeitsprobleme des Handelssystems Optimierte Einstellungen, die oben beschrieben wurden, werden im Protrader-Terminal implementiert. Dieses Tool wird als Walk forward-Optimierung bezeichnet. Mit diesem Tool kann ein Trader mit einer Operation die Optimierung der Handelssystemparameter und auch seinen Forward-Test halten. Um die Walk forward-Optimierung zu starten, gehen Sie zu AlgoStudio - gt Optimization und wählen in der Dropdown-Liste Walk forward aus. Nachdem Sie die Walk forward-Optimierung sowie den Optimierungsalgorithmus und seine Parameter ausgewählt haben, können Sie den Walk Forward konfigurieren. Zwei Parameter stehen dem Trader im Fenster "Walk forward" zur Verfügung. IS Zeitraum ist ein Abschnitt der historischen Daten, auf denen die Optimierung stattfinden wird (In Sample). OS Zeitraum ist ein Abschnitt der historischen Daten, auf denen die Forward-Test gehalten wird (Out of Sample). Somit wird die gesamte Optimierungsperiode, die in den Backtesting-Setup-Einstellungen gesetzt ist, logisch in IS-Perioden - und OS-Periodenabschnitte unterteilt. Die Optimierung der Handelssystemparameter erfolgt im IS-Periodenabschnitt und die Nachhaltigkeitsüberprüfung des optimierten Parametersatzes des Handelssystems auf dem OS-Periodenabschnitt. Im aktuellen Beispiel wird die Walk forward-Optimierung am Handelsinstrument EURUSD vom 01.01.2013 bis 01.01.2014 gehalten, wobei der Gesamtoptimierungszeitraum in die Abschnitte IS-Periode 30 Tage und OS-Periode 30 Tage geteilt wird. Nach dem Halten der Optimierung erhalten wir die Ergebnistabelle, die der Ergebnistabelle der gewöhnlichen Optimierung ähnlich ist. Aber es werden mehrere neue Indikatoren. Entschlüsselung der Bedeutung der neuen Indikatoren in der Optimierung Ergebnis-Tabelle: Typ ist die Art der Operation, die gehalten wird. Der Optimierungswert bedeutet, dass die Optimierung in diesem Zeitintervall gehalten wurde. Der Backtesting-Wert bedeutet, dass die Prüfung in diesem Zeitintervall gehalten wurde. Startzeit und Endzeit sind jeweils der Anfang und das Ende des ausgewählten Zeitraums. Robust ist der Nachhaltigkeitsindikator der ausgewählten Handelssystemeinstellungen, der in Prozent gemessen wird. Dieser Wert wird als Verhältnis des Optimierungszielfunktionswertes im Abschnitt Backtesting zu dem Optimierungszielfunktionswert im Abschnitt Optimierung, ausgedrückt in Prozent, berechnet. Beispiel: Während des Optimierungszeitraums zeigt der beste Satz der Handelssystemeinstellungen den Zielfunktionswert 10 die gleichen Systemeinstellungen zeigen den Zielfunktionswert 5 auf dem Testabschnitt an. Robust (510) 100 50. So können wir mit Hilfe des Robust-Indikators bestimmen, wie stabil die Optimierungsergebnisse sind, und die Verwendung der angepassten Trading-Systemeinstellungen zu vermeiden. Wie wir im vorliegenden Beispiel sehen können, zeigten alle Testabschnitte negative Werte des Robust-Indikators, was die extreme Instabilität der erhaltenen optimalen Sätze der Handelssystemeinstellungen anzeigt. Das Walk forward Optimierungsmodul kann nicht nur für eine einfache Nachhaltigkeitsprüfung der optimierten Handelssystemeinstellungen, sondern auch für die Auswahl der Handelssystemoptimalen Parameter über das Schiebefenster genutzt werden. Schließlich gibt es eine Klasse von Handelssystemen, die eine ständige Überwachung der optimalen Parameter erfordert, die für den dynamischen Wandel der gehandelten Finanzinstrumente sehr empfindlich sind. Die Längenauswahl der IS-Perioden - und OS-Periodenabschnitte hängt von den Besonderheiten des optimierten Handelssystems sowie von der Dynamik des verwendeten Finanzinstruments ab. So zeigt das Trendsystem während der Perioden mit geringer Volatilität und der Konsolidierung die Ergebnisse schlechter als während der hohen Volatilitäts - und Trendmärkte. In diesem Artikel haben wir Spur Vorwärts-Optimierung Modul, das in der Protrader-Terminal implementiert ist. Dieses Modul wird nicht nur helfen, den Trader schnell und einfach die Nachhaltigkeit der Handelssystem optimale Parameter zu überprüfen, sondern gibt auch eine Möglichkeit, die Optimierung einfach über das Schiebefenster zu halten. Dass bei der Verwendung einiger Arten von Handelssystemen erforderlich ist. Trading Systems Coding: Testing, Troubleshooting und Optimierung Nun, da Sie ein Handelssystem entworfen und codiert haben, ist es Zeit, um es zu testen, um sicherzustellen, dass Ihre Codierung frei von logischen und technischen Fehlern ist . Wir werden auch auf etwas bekannt als Optimierung - ein Merkmal in einigen Handelsprogramme, die Ihnen die Feinabstimmung Ihrer Handelsregeln, um die Bestände, die Sie auf den Handel planen können. Testen Ihres Handelssystems Die überwiegende Mehrheit der Handelsanwendungen, die Programmiersprachen unterstützen, unterstützen auch Testtools. Diese Werkzeuge sind in zwei Kategorien unterteilt: 1. Technische Technische Test-Tools suchen nach technischen Fehlern in Ihrem Code. Wenn Sie beispielsweise vergessen, ein Semikolon nach einer Anweisung hinzuzufügen, benachrichtigt Sie das technische Test-Tool, dass Ihre Anweisung ungültig ist. Der Standort des technischen Prüfprogramms hängt von der verwendeten Handelsanwendung ab. MetaTrader zeigt einen Fehler oder fehlerhafte Ergebnisse, wenn Sie versuchen, Ihren Code zu kompilieren, während Trading-Anwendungen wie Tradecision haben ein Code-Check-Dienstprogramm in der Schnittstelle, die Sie überprüfen Sie Ihren Code für Fehler, bevor Sie es. 2. Logische logische Testwerkzeuge suchen nach logischen Fehlern in Ihrem Code. Zum Beispiel, wenn Sie zufällig ein größeres als ein Zeichen statt eines weniger als Zeichen (das ist kein technischer Fehler) zu verwenden, wird ein logisches Test-Tool zeigen Ihnen, dass Ihre Ergebnisse nicht sinnvoll. Das beliebteste logische Testwerkzeug ist das Backtesting-Tool. Mit diesem Tool können Sie vergangene Daten übernehmen und Ihr Handelssystem auf diese Daten anwenden. Dies gibt Ihnen eine Vorstellung davon, ob Ihr Handelssystem rentabel ist 13 Welche Bedingungen erweisen sich als am rentabelsten 13 Wenn Fehler in Ihren Regeln auftreten können (Weitere Informationen finden Sie unter Backtesting: Interpretation der Vergangenheit.) Fehlerbehebung bei Ihrem Trading System Wie bei jeder anderen Art der Programmierung kann die Fehlersuche eine mühsame und schwierige Aufgabe sein. Das Finden von Fehlern in Ihrem Code erfordert eine systematische Sortierung durch Ihren Code, um syntaktische Fehler zu identifizieren, die, obwohl oft geringfügig, Ihr Programm zum Stillstand bringen können. Hier sind einige häufige Fehler zu suchen: Fehlende Semikolons nach Aussagen - Diese müssen nach jeder Anweisung sein. 13 Undefinierte Variablen - Denken Sie daran, dass Sie sie vor der Verwendung deklarieren müssen. 13 Rechtschreibfehler - Werden keine Namen oder Funktionen falsch geschrieben, gibt die Handelsanwendung einen Fehler zurück (siehe Beispiel unten). 13 Falsche Verwendung von () - Denken Sie daran, dass ein Wert einem anderen Wert zugewiesen wird, während die Mittel gleich sind. 13 Falsche Verwendung von integrierten Funktionen - Überprüfen Sie Ihre Handelsanwendungsdokumentation oder API (Application Programming Interface), um sicherzustellen, dass Sie die korrekte Syntax verwenden. Einige Handelsanwendungen enthalten eine Funktion, mit der Sie Ihren Code testen können, bevor Sie ihn verwenden oder kompilieren. Diese Funktion erlaubt Ihnen, zu sehen, was der Fehler ist und auf welcher Linie es gefunden werden kann. Nehmen Sie Tradecision zum Beispiel: Hier sehen wir, dass Tradecision die Position (Zeile und Spalte) des Fehlers, eine Beschreibung des Fehlers und die Art des Fehlers (in diesem Fall syntaktisch) gibt. Wenn wir den Ausdruck betrachten, können wir sehen, dass in Spalte 8 xrossBelow keine gültige Funktion ist. Wenn wir das x (welches in Spalte 8 ist) durch ein c ersetzt, dann haben wir gültigen Code. Wenn wir MetaTrader betrachten, können wir sehen, dass die Fehler kommen, wenn wir versuchen, das Programm zu kompilieren: Hier sehen wir, dass in der Beschreibung heißt es, die BuyNow-Variable wurde nicht definiert. Ein Doppelklick auf diese Fehlermeldung bringt uns zum spezifischen Ort des Fehlers im Code. Wie Sie sehen können, geben die meisten Handelsanwendungen Ihnen eine einfache Möglichkeit, technische Fehler zu lokalisieren und sie zu reparieren. Das Fixieren der Fehler beinhaltet einfach systematisch gehen durch jede Fehlermeldung und dann erneut kompilieren den Code andor Anwendung des Handelssystems, um Ihre Charts. Optimierung Ihres Handelssystems In einigen Handelsanwendungen können Sie die zu optimierenden Variablen auswählen. Mit Tradecision können Sie z. B. eine Variable leicht auswählen und sie durch Code ersetzen, der eine Optimierung versucht. Optimierung selbst ist einfach ein Prozess, der den optimalen Wert für ein bestimmtes Handelssystem-Element auf der Grundlage der bisherigen Ergebnisse und Leistung findet. Beachten Sie, dass Über-Optimierung Ergebnisse in Handelssysteme, die nicht in der Lage, die Marktbedingungen anzupassen, daher ist es wichtig, nur optimieren ein paar wichtige Variablen, nicht jede Variable Hier ist, was die Optimierung Feature sieht aus in Tradecision: Sie können sehen, dass wir deklariert Zwei neue Variablen und setzen sie gleich. Das bedeutet einfach, dass das Handelsprogramm dies durch die optimale Anzahl ersetzen wird. Als nächstes können Sie sehen, dass wir die neuen Variablen innerhalb unserer Handelsstrategie verwendet haben. Schließlich setzen wir einen Bereich für die Zahlen (so dass das Programm wird nicht in unendlich suchen). Einige andere Handelsprogramme haben Funktionen, die in einer ähnlichen Weise funktionieren, so dass Sie den numerischen Wert mit einem ersetzen und sagen, die Handels-Anwendung, um es zu optimieren. Fazit Inzwischen sollten Sie ein funktionierendes Handelssystem entwickelt haben, in dem Sie Vertrauen haben können. Im nächsten Teil dieser Serie werden Sie lernen, wie Sie Ihr Trading-System auf Diagramme anzuwenden und wie es zu handelnden Entscheidungen zu nutzen, um das Trading-System zu optimieren HINWEIS: Dies ist ziemlich fortgeschrittenes Thema. Bitte vorherige AFL Tutorials lesen. Die Idee hinter einer Optimierung ist einfach. Zuerst müssen Sie ein Handelssystem haben, kann dies eine einfache gleitende durchschnittliche Crossover zum Beispiel sein. In fast jedem System gibt es einige Parameter (als Mittelungsperiode), die entscheiden, wie sich das gegebene System verhält (d. h. ist gut geeignet für langfristige oder kurzfristige, wie reagiert auf hochvolatile Bestände usw.). Die Optimierung ist der Prozess der Suche nach optimalen Werten dieser Parameter (mit dem größten Gewinn aus dem System) für ein bestimmtes Symbol (oder ein Portfolio von Symbolen). AmiBroker ist eines der wenigen Programme, mit denen Sie Ihr System auf mehrere Symbole auf einmal optimieren können. Zur Optimierung Ihres Systems müssen Sie von einem bis zu zehn zu optimierenden Parametern definieren. Sie entscheiden, was ein minimaler und maximal zulässiger Wert des Parameters ist und in welchen Schritten dieser Wert aktualisiert werden soll. AmiBroker führt dann mehrere Backtests durch, wobei das System ALLE mögliche Kombinationen von Parameterwerten verwendet. Wenn dieser Vorgang beendet ist, zeigt AmiBroker die Ergebnisliste nach Nettogewinn an. Sie können die Werte der Optimierungsparameter sehen, die das beste Ergebnis liefern. AFL-Formel schreiben Optimierung im Backtester wird über die neue Funktion optimize unterstützt. Die Syntax dieser Funktion lautet wie folgt: Variable optimize (Variable), Variable - ist normale AFL-Variable, die den von der Optimierungsfunktion zurückgegebenen Wert zugewiesen bekommt. Bei normalen Backtesting-, Scan-, Explorations - und Comentary-Modi gibt die Funktion optimize die Standardeinstellung zurück, sodass der obige Funktionsaufruf gleichbedeutend ist mit: variable default Im Optimierungsmodus optimiert die Funktion sukzessive Werte von min bis max (inkl. Beschreibungquot ist ein String, der verwendet wird, um die Optimierungsvariable zu identifizieren, und wird als Spaltenname in der Optimierungsergebnisliste angezeigt. Voreinstellung ist ein Vorgabewert, der die Funktionswiederkehr in Explorations-, Indikator-, Kommentar-, Scan - und normalen Rücktestmodi optimiert. Min ist ein Minimalwert der Variablen, die optimiert wird. Max ist ein Maximalwert der Variablen, die optimiert wird Wert von min bis max AmiBroker unterstützt bis zu 64 Aufrufe zur Optimierung der Funktion (also bis zu 64 Optimierungsvariablen), beachten Sie, dass, wenn Sie erschöpfende Optimierung verwenden, dann ist es wirklich eine gute Idee, die Anzahl der Optimierungsvariablen auf nur wenige zu beschränken. Jeder Aufruf zu optimieren generieren (max - min) Schritt Optimierung Schleifen und mehrere Aufrufe zu optimieren multiplizieren die Anzahl der erforderlichen Läufe. Zum Beispiel erfordert die Optimierung von zwei Parametern in 10 Schritten 1010 100 Optimierungsschleifen. Call Optimize-Funktion nur ONCE pro Variable am Anfang der Formel, da jeder Aufruf erzeugt eine neue Optimierung Schleifen Multiple-Symbol-Optimierung wird voll unterstützt durch AmiBroker Maximale Suchraum ist 2 64 (10 19 10.000.000.000.000.000) Kombinationen 1. Single Variable Optimierung: sigavg Optimize (Signal Durchschnitt 9. 2. 20. 1) Kaufen Cross (MACD (12. 26), Signal (12. 26. sigavg)) Verkauf Cross (Signal (12. 26. sigavg), MACD (12. 26)) 2. Zwei-Variable Optimierung (geeignet für 3D-Charting) pro Optimize (pro 2. 2. 50. 1) Level Optimize (Stufe 2. 2. 150. 4) Kaufen Cross (CCI (per), - Level) Verkaufen (MACD Fast, 12. 12. 16. 1.) mslow Optimize (MACD-Slow. 26. 17. 30. 1) sigavg Optimieren (Signal (Mfast, mslow, sigavg)) Verkauf Kreuz (Signal (mfast, mslow, sigavg), MACD (mfast, mslow)) Nach dem Betreten Klicken Sie einfach auf die Schaltfläche "Optimieren" im Fenster "Automatisches Analyse-Fenster". AmiBroker wird alle möglichen Kombinationen von Optimierungsvariablen testen und die Ergebnisse in der Liste melden. Nach der Optimierung wird die Ergebnisliste nach dem Nettogewinn dargestellt. Da Sie die Ergebnisse nach jeder Spalte in der Ergebnisliste sortieren können, ist es einfach, die optimalen Parameterwerte für den niedrigsten Drawdown, die geringste Anzahl an Trades, den größten Gewinnfaktor, das niedrigste Marktrisiko und den höchsten risikoadjustierten Jahresertrag zu erhalten. Die letzten Spalten der Ergebnisliste zeigen die Werte der Optimierungsvariablen für den gegebenen Test an. Wenn Sie entscheiden, welche Kombination von Parametern Ihren Bedürfnissen am besten entspricht, sollten Sie die Standardwerte bei der Optimierung von Funktionsaufrufen durch die optimalen Werte ersetzen. Im aktuellen Schritt müssen Sie sie von Hand in das Formel-Edit-Fenster (der zweite Parameter für optimieren Funktionsaufruf) eingeben. 3D-animierte Optimierungsdiagramme anzeigen Um das 3D-Optimierungsdiagramm anzuzeigen, müssen Sie zuerst die Optimierung mit zwei Variablen durchführen. Zwei variable Optimierung braucht eine Formel mit 2 Optimize () - Funktionsaufrufen. Eine Beispiel-Zwei-Variablen-Optimierungsformel sieht wie folgt aus: pro Optimize (pro 2. 2. 50. 1) Level Optimize (Stufe 2. 2. 150. 4) Kaufen Cross (CCI (per), - Level) Verkauf Cross (Level, CCI (per)) Nachdem Sie die Formel eingegeben haben, müssen Sie auf die SchaltflächeOptimizequot klicken. Sobald die Optimierung abgeschlossen ist, klicken Sie auf den Dropdown-Pfeil auf die Schaltfläche Optimieren und wählen Sie 3D-Grafik anzeigen. In wenigen Sekunden erscheint eine bunte dreidimensionale Oberfläche in einem 3D-Diagramm-Viewer-Fenster. Ein Beispiel-3D-Diagramm, das anhand der obigen Formel erstellt wurde, ist unten gezeigt. Die 3D-Diagramme zeigen standardmäßig Werte des Nettogewinns mit Optimierungsvariablen an. Sie können jedoch 3D-Diagramm für jede Spalte in der Optimierung Ergebnis Tabelle. Klicken Sie einfach auf die Spaltenüberschrift, um sie zu sortieren (es wird ein blauer Pfeil angezeigt, der anzeigt, dass die Optimierungsergebnisse nach der ausgewählten Spalte sortiert sind) und dann erneut 3D-Optimierungsgraph auswählen. Indem Sie visualisieren, wie sich Ihre Systemparameter auf die Trading-Performance auswirken, können Sie leichter entscheiden, welche Parameterwerte quotfragilequot erzeugen und welche die Performance des Quotienten ersetzen. Robuste Einstellungen sind Regionen im 3D-Graphen, die allmähliche und nicht abrupte Änderungen in der Oberfläche zeigen. 3D-Optimierungsdiagramme sind ein hervorragendes Werkzeug, um Kurvenanpassungen zu vermeiden. Kurvenanpassung (oder Überoptimierung) tritt auf, wenn das System komplexer ist, als es sein muss, und all diese Komplexität konzentrierte sich auf Marktbedingungen, die nie wieder geschehen können. Radikale Änderungen (oder Spikes) in den 3D-Optimierungsdiagrammen zeigen deutlich über-Optimierungsbereiche. Sie sollten wählen, Parameter Region, die eine breite und breite Plateau auf 3D-Diagramm für Ihre realen Handel produziert. Parametersätze, die Gewinnspitzen erzeugen, funktionieren im realen Handel nicht zuverlässig. 3D-Diagramm-Viewer-Steuerelemente AmiBrokers 3D-Diagramm-Viewer bietet vollständige Betrachtungsmöglichkeiten mit voller Graph-Rotation und Animation. Jetzt können Sie Ihre Systemergebnisse aus jeder denkbaren Perspektive ansehen. Sie können die Position und andere Parameter des Diagramms mithilfe der Maus, der Symbolleiste und der Tastenkombinationen steuern, was auch immer Sie leichter finden. Nachstehend finden Sie die Liste. - zum Drehen - Halten Sie die linke Maustaste gedrückt und bewegen Sie sich in XY-Richtungen - zum Zoomen, Verkleinern - Halten Sie die RECHTS-Maustaste gedrückt und bewegen Sie sich in XY-Richtungen - verschieben (übersetzen) - Halten Sie die linke Maustaste und die STRG-Taste gedrückt Bewegen Sie sich in XY-Richtungen - an Animieren - halten Sie die linke Maustaste gedrückt, ziehen Sie schnell und lassen Sie den Knopf los, während Sie SPACE ziehen - animieren (automatisch drehen) LEFT PFEIL KEY - Links RECHTS PFEIL KEY - vertikal drehen. Rechts UP PFEILTASTE - rotieren horiz. Up DOWN PFEIL SCHLÜSSEL - drehen horiz. NUMPAD (NULL) NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD NUMPAD - - Wasserstand nach unten Intelligente (nicht erschöpfende) Optimierung AmiBroker bietet neben einer regelmäßigen, umfassenden Suche auch eine intelligente (nicht erschöpfende) Optimierung. Eine nicht erschöpfende Suche ist nützlich, wenn die Anzahl aller Parameterkombinationen des gegebenen Handelssystems einfach zu groß ist, um für eine erschöpfende Suche durchführbar zu sein. Ausgefeilte Suche ist vollkommen in Ordnung, solange es vernünftig ist, es zu benutzen. Nehmen wir an, Sie haben 2 Parameter, die jeweils von 1 bis 100 reichen (Schritt 1). Thats 10000 Kombinationen - perfekt OK für erschöpfende Suche. Jetzt mit 3 Parametern bekamen Sie 1 Million Kombinationen - es ist noch ok für eine erschöpfende Suche (kann aber lenghty sein). Mit 4 Parametern haben Sie 100 Millionen Kombinationen und mit 5 Parametern (1..100) haben Sie 10 Milliarden Kombinationen. In diesem Fall wäre es zu zeitaufwendig, um alle von ihnen zu überprüfen, und dies ist der Bereich, wo nicht erschöpfende Smart-Search-Methoden können das Problem lösen, das nicht in angemessener Zeit mit aufwendiger Suche lösbar ist. Hier ist absolut die SIMPLEST-Anleitung, wie man einen neuen, nicht erschöpfenden Optimierer (in diesem Fall CMA-ES) einsetzt. 1. Öffnen Sie Ihre Formel im Formel-Editor 2. Fügen Sie diese Zeile am oberen Rand Ihrer Formel hinzu: OptimizerSetEngine (quotcmaequot) Sie können auch quotspsoquot oder quottribquot hier verwenden 3. (Optional) Wählen Sie Ihr Optimierungsziel in Automatic Analysis, Settings, quotWalk - Forwardquot-Registerkarte, Optimierungszielfeld. Wenn Sie diesen Schritt überspringen, wird er für CARMDD optimieren (zusammengesetzte Jahresrendite dividiert durch maximalen Drawdown). Jetzt, wenn Sie die Optimierung mit dieser Formel ausführen, wird es neue evolutionäre (nicht erschöpfende) CMA-ES-Optimierer verwenden. Wie es funktioniert Die Optimierung ist der Prozess der Suche nach Minimum (oder Maximum) der gegebenen Funktion. Jedes Handelssystem kann als Funktion einer bestimmten Anzahl von Argumenten betrachtet werden. Die Eingaben sind Parameter und Zitatdaten. Die Ausgabe ist Ihr Optimierungsziel (zB CARMDD). Und Sie suchen maximal eine gegebene Funktion. Einige der intelligenten Optimierungsalgorithmen basieren auf der Natur (Tierverhalten) - PSO-Algorithmus oder biologischem Prozess - Genetische Algorithmen, und einige basieren auf mathematischen Konzepten, die vom Menschen abgeleitet werden - CMA-ES. Diese Algorithmen werden in vielen verschiedenen Bereichen, einschließlich Finanzen verwendet. Geben Sie quotSO financequot oder quotCMA-ES financequot bei Google ein und Sie werden viele Infos finden. Nicht erschöpfend (oder quotsmartquot) Methoden finden globales oder lokales Optimum. Das Ziel ist natürlich, globale zu finden, aber wenn es einen einzelnen scharfen Peak aus Zillionen-Parameter-Kombinationen, nicht-erschöpfende Methoden kann nicht zu finden, diese einzelnen Peak, sondern nehmen es Form Händler perspecive, die Suche nach einzelnen scharfen Peak ist nutzlos für Weil dieses Ergebnis instabil (zu zerbrechlich) und im realen Handel nicht replizierbar wäre. Im Optimierungsprozess suchen wir eher Plateaugebiete mit stabilen Parametern und das ist der Bereich, in dem intelligente Methoden leuchten. Was den durch nicht-erschöpfende Suche verwendete Algorithmus ansieht, sieht er wie folgt aus: a) Der Optimierer erzeugt eine (meist zufällige) Anfangspopulation von Parametersätzen b) Backtest wird von AmiBroker für jeden Parametersatz aus der Population durchgeführt c) die Ergebnisse von Backtests sind Ausgewertet nach der Logik des Algorithmus und neue Population wird basierend auf der Evolution der Ergebnisse generiert, d) falls neue am besten gefunden wird - speichern Sie sie und gehen Sie zu Schritt b), bis Haltekriterien erfüllt sind Maximale Iterationen b) Stopp, wenn der Bereich der besten objektiven Werte der letzten X-Generationen Null ist. C) Stopp, wenn das Hinzufügen von 0,1 Standardabweichungsvektoren in einer beliebigen Hauptachsenrichtung den Wert des objektiven Werts nicht verändert. Erschöpfende) Optimierer in AmiBroker müssen Sie die Optimierer-Engine, die Sie in der AFL-Formel verwenden möchten, mit der OptimizerSetEngine-Funktion angeben. Die Funktion wählt die durch den Namen definierte externe Optimierungs-Engine aus. AmiBroker wird derzeit mit 3 Engines ausgeliefert: Standard Particle Swarm Optimizer (Querspiele), Tribes (Quottribquot) und CMA-ES (quotcmaequot) - die Namen in geschweiften Klammern werden in OptimizerSetEngine-Aufrufe verwendet. Zusätzlich zur Auswahl von Optimierer-Engine können Sie einige seiner internen Parameter einstellen. Verwenden Sie dazu die Funktion OptimizerSetOption. OptimizerSetOption (quotnamequot, value) Funktion Die Funktion setzt zusätzliche Parameter für die externe Optimierungs-Engine. Die Parameter sind motorabhängig. Alle drei Optimierer, die mit AmiBroker (SPSO, Trib, CMAE) ausgeliefert werden, unterstützen zwei Parameter: quotRunsquot (Anzahl der Läufe) und quotMaxEvalquot (maximale Auswertungen (Tests) pro Einzellauf). Das Verhalten jedes Parameters ist motorabhängig, so dass gleiche Werte können und in der Regel liefern unterschiedliche Ergebnisse mit verschiedenen Motoren verwendet. Der Unterschied zwischen Runs und MaxEval ist wie folgt. Auswertung (oder Test) ist ein Einzel-Backtest (oder Auswertung des Zielfunktionswertes). RUN ist ein Volllauf des Algorithmus (optimaler Wert) - meist mit vielen Tests (Auswertungen). Jeder Lauf RESTARTS den gesamten Optimierungsprozess vom Neubeginn (neue anfängliche Zufallsbevölkerung). Daher kann jeder Lauf zu der Suche nach verschiedenen lokalen maxmin (wenn es nicht globale finden) führen. Der Parameter "Runs" definiert die Anzahl der folgenden Algorithmusläufe. MaxEval ist die maximale Anzahl von Auswertungen (Baktests) in einem einzigen Lauf. Wenn das Problem relativ einfach ist und 1000 Tests ausreichend sind, um globales Maximum zu finden, ist 5x1000 wahrscheinlicher, globales Maximum zu finden, da es weniger Chancen gibt, in lokalem Maximum zu stecken, da nachfolgende Durchläufe von unterschiedlicher anfänglicher Zufallspopulation beginnen Schwierig sein. Es hängt von Problemen im Test, seine Komplexität, etc., etc. Jede stochastische nicht erschöpfend Methode gibt Ihnen keine Garantie für die Suche nach globalen maxmin, unabhängig von der Anzahl der Tests, wenn es kleiner als erschöpfend ist. Die einfachste Antwort ist. Geben Sie als große Anzahl von Tests, wie es für Sie in Bezug auf die Zeit erforderlich ist, um abgeschlossen ist. Eine weitere einfache Beratung ist die Multiplikation von 10 die Anzahl der Tests mit dem Hinzufügen neuer Dimension. Das kann dazu führen, dass die Anzahl der erforderlichen Tests überschätzt wird, aber es ist ziemlich sicher. Ausgelieferte Motoren sind so konzipiert, dass sie einfach zu bedienen sind, so dass quotreasonablequot standardautomatic Werte verwendet werden, so Optimierung kann in der Regel ohne Angabe von etwas (Annahme von Vorgaben) ausgeführt werden. Es ist wichtig zu verstehen, dass alle intelligenten Optimierungsmethoden am besten in kontinuierlichen Parameterräumen und relativ reibungslosen Zielfunktionen funktionieren. Wenn der Parameterraum diskret ist, können evolutionäre Algorithmen Schwierigkeiten haben, einen optimalen Wert zu finden. Dies gilt insbesondere für binäre (onoff) Parameter - sie eignen sich nicht für jede Suchmethode, die den Gradienten der objektiven Funktionsänderung verwendet (wie die meisten intelligenten Methoden tun). Wenn Ihr Handelssystem viele binäre Parameter enthält, sollten Sie den Smart-Optimierer nicht direkt darauf verwenden. Stattdessen versuchen Sie, nur kontinuierliche Parameter mithilfe des intelligenten Optimierers zu optimieren und binäre Parameter manuell oder über ein externes Skript zu schalten. SPSO - Standard Particle Swarm Optimizer Der Standard Particle Swarm Optimizer basiert auf SPSO2007 Code, der gute Ergebnisse liefern soll, vorausgesetzt, dass korrekte Parameter (d. H. Runs, MaxEval) für ein spezielles Problem vorgesehen sind. Picking richtige Optionen für die PSO-Optimierer kann schwierig sein, die Ergebnisse können erheblich von Fall zu Fall variieren. SPSO. dll kommt mit vollständigen Quellcodes im quotADKquot Unterordner. Beispielcode für Standard-Particle Swarm-Optimierer: (Suche nach optimalen Wert in 1000 Tests im Suchraum von 10000 Kombinationen) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimize (quotsquot, 26, 1, 100, 1 ) fa Optimize (quotfquot, 12, 1, 100, 1) Kaufen Cross (MACD (fa, sl), 0) Verkaufen Kreuz (0, MACD (fa, sl)) TRIBES - Adaptive Parameter weniger Particle Swarm Optimizer Tribes ist adaptiv , Parameterlose Version von PSO (Particle Swarm Optimization) nicht erschöpfender Optimierer. Für wissenschaftlichen Hintergrund siehe: particlewarm. infoTribes2006Cooren. pdf In der Theorie sollte es besser als reguläre PSO, denn es kann automatisch die Schwarmgrößen und Algorithmus-Strategie auf das Problem zu lösen. Praxis zeigt, dass seine Leistung ist ziemlich ähnlich PSO. Das Tribes. DLL-Plugin implementiert die Variante "Tribes-Dquot" (d. H. Dimensionslose). Basiert auf clerc. maurice. free. frpsoTribesTRIBES-D. zip von Maurice Clerc. Original-Quellcodes mit Genehmigung des Autors verwendet Tribes. DLL kommt mit vollständigem Quellcode (innen quotADKquot Ordner) Unterstützte Parameter: quotMaxEvalquot - maximale Anzahl von Auswertungen (Backtests) pro Lauf (Standard 1000). Sie sollten die Anzahl der Auswertungen mit zunehmender Anzahl von Dimensionen erhöhen (Anzahl der Optimierungsparameter). Die Voreinstellung 1000 ist für 2 oder 3 Dimensionen gut. QuotRunsquot - Anzahl der Durchläufe (Neustarts). (Standard 5) Sie können die Anzahl der Durchläufe bei Standardwert von 5. Standardmäßig Anzahl der Durchläufe verlassen (oder neu gestartet) auf 5 gesetzt ist Tribes Optimierer verwenden zu können, müssen Sie nur eine Zeile Code hinzuzufügen: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 Bewertungen max CMA-ES - Kovarianz Matrix Anpassung Evolutionäre Strategie Optimierer CMA-ES (Covarianz Matrix Adaptation Evolutionary Strategy) ist ein fortgeschrittener, nicht erschöpfender Optimierer. Für wissenschaftliche Hintergrund zu sehen: bionik. tu-berlin. deusernikocmaesintro. html Nach wissenschaftlichen Benchmarks übertrifft neun andere, die meisten populären evolutionäre Strategien (wie PSO, Genetische und Differential Evolution). bionik. tu-berlin. deusernikocec2005.html Das CMAE. DLL Plugin implementiert quotGlobalquot Variante der Suche mit mehreren Neustarts mit zunehmender Populationsgröße CMAE. DLL kommt mit vollständigem Quellcode (innen quotADKquot Ordner) standardmäßig Anzahl der Durchläufe (oder neu gestartet) wird gesetzt Es wird empfohlen, die Standardanzahl der Neustarts zu verlassen. Sie können diese mit dem OptimizerSetOption (quotRunsquot, N) Aufruf variieren, wobei N im Bereich 1..10 liegen sollte. Die Angabe von mehr als 10 Läufen wird nicht empfohlen, obwohl möglich. Beachten Sie, dass jeder Lauf TWICE die Größe der Population des vorherigen Durchlaufs, so dass es exponentiell wächst. Daher mit 10 Läufen Sie am Ende mit Bevölkerung 210 größer (1024-mal) als der erste Lauf. Es gibt einen weiteren Parameter quotMaxEvalquot. Der Standardwert ist ZERO, dh das Plugin berechnet automatisch MaxEval. Es wird empfohlen, nicht zu definieren, MaxEval von sich selbst als Standard funktioniert gut. Der Algorithmus ist intelligent genug, um die Anzahl der erforderlichen Evaluierungen zu minimieren, und er konvergiert sehr schnell zum Lösungspunkt, so oft findet er Lösungen schneller als andere Strategien. Es ist normal, dass das Plugin einige Auswertungsschritte überspringt, wenn es feststellt, dass die Lösung gefunden wurde, daher sollten Sie nicht überrascht sein, dass sich die Optimierungsfortschrittsanzeige an einigen Stellen sehr schnell bewegen kann. Das Plugin hat auch die Fähigkeit, die Anzahl der Schritte über den ursprünglich geschätzten Wert zu erhöhen, wenn es benötigt wird, um die Lösung zu finden. Aufgrund seiner adaptiven Beschaffenheit ist die quittierte Zeit leftquot unddie Anzahl der durch den Fortschrittsdialog angezeigten Schrittequot nur im Zeitquot am besten und kann während des Optimierungskurses variieren. Um das CMA-ES-Optimierungsprogramm zu verwenden, müssen Sie Ihrem Code nur eine Zeile hinzufügen: Dadurch wird die Optimierung mit den Standardeinstellungen ausgeführt, die für die meisten Fälle in Ordnung sind. Es ist anzumerken, dass, wie es bei vielen Kontinente-Raum-Suchalgorithmen der Fall ist, dass abnehmender Quotstepquot-Parameter in Optimize () Funciton-Aufrufe nicht signifikant die Optimierungszeiten beeinflusst. Das einzige, was zählt ist das Problem quotdimensionquot, d. h. die Anzahl der verschiedenen Parameter (Anzahl der Optimierung Funktionsaufrufe). Die Anzahl von quotstepsquot pro Parameter kann eingestellt werden, ohne die Optimierungszeit zu beeinflussen. Verwenden Sie daher die feinste Auflösung. Theoretisch sollte der Algorithmus in der Lage sein, eine Lösung in höchstens 900 (N3) (N3) Backtests zu finden, wobei quotNquot die Dimension ist. In der Praxis konvergiert es eine LOT schneller. Beispielsweise kann die Lösung in 3 (N3) dimensionalen Parameterraum (z. B. 100100100 1 Million erschöpfende Schritte) in nur 500-900 CMA-ES-Schritten gefunden werden. Multi-Thread-Einzeloptimierung ab AmiBroker 5.70 zusätzlich zu Mehrfachsymbol-Multithreading. Können Sie eine Multi-Thread-Single-Symbol-Optimierung durchführen. To access this functionality, click on drop down arrow next to quotOptimizequot button in the New Analysis window and select quot Individual Optimize quot. quotIndividual Optimizequot will use all available processor cores to perform single-symbol optimization, making it much faster than regular optimization. In quotCurrent symbolquot mode it will perform optimization on one symbol. In quotAll symbolsquot and quotFilterquot modes it will process all symbols sequentially, i. e. first complete optimization for first symbol, then optimization on second symbol, etc. Limitations: 1. Custom backtester is NOT supported (yet) 2. Smart optimization engines are NOT supported - only EXHAUSTIVE optimization works. Eventually we may get rid of limitation (1) - when AmiBroker is changed so custom backtester does not use OLE anymore. But (2) is probably here to stay for long.


No comments:

Post a Comment