Idealerweise möchten Sie ein gefiltertes Signal sowohl glatt als auch verzögerungsfrei. Lag verursacht Verzögerungen in Ihren Trades, und zunehmende Verzögerung in Ihren Indikatoren führen in der Regel zu niedrigeren Gewinnen. Mit anderen Worten, verspäteten Ecken bekommen, was auf dem Tisch bleibt, nachdem das Fest schon begonnen hat. Deshalb investieren Investoren, Banken und Institutionen weltweit den Jurik Research Moving Average (JMA). Sie können es so anwenden wie jeder andere beliebte gleitende Durchschnitt. JMAs verbessert Timing und Glätte wird Sie verblüffen. Die gezackte graue Linie im Diagramm simuliert Preisaktionen, die in einer niedrigen Handelsspanne beginnen, dann Lücken zu einer höheren Handelsspanne. Da niemand an der Seitenlinie wartet, bewegt sich ein perfekter Rauschreduzierungsfilter (grüne Linie) gleichmäßig in der Mitte der ersten Handelsspanne und springt dann fast sofort in die Mitte der neuen Handelsspanne. Adaptive Moving Averages Lead To Better Ergebnisse Gleitende Durchschnitte sind ein Lieblingsinstrument von aktiven Händlern. Allerdings, wenn die Märkte zu konsolidieren, führt dieser Indikator zu zahlreichen whipsaw Trades, was zu einer frustrierenden Reihe von kleinen Siegen und Verluste. Analytiker haben Jahrzehnte versucht, den einfachen gleitenden Durchschnitt zu verbessern. In diesem Artikel betrachten wir diese Bemühungen und finden, dass ihre Suche zu nützlichen Trading-Tools geführt hat. (Für den Hintergrund, der auf einfachen gleitenden Durchschnitten überprüft, überprüfen Sie einfaches bewegendes Mittel, das Trends hervorhebt.) Vor - und Nachteile der bewegenden Durchschnitte Die Vor - und Nachteile der gleitenden Durchschnitte wurden von Robert Edwards und von John Magee in der ersten Ausgabe der technischen Analyse von zusammengefasst Aktien-Trends. Wenn sie sagten, und es war schon im Jahre 1941, dass wir die Entdeckung (obwohl viele andere es vorher gemacht haben), dass durch die Mittelung der Daten für eine bestimmte Anzahl von Tagen konnte man eine Art von automatisierten Trendlinie, die definitiv interpretieren würde die Änderungen der TrendIt schien fast zu gut um wahr zu sein. Tatsächlich war es zu schön, um wahr zu sein. Mit den Nachteilen überwiegen die Vorteile, Edwards und Magee schnell aufgegeben ihren Traum vom Handel von einem Strand Bungalow. Aber 60 Jahre nachdem sie diese Worte geschrieben haben, bestehen andere darin, ein einfaches Werkzeug zu finden, das mühelos den Reichtum der Märkte liefern würde. Simple Moving Averages Um einen einfachen gleitenden Durchschnitt zu berechnen. Fügen Sie die Preise für den gewünschten Zeitraum und dividieren durch die Anzahl der Perioden ausgewählt. Die Suche nach einem fünftägigen gleitenden Durchschnitt würde Summierung der fünf letzten Schlusskurse und die Teilung von fünf. Wenn das letzte Schließen über dem gleitenden Durchschnitt liegt, würde die Aktie als in einem Aufwärtstrend betrachtet werden. Abwärtstrends werden durch den Handel unter dem gleitenden Durchschnitt definiert. (Für mehr, siehe unsere Moving Averages Tutorial.) Diese Trend-Definition-Eigenschaft ermöglicht es, dass gleitende Durchschnitte, um Trading-Signale zu generieren. In ihrer einfachsten Anwendung kaufen Händler, wenn Preise über dem gleitenden Durchschnitt sich bewegen und verkaufen, wenn Preise unter dieser Linie übersteigen. Ein solcher Ansatz ist garantiert, um den Händler auf die rechte Seite jedes bedeutenden Handels zu setzen. Leider, während Glättung der Daten, bewegte Durchschnitte werden sich hinter der Markt-Aktion und der Händler wird fast immer geben einen großen Teil ihrer Gewinne auf sogar die größten Gewinn-Trades. Exponential Moving Averages Analysten scheinen die Idee des gleitenden Durchschnitts zu mögen und haben jahrelang versucht, die mit dieser Verzögerung verbundenen Probleme zu reduzieren. Eine dieser Innovationen ist der exponentielle gleitende Durchschnitt (EMA). Dieser Ansatz weist den jüngsten Daten eine relativ höhere Gewichtung zu und bleibt dadurch der Preisaktion näher als ein einfacher gleitender Durchschnitt. Die Formel zur Berechnung eines exponentiellen gleitenden Mittelwertes ist: EMA (Gewicht schließen) ((1-Gewicht) EMAy) Dabei: Gewicht ist die vom Analytiker gewählte Glättungskonstante EMAy ist der exponentielle gleitende Durchschnitt von gestern Ein gemeinsamer Gewichtungswert ist 0,181 Ist nah an einem 20-tägigen einfachen gleitenden Durchschnitt. Eine andere ist 0,10, was ungefähr ein 10-Tage-gleitender Durchschnitt ist. Obwohl es die Verzögerung verringert, kann der exponentielle gleitende Durchschnitt nicht ein anderes Problem mit sich bewegenden Durchschnittswerten ansprechen, was bedeutet, dass ihre Verwendung für Handelssignale zu einer großen Anzahl von verlierenden Geschäften führen wird. In neuen Konzepten in technischen Handelssystemen. Welles Wilder schätzt, dass Märkte nur Trend ein Viertel der Zeit. Bis zu 75 Handelsgeschäfte beschränken sich auf enge Bereiche, wenn gleitende durchschnittliche Kauf - und Verkaufssignale wiederholt erzeugt werden, da sich die Preise rasch und deutlich über dem gleitenden Durchschnitt bewegen. Um dieses Problem zu lösen, haben mehrere Analysten vorgeschlagen, den Gewichtungsfaktor der EMA-Berechnung zu variieren. (Weitere Informationen finden Sie unter Wie werden gleitende Durchschnitte im Handel verwendet) Anpassung der gleitenden Durchschnitte an die Marktaktivität Eine Methode, um die Nachteile der gleitenden Durchschnitte zu adressieren, besteht darin, den Gewichtungsfaktor mit einem Volatilitätsverhältnis zu multiplizieren. Dies würde bedeuten, dass der gleitende Durchschnitt weiter von dem aktuellen Preis in volatilen Märkten wäre. Dies würde Gewinner zu laufen. Als Trend geht ein Ende und die Preise konsolidieren. Würde der gleitende Durchschnitt näher an der gegenwärtigen Marktbewegung herangehen und theoretisch dem Trader erlauben, die meisten der erhaltenen Gewinne während des Trends zu halten. In der Praxis kann das Volatilitätsverhältnis ein Indikator wie die Bollinger-Bandbreite sein, die den Abstand zwischen den bekannten Bollinger-Bändern misst. Perry Kaufman schlug vor, die Gewichtsvariable in der EMA-Formel mit einer Konstante zu ersetzen, die auf dem Wirkungsgradverhältnis (ER) basiert, in seinem Buch "New Trading Systems and Methods". Dieser Indikator soll die Stärke eines Trends messen, der in einem Bereich von -1,0 bis 1,0 liegt. Es wird mit einer einfachen Formel berechnet: ER (Gesamtpreisänderung für Periode) (Summe der absoluten Preisänderungen für jeden Balken) Betrachten Sie eine Aktie, die einen Fünfpunktbereich pro Tag hat, und am Ende von fünf Tagen insgesamt gewonnen hat Von 15 Punkten. Dies würde zu einem ER von 0,67 führen (15 Punkte Aufwärtsbewegung geteilt durch den gesamten 25-Punkte-Bereich). Wäre dieser Bestand um 15 Punkte gesunken, wäre der ER -0,67. (Für weitere Trading-Tipps von Perry Kaufman, lesen Sie Losing To Win, die Strategien für die Bewältigung der Handelsverluste skizziert.) Das Prinzip der Trends Effizienz basiert auf, wie viel Richtungsbewegung (oder Trend) Sie pro Einheit der Preisbewegung über ein Definierten Zeitraum. Ein ER von 1,0 zeigt an, dass der Bestand in einem perfekten Aufwärtstrend liegt -1,0 repräsentiert einen perfekten Abwärtstrend. Praktisch werden die Extreme selten erreicht. Um diesen Indikator zu finden, um den adaptiven gleitenden Durchschnitt (AMA) zu finden, müssen Händler das Gewicht mit der folgenden komplexen Formel berechnen: C (ER (SCF SCS)) SCS 2 Wobei: SCF die Exponentialkonstante für die schnellste ist EMA zulässig (meist 2) SCS ist die Exponentialkonstante für die langsamste EMA zulässig (oft 30) ER ist das oben erwähnte Wirkungsgrad-Verhältnis Der Wert für C wird dann in der EMA-Formel anstelle der einfacheren Gewichtsvariablen verwendet. Obwohl es schwierig ist, von Hand zu berechnen, ist der adaptive gleitende Durchschnitt in fast allen Handelssoftwarepaketen als Option enthalten. (Beispiele für einen einfachen gleitenden Durchschnitt (rote Linie), einen exponentiellen gleitenden Durchschnitt (blaue Linie) und den adaptiven gleitenden Durchschnitt (grüne Linie) sind in 1 gezeigt. Abbildung 1: Die AMA ist grün und zeigt den größtmöglichen Abflachungsgrad in der Bereichsgrenze auf der rechten Seite dieser Tabelle. In den meisten Fällen ist der exponentielle gleitende Durchschnitt, der als blaue Linie dargestellt ist, der Preisaktion am nächsten. Der einfache gleitende Durchschnitt wird als rote Linie angezeigt. Die drei gleitenden Durchschnitte, die in der Figur gezeigt werden, sind alle anfällig für whipsaw Trades zu verschiedenen Zeiten. Dieser Nachteil bei den gleitenden Durchschnitten ist bisher nicht auszuschließen. Fazit Robert Colby getestet Hunderte von technischen Analyse-Tools in The Encyclopedia of Technical Market Indicators. Er schloss, Obwohl der adaptive gleitende Durchschnitt eine interessante neuere Idee mit beträchtlichem intellektuellem Anklang ist, zeigen unsere vorläufigen Tests keinen wirklichen praktischen Vorteil zu dieser komplexeren Trendglättungsmethode. Dieses bedeutet nicht, daß Händler die Idee ignorieren sollten. Die AMA könnte mit anderen Indikatoren kombiniert werden, um ein profitables Handelssystem zu entwickeln. (Mehr zu diesem Thema finden Sie unter Entdeckung von Keltner-Kanälen und dem Chaikin-Oszillator.) Der ER kann als eigenständiger Trendindikator genutzt werden, um die profitabelsten Handelsmöglichkeiten zu erkennen. Als Beispiel zeigen Verhältnisse über 0,30 starke Aufwärtstrends und stellen potentielle Käufe dar. Alternativ, da die Volatilität bewegt sich in Zyklen, die Bestände mit dem niedrigsten Effizienz-Verhältnis könnte als Ausbruch Chancen beobachtet werden. How, um das Handelssystem zu optimieren HINWEIS: Dies ist ziemlich fortgeschrittenes Thema. Bitte vorherige AFL Tutorials lesen. Die Idee hinter einer Optimierung ist einfach. Zuerst müssen Sie ein Handelssystem haben, kann dies eine einfache gleitende durchschnittliche Crossover zum Beispiel sein. In fast jedem System gibt es einige Parameter (als Mittelungsperiode), die entscheiden, wie sich das gegebene System verhält (d. h. ist gut geeignet für Langzeit - oder Kurzfristigkeit, wie reagiert er auf hochvolatile Bestände usw.). Die Optimierung ist der Prozess der Suche nach optimalen Werten dieser Parameter (mit dem größten Gewinn aus dem System) für ein bestimmtes Symbol (oder ein Portfolio von Symbolen). AmiBroker ist eines der wenigen Programme, mit denen Sie Ihr System auf mehrere Symbole auf einmal optimieren können. Zur Optimierung Ihres Systems müssen Sie von einem bis zu zehn zu optimierenden Parametern definieren. Sie entscheiden, was ein minimaler und maximal zulässiger Wert des Parameters ist und in welchen Schritten dieser Wert aktualisiert werden soll. AmiBroker führt dann mehrere Backtests durch, wobei das System ALLE mögliche Kombinationen von Parameterwerten verwendet. Wenn dieser Vorgang beendet ist, zeigt AmiBroker die Ergebnisliste nach Nettogewinn an. Sie können die Werte der Optimierungsparameter sehen, die das beste Ergebnis liefern. AFL-Formel schreiben Optimierung im Backtester wird über die neue Funktion optimize unterstützt. Die Syntax dieser Funktion lautet wie folgt: Variable optimize (Variable), Variable - ist normale AFL-Variable, die den von der Optimierungsfunktion zurückgegebenen Wert zugewiesen bekommt. Bei normalen Backtesting-, Scan-, Explorations - und Comentary-Modi gibt die Funktion optimize die Standardeinstellung zurück, sodass der obige Funktionsaufruf gleichbedeutend ist mit: variable default Im Optimierungsmodus optimiert die Funktion sukzessive Werte von min bis max (inkl. Beschreibungquot ist ein String, der verwendet wird, um die Optimierungsvariable zu identifizieren, und wird als Spaltenname in der Optimierungsergebnisliste angezeigt. Voreinstellung ist ein Vorgabewert, der die Funktionswiederkehr in Explorations-, Indikator-, Kommentar-, Scan - und normalen Rücktestmodi optimiert. Min ist ein Minimalwert der Variablen, die optimiert wird. Max ist ein Maximalwert der Variablen, die optimiert wird Wert von min bis max AmiBroker unterstützt bis zu 64 Aufrufe zur Optimierung der Funktion (also bis zu 64 Optimierungsvariablen), beachten Sie, dass, wenn Sie erschöpfende Optimierung verwenden, dann ist es wirklich eine gute Idee, die Anzahl der Optimierungsvariablen auf nur wenige zu beschränken. Jeder Aufruf zu optimieren generieren (max - min) Schritt Optimierung Schleifen und mehrere Aufrufe zu optimieren multiplizieren die Anzahl der erforderlichen Läufe. Zum Beispiel erfordert die Optimierung von zwei Parametern in 10 Schritten 1010 100 Optimierungsschleifen. Call Optimize-Funktion nur ONCE pro Variable am Anfang der Formel, da jeder Aufruf erzeugt eine neue Optimierung Schleifen Multiple-Symbol-Optimierung wird voll unterstützt durch AmiBroker Maximale Suchraum ist 2 64 (10 19 10.000.000.000.000.000) Kombinationen 1. Single Variable Optimierung: sigavg Optimize (Signal Durchschnitt 9. 2. 20. 1) Kaufen Cross (MACD (12. 26), Signal (12. 26. sigavg)) Verkauf Cross (Signal (12. 26. sigavg), MACD (12. 26)) 2. Zwei-Variable Optimierung (geeignet für 3D-Charting) pro Optimize (pro 2. 2. 50. 1) Level Optimize (Stufe 2. 2. 150. 4) Kaufen Cross (CCI (per), - Level) Verkaufen (MACD Fast, 12. 12. 16. 1.) mslow Optimize (MACD-Slow. 26. 17. 30. 1) sigavg Optimieren (Signal (Mfast, mslow, sigavg)) Verkauf Kreuz (Signal (mfast, mslow, sigavg), MACD (mfast, mslow)) Nach dem Betreten Klicken Sie einfach auf die Schaltfläche "Optimieren" im Fenster "Automatisches Analyse-Fenster". AmiBroker wird alle möglichen Kombinationen von Optimierungsvariablen testen und die Ergebnisse in der Liste melden. Nach der Optimierung wird die Ergebnisliste nach dem Nettogewinn dargestellt. Da Sie die Ergebnisse nach jeder Spalte in der Ergebnisliste sortieren können, ist es einfach, die optimalen Parameterwerte für den niedrigsten Drawdown, die geringste Anzahl an Trades, den größten Gewinnfaktor, das niedrigste Marktrisiko und den höchsten risikoadjustierten Jahresertrag zu erhalten. Die letzten Spalten der Ergebnisliste zeigen die Werte der Optimierungsvariablen für den gegebenen Test an. Wenn Sie entscheiden, welche Kombination von Parametern Ihren Bedürfnissen am besten entspricht, sollten Sie die Standardwerte bei der Optimierung von Funktionsaufrufen durch die optimalen Werte ersetzen. Im aktuellen Schritt müssen Sie sie von Hand in das Formel-Edit-Fenster (der zweite Parameter für optimieren Funktionsaufruf) eingeben. 3D-animierte Optimierungsdiagramme anzeigen Um das 3D-Optimierungsdiagramm anzuzeigen, müssen Sie zuerst die Optimierung mit zwei Variablen durchführen. Zwei variable Optimierung braucht eine Formel mit 2 Optimize () - Funktionsaufrufen. Eine Beispiel-Zwei-Variablen-Optimierungsformel sieht wie folgt aus: pro Optimize (pro 2. 2. 50. 1) Level Optimize (Stufe 2. 2. 150. 4) Kaufen Cross (CCI (per), - Level) Verkauf Cross (Level, CCI (per)) Nachdem Sie die Formel eingegeben haben, müssen Sie auf die SchaltflächeOptimizequot klicken. Sobald die Optimierung abgeschlossen ist, klicken Sie auf den Dropdown-Pfeil auf die Schaltfläche Optimieren und wählen Sie 3D-Grafik anzeigen. In wenigen Sekunden erscheint eine bunte dreidimensionale Oberfläche in einem 3D-Diagramm-Viewer-Fenster. Ein Beispiel-3D-Diagramm, das anhand der obigen Formel erstellt wurde, ist unten gezeigt. Die 3D-Diagramme zeigen standardmäßig Werte des Nettogewinns mit Optimierungsvariablen an. Sie können jedoch 3D-Diagramm für jede Spalte in der Optimierung Ergebnis Tabelle. Klicken Sie einfach auf die Spaltenüberschrift, um sie zu sortieren (es wird ein blauer Pfeil angezeigt, der anzeigt, dass die Optimierungsergebnisse nach der ausgewählten Spalte sortiert werden) und dann erneut 3D-Optimierungsgraph auswählen. Indem Sie visualisieren, wie sich Ihre Systemparameter auf die Trading-Performance auswirken, können Sie leichter entscheiden, welche Parameterwerte quotfragilequot erzeugen und welche die Performance des Quotienten ersetzen. Robuste Einstellungen sind Regionen im 3D-Graphen, die allmähliche und nicht abrupte Änderungen in der Oberfläche zeigen. 3D-Optimierungsdiagramme sind ein hervorragendes Werkzeug, um Kurvenanpassungen zu vermeiden. Kurvenanpassung (oder Über-Optimierung) tritt auf, wenn das System komplexer ist, als es sein muss, und all diese Komplexität war auf Marktbedingungen, die nie wieder passieren können konzentriert. 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 mit Hilfe der Maus, der Symbolleiste und der Tastenkombinationen steuern, was auch immer Sie leichter finden. Nachstehend finden Sie die Liste. - zum Drehen - Halten Sie die linke Maustaste gedrückt und bewegen Sie sich in XY-Richtungen - zum Zoomen, Verkleinern - Halten Sie die RECHTS-Maustaste gedrückt und bewegen Sie sich in XY-Richtungen - verschieben (übersetzen) - Halten Sie die linke Maustaste und die STRG-Taste gedrückt Bewegen Sie sich in XY-Richtungen - an Animieren - halten Sie die linke Maustaste gedrückt, ziehen Sie schnell und lassen Sie den Knopf los, während Sie SPACE ziehen - animieren (automatisch drehen) LEFT PFEIL KEY - Links RECHTS PFEIL KEY - vertikal drehen. Rechts UP PFEILTASTE - rotieren horiz. Up DOWN PFEIL SCHLÜSSEL - drehen horiz. nach unten NUMPAD (PLUS) - In der Nähe (Vergrößern) NUMPAD - (MINUS) - Far (verkleinern) NUMPAD 4 - links NUM 6 bewegen - AB Wasserstand bis PAGE - nach oben NUMPAD 2 - - nach unten PAGE UP rechts NUMPAD 8 bewegen - 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 immer 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 einzelne Zeile an der Spitze der Formel: OptimizerSetEngine (quotcmaequot) Sie auch quotspsoquot verwenden können oder quottribquot hier 3. (Optional) Wählen Sie ein Optimierungsziel in Automatische Analyse, Einstellungen, quotWalk - Forwardquot-Registerkarte, Optimierungszielfeld. Wenn Sie diesen Schritt überspringen, wird er für CARMDD optimieren (zusammengesetzte Jahresrendite dividiert durch maximalen Drawdown). Jetzt, wenn Sie die Optimierung mit dieser Formel ausführen, wird es neue evolutionäre (nicht erschöpfende) CMA-ES-Optimierer verwenden. Wie es funktioniert Die Optimierung ist der Prozess der Suche nach Minimum (oder Maximum) der gegebenen Funktion. Jedes Handelssystem kann als Funktion einer bestimmten Anzahl von Argumenten betrachtet werden. Die Eingaben sind Parameter und Zitatdaten. Die Ausgabe ist Ihr Optimierungsziel (zB CARMDD). Und Sie suchen maximal eine gegebene Funktion. Einige der intelligenten Optimierungsalgorithmen basieren auf der Natur (Tierverhalten) - PSO-Algorithmus oder biologischem Prozess - Genetische Algorithmen, und einige basieren auf mathematischen Konzepten, die vom Menschen abgeleitet werden - CMA-ES. Diese Algorithmen werden in vielen verschiedenen Bereichen, einschließlich Finanzen verwendet. Geben Sie quotSO financequot oder quotCMA-ES financequot bei Google ein und Sie werden viele Infos finden. Nicht erschöpfend (oder quotsmartquot) Methoden finden globales oder lokales Optimum. Das Ziel ist natürlich, globale zu finden, aber wenn es einen einzelnen scharfen Peak aus Zillionen-Parameter-Kombinationen, nicht-erschöpfende Methoden 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 derzeit Schiffe mit drei Motoren: Standard Particle Swarm Optimizer (quotspsoquot), Tribes (quottribquot) und CMA-ES (quotcmaequot) - die Namen in Klammern sind in OptimizerSetEngine Anrufe verwendet werden. 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 (Optimalwert) - meist mit vielen Tests (Auswertungen). Jeder Lauf RESTARTS den gesamten Optimierungsprozess vom Neubeginn (neue anfängliche Zufallsbevölkerung). Daher kann jeder Lauf zu der Suche nach verschiedenen lokalen maxmin (wenn es nicht globale finden) führen. Der Parameter "Runs" definiert die Anzahl der folgenden Algorithmusläufe. MaxEval ist die maximale Anzahl von Auswertungen (Baktests) in einem einzigen Lauf. Wenn das Problem relativ einfach ist und 1000 Tests ausreichend sind, um globales Maximum zu finden, ist 5x1000 wahrscheinlicher, globales Maximum zu finden, da es weniger Chancen gibt, in lokalem Maximum zu stecken, da nachfolgende Durchläufe von unterschiedlicher anfänglicher Zufallspopulation beginnen Schwierig sein. Es hängt von Problemen im Test, seine Komplexität, etc., etc. Jede stochastische nicht erschöpfend Methode gibt Ihnen keine Garantie für die Suche nach globalen maxmin, unabhängig von der Anzahl der Tests, wenn es kleiner als erschöpfend ist. Die einfachste Antwort ist. Geben Sie als große Anzahl von Tests, wie es für Sie in Bezug auf die Zeit erforderlich ist, um abgeschlossen ist. Eine weitere einfache Beratung ist die Multiplikation von 10 die Anzahl der Tests mit dem Hinzufügen neuer Dimension. Das kann dazu führen, dass die Anzahl der erforderlichen Tests überschätzt wird, aber es ist ziemlich sicher. Ausgelieferte Motoren sind so konzipiert, dass sie einfach zu bedienen sind, so dass quotreasonablequot standardautomatic Werte verwendet werden, so Optimierung kann in der Regel ohne Angabe von etwas (Annahme von Vorgaben) ausgeführt werden. Es ist wichtig zu verstehen, dass alle intelligenten Optimierungsmethoden am besten in kontinuierlichen Parameterräumen und relativ reibungslosen Zielfunktionen funktionieren. Wenn der Parameterraum diskret ist, können evolutionäre Algorithmen Schwierigkeiten haben, einen optimalen Wert zu finden. Dies gilt insbesondere für binäre (onoff) Parameter - sie eignen sich nicht für jede Suchmethode, die den Gradienten der objektiven Funktionsänderung verwendet (wie die meisten intelligenten Methoden tun). Wenn Ihr Handelssystem viele binäre Parameter enthält, sollten Sie den Smart-Optimierer nicht direkt darauf verwenden. Stattdessen versuchen Sie, nur kontinuierliche Parameter mithilfe des intelligenten Optimierers zu optimieren und binäre Parameter manuell oder über ein externes Skript zu schalten. SPSO - Standard Particle Swarm Optimizer Der Standard Particle Swarm Optimizer basiert auf SPSO2007 Code, der gute Ergebnisse liefern soll, vorausgesetzt, dass korrekte Parameter (d. H. Runs, MaxEval) für ein spezielles Problem vorgesehen sind. Picking richtige Optionen für die PSO-Optimierer kann schwierig sein, die Ergebnisse können erheblich von Fall zu Fall variieren. SPSO. dll kommt mit vollständigen Quellcodes im quotADKquot Unterordner. Beispielcode für Standard-Particle Swarm-Optimierer: (Suche nach optimalen Wert in 1000 Tests im Suchraum von 10000 Kombinationen) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimize (quotsquot, 26, 1, 100, 1 ) 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 Populationsgröße. CMAE. DLL kommt mit vollem Quellcode (innerhalb des quadratischen Quellordners). Standardmäßig 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 benötigten Auswertungen zu minimieren und konvergiert sehr schnell zum Lösungspunkt, so oft findet er Lösungen schneller als andere Strategien. Es ist normal, dass das Plugin einige Auswertungsschritte überspringt, wenn es feststellt, dass die Lösung gefunden wurde, daher sollten Sie nicht überrascht sein, dass sich die Optimierungsfortschrittsanzeige an einigen Stellen sehr schnell bewegen kann. Das Plugin hat auch die Fähigkeit, die Anzahl der Schritte über den ursprünglich geschätzten Wert zu erhöhen, wenn es benötigt wird, um die Lösung zu finden. Aufgrund seiner adaptiven Beschaffenheit ist die quittierte Zeit leftquot unddie Anzahl der durch den Fortschrittsdialog angezeigten Schrittequot nur im Zeitquot am besten und kann während des Optimierungskurses variieren. Um das CMA-ES-Optimierungsprogramm zu verwenden, müssen Sie Ihrem Code nur eine Zeile hinzufügen: Dadurch wird die Optimierung mit den Standardeinstellungen durchgefü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, um lange zu bleiben.
Comments
Post a Comment