Wie man das Handelssystem optimiert. HINWEIS Dies ist ein ziemlich fortgeschrittenes Thema Bitte lesen Sie vorherige AFL-Tutorials zuerst. Die Idee hinter einer Optimierung ist einfach Zuerst müssen Sie ein Handelssystem haben, das kann eine einfache gleitende durchschnittliche Crossover zum Beispiel In fast jedem System gibt Sind einige Parameter als Mittelungszeitraum, die entscheiden, wie sich das System verhält, dh es ist gut geeignet für Langzeit - oder Kurzfristigkeit, wie reagiert es auf hochvolatile Bestände, etc. Die Optimierung ist der Prozess der Suche nach optimalen Werten dieser Parameter, die höchsten Gewinn aus Das System für ein bestimmtes Symbol oder ein Symbolsymbol AmiBroker ist eines der wenigen Programme, mit denen Sie Ihr System auf mehreren Symbolen gleichzeitig optimieren können. Um Ihr System zu optimieren, müssen Sie von einem bis zu zehn zu optimierenden Parametern definieren. Sie entscheiden Was ist ein minimaler und maximal zulässiger Wert des Parameters und in welchen Inkrementen dieser Wert aktualisiert werden soll AmiBroker führt dann mehrere Backtests durch, die das System mit allen möglichen Kombinationen von Parametern verwenden. Wenn dieser Prozess beendet ist, zeigt AmiBroker die Ergebnisliste nach dem Nettogewinn an Sie können die Werte der Optimierungsparameter sehen, die das beste Resultat geben. Writing AFL formula. Optimierung im Back Tester wird über neue Funktion namens optimize unterstützt Die Syntax dieser Funktion ist wie folgt. variable optimize Beschreibung, default min max step. variable - ist die normale AFL-Variable, die den von der Optimierungsfunktion zurückgegebenen Wert zugewiesen wird. Bei normalen Backtesting-, Scan-, Explorations - und Comentary-Modi gibt die Optimierungsfunktion den Standardwert zurück, so dass der obige Funktionsaufruf dem Variablen-Default entspricht. Im Optimierungsmodus optimiert die Funktion aufeinanderfolgende Werte Von min bis max inkl. Mit step steping. Description ist ein String, der verwendet wird, um die Optimierungsvariable zu identifizieren und wird als Spaltenname in der Optimierungsergebnisliste angezeigt. Defaultfault ist ein Standardwert, der die Funktion in Erkundung, Indikator, Kommentar, Scan und normale Back-Test-Modi. min ist ein Minimalwert der Variablen optimiert. Max ist ein Maximalwert der Variablen optimiert. step ist ein Intervall für die Erhöhung der Wert von min bis max. AmiBroker unterstützt bis zu 64 Aufrufe zu optimieren Funktion also bis zu 64 Optimierungsvariablen, beachten Sie, dass bei einer ausführlichen Optimierung dann eine gute Idee ist, die Anzahl der Optimierungsvariablen auf nur wenige zu beschränken. Jeder Aufruf zur Optimierung von Maximalschritt - Optimierungsschleifen und Mehrfachanrufen zur Optimierung der Multiplikation der Nummer Von Läufen benötigt Zum Beispiel die Optimierung von zwei Parametern mit 10 Schritten erfordert 10 10 100 Optimierungsschleifen. Call optimieren Funktion nur ONCE pro Variable am Anfang Ihrer Formel, da jeder Aufruf eine neue Optimierungsschleife erzeugt. Multiple-Symbol-Optimierung wird vollständig von AmiBroker unterstützt. Maximaler Suchraum ist 2 64 10 19 10.000.000.000.000.000.000 Kombinationen.1 Einzelvariable Optimierung. sigavg Optimieren Signal Durchschnitt 9 2 20 1.Buy Cross MACD 12 26, Signal 12 26 Sigavg Sell Cross Sennen 12 26 Sigavg, MACD 12 26.2 Zwei-Variable Optimierung Passend für 3D charting. per Optimieren pro 2 5 50 1 Level Optimize Level 2 2 150 4.Buy Cross CCI per, - Level Sell Cross Level, CCI per.3 Multiple 3 Variable Optimierung. mfast Optimieren MACD Fast 12 8 16 1 mslow Optimize MACD Slow 26 17 30 1 sigavg Optimize Signal Durchschnitt 9 2 20 1.Buy Cross MACD mfast, mslow Signal mfast, mslow, sigavg Sellavs, mslow, mslow, sigavg, MACD mfast, mslow. Nach dem Betreten der Formel klicken Sie einfach auf Optimize button Im automatischen Analyse-Fenster AmiBroker startet alle möglichen Kombinationen von Optimierungsvariablen und meldet die Ergebnisse in der Liste Nach der Optimierung wird die Ergebnisliste nach dem Nettoergebnis dargestellt. Wie Sie die Ergebnisse nach einer Spalte in der Ergebnisliste sortieren können, Ist einfach, die optimalen Werte der Parameter für den niedrigsten Drawdown, die geringste Anzahl von Trades, den größten Gewinnfaktor, das niedrigste Marktrisiko und die höchste risikoadjustierte Jahresrendite zu erhalten. Die letzten Spalten der Ergebnisliste geben die Werte der Optimierungsvariablen für den gegebenen Test an Entscheiden Sie, welche Kombination von Parametern Ihren Bedürfnissen am besten entspricht, was Sie tun müssen, um die Standardwerte bei der Optimierung von Funktionsaufrufen mit den optimalen Werten zu ersetzen. Im aktuellen Stadium müssen Sie sie per Hand in das Formelbearbeitungsfenster eingeben, den zweiten Parameter der Optimierungsfunktion Aufruf. Displaying 3D animierte Optimierung Charts. Um 3D-Optimierung Diagramm anzeigen, müssen Sie zwei-Variable-Optimierung zuerst ausführen Zwei variable Optimierung braucht eine Formel, die 2 Optimieren von Funktionsaufrufen Ein Beispiel Zwei-Variable-Optimierung Formel sieht aus wie this. per Optimize pro 2 5 50 1 Level Optimize Level 2 2 150 4.Buy Cross CCI per, - Level Selling Cross Level, CCI per. Nach dem Betreten der Formel müssen Sie auf Optimize button. Once Optimierung abgeschlossen ist, sollten Sie auf den Dropdown-Pfeil auf Optimize klicken Taste und wählen Sie Ansicht 3D-Optimierungs-Diagramm In ein paar Sekunden wird ein buntes dreidimensionales Oberflächen-Plot in einem 3D-Diagramm-Viewer-Fenster angezeigt. Ein Beispiel-3D-Diagramm, das mit der obigen Formel erstellt wurde, wird unten gezeigt. Im Standard werden die 3D-Diagramme Werte des Nettogewinns gegen die Optimierung angezeigt Variablen Sie können jedoch 3D-Oberflächen-Diagramm für jede Spalte in der Optimierungs-Ergebnistabelle anzeigen. Klicken Sie einfach auf die Spaltenüberschrift, um sie zu sortieren. Der blaue Pfeil zeigt an, dass die Optimierungsergebnisse nach der ausgewählten Spalte sortiert werden und dann die Option 3D-Optimierungsgrafik erneut anzeigen Ihre System-s-Parameter beeinflussen die Handelsleistung, Sie können leichter entscheiden, welche Parameterwerte zerbrechlich produzieren und die eine robuste Systemleistung erzeugen. Robuste Einstellungen sind Regionen im 3D-Graphen, die allmähliche und abrupte Änderungen im Oberflächenplot zeigen. 3D-Optimierungsdiagramme sind ein großartiges Werkzeug Verhindern Kurvenanpassung Kurvenanpassung oder Überoptimierung erfolgt, wenn das System komplexer ist, als es sein muss, und all diese Komplexität konzentrierte sich auf Marktbedingungen, die niemals wieder passieren können. Radikale Änderungen oder Spikes in den 3D-Optimierungsdiagrammen zeigen deutlich vorbei - optimierungsbereiche Sie sollten Parameter-Region wählen, die ein breites und breites Plateau auf 3D-Diagramm für Ihren realen Lebenhandel produziert. Parametersätze, die Gewinnspitzen produzieren, funktionieren nicht zuverlässig im realen trading.3D Chart Viewer controls. AmiBroker s 3D Chart Viewer bietet Gesamtbetrachtungsmöglichkeiten Mit voller grafischer Rotation und Animation Jetzt können Sie Ihre Systemergebnisse aus jeder erdenklichen Perspektive anzeigen Sie können die Position und andere Parameter des Diagramms mit der Maus, der Symbolleiste und den Tastenkombinationen steuern, was auch immer Sie für Sie leichter finden. Im Folgenden finden Sie die Liste. - zum Drehen - gedrückt halten LEFT-Maustaste gedrückt und in XY-Richtungen gewechselt - zum Vergrößern, Verkleinern - Halten Sie die RECHTS-Maustaste gedrückt und bewegen Sie sich in XY-Richtungen - um zu verschieben - halten Sie die linke Maustaste und die STRG-Taste gedrückt XY Richtungen - zum Animieren - Halten Sie die linke Maustaste gedrückt, ziehen Sie den Pfeil nach unten und ziehen Sie den Knopf, während Sie ziehen. SPACE - animieren auto-rotieren LINKS PFEILTASTE - drehen Sie sich nach links RECHTS PFEILTASTE - drehen Sie sich nach rechts PFEILSCHLÜSSEL - drehen Sie sich nach unten PFEILTASTE - NORPADEN - NACHPUNKT - NACHPUNKT - NACHPUNKT - NIEDRIGER ZUPAD 4 - nach links bewegen NUMPAD 6 - nach rechts bewegen NUMPAD 8 - nach oben bewegen NUMPAD 2 - nach unten verschieben PAGE UP - Wasserstand nach oben PAGE DOWN - Wasserstand nach unten Intelligente, nicht erschöpfende Optimierung. AmiBroker bietet jetzt eine intelligente, nicht erschöpfende Optimierung neben einer regelmäßigen, erschöpfenden Suche. Eine nicht erschöpfende Suche ist sinnvoll, wenn die Anzahl aller Parameterkombinationen des gegebenen Handelssystems einfach zu groß ist, um für eine ausführliche Suche möglich zu sein. Erschöpfungssuche Ist vollkommen in Ordnung, solange es vernünftig ist, es zu benutzen Lass es uns sagen, dass du 2 Parameter hast, die jeweils von 1 bis 100 Schritt 1 reichen. Das ist 10000 Kombinationen - perfekt ok für eine ausführliche Suche Jetzt mit 3 Parametern bekommst du 1 Million Kombinationen - es ist immer noch OK für eine ausführliche Suche, aber kann lang sein Mit 4 Parametern haben Sie 100 Millionen Kombinationen und mit 5 Parametern 1 100 Sie haben 10 Milliarden Kombinationen In diesem Fall wäre es zu zeitraubend, um alle von ihnen zu überprüfen, und dies ist der Bereich, in dem nicht - Erschöpfende intelligente Suchmethoden können das Problem lösen, das in einer angemessenen Zeit nicht mit einer erschöpfenden Suche lösbar ist. Hier ist absolut die SIMPLEST-Anweisung, wie man in diesem Fall neue, nicht erschöpfende Optimierer einsetzt. CMA-ES.1 Öffne deine Formel im Formel-Editor. 2 Füge diese einzelne Zeile an die Oberseite deines formula. OptimizerSetEngine cmae kannst du auch Spso oder Trib hier verwenden.3 Optional Wähle dein Optimierungsziel in Automatische Analyse, Einstellungen, Walk-Forward-Registerkarte, Optimierungszielfeld Wenn du diesen Schritt überspringst, wird es Optimieren für CAR-MDD-Compound jährlichen Return geteilt durch maximale Drawdown. Jetzt, wenn Sie Optimierung mit dieser Formel laufen, wird es neue evolutionäre nicht erschöpfende CMA-ES-Optimierer. Wie funktioniert es. Die Optimierung ist der Prozess der Suche nach Minimum oder Maximum Gegebene Funktion Jedes Handelssystem kann als eine Funktion einer bestimmten Anzahl von Argumenten betrachtet werden Die Eingaben sind Parameter und Zitatdaten Die Ausgabe ist Ihr Optimierungsziel sagen CAR MDD Und Sie suchen nach maximaler Funktion. Einige der intelligenten Optimierungsalgorithmen basieren auf Natur-Tierverhalten - PSO-Algorithmus oder biologischer Prozess - Genetische Algorithmen und einige basieren auf mathematischen Konzepten, die von Menschen abgeleitet werden - CMA-ES. Diese Algorithmen werden in vielen verschiedenen Bereichen eingesetzt, einschließlich der Finanzierung Geben Sie die PSO-Finanzierung oder die CMA-ES-Finanzierung in Google ein Und du wirst viele Infos finden. Nicht-erschöpfende oder intelligente Methoden finden globales oder lokales Optimum Das Ziel ist natürlich, globales zu finden, aber wenn es einen einzelnen scharfen Höhepunkt aus zillions Parameterkombinationen gibt, können nicht erschöpfende Methoden ausfallen Um diese Single-Peak zu finden, aber es ist ein Trader-Perspektive zu finden, ein einziger scharfer Peak zu finden, ist für den Handel nutzlos, weil dieses Ergebnis zu zerbrechlich und nicht replizierbar im realen Handel wäre. Im Optimierungsprozess suchen wir lieber nach Plateau-Regionen mit stabilen Parametern und Dies ist der Bereich, in dem intelligente Methoden glänzen. Als Algorithmus, der von einer nicht erschöpfenden Suche verwendet wird, sieht es wie folgt aus: Wenn der Optimierer eine gewöhnlich zufällige Startpopulation von Parametersätzen erzeugt, wird der Backtest von AmiBroker für jeden Parametersatz aus der Population c durchgeführt Ergebnisse der Backtests werden nach der Logik des Algorithmus ausgewertet und neue Population wird auf der Grundlage der Evolution der Ergebnisse erzeugt, d, wenn das Beste am besten gefunden wird - speichern Sie es und gehen Sie zu Schritt b, bis die Stoppkriterien erfüllt sind. Beispielstoppkriterien können ein Erreichen enthalten Spezifizierte maximale Iterationen b stoppen, wenn der Bereich der besten objektiven Werte der letzten X-Generationen null ist c stop, wenn das Hinzufügen von 0 1 Standardabweichungsvektor in irgendeiner Hauptachsenrichtung nicht den Wert des objektiven Wertes d andere ändert. Um irgendwelche intelligente nicht erschöpfend zu verwenden 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 externe Optimierungsmaschine, die durch den Namen definiert ist. AmiBroker wird derzeit mit 3 Motoren ausgeliefert Standard Particle Swarm Optimizer Spso, Tribes Trib und CMA-ES Cmae - die Namen in Klammern sind in OptimizerSetEngine Anrufe verwendet werden. Zusätzlich zur Auswahl der Optimierer-Engine können Sie einige seiner internen Parameter einstellen Um dies zu tun, verwenden Sie OptimizerSetOption function. OptimizerSetOption Name, Wert Funktion. Die Funktion setzen zusätzliche Parameter für externe Optimierungs-Engine Die Parameter sind motorabhängig Alle drei Optimierer, die mit AmiBroker SPSO, Trib, CMAE ausgeliefert werden, unterstützen zwei Parameter Läufe Anzahl der Läufe und MaxEval Maximale Auswertungstests pro Einzellauf Das Verhalten jedes Parameters ist motorabhängig, so dass gleiche Werte und in der Regel Wird unterschiedliche Ergebnisse mit verschiedenen Motoren verwendet. Der Unterschied zwischen Runs und MaxEval ist wie folgt Auswertung oder Test ist Single Backtest oder Auswertung der objektiven Funktion Wert RUN ist ein voller Lauf des Algorithmus finden optimalen Wert - in der Regel mit vielen Tests Auswertungen. Jede laufen Einfach RESTARTS den gesamten Optimierungsprozess aus dem Neubeginn neue anfängliche zufällige Population Daher kann jeder Durchlauf dazu führen, dass er lokal lokal minimal findet, wenn er nicht global findet. So Runs Parameter definiert die Anzahl der nachfolgenden Algorithmusläufe MaxEval ist die maximale Anzahl der Auswertungen bactests in Jeder einzelne run. If das Problem ist relativ einfach und 1000 Tests reichen aus, um globale max zu finden, 5x1000 ist eher zu globalen Maximum zu finden, weil es weniger Chancen gibt, in lokalem Maximum zu stecken, da nachfolgende Läufe von verschiedenen anfänglichen zufälligen Bevölkerung beginnen werden. Choosing Parameter Werte können schwierig sein Es hängt von Problem unter Test, seine Komplexität, etc, etc Jede stochastische nicht erschöpfende Methode gibt Ihnen keine Garantie für die Suche nach globalen max min, unabhängig von der Anzahl der Tests, wenn es kleiner als erschöpfend ist Die einfachste Antwort ist, um eine große Anzahl von Tests zu spezifizieren, wie es für Sie in Bezug auf die Zeit, die erforderlich ist, um eine weitere einfache Beratung ist es, um die Anzahl der Tests mit dem Hinzufügen neuer Dimension zu multiplizieren, die zu einer Überschätzung der Anzahl der erforderlichen Tests führen kann, aber es ist Ist ganz sicher Versendet Motoren sind so konzipiert, um einfach zu bedienen, daher vernünftige Standard-automatische Werte verwendet werden, so dass die Optimierung kann in der Regel ausgeführt werden, ohne Angabe von etwas akzeptieren Defaults. Es ist wichtig zu verstehen, dass alle intelligenten Optimierung Methoden am besten in kontinuierlichen Parameter Räume und relativ Glatte objektive Funktionen Wenn der Parameterraum diskrete evolutionäre Algorithmen haben, kann es schwierig sein, einen optimalen Wert zu finden. Es gilt insbesondere für binäre Ein-Aus-Parameter - sie eignen sich nicht für jede Suchmethode, die den Gradienten der objektiven Funktionsänderung verwendet, da die meisten intelligenten Methoden dies tun Enthält viele Binärparameter, sollten Sie nicht einfach Smart-Optimierer direkt auf ihnen verwenden Stattdessen versuchen, nur kontinuierliche Parameter mit Smart-Optimierer zu optimieren und binäre Parameter manuell oder über externe Skript. SPSO - Standard Particle Swarm Optimizer. Standard Particle Swarm Optimizer basiert auf SPSO2007 basiert Code, der gute Ergebnisse liefern soll, vorausgesetzt, dass korrekte Parameter, dh Runs, MaxEval für ein bestimmtes Problem vorgesehen sind. Die Auswahl der richtigen Optionen für den PSO-Optimierer kann schwierig sein, daher können die Ergebnisse von Fall zu Fall erheblich variieren. Kommt mit vollständigen Quellcodes in ADK Unterordner. Example Code für Standard Particle Swarm Optimizer finden optimalen Wert in 1000 Tests innerhalb der Suchfläche von 10000 Kombinationen. OptimizerSetEngine Spso OptimizerSetOption Läuft, 1 OptimizerSetOption MaxEval, 1000.sl Optimieren Sie s, 26, 1, 100, 1 fa Optimieren Sie f, 12, 1, 100, 1.Buy Cross MACD fa, sl, 0 Verkaufen Kreuz 0, MACD fa, sl. TRIBES - Adaptive Parameter-weniger Partikel Swarm Optimizer. Tribes ist eine adaptive, parameterlose Version von PSO Partikel-Schwarm-Optimierung nicht-erschöpfende Optimierer Für wissenschaftlichen Hintergrund see. In Theorie sollte es besser als normale PSO, denn es kann automatisch die Schwarm Größen und Algorithmus-Strategie auf das Problem zu lösen. Practice zeigt, dass seine Leistung ist ganz ähnlich wie PSO. Das Plugin implementiert Tribes-D dh dimensionslose Variante Basiert auf Maurice Clerc Original Quellcodes mit Genehmigung des Autors verwendet. Kommt mit vollem Quellcode in ADK-Ordner. Unterstützte Parameter MaxEval - maximale Anzahl von Auswertungen Backtests pro Laufzeit Standard 1000.Sie sollten die Anzahl der Auswertungen mit zunehmender Anzahl von Dimensionen erhöhen Anzahl der Optimierungsparams Die Voreinstellung 1000 ist gut für 2 oder maximal 3 Dimensionen. Runs - Anzahl der Läufe startet die Voreinstellung 5 Sie können die Anzahl der Läufe auf den Standardwert von 5. verlassen. Die Standardnummer der Läufe oder Neustarts ist auf 5 gesetzt. Um Tribes Optimizer zu verwenden, müssen Sie nur eine Zeile zu Ihrem Code hinzufügen. OptimizerSetOption MaxEval, 5000 5000 Auswertungen max. CMA-ES - Kovarianz Matrix Anpassung Evolutionäre Strategie Optimierer. CMA-ES Kovarianz Matrix Anpassung Evolutionäre Strategie ist fortgeschrittene nicht erschöpfende Optimierung Für wissenschaftliche Hintergrund siehe Nach wissenschaftlichen Benchmarks übertrifft neun anderen, beliebtesten evolutionären Strategien wie PSO, genetische und differenzielle Evolution. Das Plugin implementiert Globale Variante der Suche mit mehreren Neustarts mit zunehmender Population Größe kommt mit voller Quellcode in ADK Ordner. By Standard Anzahl der Läufe oder Neustarts ist auf 5 Es wird empfohlen, die Standard-Nummer verlassen Neustarts. Sie können es variieren mit OptimizerSetOption Runs, N-Aufruf, wobei N im Bereich 1 sein sollte 10 Die Angabe von mehr als 10 Läufen wird nicht empfohlen, obwohl möglich Beachten Sie, dass jeder Run TWICE die Größe der Population des vorherigen Laufs verwendet, damit es exponentiell wächst Mit 10 Läufen am Ende mit Population 2 10 größer 1024 mal als der erste Run. Es gibt einen anderen Parameter MaxEval Der Standardwert ist ZERO, was bedeutet, dass Plugin automatisch berechnet MaxEval erforderlich Es wird empfohlen, NICHT zu definieren MaxEval von selbst als Standard funktioniert Fine. Der Algorithmus ist schlau genug, um die Anzahl der Auswertungen zu minimieren und es konvergiert sehr schnell auf Lösungspunkt, so oft findet es Lösungen schneller als andere Strategien. Es ist normal, dass das Plugin wird einige Auswertungen Schritte überspringen, wenn es diese Lösung erkennt Wurde gefunden, daher sollten Sie nicht überrascht sein, dass Optimierung Fortschrittsbalken kann sich sehr schnell an einigen Punkten bewegen Das Plugin hat auch die Fähigkeit, die Anzahl der Schritte über ursprünglich geschätzten Wert zu erhöhen, wenn es benötigt wird, um die Lösung zu finden Aufgrund seiner adaptiven Natur, die geschätzt Die Zeit links und die Anzahl der Schritte, die durch den Fortschrittsdialog angezeigt werden, ist nur am besten erraten und kann während des Optimierungskurses variieren. Um den CMA-ES-Optimierer zu verwenden, musst du nur eine Zeile zu deinem Code hinzufügen. Dies führt die Optimierung mit Standard-Einstellungen, die für die meisten Fälle gut sind. Es sollte beachtet werden, wie es bei vielen Continuous-Space-Suchalgorithmen der Fall ist, dass der abnehmende Schrittparameter bei der Optimierung von funciton-Anrufen die Optimierungszeiten nicht wesentlich beeinflusst. Das einzige, was zählt, ist die Problemdimension , Dh die Anzahl der verschiedenen Parameter Anzahl der optimierten Funktionsaufrufe Die Anzahl der Schritte pro Parameter kann eingestellt werden, ohne die Optimierungszeit zu beeinflussen, also die feinste Auflösung zu verwenden. In der Theorie sollte der Algorithmus in der Lage sein, in höchstens 900 N 3 eine Lösung zu finden N 3 Backtests, bei denen N die Dimension ist In der Praxis konvergiert es eine Lose schneller Zum Beispiel die Lösung in 3 N 3 dimensionalen Parameter Raum sagen 100 100 100 1 Million erschöpfende Schritte können in so wenig wie 500-900 CMA-ES Schritte gefunden werden. Mehr - Threaded individuelle Optimierung. Starting von AmiBroker 5 70 zusätzlich zu Multiple-Symbol Multithreading können Sie Multi-Threaded Single-Symbol-Optimierung durchführen Um auf diese Funktionalität zugreifen, klicken Sie auf Dropdown-Pfeil neben Optimize-Schaltfläche im Fenster Neue Analyse und wählen Sie Individuelle Optimierung. Individual Optimize wird alle verfügbaren Prozessorkerne verwenden, um Single-Symbol-Optimierung durchzuführen, so dass es viel schneller als regelmäßige Optimierung. Im aktuellen Symbol-Modus wird es die Optimierung auf ein Symbol führen In allen Symbolen und Filter-Modi wird es alle Symbole sequentiell verarbeiten, dh zuerst Komplettoptimierung für erstes Symbol, dann Optimierung auf zweites Symbol, etc. Limitationen 1 Custom Backtester wird noch nicht unterstützt 2 Smart Optimierungs-Engines werden NICHT unterstützt - nur EXHAUSTIVE-Optimierung funktioniert. Eventuell können wir die Beschränkung befreien 1 - wenn AmiBroker so gewohnt geändert wird Backtester benutzt OLE nicht mehr Aber 2 ist wahrscheinlich hier, um für long. About für AmiBroker zu bleiben. Für AmiBroker ist ein Drittanbieter-Softwarepaket, das die volle Programmierbarkeit für AmiBroker für AmiBroker bietet. Alle programmierbaren Funktionen von AmiBroker. AFL-Skripten NET AFL-Plugins können alle AFL-Scripts komplett oder teilweise ersetzen. AFL-Plug-Ins können auf Daten-Arrays, AFL-Funktionen und Backtester-Objekte zugreifen Genauso wie ein AFL-Skript AflXCompiler-Dienstprogramm kann das AFL-Skript in den C-Code übersetzen, wodurch die Zeit und die Kosten für die Umwandlung von Scripts in kompilierte Code. Data-Plug-Ins reduziert werden. NET Data Plugins bieten eine einfachere Möglichkeit, Offline - oder Echtzeit-Handelsdaten zu sammeln und an AmiBroker zu übermitteln S Datenbank. OLE Automatisierungsschnittstelle Automatisierungs-Wrapper-Klassen helfen, AmiBroker-Optimierungsprozesse von externen Prozessen zu übertragen, die in einer Sprache geschrieben werden. ParallelBibliothek ermöglicht es, mehrere Instanzen von AmiBroker parallel zu verwenden, um mehrere Optimierungsaufgaben gleichzeitig auszuführen. BibController IBController-Wrapper-Klassen helfen, den IB-Handel zu verwenden Schnittstelle aus Code. All programmierbare AmiBroker-Funktionen können von Code unter Verwendung einer beliebigen Sprache abgerufen und verwendet werden. Indicators, Filter, Scanner, Explorationen, benutzerdefinierte Backtester-Module, automatisierte und Echtzeit-Trading-Systeme, Optimierer und Datenquellen-Plug-Ins, OLE-Automatisierungsprogramme oder Daten laden, etc. können in C, F oder jede Sprache entwickelt werden. Für AmiBroker für den Handel System-Entwickler. Extend oder ersetzen Sie Ihre AFLs mit Code. AFL Plug-in-Entwicklung, die einmal verwendet, um herauszufordern, auch erfahrene CC-Entwickler können nun in jeder Sprache sehr einfach und schnell gemacht werden NET-Plug-Ins können erweitern oder vollständig ersetzen AFL Scripts AFL enthalten Dateien können leicht in AFL-Plug-in AFL-Indikatoren, Scanner, Explorationen, Backtester-Module, Echtzeit-Trading-Module, etc. können in reinen oder in einer Mischung aus AFL und NET-Code erstellt werden kann einfach auf alle eingebauten, In AFL-Methoden und Objekten der Backtester-Schnittstelle. Data-Source-Plug-Ins können in jeder beliebigen Sprache entwickelt werden Mit der Datenschnittstelle ist viel einfacher als die ursprüngliche CC-Schnittstelle Sie bieten immer noch die volle Funktionalität der ursprünglichen Schnittstelle und vereinfachen die Integration von off - Leitung und Streaming von Datenquellen. Real Time Trading mit IBController Trading Interface für AmiBroker bietet einfache Integration von AFL-Indikatoren, Handelslogik in objektorientierten Code und AmiBroker Auto-Trading-Schnittstelle für interaktive Broker Die verwaltete IBController-Schnittstelle und die Plug-Ins zusammen bieten neue , Einfachere, zuverlässigere und überschaubare Möglichkeiten, um Echtzeit-Trading-Systeme zu schaffen. Integrate AmiBroker in Ihren benutzerdefinierten Handelsprozess für AmiBroker vereinfacht auch die Integration aller Arten von Anwendungen in AmiBroker Mit macht die Integration von Anwendungen mit COM-Schnittstellen wie Excel, Access, Word , R, SciLab, MatLab, etc. eine einfache Aufgabe. Es gibt auch grenzenlose Integrationsmöglichkeiten mit der Klassenbibliothek E g NET-Plug-Ins können benutzerdefinierte E-Mail senden, SMS senden, einen Web-Service anrufen, auf Dateien zugreifen, mit einer externen Handelsverwaltung kommunizieren System durch das Netzwerk oder sogar erhalten Ereignis von einem externen System. Speed up Entwicklung mit Klassen und Schritt für Schritt Debugging für AmiBroker erheblich reduziert die Entwicklungszeit und spart Ihnen viel Zeit Schritt für Schritt Debugging hilft Debuggen und Fehlerbehebung Das Design-Ziel War für AmiBroker einfach zu bedienen und immer noch effiziente NET-Plug-Ins erfordern keine Sanitär-Code wie CC-Plug-Ins tun Entwickler können Code schreiben, so schnell wie das Schreiben von AFL-Code oder konvertieren ihre AFL-Code fast Zeile für Zeile zu C VB und VB-Skript Entwickler können Plug-Ins einfach in. ParallelAB Bibliothek schreiben Sie können effizient alle Ihre Hardware für umfangreiche Optimierung, Exploration, Scan-Aufgaben verwenden Sie können Sie leicht entwickeln Automatisierungscode, der mehrere AmiBroker-Prozesse, um verschiedene Aufgaben mit verschiedenen Datenbanken auch auf verteilten ausführen können Hardware. Für AmiBroker für Handelssystemlizenzgeber für AmiBroker ist eine einfache Lösung für Black-Box-Handelssystem-Entwickler zum Schutz, zur Lizenzierung und zum Verkauf ihrer Systeme. AFL-Skripte können einfach und schnell in Plugins umgewandelt werden, die keine öffentliche Handelslogik in AFL-Dateien hinterlassen. NET-Plugins können geschützt werden Lizenziert durch kommerzielle Schutz-Tools wie IntelliLock CliSecure Licensing Licensing Pro usw. Die geschützten Plugins können öffentlich gemacht werden Nur Kunden, die eine Lizenz für ihre Maschinen erhalten haben, können die geschützten Plug-Ins verwenden. Für AmiBroker für DatendienstanbieterDaten-Plug-in-Entwicklung ist eine sehr anspruchsvolle, komplexe Aufgabe Es erfordert viel Entwicklerwissen und Erfahrung CC, Schreiben und Debuggen von Multithread-Code, AmiBroker s Daten-Plug-In-Schnittstelle und Datenanbieter-Schnittstelle für AmiBroker hebt die Barriere bei der Datenquellen-Entwicklung durch die Bereitstellung einer vereinfachten Datenquellen-Schnittstelle zur Integration mit AmiBroker und Bibliotheksfunktionen, um die verarbeiteten Handelsdaten problemlos in Anführungszeichen zu verarbeiten. Bereitstellte Datenquellen-Beispielcodes helfen auch, die interne Struktur und die Prozesse der Datenquellen zu verstehen. 14. Oktober 2011. Hinzugefügt 29. Februar 2012, zusätzliche Punkte zu berücksichtigen.1 Dieses System hängt davon ab, genaue Fills am Open-Preis zu erhalten, um solche Fills zu erhalten erfordert eine qualitativ hochwertige minimal-Verzögerung Daten-Feed und erweiterte Programmierkenntnisse, um Trade-Automatisierung zu implementieren.2 Bei der Einstellung der Eintrag Preis etwas unter dem offenen Preis, der versucht, die Leistung zu verbessern, scheitert das System miserabel Sogar die Verbesserung des Preises um nur einen Cent tötet das System Dies deutet darauf hin, dass der Großteil des Gewinns von Tagen kommt, an denen der Open-Preis gleich der täglichen Niedrig war, dh der Preis Bewegte sich von der offenen und fiel nie unter sie Dies ist natürlich offensichtlich Um dies zu bestätigen Ich habe diese Testbedingung es schaut voraus, um Tage auszuschließen, an denen Open Low. Buy Buy UND NICHT O L. This tötet das System und beweist das Die meisten der Gewinn kommt aus Tagen, wo OL Um dies weiter zu bestätigen, fügte ich die entgegengesetzte Bedingung. Buy Buy AND O L. This gibt fast unendliche Gewinne und beweist, dass die meisten Gewinne kommen von Tagen, auf denen der Preis bewegt sich sofort aus dem Open und nie Rückkehr unter ihm Versuchen, den Eintrittspreis zu verbessern ist ein Fehler, den man auf einen Stop-Set eingeben soll 1-2 ct über dem Open-Preis, das wird die Tage beseitigen, wenn der Preis sinkt und niemals zurückkehrt. Das verbessert die Leistung erheblich.3 Dieses System handelt Knie - jerk trader-responses patterns Solche Muster sind in der Regel durch großen Volumen Handel ertrunken daher dieses System funktioniert viel besser, wenn Sie Tickers mit Volumina zwischen 500.000 und 5.000.000 Aktien Tag wählen Dies verbessert auch die Leistung signifikant. Haben die oben genannten zwei Features führt zu einer Eigenkapitalkurve viel Besser als die unten gezeigte Entschuldigung, ich habe keine Zeit, um die oben ausführlich zu dokumentieren Viel Glück. This Post umreißt eine sehr einfache Long-only-Trading-Idee, die kauft bei einem bestimmten Prozentsatz unterhalb von gestern s Low und beendet am nächsten Tag s Offen, manchmal kann es schwierig sein, den genauen Open-Preis zu bekommen, die hohe Profitabilität dieses Systems macht es zu einem guten Kandidaten für weitere Experimente Das System funktioniert gut mit Watchlists wie die N100, SP500, SP1500, Russel 1000, etc. Leistung auf der Russel 1000, mit max offenen Positionen auf 1 gesetzt, für den Zeitraum 12 10 2003 bis 12 10 2011, sieht aus wie diese. Einige der anderen Watchlists geben weniger Expositionsgewinne, aber dies kommt mit niedrigeren DDs Provisionen wurden auf 0 005 pro Aktie No Margin gesetzt Used. No explizites Ranking wird verwendet Tickers werden gehandelt basierend auf ihrer alphabetischen Sortierung in der Watchlist Dies kann seltsam erscheinen, aber ist signifikante Umkehrung dieser Art das System fehlschlägt Dies könnte bedeuten, dass aufgrund von Echtzeit-Scan-Probleme, Symbole auf der Oberseite von Diese Art kann anders gehandelt werden als die unten aufgeführten. Pay Aufmerksamkeit auf Liquidität, die Sie vielleicht mehr als eine Position handeln möchten, und Schlupf Eintrag ist eher risikofrei, aber Ausgänge können problematisch sein DDs sind signifikant, können aber mit verbesserten real ausgeglichen werden Zeitüberschreitung von Einträgen und Ausgängen Beim automatischen Handel kann es möglich sein, OCA DAY-LMT-Eintrittsaufträge für alle Signale zu platzieren und nur zu warten, was füllt. Da Ausgänge schwieriger sind als Einträge, können Sie andere Ausstiegsstrategien erkunden. Parameter-Standardwerte Sind nur aus einem Hut ausgesucht Fast sicher können Sie sie optimieren oder dynamisch anpassen für einzelne Tickers Ich habe dieses System im Walk-Forward-Modus kurz getestet und die Ergebnisse waren für alle Jahre getestet. Ausgenommen von der Anzahl der Aktien gehandelten Parameter erscheinen nicht sehr Kritisch Über-Optimierung doesn t scheinen ein Problem in diesem Fall. Der Code unten ist sehr einfach und erfordert nur wenige Erklärungen Allerdings ist es wichtig zu verstehen, dass dieses System genießt eine kleine Kante durch den Handel am Open, und durch die Berechnung der TrendMA mit dem gleichen Offener Preis Manche mögen dies als künftiges Leck interpretieren, aber wenn man dieses System in Echtzeit tauscht, ist es nicht Viele Leute wissen nicht, dass wenn du bei der Open handelst, kannst du diesen Preis auch in deiner Berechnungen verwenden, solange du dich ausführt Sie in Echtzeit ist dies, wo AmiBroker und Technologie können Sie einen Vorteil Wenn Sie Ref zurück die TrendMA um 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äre zu starten Scannen, bevor der Markt öffnet und entfernen Tickers, die so weit entfernt sind, dass sie unwahrscheinlich, dass die OpenThresh So können Sie beginnen, 1000 Symbole zu starten, aber sehr schnell die Anzahl gescannt wird auf nur ein Dutzend oder so Tickers schwinden Wenn Sie sich nähern 9 30am Ihre Echtzeit-Scan wird sehr schnell und Sie werden in der Lage, Ihre LMT-Bestellung ganz in der Nähe der Open Sie können sogar in der Lage sein, auf den Open-Preis zu verbessern. Even obwohl ein paar Leute sah den Code unten und gefunden Nichts falsch, die Gewinne scheinen ziemlich hoch für solch ein einfaches System Bitte melden Sie Fehler, die Sie sehen können. Filed von Herman um 7.00 Uhr unter Ideen Experimentelle Kommentare aus auf EOD Gap-Trading Portfolio System. September 1, 2011.Diese Idee wurde 161332 gepostet Auf der Haupt-AmiBroker-Liste am 3. Juli 2011 Es gab zahlreiche hervorragende Kommentare auf der Liste und wenn Sie daran interessiert sind, an diesem System zu arbeiten, tut es Ihnen gut, sie alle zu lesen, bevor Sie nach der Entsendung Ich fand eine Reihe von Beiträgen im Web, die darüber diskutieren Trading-Idee, einige behaupteten, ein ähnliches System mit gutem Erfolg zu handeln. Ich verwies auf dieses System ein Gap Trading-System, aber das kann ein bisschen eine falsche, Mean Reversion könnte eine bessere Klassifizierung Googeln für es wird Ihnen viele weitere Hits Zu ähnlichen Systemen Hier sind ein paar Links. Es scheint eine ziemlich weit diskutierte Trading-Idee und ich schlage vor, Sie werden einige Googeln auf eigene Faust zu lernen, die neuesten Als Amibroker Benutzer haben Sie bessere Werkzeuge als die meisten Händler und Sie haben eine bessere Chance als die meisten zu kommen mit einer Variation, die funktioniert vielleicht mit ein wenig weniger Gewinne, und mit einer erheblichen Menge an zusätzlichen Code wurde es ein schnelles Projekt. Einige Leute kommentiert, dass dieses System wird nicht in echten Handel arbeiten, während sie können be right others say schemes like this work I didn t finish the system and can t claim to know whether it is tradable or not. The system Buys at a certain percentage below yesterday s 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 5 11 2007, was used. Trading idea by protraderincments and formula by Bill 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 and or 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 HHV LLV 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. Edited by Al Venosa. 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 Stockcharts Intraday Moving Average Crossover with Position Sizing NeoTicker Volatility-Breakout-Systems Traders Log Ten day High Low system StockWeblog Reversion Systems SeekingAlpha Systems Traders Club Trader Club Bulletins. July 16, 2007.This category is reserved for real working trading systems, ie 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 Practical. This is where you can share trading systems that are marginally profitable, ie 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 Ideas.
No comments:
Post a Comment