Wednesday 22 November 2017

Amibroker Test A Moving Average Crossover System


Wie man das Handelssystem optimiert HINWEIS: Das ist ziemlich fortgeschrittenes Thema. Bitte vorherige AFL-Tutorials lesen. Die Idee hinter einer Optimierung ist einfach. Zuerst musst du ein Handelssystem haben, das kann ein einfacher gleitender durchschnittlicher Crossover sein. In fast jedem System gibt es einige Parameter (als Mittelungszeitraum), die entscheiden, wie sich das System verhält (d. h. ist gut geeignet für Langzeit - oder Kurzzeit, wie reagiert es auf hochvolatile Bestände usw.). Die Optimierung ist der Prozess der Suche nach optimalen Werten dieser Parameter (mit dem höchsten Gewinn aus dem System) für ein gegebenes Symbol (oder ein Portfolio von Symbolen). AmiBroker ist eines der wenigen Programme, mit denen Sie Ihr System auf mehreren Symbolen gleichzeitig 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 Inkrementen dieser Wert aktualisiert werden soll. AmiBroker führt dann mehrere Backtests durch, die das System mit allen möglichen Kombinationen von Parameterwerten verwenden. Wenn dieser Prozess beendet ist, zeigt AmiBroker die Ergebnisliste nach Gewinn nach. Sie können die Werte der Optimierungsparameter sehen, die das beste Ergebnis liefern. Schreiben von AFL-Formel Die Optimierung im Back-Tester wird über die neue Funktion Optimize unterstützt. Die Syntax dieser Funktion lautet wie folgt: Variable optimieren ("Beschreibung", "Standard", "Min. Max."). - Variable - ist die normale AFL-Variable, die den von der Optimierungsfunktion zurückgegebenen Wert zugewiesen wird. Bei normaler Backtest-, Scanning-, Explorations - und Comentary-Modi gibt die Optimierungsfunktion den Standardwert zurück, so dass der obige Funktionsaufruf äquivalent ist: Variable Default Im Optimierungsmodus optimiert die Funktion die sukzessiven Werte von min bis max (inklusive) mit Step Stepping. Quot Descriptionquot ist ein String, der verwendet wird, um die Optimierungsvariable zu identifizieren und wird als Spaltenname in der Optimierungsergebnisliste angezeigt. Default ist ein Standardwert, der die Funktion in den Explorations-, Indikator-, Kommentar-, Scan - und normalen Back-Test-Modi optimiert. Min ist ein Minimalwert der Variablen, die optimiert wird max ist ein Maximalwert der Variablen, die optimiert wird, ist ein Intervall, Wert von min bis max AmiBroker unterstützt bis zu 64 Anrufe zur Optimierung der Funktion (also bis zu 64 Optimierungsvariablen), beachten Sie, dass bei einer ausführlichen Optimierung dann eine gute Idee ist, die Anzahl der Optimierungsvariablen auf wenige zu beschränken. Jeder Aufruf zur Optimierung generieren (max - min) Schritt Optimierungsschleifen und mehrere Anrufe zur Optimierung multiplizieren die Anzahl der benötigten Läufe. Zum Beispiel benötigen die Optimierung von zwei Parametern mit 10 Schritten 1010 100 Optimierungsschleifen. Anrufoptimierung nur ONCE pro Variable am Anfang deiner Formel, da jeder Aufruf eine neue Optimierungsschleife erzeugt Mehrfachsymboloptimierung wird von AmiBroker voll unterstützt Maximaler Suchraum beträgt 2 64 (10 19 10.000.000.000.000.000.000) Kombinationen 1. Einzelne Variable Optimierung: Sigavg Optimize (Signal-Durchschnitt 9. 2. 20. 1) Buy Cross (MACD (12. 26), Signal (12. 26. Sigavg)) Kreuz verkaufen (Signal (12. 26. Sigavg), MACD (12. 26)) 2. Zwei-Variable-Optimierung (geeignet für 3D-Charting) per Optimize (pro 2. 5. 50. 1) Level Optimize (Level 2. 2. 150. 4) Buy Cross (CCI (per), - Level) Verkaufen Kreuz (Level, CCI (per)) 3. Multiple (3) Variable Optimierung: mfast Optimize (MACD Fast 12. 8. 16. 1) mslow Optimize (MACD Slow. 26. 17. 30. 1) sigavg Optimize (Signal Durchschnittlich 9. 2. 20. 1) Buy Cross (MACD (mfast, mslow) Signal (mfast, mslow, sigavg)) Kreuz verkaufen (Signal (mfast, mslow, sigavg), MACD (mfast, mslow)) Nach dem Eintreten Die Formel klicken Sie einfach auf die Schaltfläche Optimieren im Fenster quotAutomatic Analysisquot. AmiBroker startet alle möglichen Kombinationen von Optimierungsvariablen und meldet die Ergebnisse in der Liste. Nach der Optimierung erfolgt die Ergebnisliste nach dem Nettogewinn. Da Sie die Ergebnisse durch eine beliebige Spalte in der Ergebnisliste sortieren können, ist es 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. Wenn Sie entscheiden, welche Kombination von Parametern Ihren Bedürfnissen entspricht, ist das Beste, was Sie tun müssen, um die Standardwerte bei der Optimierung von Funktionsaufrufen mit den optimalen Werten zu ersetzen. Im laufenden Stadium müssen Sie sie im Handlungsfenster bearbeiten (der zweite Parameter zur Optimierung des Funktionsaufrufs). Anzeigen von 3D-animierten Optimierungsdiagrammen Um das 3D-Optimierungsdiagramm anzuzeigen, müssen Sie zuerst eine Variable mit zwei Variablen ausführen. Zwei variable Optimierung benötigt eine Formel mit 2 Optimize () Funktionsaufrufen. Eine Beispiel-Zwei-Variable-Optimierungsformel sieht so aus: per Optimize (pro 2. 5. 50. 1) Level Optimize (Level 2. 2. 150. 4) Buy Cross (CCI (per), - Level) Sell Cross (Level, CCI (per)) Nach dem Eingeben der Formel müssen Sie auf die Schaltfläche "OK" klicken. Sobald die Optimierung abgeschlossen ist, klicken Sie auf den Dropdown-Pfeil auf die Schaltfläche "Optimieren" und wählen Sie "3D-Optimierungsdiagramm anzeigen". In wenigen Sekunden erscheint ein buntes dreidimensionales Flächenplot in einem 3D-Chart-Viewer-Fenster. Ein Beispiel-3D-Diagramm, das mit der obigen Formel erstellt wurde, ist unten gezeigt. Die 3D-Diagramme zeigen standardmäßig Werte des Nettogewinns gegenüber Optimierungsvariablen an. Sie können jedoch 3D-Oberflächen-Diagramm für jede Spalte in der Optimierung Ergebnis-Tabelle. Klicken Sie einfach auf die Spaltenüberschrift, um sie zu sortieren (blauer Pfeil zeigt an, dass die Optimierungsergebnisse nach der ausgewählten Spalte sortiert werden) und wählen Sie dann erneut 3D-Optimierungsgrafik anzeigen. Durch die Visualisierung, wie sich Ihre Systemparameter auf die Handelsleistung auswirken, können Sie leichter entscheiden, welche Parameterwerte quittilequot produzieren und welche die Performance des Qurobustquot-Systems erbringen. Robuste Einstellungen sind Regionen im 3D-Graphen, die allmähliche und nicht abrupte Änderungen im Flächenplot zeigen. 3D-Optimierungsdiagramme sind ein großartiges Werkzeug, um eine Kurvenanpassung zu verhindern. Kurvenanpassung (oder Überoptimierung) tritt auf, 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 Veränderungen (oder Spikes) in den 3D-Optimierungsdiagrammen zeigen deutlich über optimierte Bereiche. Sie sollten wählen, Parameter-Region, die eine breite und breite Plateau auf 3D-Diagramm für Ihr echtes Leben Handel produziert. Parametersätze, die Gewinnspitzen erzeugen, funktionieren nicht zuverlässig im realen Handel. 3D-Karten-Viewer-Steuerelemente AmiBrokers 3D-Karten-Viewer bietet insgesamt Viewing-Funktionen mit voller Graphenrotation und Animation. Jetzt können Sie Ihre Systemergebnisse aus jeder erdenklichen Perspektive ansehen. 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. Unten finden Sie die Liste. - zum Drehen - gedrückt halten LEFT-Maustaste gedrückt und in XY-Richtungen gedrückt - zum Vergrößern, Verkleinern - Halten Sie die RECHTS-Maustaste gedrückt und bewegen Sie sich in XY-Richtungen - zum Verschieben (übersetzen) - halten Sie die linke Maustaste und die STRG-Taste gedrückt Bewegen Sie sich in XY Richtungen - zum 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) LINKS PFEILTASTE - drehen Sie sich vertikal. Links RECHTS PFEILTASTE - drehen Sie sich vert. Rechts PFEILTASTE - drehen horiz. Up DOWN PFEILTASTE - drehen horiz. NUMPAD 6 - nach rechts 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 zusätzlich zur 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 abschließende Suche möglich zu sein. Die anspruchsvolle Suche ist vollkommen in Ordnung, solange es vernünftig ist, sie zu benutzen. Lass uns sagen, dass du 2 Parameter von 1 bis 100 hast (Schritt 1). Das ist 10000 Kombinationen - perfekt für eine ausführliche Suche. Jetzt mit 3 Parametern hast du 1 Million Kombinationen - es ist immer noch OK für eine abschließende Suche (kann aber auch lang 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 zeitaufwändig, alle von ihnen zu überprüfen, und dies ist der Bereich, in dem nicht erschöpfende Smart-Search-Methoden das Problem lösen können, das in einer angemessenen Zeit nicht mit einer erschöpfenden 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 einzelne Zeile am oberen Rand Ihrer Formel hinzu: OptimizerSetEngine (quotcmaequot) können Sie auch hier quadratisch oder quottribquot verwenden. 3. (Optional) Wählen Sie Ihr Optimierungsziel in Automatische Analyse, Einstellungen, quotWalk - Forwardquot-Registerkarte, Optimierungszielfeld. Wenn du diesen Schritt überspringst, wird es für CARMDD optimieren (zusammengesetzte jährliche Rendite geteilt durch maximales Drawdown). Jetzt, wenn Sie mit dieser Formel optimieren, wird es neue evolutionäre (nicht erschöpfende) CMA-ES-Optimierung verwenden. Wie funktioniert es Die Optimierung ist der Prozess der Suche nach Minimum (oder Maximum) der gegebenen Funktion. Jedes Handelssystem kann als eine Funktion einer bestimmten Anzahl von Argumenten betrachtet werden. Die Eingaben sind Parameter und Zitatdaten. Die Ausgabe ist dein Optimierungsziel (zB CARMDD). Und du suchst nach maximaler Funktion. Einige der intelligenten Optimierungsalgorithmen basieren auf der Natur (Tierverhalten) - PSO-Algorithmus oder biologischem Prozess - genetische Algorithmen und einige basieren auf mathematischen Konzepten, die von Menschen abgeleitet werden - CMA-ES. Diese Algorithmen werden in vielen verschiedenen Bereichen, einschließlich der Finanzierung verwendet. Geben Sie quotPSO financequot oder quotCMA-ES financequot in Google ein und Sie finden viele Informationen. Nicht-erschöpfende (oder quotsmartquot) Methoden finden globales oder lokales Optimum. Das Ziel ist natürlich, globale zu finden, aber wenn es einen einzigen scharfen Peak aus zillions Parameterkombinationen gibt, können nicht-erschöpfende Methoden diesen einzelnen Peak nicht finden, aber es bilden Formulatoren perspektivisch, das Finden eines einzelnen scharfen Peaks ist nutzlos für Handel, weil dieses Ergebnis instabil wäre (zu zerbrechlich) und nicht replizierbar im realen Handel. Im Optimierungsprozess suchen wir nach Plateau-Regionen mit stabilen Parametern und das ist der Bereich, in dem intelligente Methoden leuchten. In Bezug auf den Algorithmus, der von einer nicht erschöpfenden Suche verwendet wird, sieht es wie folgt aus: a) Der Optimierer erzeugt einige (meist zufällige) Startpopulation 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 auf der Grundlage der Evolution der Ergebnisse generiert, d) wenn neues Bestes gefunden wird - speichern Sie es und gehen Sie zu Schritt b) bis Stop-Kriterien erfüllt sind Beispiel Stop-Kriterien können enthalten: a) Erreichen der angegebenen Maximale Iterationen b) Stoppen, wenn der Bereich der besten objektiven Werte der letzten X-Generationen null ist c) stoppen, wenn das Hinzufügen von 0,1 Standardabweichungsvektor in irgendeiner Hauptachsenrichtung den Wert des objektiven Wertes nicht verändert d) andere Um irgendeine intelligente (nicht - Erschöpfenden) 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 Optimierungsmaschine aus. AmiBroker wird derzeit mit 3 Motoren ausgeliefert: Standard Particle Swarm Optimizer (quotspsoquot), Tribes (quottribquot) und CMA-ES (quotcmaequot) - die Namen in Klammern sollen in OptimizerSetEngine Anrufe verwendet werden. Zusätzlich zur Auswahl der Optimierer-Engine können Sie einige seiner internen Parameter einstellen. Verwenden Sie dazu die OptimizerSetOption-Funktion. OptimizerSetOption (quotnamequot, value) Funktion Die Funktion setzt zusätzliche Parameter für externe Optimierungs-Engine ein. Die Parameter sind motorabhängig. Alle drei mit AmiBroker (SPSO, Trib, CMAE) ausgelieferten Optimierer 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 und können in der Regel unterschiedliche Ergebnisse mit verschiedenen Motoren verwendet werden. Der Unterschied zwischen Runs und MaxEval ist wie folgt. Auswertung (oder Test) ist ein einzelner Backtest (oder Auswertung des objektiven Funktionswertes). RUN ist ein vollständiger Ablauf des Algorithmus (optimaler Wert) - in der Regel viele Tests (Auswertungen). Jeder läuft einfach den gesamten Optimierungsprozess vom Neubeginn (neue anfängliche zufällige Population). Daher kann jeder Durchlauf dazu führen, dass er verschiedene lokale maxmin findet (wenn er nicht global findet). So Runs Parameter definiert die Anzahl der nachfolgenden Algorithmen läuft. MaxEval ist die maximale Anzahl von Auswertungen (Bactests) in einem Einzellauf. Wenn das Problem relativ einfach ist und 1000 Tests reichen, um globale max zu finden, ist 5x1000 eher ein globales Maximum zu finden, da es weniger Chancen gibt, in lokalem Maximum zu stecken, da nachfolgende Läufe von verschiedenen anfänglichen zufälligen Populationen beginnen werden Sei schwierig Es hängt von dem Problem unter Test, seine Komplexität, etc., etc. Jede stochastische nicht erschöpfende 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. Spezifizieren Sie eine so große Anzahl von Tests, wie es für Sie angemessen ist, in Bezug auf die Zeit, die erforderlich ist, um zu vervollständigen. Eine weitere einfache Beratung ist, um die Anzahl der Tests mit dem Hinzufügen neuer Dimension zu multiplizieren. Das kann zu einer Überschätzung der Anzahl der benötigten Tests führen, aber es ist ganz sicher. Die versendeten Motoren sind so konzipiert, dass sie einfach zu bedienen sind, daher werden quasi-fähige Standardautomatische Werte verwendet, so dass die Optimierung in der Regel ohne Angabe von etwas durchgeführt werden kann (Annahme von Vorgaben). Es ist wichtig zu verstehen, dass alle intelligenten Optimierungsmethoden am besten in kontinuierlichen Parameterräumen und relativ reibungslosen Zielfunktionen funktionieren. Wenn der Parameterraum diskrete evolutionäre Algorithmen haben, kann es schwierig sein, einen optimalen Wert zu finden. Es 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). Wenn Ihr Trading-System viele Binärparameter enthält, sollten Sie kein Smart Optimizer direkt auf ihnen verwenden. Stattdessen versuchen, nur kontinuierliche Parameter mit Smart-Optimierer zu optimieren und binäre Parameter manuell oder über externes Skript zu wechseln. SPSO - Standard Particle Swarm Optimizer Standard Particle Swarm Optimizer basiert auf SPSO2007 Code, der gute Ergebnisse liefern soll, vorausgesetzt, dass korrekte Parameter (d. h. Runs, MaxEval) für ein bestimmtes Problem bereitgestellt werden. Die Auswahl der richtigen Optionen für den PSO-Optimierer kann schwierig sein, daher können die Ergebnisse von Fall zu Fall erheblich variieren. SPSO. dll kommt mit vollständigen Quellcodes innerhalb von quotADKquot Unterordner. Beispielcode für Standard Particle Swarm Optimizer: (optimalen Wert in 1000 Tests im Suchraum von 10000 Kombinationen finden) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimize (quotsquot, 26, 1, 100, 1 (FACS) FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN FREIES VERSCHIFFEN , Parameterlose Version von PSO (Partikel-Schwarm-Optimierung) nicht erschöpfende Optimierung. Für wissenschaftlichen Hintergrund siehe: particlewarm. infoTribes2006Cooren. pdf In der Theorie sollte es besser als normale PSO, denn es kann automatisch die Schwarmgrößen und Algorithmus-Strategie auf das Problem zu lösen. Praxis zeigt, dass seine Leistung ist ganz ähnlich wie PSO. Das Tribes. DLL Plugin implementiert quotTribes-Dquot (d. h. dimensionslose) Variante. Basierend auf clerc. maurice. free. frpsoTribesTRIBES-D. zip von Maurice Clerc. Ursprüngliche Quellcodes, die mit der Erlaubnis des Autors verwendet werden Tribes. DLL kommt mit vollem Quellcode (innerhalb des Zifferncapot-Ordners) 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 Optimierungsparams). Die Voreinstellung 1000 ist gut für 2 oder maximal 3 Dimensionen. QuotRunsquot - Anzahl der Läufe (Neustarts). (Voreinstellung 5) Sie können die Anzahl der Läufe auf den Standardwert von 5 verlassen. Standardmäßig ist die Anzahl der Läufe (oder Neustarts) auf 5 gesetzt. Um den Tribes-Optimierer zu verwenden, müssen Sie nur noch eine Zeile zu Ihrem Code hinzufügen: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 Auswertungen max CMA-ES - Kovarianz Matrix Anpassung Evolutionäre Strategie Optimierer CMA-ES (Covarianz Matrix Adaption Evolutionary Strategy) ist fortgeschrittene nicht erschöpfende Optimierer. Für wissenschaftlichen Hintergrund siehe: bionik. tu-berlin. deusernikocmaesintro. html Nach wissenschaftlichen Benchmarks übertrifft neun weitere populäre evolutionäre Strategien (wie PSO, Genetische und Differential Evolution). Bionik. tu-berlin. deusernikocec2005.html Das CMAE. DLL-Plugin implementiert die OptionGlobalquot-Suchvariante mit mehreren Neustarts mit zunehmender Populationsgröße. CMAE. DLL kommt mit vollem Quellcode (im Zitat von ZKK-Ordner) Standardmäßig wird die Anzahl der Läufe (oder Neustarts) gesetzt Bis 5. Es wird empfohlen, die Standardanzahl der Neustarts zu verlassen. Sie können es mit dem OptimizerSetOption (quotRunsquot, N) Aufruf variieren, wobei N im Bereich 1..10 sein sollte. Die Angabe von mehr als 10 Läufen wird nicht empfohlen, wenn auch möglich. Beachten Sie, dass jeder Lauf TWICE die Größe der Population des vorherigen Laufs verwendet, damit er exponentiell wächst. Deshalb mit 10 Läufen am Ende mit der Bevölkerung 210 größer (1024 mal) als der erste Lauf. Es gibt einen anderen Parameter quotMaxEvalquot. Der Standardwert ist ZERO, was bedeutet, dass das Plugin automatisch das erforderliche MaxEval berechnet. Es wird empfohlen, NICHT zu definieren, MaxEval von Ihnen selbst als Standard funktioniert gut. Der Algorithmus ist schlau genug, um die Anzahl der benötigten Auswertungen 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 überspringen wird, wenn es feststellt, dass die Lösung gefunden wurde, deshalb sollten Sie nicht überrascht sein, dass sich der Optimierungsfortschrittsbalken an einigen Punkten 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 nötig ist, die Lösung zu finden. Aufgrund seiner anpassungsfähigen Natur ist die zerlegte Zeit leftquot und eine Anzahl von Schritten, die durch den Fortschrittsdialog angezeigt werden, nur zum Zeitpunkt der Zeit und nur während des Optimierungskurses unterschiedlich. Um den CMA-ES-Optimierer zu verwenden, musst du nur noch eine Zeile zu deinem Code hinzufügen: Damit wird die Optimierung mit den Standardeinstellungen ausgeführt, die für die meisten Fälle gut sind. Es ist zu beachten, wie es bei vielen Continuous-Space-Suchalgorithmen der Fall ist, dass der abnehmende Quarterteilparameter in Optimize () funciton-Aufrufe die Optimierungszeiten nicht wesentlich beeinflusst. Das Einzige, worauf es ankommt, ist das Problem, wenn es darum geht, die Anzahl der verschiedenen Parameter (Anzahl der Funktionsanrufe zu optimieren). Die Anzahl der Querstege pro Parameter kann eingestellt werden, ohne die Optimierungszeit zu beeinflussen. Verwenden Sie daher die feinste Auflösung, die gewünscht wird. In der Theorie sollte der Algorithmus in der Lage sein, Lösung in höchstens 900 (N3) (N3) Backtests zu finden, wobei quotNquot die Dimension ist. In der Praxis konvergiert es viel schneller. Zum Beispiel kann die Lösung in 3 (N3) dimensionalen Parameterraum (zB 100100100 1 Million erschöpfende Schritte) in so wenigen 500-900 CMA-ES-Schritten gefunden werden. Multi-Threaded Individuelle Optimierung Ab AmiBroker 5.70 zusätzlich zu Multisymbol Multithreading. Sie können eine Multi-Thread-Single-Symbol-Optimierung durchführen. Um auf diese Funktion zuzugreifen, klicken Sie auf den Dropdown-Pfeil neben der Schaltfläche "OKOptimizequot" im Fenster "Neue Analyse" und wählen Sie "Individuelles Optimieren" aus. "InDividual Optimizequot wird alle verfügbaren Prozessorkerne verwenden, um eine Single-Symbol-Optimierung durchzuführen, was es wesentlich schneller macht als die reguläre Optimierung. In quotCurrent symbolquot-Modus wird es eine Optimierung auf einem Symbol durchführen. In quotAll symbolsquot und quotFilterquot Modi verarbeitet es alle Symbole sequentiell, dh erste komplette Optimierung für das erste Symbol, dann Optimierung auf zweites Symbol usw. Einschränkungen: 1. Custom Backtester wird NICHT unterstützt (noch) 2. Smart Optimization Engines werden NICHT unterstützt - Nur EXHAUSTIVE optimierung funktioniert. Irgendwann können wir die Beschränkung loswerden (1) - wenn AmiBroker geändert wird, so benutzerdefinierter Backtester verwendet OLE nicht mehr. Aber (2) ist wahrscheinlich hier, um für long. Trading System zu bleiben: Wie man einen beweglichen durchschnittlichen Crossover kodiert, der 28 pro Jahr zurückkehrt Ah, das bescheidene gleitende durchschnittliche Crossover-Handelssystem Als einer der ersten (wenn nicht der erste selbst) Handelssysteme Erstellt und verwendet von Richard Donchian und Ed Seykota bereits in den späten 1960er Jahren, haben Sie wahrscheinlich von einem gleitenden durchschnittlichen Crossover in irgendeiner Form oder Form während Ihrer Zeit in den Märkten gehört. Eines der häufigsten ist die 8220Golden Cross8221 und 8220Dead Cross8221, wo die 50 Tage gleitenden Durchschnitt überquert (oder unterhalb) der 200 Tage gleitenden Durchschnitt. Die in diesem Video ist eine 61-tägige und 93-tägige gleitende durchschnittliche Crossover, in der wir auch einen 10-Stopp-Verlust mit der ApplyStop-Funktion in Amibroker hinzufügen. Dies hilft reduzieren die maximale ziehen ein wenig, um das System ein wenig komfortabler zu machen. Sie könnten, wenn Sie wollten, auch wenn es mit einem 60 Tag und 90 Tage gleitenden Durchschnitt 8211 die Ergebnisse sind ähnlich. Insgesamt hat das System in den letzten 13 Jahren durchschnittlich 28 pro Jahr zurückgegeben. Natürlich, wie Sie wissen, ist dies keine Garantie für die zukünftige Leistung, sondern kann Ihnen Ideen für die Schaffung Ihrer eigenen Handelssysteme. Schauen Sie sich das Video unten an Die Ergebnisse des Moving Average Crossover Trading Systems: Auf einer ASX 200 Liste über 13 Jahre: Gewinn Prozent: 49 Durchschnittliche jährliche Rückkehr: 36 p. a. Maximaler System Drawdown: 45 Nach dem Hinzufügen eines 10 Stop Loss: Gewinn Prozent: 41 Durchschnittliche jährliche Rückkehr: 28 p. a. Maximales System Drawdown: 37 Offensichtlich ist es ratsam, dieses Trading System selbst zu testen, Teile hinzuzufügen oder zu modifizieren, um Ihren eigenen Bedürfnissen anzupassen, wobei Sie sich Ihrer maximalen Drawdown-Schmerzgrenze bewusst sind und die Notwendigkeit, auf Out-of-Probe-Daten zu testen, zu verstehen. Aber es ist ein toller Blick auf ein anderes Handelssystem und wie man es in Amibroker kodiert Wir können auch die hinteren Testergebnisse innerhalb von Sekunden sehen, anstatt es selbst zu testen und Wochen oder Monate zu nehmen. Dies sind die großen Vorteile der automatischen Prüfung schnell, frei und einfach. Ich hoffe das hilft, glückliche Trends und genießen Sie 8211 Dave McLachlan Videos im kostenlosen Amibroker Kurs: Kostenlose Trading System Video Lektionen: Kostenlose Amibroker Q amp A Videos: 6 Responses Leave a ReplyStock Market Timing Strategie: Die Moving Average Crossover Der gleitende Durchschnitt ist ein Äußerst nützliche Indikator, der in vielen verschiedenen Branchen verwendet wird, nicht nur finanzieren. Und it8217s Macht als Börsen-Timing-Strategie ist wichtig zu wissen. In den Märkten überlagern die Händler gleitende Durchschnitte auf ihren Preistabellen, um zu zeigen, wann ein Markt trifft und objektive Kauf - und Verkaufssignale liefert. Preiskarte mit gleitenden Durchschnitten überlagert. Src: IG Index. Wenn sich ein gleitender Durchschnitt nach oben bewegt, zeigt sich, dass der Markt im Allgemeinen höher ist, während sich ein gleitender Durchschnitt nach unten bewegt, zeigt er, dass der Markt niedriger ist. Durchgehende durchschnittliche Crossover werden auch verwendet, um Trendänderungen zu identifizieren. Wenn also ein schnell gleitender Durchschnitt wie der 50-Tage-Gleitender Durchschnitt einen langsameren gleitenden Durchschnitt übertrifft, wie der 200-Tage-Gleitender Durchschnitt, so kann man sagen, dass sich der Markt von einem Abwärtstrend zu einem neuen Aufwärtstrend geändert hat. Und das ist den Händlern als Goldenes Kreuz bekannt. Das Gegenteil von diesem tritt auf, wenn der 50-tägige gleitende Durchschnitt kreuzt unter dem 200-tägigen gleitenden Durchschnitt und dies wird als Death Cross bekannt. Mit dem gleitenden Durchschnitt als Filter Einige Händler glauben, dass das Goldene Kreuz ein starkes Signal ist, den Aktienmarkt zu kaufen und ein Todeskreuz ist ein starkes Signal zu verkaufen, basierend auf der Annahme, dass sich die Finanzmärkte in mittel - bis langfristigen Trends bewegen. Wenn Sie diese beiden Signale verwenden, können Sie Gewinne erfassen, wenn der Markt höher wird und in Bargeld umziehen, wenn der Markt niedriger wird. So läßt man einige Daten jetzt laden und sehen, wie diese Börsen-Timing-Strategie tatsächlich in den letzten 100 Jahren gespielt hat. Also, vor allem Im gehe, um einige historische tägliche Daten für die Dow Jones Industrial Average in Amibroker zu laden und Im gehend, die Kauf-und Hold-Renditen zwischen 1900 und 2014 zu berechnen. So wie Sie aus den folgenden Ergebnissen sehen können, die annualisierte nominal Rückkehr vom Kauf und Halten mit dem Dow Jones ist 5.22. Und der maximale Drawdown ist 89. Die während der Großen Depression aufgetreten ist. (Drawdown ist eine Möglichkeit, den Peak-to-Trog-Rückgang einer Investition zu messen. In diesem Fall hätte die Buy-and-Hold-Investition im Jahr 1929 89 von der Spitze im Jahr 1929 auf den Trog verloren. Es ist zu erwähnen, dass dies die nominellen Renditen sind. Um die tatsächlichen, realen Renditen zu erzielen, ist es notwendig, die Daten für neu investierte Dividenden sowie für die Inflation anzupassen. Es ist möglich, diese Anpassung durchzuführen, aber für die täglichen Daten hier ist es nicht so einfach. Daher werden Nominalrenditen verwendet. Denken Sie daran, dass die Renditen aufgrund der Dividenden etwas höher im realen Leben sein können. Im Allgemeinen hat sich gezeigt, dass die Börse um 6-7 auf lange Sicht zurückkehrt. 89 Abzug während der Großen Depression. Laufen der Crossover-Strategie Jetzt, anstatt einen Buy-and-Hold-Ansatz zu verwenden, werden wir nur den Dow kaufen, wenn der 50-Tage-Gleitende Durchschnitt den 200-Tage-Gleitender Durchschnitt (ein Goldenes Kreuz) überquert. Und wir werden den Markt verkaufen, wenn die 50-Tage-MA unter dem 200-Tage-MA (ein Todeskreuz) kreuzt. Sie können aus den folgenden Ergebnissen sehen, dass der gleitende durchschnittliche Filter gearbeitet hat: Also, anstatt nur den Index zu kaufen und zu halten, haben wir tatsächlich 81 Trades über den Zeitraum gemacht. Und das nächste Diagramm zeigt sich aus den neueren Trades. Grüne Pfeile sind Kaufsignale und rote Pfeile sind Verkaufssignale. Sie können sehen, dass der gleitende Durchschnitt uns tatsächlich vor dem Kreditrisiko aus dem Markt gebracht hat. Und es hat uns am 1. Juli 2009 wieder in den Markt gebracht. Jetzt können wir dasselbe machen aber auf einem anderen Datensatz. Also in diesem Fall, Ill führen die Kauf-und Hold-Strategie auf dem SampP 500 Index zwischen 1955 und 2014. Und Sie können aus den Ergebnissen, dass die annualisierte Rendite von Kauf und halten ist 6,65 mit einem Drawdown von -57 für den Zeitraum zu sehen. Und hier gibt der Kauf und Halt uns eine 1.65 jährliche Rendite und ein Drawdown von der Kreditkrise von -57. Dies führt zu einer sehr instabilen Eigenkapitalkurve, wie Sie unten sehen können: Mittlerweile führt die gleitende durchschnittliche Crossover-Strategie zu einer jährlichen Rendite von 6,06 mit einem Drawdown von nur 20. Und wie Sie sehen können, ist die Aktienkurve mit dem gleitenden durchschnittlichen Crossover viel weniger beängstigend. Wiederum hat die gleitende durchschnittliche Strategie uns während des größten Teils des Marktcrashs im Jahr 2008 aus dem Markt gehalten. MA Crossover-Strategie: Zusammenfassung Insgesamt sagt Id, dass dies ein Gewinn für die gleitende durchschnittliche Crossover als Börsen-Timing-Strategie ist. Wir haben drei Tests durchgeführt und die beliebte Golden Cross Strategie hat uns geholfen, den Markt besser als den Kauf und halten bei jeder Gelegenheit. Für mich ist das Wichtigste, dass es unser Engagement gegenüber Verlusten bei Bärenmärkten stark reduziert hat. Natürlich können wir weiter auf dieser Straße gehen und uns die verschiedenen gleitenden Durchschnittsgeschwindigkeiten und verschiedene Zeitrahmen ansehen, aber ich möchte nicht zu viel optimieren, so dass ich es dir erlauben werde, dich zu untersuchen. Mit dem breiteren Markt zu Zeit ein Portfolio So jetzt haben wir gesehen, wie die einfache gleitenden Durchschnitt kann helfen, wenn Timing der Börse. Aber was ist, wenn wir nicht daran interessiert sind, den Aktienmarkt selbst zu kaufen, sondern ein Portfolio von verschiedenen Aktien. Vielleicht kann der breitere Börsenplatz auch bei unseren individuellen Aktiengeschäften helfen. Um dies zu testen, habe ich eine sehr einfache Aktienportfolio-Strategie auf der Grundlage von Impuls und 52-Wochen-Highs eingerichtet. Ganz einfach, wann immer eine Aktie bei einem neuen 52-Wochen-Hoch schließt, wird diese Aktie dem Portfolio beim nächsten Open hinzugefügt. Immer wenn es bei einer neuen 26-Wochen-Tiefgrenze schließt, wird die Aktie am nächsten offen verkauft und es fällt aus dem Portfolio ab. Das Portfolio kann zu jedem beliebigen Zeitpunkt maximal 10 Aktien halten und jeder wird gleichermaßen gewichtet. Die Strategie wählt Aktien aus dem SampP 500 Universum und Provisionen werden auf 10 pro Handel mit einem Startkapital von 10.000 gesetzt. Die Durchführung dieser grundlegenden Portfolio-Strategie führte zu einer jährlichen Rendite von 9,69 zwischen 2000 und 2014, was ziemlich gut ist. Mit dem SampP 500 als Filter Viele Praktizierende glauben, dass es am besten ist, nur Aktien zu kaufen, wenn der breitere Markt nach oben tendiert und diese Aktien verkauft, wenn der Markt nach Süden oder in einem Bärentest geht. Ein Marktfilter könnte daher in der Lage sein, eine einfache Impulsstrategie wie diese zu verbessern, indem man das Portfolio in Bargeld nimmt, wenn der breitere Aktienmarkt niedriger wird. Also, wenn wir einen Marktfilter vorstellen, so dass wir nur Aktien kaufen, wenn der SampP 500 in einem Aufwärtstrend ist Für den nächsten Test werden Aktien nur gekauft und dem Portfolio hinzugefügt, wenn der 50-Tage-Gleitender Durchschnitt der SampP 500 ist Über it8217s 200-Tage gleitender Durchschnitt. Wenn der 50-tägige gleitende Durchschnitt der SampP 500 unter it8217s 200-Tage gleitender Durchschnitt überschreitet, werden alle Aktien verkauft und das Portfolio bewegt sich in bar. Sobald ein neues goldenes Kreuz in der SampP 500 auftritt, darf das System wieder mit dem Kauf von Aktien beginnen. Die Durchführung dieser Strategie mit dem SampP 500 Marktfilter führte zu einer Rückkehr von 7,47 und einem Drawdown von -12. Also, obwohl die jährliche Rendite gegangen ist, ist der Drawdown deutlich verbessert und die Eigenkapitalkurve ist sehr viel glatter: Dieses Mal wird das System eine Aktie kaufen, wann immer es eine 52-wöchige Höhe macht, genau wie der erste Test. Es wird dann alle Bestände im Portfolio verkaufen, wenn ein Todeskreuz in der SampP 500 auftritt. Auf diese Weise werden Positionen abgeschnitten, wenn der breitere Markt sinkt. Allerdings gibt es keinen Filter für lange Trades wie Test zwei. Mit anderen Worten, der Markt muss nicht in einem voll gebildeten Aufwärtstrend sein, um neue Trades zu initiieren und das gibt der Strategie ein bisschen mehr Flexibilität und Exposition. Die Durchführung dieses Tests führte zu einer jährlichen Rendite von 5,49 und einem Drawdown von -38. Im Vergleich zur ursprünglichen Strategie ist der Drawdown gesunken, aber die jährliche Rendite hat ebenfalls gelitten. Es scheint mir, dass das Problem mit dem Test drei ist, dass das System ist zu gewinnen gewinnen Positionen zu früh. Gerade weil der breitere Markt auf dem Weg ist, bedeutet das nicht, dass es keine Einzelaktien gibt, die die Benchmark übertreffen. Also im nächsten Test mache ich das Gegenteil. Stocks are only bought if the SampP 500 is in an uptrend (the 50 MA is above the 200 MA) but they are not sold if the SampP 500 moves into a downtrend. This gives a better annual return of 8.78 and a maximum drawdown of -29. Next I will quickly take each of these tests back to the beginning of the data set to see what happens on a longer time frame. (By the way, I am using stocks from the SampP 500 universe that includes historical constituents, this is provided by Norgate Premium Data .) Test 1, between 1985 and 2014, produced an annual return of 10.01 with a maximum drawdown of -33 . This is the original system with no market timing filter. Test 2, between 1985 and 2014, produced an annual return of 6.93 with a -34 drawdown so this was much much worse than our previous result. From looking at the results and equity curve, the buy criteria may be too strict. Test 3, between 1985 and 2014, produced an annual return of 3.73 with a maximum drawdown of -31 . Again, this is a bad result for the market timing filter. Test 4, between 1985 and 2014, produced an annual return of 8.71 and a maximum drawdown of -31 . Portfolio filter: Summary Overall, the moving average filter appears to have some merit when used to trade the broader stock market. However, the case is not so clear-cut when used as part of a portfolio strategy. When timing the overall market, the crossover strategy improves both drawdown and return in most cases. But when using the crossover as a filter for a momentum portfolio strategy, there is no clear improvement in either. One reason for this could be that the momentum portfolio already has it8217s own exit criteria built into the system. Using an extra market filter adds extra complexity and might therefore be overkill. One thing the momentum portfolio needs to succeed is to be able to capture long tail profits in stocks so the cutting short of trades is not always helpful. It is also possible that the market filter criteria is simply too strict and by changing the parameters slightly, we might be able to improve results. That may be so, but these results do suggest one thing at least that the market filter strategy is not necessarily a magic bullet for portfolio systems, and this also confirms my own previous findings. Charts provided by Amibroker. Dow Jones data from Measuring Worth. All other stock market data from Norgate Premium Data . JB MarwoodSimple Triple Moving Average Crossover 8211 Amibroker AFL Code Here is the very simple and classical example to build a triple EMA (Exponential Moving Average Crossover system). System is quite popular if anyone (traderinvestor) is a newbie to classical technical analysis. In this AFL the triple moving average buy, sell signals are coded and comes with Scanning and Exploration functionality. It is a simple trend following system where the system shows buy signal if 3 EMA 13 EMA 34 EMA and shows a sell signal if 3 EMA Averages and applydrag-and-drop the Triple Moving Average Crossover code over blank chart. 7)Bingo you are done. Now you will be able to see the triple moving average crossover with buy and sell indicators. Related Readings and Observations About Rajandran Rajandran is a Full time trader and founder of Marketcalls, hugely interested in building timing models, algos. discretionary trading concepts and Trading Sentimental analysis. He now instructs users all over the world, from experienced traders, professional traders to individual traders. Rajandran attended college in the Chennai where he earned a BE in Electronics and Communications. Rajandran has a broad understanding of trading softwares like Amibroker, Ninjatrader, Esignal, Metastock, Motivewave, Market Analyst(Optuma),Metatrader, Tradingivew, Python and understands individual needs of traders and investors utilizing a wide range of methodologies. Thanks very much. Required US Government Disclaimer CTFC Rule 4.41 Futures trading contains substantial risk and is not suitable for every investor. An investor could potentially lose all or more than the initial investment. Risk capital is money that can be lost without jeopardizing ones financial security or lifestyle. Only consider risk capital that should be used for trading and only those with sufficient risk capital should consider trading. Past performance is not necessarily indicative of future results. CTFC RULE 4.41 HYPOTHETICAL OR SIMULATED PERFORMANCE RESULTS HAVE CERTAIN LIMITATIONS. UNTERNEHMEN EINE TATSÄCHLICHE LEISTUNGSAUFNAHME, ERFOLGREICHE ERGEBNISSE NICHT VERTRETEN AKTUELLES HANDEL. ALSO, SINCE THE TRADES HAVE NOT BEEN EXECUTED, THE RESULTS MAY HAVE UNDER-OR-OVER COMPENSATED FOR THE IMPACT, IF ANY, OF CERTAIN MARKET FACTORS SUCH AS LIQUIDITY. SIMULIERTE HANDELSPROGRAMME IN ALLGEMEINEN SIND AUCH AUF DIE TATSACHE, DIE SIE MIT DEM BENEFIT VON HINDSIGHT ENTWICKELT WERDEN. KEINE REPRÄSENTATION IST GEMACHT, DASS JEDES KONTO WIRD ODER IST, WIE GEWINNEN ODER VERLUSTE ÄNDERN ZU DIESEM ANGEBOT ZU ERHÖHEN. All trades, patterns, charts, systems, etc. discussed in this website or advertisement are for illustrative purposes only and not construed as specific advisory recommendations. All ideas and materials presented herein are for information and educational purposes only. No system or trading methodology has ever been developed that can guarantee profits or prevent losses. The testimonials and examples used herein are exceptional results which do not apply to average people and are not intended to represent or guarantee that anyone will achieve the same or similar results. Trades placed on the reliance of Trend Methods systems are taken at your own risk for your own account. This is not an offer to buy or sell futures interests. Copyright 2015 Marketcalls Financial Services Pvt Ltd middot All Rights Reserved middot And Our Sitemap middot All Logos amp Trademark Belongs To Their Respective Ownersmiddot Data and information is provided for informational purposes only, and is not intended for trading purposes. Neither marketcalls. in website nor any of its promoters shall be liable for any errors or delays in the content, or for any actions taken in reliance thereon.

No comments:

Post a Comment