StrategyQuant - Computergenerierte Trading-Strategien Platform Use StrategyQuant, um neue automatisierte Handelssysteme für jeden Markt oder Zeitrahmen zu erstellen Erzeugen Sie Hunderte von Strategien pro Stunde Test durchführen Robustheitstests zur Vermeidung von Kurvenanpassungen Eingebauter Walk-Forwad Optimizer und WF Matrix Export als Expert Advisor für MetaTrader4 Oder Strategie für NinjaTrader oder Tradestation und vieles mehr. Bitte melden Sie sich für unseren Newsletter an. Es dauert weniger als eine Minute und es wird es uns ermöglichen, Sie über neue Produkte und Updates benachrichtigt werden. Ich liebe den EA-Assistenten und ich benutze ihn sehr. Ich liebe den EA-Assistenten und ich benutze ihn sehr. Ich wusste nichts über Programmierung in MT4 und hatte oft gewünscht, ich könnte eine EA schreiben. Nun hat Ihr Programm es möglich gemacht. Eine Sache sicher, dass ich mit dem sehr glücklich bin, ist die sehr gute Unterstützung, die Sie anbieten. Sie haben mir wirklich geholfen, ein besseres Verständnis davon zu bekommen, wie man es benutzt. Ich kann nur sagen, ich bin beeindruckt Nachdem ich nun 4 Wochen mit meiner eigenen Version gearbeitet habe, kann ich nur sagen, ich bin beeindruckt. GB hilft mir, die guten Arbeitskombinationen sehr schnell zu finden. Nicht jedenfalls gefällt mir der generierte Quellcode von GB sehr, weil sein sehr klarer und verständlicher, übrigens auch gut dokumentiert ist. Copyright-Kopie StrategyQuant 2012 - 2017, Alle Rechte vorbehalten. High Risk Investment Warning: Der Handel von Devisen - und Anleiheverträgen für Margin-Differenzen trägt ein hohes Risiko und ist möglicherweise nicht für alle Anleger geeignet. Die Möglichkeit besteht, dass Sie einen Verlust über Ihre eingezahlten Gelder aufrechterhalten könnte und daher sollten Sie nicht mit Kapital spekulieren, die Sie sich nicht leisten können, zu verlieren. Die bereitgestellte Information ist nur allgemeine Beratung, die Ihre Ziele, finanziellen Situation oder Bedürfnisse nicht berücksichtigt. Es darf nicht als persönlicher Rat ausgelegt werden. Dieser Beitrag untersucht die Anwendung von NEAT auf den Handel mit dem SampP. Die gelernte Strategie deutlich aus führt Kauf und Halten sowohl in als auch aus der Probe. Ein wesentlicher Bestandteil jedes maschinellen Lernproblems besteht darin, die Merkmale zu definieren und sicherzustellen, dass sie in irgendeiner Weise normalisiert werden. Die Merkmale sind rollierende Perzentile der folgenden wirtschaftlichen Daten, ein rollender Perzentil nimmt die letzten n Datenpunkte und berechnet, was von Datenpunkt der letzte Datenpunkt ist größer als. Die Fitnessfunktion ist das endgültige Eigenkapital und zielt darauf ab, das endgültige Eigenkapital zu maximieren. Jedes Genom, das ein 20-Unentschieden hat, oder Versuche, einen Hebel größer als -2 zu verwenden, wird beendet. In der Praxis Sie wouldn8217t möchten Ihre System-Maschine lernen die Risikokontrollen, da es das Potential, dass sie don8217t gelernt bekommen. Der Grund, warum sie in die Strategie eingebettet sind, besteht darin, den Lernprozess zu beschleunigen, da wir die Genome frühzeitig töten können, bevor die Simulation auf der Grundlage der Unterbrechung der Risikoregeln abgeschlossen ist. Plot aller Daten-Features Es scheint, dass, wenn Nicht-Farmen auf ihre niedrigeren Perzentile fallen die Arbeitslosigkeit erreicht es8217s höchsten Perzentilen der Tag zu Tag Rückkehr in der SampP werden mehr volatil. Es ist zu hoffen, dass das Lernen davon profitieren kann. Das Lernen hat eine Strategie, die aus führt einfach zu kaufen und halten. Die vorgeschlagene Strategie hat einen maximalen Drawdown um 20 vs den Kauf und halten mit einer Ziehung von 40. Darüber hinaus kürzte die Strategie den Index zwischen 2000-2003, wie es verkauft wurde, bevor es lange bis 2007. Generierung einer Rendite von 80 vs kaufen und Halten von 7 Aus den Sample-Ergebnissen In den Out of Sample-Daten (nicht verwendet während des Trainings) die Strategie deutlich aus durchgeführt Kauf und Halten, ca. 250 Return vs 50 mit einem max Drawdown in der Nähe von 20 vs kaufen und halten ziehen von 50. Ein einfaches Tutorial, das demonstriert, wie ein neuronales Netzwerk zu Quadratwurzelzahlen unter Verwendung eines genetischen Algorithmus trainiert wird, der den topologischen Strukturraum durchsucht. Der Algorithmus heißt NEAT (Neuro Evolution of Augmenting Topologies) im RNeat Paket (noch nicht auf CRAN). Das Training ist sehr ähnlich zu anderen maschinellen Lernregressions-Pakete in R. Die Trainingsfunktion nimmt einen Datenrahmen und eine Formel. Die Formel wird verwendet, um anzugeben, welche Spalten im Datenrahmen die abhängigen Variablen sind und welche die erklärende Variable sind. Der Code wird kommentiert und sollte für neue R-Benutzer einfach genug sein. Die Leistung des Netzwerks ist in der unteren linken Grafik des Bildes oben zu sehen, gibt es erhebliche Unterschiede zwischen der erwarteten Ausgabe und der tatsächlichen Ausgabe. Es ist wahrscheinlich, dass mit mehr Training die Größe dieser Fehler zu reduzieren, kann man in der unteren rechten Diagramm sehen, dass die maximale, mittlere und mittlere Fitness sind in der Regel mit jeder Generation zunehmen. Dieser Teil des NEAT-Tutorials zeigt, wie das RNeat-Paket (noch nicht auf CRAN) verwendet werden kann, um das klassische Pole-Balance-Problem zu lösen. Die Simulation erfordert die Implementierung von 5 Funktionen: processInitialStateFunc 8211 Dies legt den Anfangszustand des Systems fest, für das Polbalancenproblem ist der Zustand die Wagenposition, die Wagengeschwindigkeit, die Wagenbeschleunigung, die Kraft, die auf den Wagen, den Polwinkel und den Polwinkel angewendet wird Geschwindigkeits - und Polwinkelbeschleunigung. ProcessUpdateStateFunc 8211 Legt fest, wie der aktuelle Zustand genommen und mit den Ausgängen des neuronalen Netzwerks aktualisiert wird. In diesem Beispiel simuliert diese Funktion die Bewegungsgleichungen und nimmt die neuronale Nettoausgabe als die Kraft an, die auf den Wagen angewendet wird. ProcessStateToNeuralInputFunc 8211 Erlaubt das Ändern der Zustandsnormierung des Zustands, bevor es als Eingabe an das neuronale Netzwerk übergeben wird. FitnessUpdateFunc 8211 Nimmt die alte Fitness, den alten Zustand und den neuen aktualisierten Zustand und bestimmt, was das neue System Fitness ist. Für das Pole-Balance-Problem will diese Funktion das Pendel rechts oben belohnen und belohnt den Wagen in der Nähe der Mitte des Gleises. TerminationCheckFunc 8211 Nimmt den Zustand und prüft, ob die Kündigung beendet werden soll. Kann beschließen, zu beenden, wenn der Pol fällt über, die Simulation lief zu lange oder der Wagen hat sich aus dem Ende der Strecke. PlotStateFunc 8211 Plottet den Zustand, für den Pol Gleichgewicht zieht dies den Wagen und das Pendel. Dieser Teil des Tutorials zur Verwendung des NEAT-Algorithmus erklärt, wie Genome überkreuzt werden in einer sinnvollen Art und Weise unter Beibehaltung ihrer topologischen Informationen und wie Speziation (Gruppe Genome in Arten) verwendet werden können, um schwache Genome mit neuen topologischen Informationen vorzeitig aus dem Gen ausgerottet zu schützen Bevor ihr Gewichtsraum optimiert werden kann. Der erste Teil dieses Tutorials finden Sie hier. Tracking Gene Geschichte durch Innovation Numbers Teil 1 zeigte zwei Mutationen, Link-Mutation und Knoten-Mutation, die beide neue Gene zum Genom hinzugefügt. Jedes Mal, wenn ein neues Gen erzeugt wird (durch eine topologische Innovation), wird eine globale Innovationszahl erhöht und diesem Gen zugeordnet. Die globale Innovationszahl verfolgt den historischen Ursprung jedes Gens. Wenn zwei Gene die gleiche Innovationszahl haben, dann müssen sie die gleiche Topologie repräsentieren (obwohl die Gewichte unterschiedlich sein können). Dies wird während der Gen-Crossover ausgenutzt. Genom Crossover (Paarung) Genom-Crossover nimmt zwei Eltern-Genome (nennen wir sie A und B) und schafft ein neues Genom (nennen wir es das Kind), wobei die stärksten Gene aus A und B alle topologischen Strukturen kopieren. Während der Crossover-Gene sind beide Genome mit ihrer Innovationszahl ausgerichtet. Für jede Innovationszahl wird das Gen aus dem am meisten passenden Elternteil ausgewählt und ins Kindgenom inseriert. Wenn beide Elterngenome die gleiche Fitness sind, dann wird das Gen zufällig aus beiden Elternteilen mit gleicher Wahrscheinlichkeit ausgewählt. Wenn die Innovationszahl nur in einem Elternteil vorhanden ist, dann ist dies als ein disjunktes oder überschüssiges Gen bekannt und stellt eine topologische Innovation dar, es wird auch in das Kind eingefügt. Das Bild unten zeigt den Crossover-Prozess für zwei Genome der gleichen Fitness. Die Speziation nimmt alle Genome in einem gegebenen Genompool auf und versucht, sie in verschiedene Gruppen zu teilen, die als Spezies bekannt sind. Die Genome in jeder Art haben ähnliche Eigenschaften. Eine Methode der Messung der Ähnlichkeit zwischen zwei Genomen ist erforderlich, wenn zwei Genome 8220similar8221 sind, sind sie von der gleichen Spezies. Eine natürliche Maßnahme, die verwendet werden würde, wäre eine gewichtete Summe der Anzahl der disjunkten Ampereüberschüsse (die topologische Unterschiede darstellen) und die Gewichtsdifferenz zwischen passenden Genen. Wenn die gewichtete Summe unterhalb einer Schwelle liegt, dann sind die Genome von der gleichen Spezies. Der Vorteil der Aufspaltung der Genome in Arten ist, dass während der genetischen Evolutionsstufe, in der Genome mit geringer Eignung getötet werden (vollständig aus dem Genompool entfernt), anstatt jedes Genom für sie zu bekämpfen, gegen jedes andere Genom im gesamten Genompool wir können Machen es für sie Kampf gegen Genome der gleichen Spezies. Auf diese Weise Arten, die aus einer neuen topologischen Innovation, die möglicherweise nicht eine hohe Fitness noch aufgrund der nicht mit it8217s Gewichte optimiert haben, werden überleben die Keulenbildung. Zusammenfassung des gesamten Prozesses Erstellen Sie ein Genom-Pool mit n zufällige Genome Nehmen Sie jedes Genom und wenden Sie sich auf Problem-Simulation und berechnen die Genom-Fitness Zuweisen Sie jedes Genom einer Spezies In jeder Spezies cull die Genome, die einige der schwächeren Genome Rasse jede Spezies (nach dem Zufall wählen Sie Genome In der Spezies entweder Crossover oder mutate) Wiederholen Sie alle oben Die vier Teil-Serie wird die NeuroEvolution von Augmentation Topologien (NEAT) - Algorithmus zu erkunden. Teile eins und zwei werden kurz den Algorithmus umreißen und die Vorteile diskutieren, der dritte Teil wird sie auf das Polausgleichs-Problem anwenden und schließlich Teil 4 auf Marktdaten anwenden. Dieser Algorithmus ging vor kurzem viral in einem Video namens MarIO, wo ein Netzwerk entwickelt wurde, die in der Lage, die Vollendung der ersten Ebene von super mario sehen Sie das Video unten. Typischerweise, wenn man ein neuronales Netzwerk verwendet, müssen sie entscheiden, wie viele verborgene Schichten es gibt, die Anzahl der Neuronen in jeder Schicht und welche Verbindungen zwischen den Neuronen bestehen. Je nach Art des Problems kann es sehr schwierig sein, zu wissen, was eine sinnvolle Topologie ist. Sobald die Topologie gewählt wird, wird sie höchstwahrscheinlich mit Backpropagation oder einem genetischen Evolutionsansatz trainiert und getestet. Der genetische Evolutionsansatz sucht im Wesentlichen durch den Raum der Verbindungsgewichte und die Auswahl leistungsstarker Netzwerke und deren Züchtung (dies wird als feste Topologie-Evolution bezeichnet). Der oben genannte Ansatz findet optimale Verbindungsgewichte, it8217s dann unten zu einem 8220expert8221, um manuell die Topologie des Netzes zu manipulieren, um iterativ besser durchführende Netzwerke zu finden. Dies führte zur Entwicklung eines variablen Topologie-Trainings, bei dem sowohl der Verbindungsraum als auch der Strukturraum untersucht werden. Mit diesem kam eine Vielzahl von Problemen wie Netzwerke immer unglaublich buschig und komplexen verlangsamt der Maschine Lernprozess. Mit den genetischen Ansätzen war es schwierig, genetische Mutationen und Crossoverstrukturen sinnvoll zu verfolgen. Der NEAT-Algorithmus zielt darauf ab, einen genetischen Algorithmus zu entwickeln, der durch das neuronale Netzwerkgewicht und den Strukturraum sucht, der die folgenden Eigenschaften aufweist: Haben Sie eine genetische Repräsentation, die es erlaubt, die Struktur sinnvoll zu überschreiten Protect topologische Innovationen, die einige Optimierungen benötigen, die optimiert werden müssen Dass sie nicht vorzeitig aus dem Genpool verschwinden Minimieren Sie Topologien während des Trainings ohne speziell entwickelte Netzwerkkomplexitätsstrafisierungsfunktionen A durch Behandlung des Algorithmus finden Sie in dem Papier Evolving Neural Networks durch Augmenting Topologies von Kenneth O. Stanley und Risto Miikkulainen (nn. cs. utexas. edudownloadspapersstanley. ec02.pdf). Die Information über das Netzwerk wird durch ein Genom repräsentiert, das Genom enthält Knotengene und Verbindungsgene. Die Knotengene definieren Knoten im Netzwerk, die Knoten können Eingaben (wie z. B. ein technischer Indikator), Ausgänge (wie z. B. eine Kaufempfehlung) oder versteckte (von dem Netzwerk für eine Berechnung verwendete) sein. Die Verbin - dungsgene verbinden Knoten im Netzwerk und sind mit einem Gewicht verbunden. Verbindungsgene haben einen Eingangsknoten, einen Ausgangsknoten, ein Gewicht, ein freigegebenes Flag und eine Innovationsnummer. Die Innovationszahl wird verwendet, um die Geschichte einer Geneentwicklung zu verfolgen und wird in Teil 2 näher erläutert. Dieser Beitrag wird auf einige der Mutationen, die mit dem Netzwerk passieren schauen, ist es erwähnenswert, dass jedes Genom eingebettet darin eine Mutationsrate für jede Art von Mutation, die auftreten können. Diese Mutationsraten werden auch zufällig erhöht oder verringert, wenn die Evolution fortschreitet. Zufällig aktualisiert das Gewicht eines zufällig ausgewählten Verbindungs-Gens Die Updates sind entweder: Neues Gewicht Altes Gewicht - Zufallszahl zwischen 0 und genomMutationRate8220Step8221 Neues Gewicht Zufällige Zahl zwischen -2 und 2 Zufällig fügt eine neue Verbindung zum Netzwerk mit einem zufälligen Gewicht zwischen -2 Und 2 Diese Mutation fügt dem Netzwerk einen neuen Knoten hinzu, indem er eine Verbindung deaktiviert und diese durch eine Verbindung von Gewicht 1, einen Knoten und eine Verbindung mit demselben Gewicht wie die deaktivierte Verbindung ersetzt. Im wesentlichen wurde es durch ein identisch funktionierendes Äquivalent ersetzt. Aktivieren Disable Mutate Randomly aktiviert und deaktiviert die Verbindungen
No comments:
Post a Comment