Friday, 3 November 2017

Fhb Fortgeschrittenes Handelssystem Für Amibroker (Afl)


Wie man das Handelssystem optimiert ANMERKUNG: Dieses ist ziemlich vorgerücktes 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 Langzeit - oder Kurzfristigkeit, 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 Werte der Parameter 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 werden) und dann erneut 3D-Optimierungsgraph auswählen. Indem Sie veranschaulichen, wie sich Ihre Systemparameter auf die Handelsleistung auswirken, können Sie leichter entscheiden, welche Parameterwerte quotfragilequot erzeugen und welche die Leistung 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 Tastaturbefehle steuern, was auch immer Sie leichter für Sie 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 - drehen vert. 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 - - 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 maximales 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 nicht finden können, diese einzelne Spitze zu finden, aber nehmen sie Form Händler perspecive, finden einzelne scharfe Spitze 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 neues am besten gefunden wird, speichern Sie es und gehen Sie zu Schritt b), bis die Stoppkriterien erfüllt sind. Beispiele für Stoppkriterien können sein: a) 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 genügen, um globales Maximum zu finden, ist 5x1000 wahrscheinlicher, globales Maximum zu finden, da es weniger Chancen gibt, in lokalem Maximum festzuhalten, 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. Beispiel-Code für Standard-Partikelschwarm-Optimierer: (Optimierung des optimalen Wertes in 1000 Tests im Suchraum von 10000 Kombinationen) OptimizerSetEngine (quotStrsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimize (quotsquot, 26, 1, 100, ) MACD (fa, sl), 0) Verkauf Cross (0, MACD (fa, sl)) TRIBES - Adaptive Parameter-weniger Partikel Swarm Optimizer Tribes ist anpassungsfähig , 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. Ursprüngliche Quellcodes, die mit Erlaubnis des Autors Tribes. DLL verwendet werden, werden mit vollem Quellcode (innerhalb des quadratischen Quellordners) unterstützt. 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). (Standardeinstellung 5) Sie können die Anzahl der Durchläufe auf Standardwert 5 belassen. Standardmäßig wird die Anzahl der Durchläufe (oder Neustarts) auf 5 gesetzt. Um das Tribes-Optimierungsprogramm zu verwenden, müssen Sie Ihrem Code nur eine Zeile hinzufü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 wissenschaftlichen Hintergrund siehe: bionik. tu-berlin. deusernikocmaesintro. html Nach wissenschaftlichen Benchmarks übertreffen neun weitere, populärste evolutionäre Strategien (wie PSO, genetische und differentielle Evolution). Bionik. tu-berlin. deusernikocec2005.html Das CMAE. DLL-Plugin implementiert quotGlobalquot-Variante der Suche mit mehreren Neustarts mit zunehmender Bevölkerungsgröße CMAE. DLL kommt mit vollem Quellcode (innerhalb des quadratischen Quellordners) In der Standardeinstellung wird die Anzahl der Läufe (oder Neustarts) eingestellt 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, deshalb 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, die Sie benötigen. 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. Um auf diese Funktionalität zuzugreifen, klicken Sie auf den Dropdown-Pfeil neben der SchaltflächeOptimizequot im Fenster Neue Analyse und wählen Sie die Option Individuell optimieren. "Individual Optimizequot wird alle verfügbaren Prozessorkerne verwenden, um eine Einzel-Symbol-Optimierung durchzuführen, so dass es viel schneller als normale Optimierung. Im momentanen Symbolquotmodus wird die Optimierung auf einem Symbol durchgeführt. In quotAll symbolsquot und quotFilterquot-Modi wird es alle Symbole sequentiell verarbeiten, dh zuerst vollständige Optimierung für erstes Symbol, dann Optimierung auf zweitem Symbol, etc. Einschränkungen: 1. Custom Backtester wird NICHT unterstützt (noch) 2. Smart Optimierungs-Engines werden NICHT unterstützt - Nur EXHAUSTIVE Optimierung funktioniert. Schließlich können wir Beschränkung (1) - wenn AmiBroker geändert wird, so benutzerdefinierte Backtester verwendet OLE nicht mehr. Aber (2) ist wahrscheinlich hier zu bleiben. WiseTrader Toolbox Neuronale Netze für Amibroker (AFL) Die WiseTrader Toolbox fügt erweiterte neuronale Netzwerk prädiktive Technologie auf die Amibroker-Plattform. Gekoppelt mit Amibrokers leistungsstarke Formel-Sprache können Sie jetzt schaffen intelligente Handelssysteme durch fortschrittliche neuronale Netze angetrieben. Die WiseTrader-Toolbox fügt der Amibroker-Plattform zwei verschiedene Arten von neuronalen Netzwerken hinzu: 1. Die traditionellen neuronalen Netze, die auf einer festen Anzahl von Balken trainiert werden. 2. Die adaptive Walk-Forward-Version, die jede neue Leiste umschreibt. Die WiseTrader Toolbox enthält außerdem zwei verschiedene Lernalgorithmen: Standard-Momentum-Back-Propagation und einen fortgeschrittenen adaptiven Quick-Propagation-Lernalgorithmus mit schneller Konvergenz. Die neuronalen Netze sind über einige einfache AFL-Funktions-Aufrufe zugänglich und kommen mit vollständiger Dokumentation, um Ihnen den Start. Mit der WiseTrader Toolbox können Sie leicht verlaufende Indikatoren zu glatten Frühindikatoren machen. Laden Sie das folgende Beispiel eines führenden RSI-Indikators herunter, das mit der Toolbox erstellt wurde, und probieren Sie es selbst aus: Adaptive Walk-Forward Neuronale Netze Die folgende AFL zeigt, wie die adaptiven neuronalen Netze verwendet werden können, um den Schlusskurs einer Aktie vorauszusagen. Man beachte, dass dies ein einfaches Beispiel ist, um nur zu zeigen, wie die adaptiven neuronalen Netze funktionieren. Eine bessere Vorhersage würde andere Marktindizes und vielleicht ökonomische Daten verwenden, um eine genauere Vorhersage zu erhalten. Verwenden Sie den adaptiven Lernalgorithmus SetLearningAlgorithm (1) Trainieren und berechnen Sie ein adaptives neuronales Netzwerk res NeuralNetworkIndicator9 (i1, i2, i3, i4, i5, i6, i7, i8, O1, FullName () 100. 1) Plot (res, DEFAULTNAME (), colorRed StyleLine) Berechnen Sie die Genauigkeit für die letzten 100 Balken Titel Genauigkeit: (Summe (IIf ((Ref. 1) gt C) (res gt Ref (res, - 1 )), 1. 0), 100)) Aufräumen von EnableProgress () RestoreDefaults () ClearNeuralNetworkInputs () Wenn die obige Formel mit dem Training beginnt, sollten Sie das folgende Fortschrittsdialogfeld sehen, um den Fortschritt der Berechnung anzuzeigen: Sie können beenden und fortsetzen Weil alle adaptiven neuronalen Netzwerk-Berechnungen im Plugins internen Speicher gespeichert sind und nur so viel berechnen, wie es benötigt wird, so dass es in Ihrem Echtzeit-Handel verwendet werden kann, da das neuronale Netzwerk nur trainieren und auf der letzten Bar vorhersagen wird. Allgemeine neuronale Netze Die anderen neuronalen Netzwerkfunktionen ermöglichen es Ihnen, ein neuronales Netzwerk zu trainieren und es in einer Datei zu speichern, um später zu laufen oder sogar AFL-Code direkt zu erzeugen. Die Fähigkeit, ein trainiertes neuronales Netzwerk in AFL-Code umzuwandeln, ist der erste seiner Art, der nirgendwo anders verfügbar ist. Die nächste Formel ist ein einfaches Beispiel für die Erstellung einer Trend-Erkennung Indikator mit neuronalen Netzwerken. Verwenden Sie alle verfügbaren Daten für das Training SetBarsRequired (99999. 99999) Setzen Sie den Samenwert des neuronalen Netzwerks Der gleiche Samenwert erzeugt jedes Mal das gleiche neuronale Netzwerk SetSeed (20) Verwenden Sie den adaptiven Lernalgorithmus SetLearningAlgorithm (1) Trainieren Sie das neuronale Netzwerk 2000 Iterationen SetMaximumEpochs (2000) Setzt die Anzahl der ausgeblendeten Layer im neuronalen Netzwerk SetNetworkLayer2 (20. 20) Trend-Erkennung (schaut in die Zukunft). Das wollen wir vorhersagen. Sie können einstellen, was Sie hier wünschen. Alles, was Sie sich vorstellen können, können Sie hier verwenden, weil das trainierte neuronale Netz nicht in die Zukunft schauen wird. Out1 Ref (Zig (C 10), - 1) lt Zig (C.10) Fügen Sie die Eingänge für das neuronale Netzwerk hinzu. Mit dieser Methode können Sie beliebig viele neuronale Netzwerkeingaben hinzufügen (i 5 i lt 20 i) AddNeuralNetworkInput (VariablePeriodRSI (C)) AddNeuralNetworkInput (VariablePeriodRSI (Ref (C - 1), i)) AddNeuralNetworkInput (VariablePeriodRSI (Ref (C - 2), i)) Die zuletzt eingegebene Eingabe ist unsere gewünschte Ausgabe oder der Trend AddNeuralNetworkInput (Out1) Löschen Sie das neuronale Netzwerk, wenn es bereits ein anderes fdelete gibt (WiseTraderToolboxNeuralNetworkTrendDetection) Beginne das neuronale Netzwerk TrainMultiInputNeuralNetwork (TrendDetection) Eingaben hinzufügen und Standardwerte wiederherstellen EnableProgress () RestoreDefaults () ClearNeuralNetworkInputs () Wenn Sie die obige Formel ausführen, sollten Sie ein Trainingsfortschrittsdialogfeld sehen. Wenn die obige Formel die Ausführung beendet, können Sie die erzeugte AFL-Version des Indikators verwenden, um das neuronale Netzwerk auszuführen oder einfach das neuronale Netzwerk aus der Datei auszuführen. Das nächste Beispiel wird das neuronale Netzwerk aus Datei ausführen, da die generierte Formel zu groß ist, um hier zu posten. Fügen Sie die neuronalen Netzeingaben für (i 5 i lt 20 i) hinzu AddNeuralNetworkInput (VariablePeriodRSI (C)) AddNeuralNetworkInput (VariablePeriodRSI (Ref (C - 1), i)) AddNeuralNetworkInput (VariablePeriodRSI (Ref (C - 2), I)) Führen Sie das neuronale Netzwerk aus Datei res RunMultiInputNeuralNetwork (TrendDetection) Zeichnen Sie das Ergebnis des neuronalen Netzwerks. Plot (res, DEFAULTNAME (), colorRed. StyleLine) Die obigen sind sehr einfache Beispiele, wie die neuronalen Netze verwendet werden können. Mit der Amibroker-Plattform und der WiseTrader Toolbox können fast alle anderen neuronalen Netzwerkplattformen getan werden und mehr. Zum Beispiel ist es einfach, das Optimierungsprogramm zu verwenden, um neuronale Netze zu wachsen und die bestmögliche Architektur zu finden. Sie können auch versuchen und erstellen Sie Null-Lag-Indikatoren, indem Sie sie nach vorne und versuchen, das Ergebnis vorherzusagen. Oktober 14, 2011 Hinzugefügt 29. Februar 2012, zusätzliche Punkte zu beachten: 1) Dieses System hängt davon ab, genaue Fills zum Open-Preis. Um solche Fills zu erhalten, bedarf es eines qualitativ minimal verzögerten Datenfeeds und fortgeschrittener Programmierkenntnisse zur Implementierung von Trade-Automation. 2) Bei der Einstellung der Eintrittspreis etwas unter dem Open-Preis (Versuch zur Verbesserung der Leistung) scheitert das System kläglich. Sogar die Verbesserung der Preis um nur einen Cent tötet das System. Dies deutet darauf hin, dass der Großteil des Gewinns von Tagen kommt, an denen der offene Preis gleich dem täglichen Tief war, d. h. der Preis zog von den offenen und nie darunter. Das ist natürlich klar. Um dies zu bestätigen, habe ich diese Testbedingung hinzugefügt (es schaut voraus), Tage auszuschließen, an denen Open Low: Buy Buy UND NICHT O L Dies tötet das System und beweist, dass der Großteil des Profits aus Tagen kommt, wo OL. Um dies weiter zu bestätigen, fügte ich die entgegengesetzte Bedingung hinzu: Buy Buy AND O L Dies gibt nahezu unendliche Gewinne und beweist, dass die meisten Gewinne aus Tagen kommen, an denen der Preis sich sofort von den Open verschiebt und niemals darunter zurückkehrt. Der Versuch, den Einstiegspreis zu verbessern, ist ein Fehler, den man auf einem Stop-Set 1-2 ct über dem offenen Preis eingeben sollte, dies beseitigt Tage, wenn der Preis sinkt und niemals zurückkehrt. Das verbessert die Leistung deutlich. 3) Dieses System handelt knee-jerk trader-responsespatterns. Solche Muster sind in der Regel ertrunken durch große Volumen Handel daher dieses System arbeitet viel besser, wenn Sie Ticker mit Volumes zwischen 500.000 und 5.000.000 Aktientag wählen. Dies verbessert auch die Leistung deutlich. Das Hinzufügen der obigen beiden Merkmale führt zu einer Eigenkapitalkurve, die viel besser ist als die nachstehend gezeigte. Tut mir leid, ich habe keine Zeit, das oben genauer zu dokumentieren. Viel Glück Dieser Beitrag skizziert eine sehr einfache Long-only Trading Idee, die bei einem bestimmten Prozentsatz unterhalb von gestern8217s Low kauft und beendet am nächsten day8217s Open. Während es manchmal schwierig sein kann, den genauen offenen Preis zu erhalten, ist die hohe Rentabilität dieses Systems ein guter Kandidat für weiteres Experimentieren. Das System funktioniert gut mit Watchlisten wie N100, SP500, SP1500, Russel 1000 usw. Leistung am Russel 1000, mit max. Offenen Positionen auf 1, für den Zeitraum 12102003 bis 12102011, sieht so aus: Einige der anderen Watchlists geben weniger Exposition (Profit), aber das kommt mit niedrigeren DDs. Provisionen wurden auf 0,005 je Aktie festgelegt. Kein Margin verwendet. Keine explizite Rangliste wird verwendet Tickers werden auf der Grundlage ihrer alphabetischen Sortierung in der Watchlist gehandelt. Dies mag seltsam erscheinen, ist aber bedeutsam: Umkehrung dieser Art das System fehlschlägt. Dies könnte bedeuten, dass aufgrund von Echtzeit-Abtastproblemen Symbole, die oben aufgeführt werden, anders als die unten aufgelisteten gehandelt werden können. Achten Sie auf Liquidität (Vielleicht möchten Sie mehr als eine Position handeln) und Schlupf (Eintritt ist eher risikofrei, aber Ausgänge können problematisch sein). DDs sind signifikant, können jedoch mit verbesserten, in Echtzeit gehandelten Einträgen und Exits kompensiert werden. Beim automatischen Handel kann es möglich sein, OCA DAY-LMT Aufträge für alle Signale zu platzieren und nur abwarten und sehen, was füllt. Da Exits schwieriger als Einträge sind, können Sie andere Exit-Strategien erkunden. Parameter-Standardwerte werden nur aus einem Hut ausgewählt. Fast sicher können Sie sie optimieren oder dynamisch anpassen für einzelne Ticker. Ich kurz getestet dieses System im Walk-Forward-Modus und die Ergebnisse waren für alle Jahre getestet profitabel. Abgesehen von der Anzahl der Aktien gehandelt Parameter erscheinen nicht sehr kritisch. Over-Optimierung doesn8217t scheint ein Problem in diesem Fall. Der unten stehende Code ist sehr einfach und erfordert nur wenige Erklärungen. Allerdings ist es wichtig zu verstehen, dass dieses System eine kleine Kante durch den Handel an der Open und durch die Berechnung der TrendMA mit dem gleichen Open-Preis genießt. Einige könnten dies als zukünftige Leck interpretieren, aber wenn Sie dieses System in Echtzeit handeln, ist es nicht. Viele Leute wissen nicht, dass, wenn Sie an der Open handeln, können Sie auch diesen Preis in Ihren Berechnungen 8212 verwenden, solange Sie sie in Echtzeit ausführen 8212 Dies ist, wo AmiBroker und Technologie Ihnen einen Vorteil geben kann. Wenn Sie Ref () zurück die TrendMA durch eine Bar das System ist immer noch sehr profitabel aber DDs erhöhen für einige Watchlists. Wenn Sie feste Investitionen verwenden, ist der Unterschied vernachlässigbar. Das Handelsverfahren würde sein, das Scannen zu beginnen, bevor der Markt öffnet und entfernen Sie Tickers, die so weit entfernt sind, dass es unwahrscheinlich ist, die OpenThresh zu treffen. So können Sie scannen 1000 Symbole, aber sehr schnell die Zahl gescannt wird auf nur ein Dutzend oder so tickers schwinden. Wenn Sie sich 9:30 Uhr Ihr Echtzeit-Scan wird sehr schnell und Sie werden in der Lage, Ihre LMT-Bestellung ganz in der Nähe der Open 8211 können Sie sogar in der Lage, auf dem Open-Preis zu verbessern. Even though a few people looked at the code below and found nothing wrong, the profits seem rather high for such a simple system. Please report errors you may see. Filed by Herman at 7:03 pm under Ideas (Experimental) Comments Off on EOD Gap-Trading Portfolio system September 1, 2011 This idea was posted ( 161332 ) on the main AmiBroker list on July 3, 2011. There were numerous excellent comments on the list and if you are interested in working on this system you do well to read them all before starting. After posting I found a number of posts on the web discussing this trading idea, some claimed to be trading a similar system with good success. I referred to this system a 8220Gap Trading8221 system but this may be a bit of a misnomer, 8220Mean reversion8221 might be a better classification. Googling for it will get you many more hits to similar systems. Here are a few links: It appears to be a fairly widely discussed trading idea and I suggest you8217ll do some Googling on your own to learn the latest. As an Amibroker user you have better tools than most traders and you have a better chance than most to come up with a variation that works. Perhaps with a little less profits, and with a significant amount of additional code 8212 it won8217t be a 8220quicky8221 project :-) Some people commented that this system will not work in real trading, while they may be right others say schemes like this work. I didn8217t finish the system and can8217t claim to know whether it is tradable or not. The system Buys at a certain percentage below yesterday8217s Low, on a LMT order, and exits in the same day at the Close. Filed by Herman at 6:53 pm under Ideas (Experimental) Comments Off on A Long-only EOD Gap trading idea I use a small setup criteria to scan for my stocks. MACD default, I look for Histogram 4 down bars and 1 up bar for buy signal(I have the histogram set to red for down and blue for up so I can see clearly). MACD above Zero Line RSI Above 30 This system is base on trend trading. Buying on pullback when the market continues its up trend. To scan for MACD Trend setups: 1) Insert the following formula into a chart. 2) Run a Scan in AA using SMACDTrend with All symbols . n last days . n 1 and Sync chart on select as the settings. Stocks that meet the criteria will be reported in the Results list. Note: Some variations of the setup rules can define signals that are quite rare and in small databases it is possible that there will be no setups on any given day (hence no stock will be reported by the scan). 3) Click on any symbol in the Results pane to view the chart, for that symbol, in the background. Note: In this example a training database, that only contains data up to 5112007, was used. Trading idea by protraderinc. Comments and formula by Bill 8211 WaveMechanic . Filed by brianz at 11:06 pm under Ideas (Experimental) Comments Off on MACD Trend System October 14, 2007 Filed by brianz at 10:43 pm under Ideas (Experimental) Comments Off on 15 Day Performers Trading System August 19, 2007 This is the first in a series off KISS (keep it simple, stupid) trading ideas for you to play with. All system ideas presented here are unproven, unfinished, and may contain errors. They are intended to show possible patterns for further exploration. As always, you are invited to make comments andor add your own ideas to this series. I prefer real-time systems that trade fast, are automated, and are devoid of traditional indicators. Preferably, they should have no optimizable parameters however, I may not always be able to meet this objective. Not all systems will be that simple there will be some that use simple averaging or HHVLLV type functions. The first system shown below is a copy of the demo system I use to develop Trade-Automation routines elsewhere on this site. Real-Time Gap-Trading . To see how this works, you should Backtest it on 1-minute data with a periodicity in the range of 5-60 minutes. Your first impression may be that these profits are simply due to an up market, however, the fact that Long and Short profits are about equal suggests there is more to it. Because 98 of all trades fall between 9:30 AM and 10:30 AM, this type of system is nice if you just want to trade a short time each day. This reduces risk with respect to market exposure and gives you more time to enjoy other activities. Backtesting this on the NASDAQ-100 watchlist (individual backtests, 15 min. Periodicity) gives the profits shown below for the period of 1 MAR 2007 to 17 AUG 2007. Ticker names are omitted to keep the chart compact the chart simply shows a net profit bar for each ticker tested. Average exposure for this system is about 15 hence, you may be able to trade portfolios to increase profits and smooth the equity curves. Be cautioned that in its raw form the drawdowns are unacceptable and that there may be volume restrictions for many tickers. Since this system has low exposure, it may be a candidate for market scanning and ranked portfolio trading. RARs would be an indication of the absolute maximum profits that could be obtained if one succeeded to increase exposure to near 100. However, price movement from different tickers may be correlated, and trades from different tickers may overlap. If many tickers trade at the same time, it would be difficult to increase system exposure. Filed by Herman at 1:49 pm under Ideas (Experimental) Comments Off on KISS-001: Intraday Gap Trading August 17, 2007 You are invited to submit links to system ideas in comments to this post. Gap Trading Strategies 8211 Stockcharts Intraday Moving Average Crossover with Position Sizing 8211 NeoTicker Volatility-Breakout-Systems 8211 Traders Log Ten day HighLow system 8211 StockWeblog Reversion Systems 8211 SeekingAlpha Systems Traders Club . Trader Club Bulletins. July 16, 2007 This category is reserved for real working trading systems, i. e. that you have traded at some point in time or would consider trading. Since the criteria for tradability varies from person to person, and since systems may work or not depending on how they are traded, it will be difficult to screen contributions here. With respect to what is posted here, keep an open mind and consider that the poster considers the system tradable. You can contribute by posting as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:14 am under Practical (Profitable) Comments Off on Introduction to Trading Systems 8211 Practical This is where you can share trading systems that are marginally profitable, i. e. those that should not be traded as they are but that show potential. Typically this would be a basic system that is profitable but experiences draw downs of 50. Such systems can often be improved by adding Stops, Targets, Money Management, Portfolio techniques, etc. The reality is that while you may not have the expertise to make it work someone else may. Almost all of us find trading system ideas in books and magazines that we then code in AFL for evaluation. Some of these systems may have been around for many years while others are new ideas. After coding them, almost always, we are disappointed and chuck out the system (work). Instead of throwing out your work you are invited to post the system here to give another developer a chance to fix it. You are invited to contribute as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:04 am under Ideas (Experimental) Comments Off on Introduction to Trading Systems 8211 Ideas

No comments:

Post a Comment