Neuronales Netzwerk Gleitender Durchschnitt

Neuronales Netzwerk Neuronales Netz ist eines der neueren Schlagworte im Handel. Es klingt kühl und anspruchsvoll. Nicht zu viele Menschen scheinen zu verstehen, was neuronale Netze sind alle über. Neuronen in der realen Welt Unsere Gehirne sind phänomenal kompliziert. Was überrascht die meisten Menschen ist jedoch, dass das Gehirn ist mehr oder weniger eine enorme Box von Schaltungen. Neuronen sind Zellen, die wie Schaltungen mit elektrischen Drähten, genannt Axone, die auslaufen und verbinden sich über den menschlichen Körper. Jede Bewegung, Wahrnehmung oder Aktion, die Sie tun, ist die Summe aller Axone, die elektrische Impulse auslösen. Eine Veränderung tritt auf, wenn die Frequenz der elektrischen Impulse, die von dem Neuron gesendet werden, variiert. Mehr Impulse verursachen eine Reaktion, eine Reduktion verursacht eine andere. Neuronale Netze versuchen, Prozesse des menschlichen Gehirns zu emulieren, indem sie Informationen in Neuronen organisieren. Im Gegensatz zu den tatsächlichen Neuronenzellen existiert ein Netzwerkneuron nur in der Maschine. Sein ein Maschinengewicht, das Informationen über alles enthält, was unter Studie ist. Ein neuronales Netzwerk für ein Handelssystem könnte entscheiden, gemeinsame Indikatoren wie einen gleitenden Durchschnitt, die RSI und Stochastik Oszillator zu studieren. Der gleitende Mittelwert für den aktuellen Balken zählt als eigenes Neuron. Die RSI ist anders, so wird es zu einem separaten Neuron werden. Wenn ich zehn Indikatoren in meiner Toolbox habe, dann habe ich 10 Neuronen in meinem Netzwerk. Computer lösen traditionell lineare, einfache Probleme. Wenn Sie das Ergebnis von mathematischen Operationen wie der Würfelwurzel von 355 wissen wollen, sind Computer für die Aufgabe perfekt. Sie berechnen schnell eine genaue Antwort. Wie im menschlichen Gehirn, neuronale Netze bilden Synapsen mit anderen Neuronen. Wenn sie trainiert werden, können Gruppen von Neuronen lernen, Muster zu erkennen. Es ist diese Eigenschaft, die neuronale Netze so nützlich macht. Dadurch können wir Programme erstellen, die mit herkömmlichen Computern nicht möglich sind. Das Erstellen eines Softwareprogramms zum Erkennen eines Gesichts wäre zum Beispiel extrem schwierig. Es ist viel einfacher, ein Netzwerk zu trainieren, um ein Gesicht zu erkennen, indem es wiederholt die Netzwerkgesichter zeigt. Das Gehirn ist ein faszinierendes Thema. Abgesehen davon nehmen meine Frau und ich eine Umfrage Kurs in Neurowissenschaften durch eine Video-Serie von The Great Courses. Wenn Sie überhaupt Interesse an dem Thema haben, empfehle ich das Verständnis des Gehirns von Jeanette Norden. Es deckt im Detail, wie Neuronen Verbindung zur Anatomie im gesamten Gehirn und den ganzen Körper. Neuronale Netze und Forex Trading Neuronale Netze kommen ins Spiel, wenn die Antwort nicht so präzise ist. Sticking mit diesem Blogs Thema der Devisenhandel gibt es keine richtige Antwort auf das, was das perfekte Handelssystem macht. Ein typischer Kleinanleger könnte sagen, dass das beste Handelssystem dasjenige ist, das das meiste Geld macht. Ein anderes könnte sagen, dass das beste Handelssystem das mit dem höchsten Sharpe Verhältnis ist. Viele wollen etwas in der Mitte. Das beste Handelssystem Problem ist zweideutig, das es ein idealer Kandidat für den Angriff mit neuronalen Netzwerken macht. Der Entwerfer skizziert Regelsätze, die nach Meinung der Händler eine numerische Methode zur Messung des besten Systems bilden. Der menschliche Gehirn Host etwa 100 Milliarden Neuronen. Trotz der besten Bemühungen vieler unserer Kunden, habe ich noch niemanden mit 100 Milliarden Marktindikatoren zur Verfügung zu treffen. Eine Möglichkeit, die Wirkung von Neuronen in unserer Toolbox zu verstärken, besteht darin, versteckte Schichten zu erzeugen. Ein Netzwerk besteht aus mehreren Schichten, die jeweils aus mehreren Neuronen bestehen. Jedes Neuron ist mit jedem Neuron in der nächsten Schicht verbunden. Jede Verbindung trägt dann ihren eigenen, gewichteten Wert. Ein Neuron wird seinen Wert weitergeben, indem er den Wert des Neurons und das Gewicht der ausgehenden Verbindung multipliziert. Das Neuron am Ende der ausgehenden Verbindung wird alle eingehenden Verbindungen zusammenfassen und dieses Ergebnis über alle seine ausgehenden Verbindungen auf die nächste Schicht übertragen. Bilder machen die Idee viel intuitiver. Abbildung 1 enthält ein kleines Beispiel. Die 2 und 3 auf der linken Seite sind die Eingänge in das Netzwerk. Diese Eingaben werden mit dem Gewicht der Verbindung zur nächsten Schicht multipliziert. Die 2 wird mit 0,5 multipliziert, was uns 1 und 3 durch 2 ergibt. 6. Die zweite Schicht enthält einen Knoten, der die Ergebnisse der vorherigen Schicht zusammenfasst, was uns 7 ergibt. Der nächste Schritt wäre, 7 mit den Gewichten zu multiplizieren Die ausgehenden Verbindungen und übergeben sie auf die nächste Schicht. Abbildung 1: Ein Beispiel für ein neuronales Netzwerk, das die Ergebnisse weiterleitet. Das kurze Beispiel oben kann wiederholt und zusammengekettet werden, um ein größeres Netzwerk zu bilden. Unten, in Abbildung 2, haben wir ein Beispiel für ein größeres Netzwerk. Das Beispielnetzwerk hat 3 Eingänge, die mit einer verborgenen Schicht verbunden sind. Die verborgene Schicht wird dann mit einem einzigen Ausgang verbunden. Die verborgenen Schichten sollen das Training erleichtern. Je komplexer das Problem, desto mehr Schichten und Knoten benötigt. Abbildung 2: Ein Beispiel für ein größeres neuronales Netzwerk. Das Netzwerk lernt durch die Aktualisierung der Gewichte seiner vielen Verbindungen. Es gibt viele Software-Algorithmen, die verwendet werden, um das Lernen in neuronalen Netzwerken zu erreichen. Sie fallen in zwei Kategorien, überwachtes Lernen und unüberwachtes Lernen. Überwachtes Lernen wird mit dem Benutzer erreicht, der dem Netz sagt, wenn seine Vorhersagen korrekt sind oder nicht. Das Netzwerk berechnet dann seinen Fehler und verwendet einen der Algorithmen, um den Fehler zu korrigieren. Ein Beispiel hierfür ist die Reverse-Propagation, die den Fehler einer Netzwerkvorhersage berechnet. Das Netzwerk verwendet dann einen schnellen Algorithmus, um jedes der Verbindungsgewichte mit diesem Fehler zu aktualisieren. Reverse Propagation ist eine der häufigsten Trainingsstrategien. Unüberwachtes Lernen verwendet eine Art von Fitness oder Scoring-Algorithmus, in dem das Netzwerk punkten wird mit und versuchen, auf jeden weiteren Versuch zu verbessern. Ein Beispiel für unüberwachtes Training ist der genetische Algorithmus. Dieser Algorithmus erzeugt eine Population von neuronalen Netzwerken und verwendet einen Scoring-Algorithmus, der vom Benutzer entworfen wurde, um die Population zu klassifizieren. Danach ist es das Überleben der Stärksten. Die Top-Ranking-Netzwerke erhalten zu bleiben und zu reproduzieren und die unteren rangiert werden geworfen. Die Netzwerke reproduzieren durch Mischen und passende Verbindungsgewichte. Neuronale Netze können System-Händler in ihrem Algorithmus-Design wesentlich unterstützen, indem sie Milliarden von Kombinationen aus einer relativ kleinen Toolbox von Indikatoren erforschen. Dies unterscheidet sich von Standard-Optimierung, die das Verstopfen von Zahlen in verschiedenen Indikatoren auf der Suche nach einer Kombination, die das meiste Geld zurückgibt. Die Tatsache, dass Netzwerke mehrere Maßnahmen berücksichtigen können (Balance, Sharpe Ratio usw.), um das beste Handelssystem zu bestimmen, verringert die Wahrscheinlichkeit, dass es eine bestimmte Maßnahme überbetont. Ein gutes Beispiel hierfür ist der Kontostand. Wenn ein System das Geben und Nehmen zwischen der Netto-Rendite und der risikoadjustierten Rendite wiegt, beginnt es, sich von der Zahl zu befreien, die knirscht, um die besten Zahlen zu entdecken und in Richtung tatsächliche Lernen und Mustererkennung zu gehen. Neuronale Netze erweisen sich als sehr nützlich in einer breiten Palette von Anwendungen von Gesichtserkennung zu Devisenmarkt Prognosen. Sie übertreffen, wo es Muster gibt, die für uns schwer zu erkennen sind. Diese Fähigkeit macht Netzwerke von unschätzbarem Wert bei der Lösung schwieriger Probleme mit mehreren Variablen. Lassen Sie eine Antwort Antworten abbrechenNeural network 2 Moving Averages Ein neuronales Netzwerk Expert Advisor basiert auf zwei gleitenden Durchschnitte mit dem Trainingsmodus. Trainieren Sie die Expert Advisor auf ausgewählte Beispiele und machen Sie einen Gewinn im wirklichen Leben. Die EA kann an jedem Instrument und in jedem Zeitrahmen arbeiten. Trading-Algorithmus der EA Zwei gleitende Durchschnitte werden durch den neuronalen Netzwerkkern analysiert, der Befehle zum Kauf oder Verkauf erzeugt. Werden die Werte von zwei Bewegungsdurchschnitten, schnell (FMA) und langsam (SMA), der ersten Schicht zugeführt, auf der zweiten Ebene berechnet sie zwei Neuronen, die für Buy (N Buy) und Sell (N sell) verantwortlich sind Oder Verkauf erfolgt auf der dritten Ebene. Das Blockschaltbild des neuronalen Netzes ist in der Figur gezeigt. Expert Advisor Training Im Trainingsmodus erinnert sich die EA an die Werte der durch den Benutzer markierten gleitenden Durchschnittswerte auf dem Chart des Währungsinstruments. Künftig erkennt es im Normalbetrieb die Werte der gleitenden Mittelwerte. Um die EA-Marke mindestens ein langes und ein kurzes Geschäft auf dem Diagramm zu trainieren. Um einen langen Handel mit dem Kaufen Pfeil anzuzeigen, und für den kurzen Handel verwenden Sie den Verkaufspfeil. Sie können weitere Pfeile auf dem Diagramm platzieren. Je mehr Pfeile, desto länger wird der Prozess der Ausbildung. Das Vorhandensein anderer Objekte auf dem Diagramm außer den Pfeilen ist nicht wünschenswert. Nach dem Training wird der Ordner NN 2MA im gemeinsamen Ordner des Terminals angelegt. Es enthält Datei HHHHHHNN2MA. bin mit den Einstellungen des trainierten neuronalen Netzwerks. XXXXXX im Dateinamen ist der Name des Finanzinstruments. Im Normalbetrieb lädt die EA die Daten aus der Datei. Wenn die Datei nicht gefunden wird, verwendet sie die Standardeinstellungen. Standardmäßig wird der EA bei USDJPY und einem einstündigen Zeitrahmen geschult, die Trades werden 2012 ausgewählt. Für das EA-Training sind folgende Eingabeparameter verantwortlich: Die Anzahl der Gewichte pro Neuron. Entspricht der Länge des MA. Standard - 48. Die Anzahl der Trainingszyklen - Standard 100. Je höher der Wert, desto länger wird der Trainingsprozess sein. In der Testversion ist es 10. Faktor b - der Wert beeinflusst die Geschwindigkeit der Korrektur von Gewichten von Neuronen, wird für die Ausbildung des Netzwerks verwendet. Der Standardwert ist 0,7, muss nicht geändert werden. Lernmodus EA - ermöglicht den Trainingsmodus des EA. Beispiele für das Spezifizieren von Trades zum Trainieren des EA sind in der Figur verfügbar. Die Einstellungen für den Normalmodus Einstellungen für Gleitende Mittelwerte Sie können die Einstellungen für jeden gleitenden Durchschnitt einstellen: den Zeitraum, den Preis, den Berechnungsmodus. Auftragsvolumen - Voreinstellung ist 0,1. Wert von Schlupf in Punkten - Standardwert ist 30. Anzahl der Versuche, eine Position zu öffnen - Standardwert ist 5. Stufe StopLoss in Punkten - Standard ist 0. Level TakeProfit in Punkten - Standard ist 0. Level TrailingStop in Punkten - Standardwert ist 650. Zulassen Geld-Management - Kontrolle der Auftragsgröße, um den Markt zu betreten, aktiviert durch defalt. Wenn der Modus deaktiviert ist, wird die Auftragsgröße aus dem Parameter "Auftragsvolumen" übernommen. Das Volumen der Aufträge als Prozentsatz der Ablagerung - verwendet, um die Auftragsgröße zu kontrollieren, Verzug ist 5 Prozent. Hinzufügen in die geöffnete Position - standardmäßig aktiviert. Wenn es ein Signal gibt, den Markt in Richtung einer offenen Position zu betreten, tritt die EA in den Markt ein. Einstellungen des Neuronalen Netzes Die Anzahl der Gewichte pro Neuron. Entspricht der Länge des MA. Je höher der Wert, desto genauer wird der aktuelle Marktzustand erkannt, reduziert aber die Anzahl der Trades. Je niedriger der Wert, desto weniger genau wird der aktuelle Marktzustand erkannt, aber die Anzahl der Geschäfte steigt. Der Wert der Neuronaktivierung. Der Wert beträgt etwa 0,75 des Wertes Die Anzahl der Gewichte pro Neuron. Je höher der Wert, desto strenger ist die Auswahl von Neuronen für eine Entscheidung. In der Testversion ist es 40. Die Anzahl der Trainingszyklen - Voreinstellung ist 100. Faktor b die Gewichtskorrekturgeschwindigkeit, Voreinstellung ist 0.7. Lernmodus EA der EA-Trainingsmodus. Während des Trainings werden die Maximalwerte der Neuronen in den Kommentaren auf der Tabelle angezeigt. Diese Werte können als Aktivierungswert des Neurons verwendet werden. Ein Beispiel ist in der Figur gezeigt. Kommentare aktivieren - ermöglicht Kommentare auf dem Diagramm. Magie Anzahl der Berater. Pause nach dem Handel in Millisekunden. Standardmäßig ist das EA auf USDJPY H1 auf zwei Trades im Jahr 2012 ausgebildet. Das Ergebnis der Expert Advisor Tests im Jahr 2013 ist in der Abbildung gezeigt. Die Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 26: Neuronale Netze (und mehr) Schulung des neuronalen Netzwerks Das neuronale Netzwerkdesign lässt sich am besten mit einem Beispiel erklären. Abbildung 26-8 zeigt das Problem, das wir anfassen werden, indem wir einzelne Buchstaben eines Textbildes identifizieren. Diese Mustererkennungsaufgabe hat viel Aufmerksamkeit erhalten. Es ist leicht genug, dass viele Ansätze Teilerfolg erzielen, aber schwierig genug, dass es keine perfekten Lösungen gibt. Viele erfolgreiche kommerzielle Produkte wurden auf dieses Problem, wie zum Beispiel: Lesen der Adressen auf Briefe für Post-Routing, Dokument Eintragung in Textverarbeitungsprogramme, etc. Der erste Schritt bei der Entwicklung eines neuronalen Netzwerks ist die Schaffung einer Datenbank mit Beispielen. Für das Texterkennungsproblem wird dies erreicht, indem die 26 Großbuchstaben A, B, C, D 8230 Y, Z, 50 mal auf ein Blatt Papier gedruckt werden. Als nächstes werden diese 1300 Buchstaben in ein digitales Bild konvertiert, indem eine der vielen Scannvorrichtungen für Personalcomputer verwendet wird. Dieses große digitale Bild wird dann in kleine Bilder von 10 × 10 Pixeln unterteilt, die jeweils einen einzelnen Buchstaben enthalten. Diese Information wird als 1,3 Megabyte Datenbank gespeichert: 1300 Bilder 100 Pixel pro Bild 8 Bits pro Pixel. Wir werden die ersten 260 Bilder in dieser Datenbank verwenden, um das neuronale Netzwerk zu trainieren (d. h. bestimmen die Gewichte) und den Rest, um seine Leistung zu testen. Die Datenbank muss auch eine Möglichkeit enthalten, den in jedem Bild enthaltenen Buchstaben zu identifizieren. Beispielsweise könnte ein zusätzliches Byte zu jedem 10 × 10-Bild hinzugefügt werden, das den Buchstaben-ASCII-Code enthält. In einem anderen Schema könnte die Position jedes 10 × 10-Bildes in der Datenbank anzeigen, was der Buchstabe ist. Zum Beispiel können die Bilder 0 bis 49 alle ein A sein, die Bilder 50 bis 99 können alle ein B usw. sein. Für diese Demonstration wird das neuronale Netzwerk für eine beliebige Aufgabe ausgelegt sein: bestimmen, welches der 10 × 10 Bilder einen Vokal enthält. D. h. A, E, I, O oder U. Dies kann keine praktische Anwendung haben, aber es veranschaulicht die Fähigkeit des neuronalen Netzwerks, sehr abstrakte Mustererkennungsprobleme zu lernen. Durch das Einbeziehen von zehn Beispielen für jeden Buchstaben in dem Trainingsset erfährt das Netzwerk (hoffentlich) die Schlüsselmerkmale, die das Ziel von den Nicht-Zielbildern unterscheiden. Das neuronale Netzwerk, das in diesem Beispiel verwendet wird, ist die herkömmliche dreischichtige, vollständig miteinander verbundene Architektur, wie in den Fig. 26-5 und 26-6. Es gibt 101 Knoten in der Eingangsschicht (100 Pixelwerte plus einen Bias-Knoten), 10 Knoten in der ausgeblendeten Schicht und 1 Knoten in der Ausgabeschicht. Wenn ein 100-Pixel-Bild an den Eingang des Netzwerks angelegt wird, wollen wir, dass der Ausgangswert nahe bei einem ist, wenn ein Vokal vorhanden ist, und nahe Null, wenn kein Vokal vorhanden ist. Dont be Sorgen, dass das Eingangssignal als ein zweidimensionales Array (10x10), während die Eingabe in das neuronale Netzwerk wurde ein eindimensionales Array. Dies ist Ihr Verständnis, wie die Pixel-Werte miteinander verknüpft werden das neuronale Netzwerk finden Beziehungen der eigenen. Tabelle 26-2 zeigt das Hauptprogramm zur Berechnung der neuronalen Netzgewichte, wobei Tabelle 26-3 drei Unterroutinen enthält, die vom Hauptprogramm aufgerufen werden. Die Array-Elemente: X11 bis X1100 halten die Input-Layer-Werte. Zusätzlich besitzt X1101 immer einen Wert von 1, der die Eingabe des Vorspannungsknotens bereitstellt. Die Ausgangswerte der versteckten Knoten sind in den Array-Elementen enthalten: X21 bis X210. Die Variable X3 enthält den Netzwerkausgangswert. Die Gewichte der verborgenen Schicht sind in dem Array WH enthalten. , Wobei der erste Index den verdeckten Knoten (1 bis 10) identifiziert und der zweite Index der Eingangsschichtknoten (1 bis 101) ist. Die Gewichte der Ausgangsschicht werden in WO1 bis WO10 gehalten. Das macht insgesamt 1020 Gewichtswerte, die definieren, wie das Netzwerk funktioniert. Die erste Aktion des Programms besteht darin, jedes Gewicht auf einen beliebigen Anfangswert zu setzen, indem ein Zufallszahlengenerator verwendet wird. Wie in den Zeilen 190 bis 240 gezeigt, werden den verborgenen Schichtgewichten Anfangswerte zwischen -0.0005 und 0.0005 zugewiesen, während die Ausgabeschichtgewichte zwischen -0.5 und 0.5 liegen. Diese Bereiche werden so gewählt, dass sie die gleiche Größenordnung haben, dass die Endgewichte sein müssen. Dies basiert auf: (1) dem Bereich der Werte im Eingangssignal, (2) der Anzahl der an jedem Knoten summierten Eingänge und (3) dem Bereich der Werte, über den das Sigmoid aktiv ist, einem Eingang von etwa -5 Lt x lt 5 und einem Ausgang von 0 bis 1. Wenn beispielsweise 101 Eingänge mit einem typischen Wert von 100 mit dem typischen Gewichtswert von 0,0002 multipliziert werden, beträgt die Summe der Produkte etwa 2, die sich im aktiven Bereich befindet Der sigmoids Eingang. Wenn wir die Leistung des neuronalen Netzes unter Verwendung dieser zufälligen Gewichte bewerten, würden wir erwarten, dass es das gleiche wie ein zufälliges Raten ist. Der Lernalgorithmus verbessert die Leistung des Netzwerks durch allmähliches Ändern jedes Gewichts in der richtigen Richtung. Dies wird als iterative Prozedur bezeichnet und im Programm durch die FOR-NEXT-Schleife in den Zeilen 270-400 gesteuert. Jede Iteration macht die Gewichte etwas effizienter beim Trennen des Targets von den Nichtbeispielen. Die Iterationsschleife wird üblicherweise durchgeführt, bis keine weitere Verbesserung erfolgt. In typischen neuronalen Netzwerken kann dies irgendwo von zehn bis zehntausend Iterationen sein, aber einige hundert sind üblich. Dieses Beispiel führt 800 Iterationen durch. Damit diese iterative Strategie funktioniert, muss es einen einzelnen Parameter geben, der beschreibt, wie gut das System derzeit ausführt. Die Funktion ESUM (für Fehlersumme) dient dieser Funktion im Programm. Die erste Aktion innerhalb der Iterationsschleife besteht darin, ESUM auf Null (Zeile 290) zu setzen, so dass es als ein Akkumulator verwendet werden kann. Am Ende jeder Iteration wird der Wert von ESUM auf den Bildschirm (Zeile 380) gedruckt, so daß der Operator sicherstellen kann, daß Fortschritt gemacht wird. Der Wert der ESUM startet hoch und nimmt allmählich ab, wenn das neuronale Netzwerk trainiert wird, um die Ziele zu erkennen. Abbildung 26-9 zeigt Beispiele dafür, wie ESUM bei fortschreitenden Iterationen abnimmt. Alle 260 Bilder in dem Trainingsset werden während jeder Iteration ausgewertet, wie dies durch die FOR-NEXT-Schleife in den Zeilen 310-360 gesteuert wird. Die Subroutine 1000 wird verwendet, um Bilder aus der Datenbank von Beispielen abzurufen. Da es hier nicht besonders interessant ist, beschreiben wir nur die Parameter, die an und von dieser Subroutine übergeben werden. Die Subroutine 1000 wird mit dem Parameter LETTER eingetragen, der zwischen 1 und 260 liegt. Nach der Rückgabe enthalten die Eingangsknotenwerte X11 bis X1100 die Pixelwerte für das Bild in der Datenbank entsprechend LETTER. Der Bias-Knotenwert X1101 wird immer mit einem konstanten Wert von Eins zurückgegeben. Die Subroutine 1000 gibt auch einen anderen Parameter CORRECT zurück. Diese enthält den gewünschten Ausgangswert des Netzwerks für diesen speziellen Buchstaben. Das heißt, wenn der Buchstabe im Bild ein Vokal ist, wird CORRECT mit einem Wert von eins zurückgegeben. Wenn der Buchstabe im Bild kein Vokal ist, wird CORRECT mit einem Wert von Null zurückgegeben. Nachdem das Bild, das bearbeitet wird, in X11 bis X1100 geladen wird, leitet die Unterroutine 2000 die Daten durch das aktuelle neuronale Netzwerk, um den Ausgangsknotenwert X3 zu erzeugen. Mit anderen Worten, das Unterprogramm 2000 ist das gleiche wie das Programm in Tabelle 26-1, mit Ausnahme einer unterschiedlichen Anzahl von Knoten in jeder Schicht. Diese Subroutine berechnet auch, wie gut das aktuelle Netzwerk den Buchstaben als Ziel oder als Nichtziel identifiziert. In Zeile 2210 wird die Variable ELET (für Fehlerbrief) als Differenz zwischen dem tatsächlich erzeugten Ausgangswert X3 und dem gewünschten Wert CORRECT berechnet. Dies macht ELET zu einem Wert zwischen -1 und 1. Alle 260 Werte für ELET werden kombiniert (Linie 340) zu ESUM, der Gesamtquadratfehler des Netzwerks für das gesamte Trainingsset. Zeile 2220 zeigt eine Option, die häufig bei der Berechnung des Fehlers enthalten ist: Zuweisen einer anderen Bedeutung der Fehler für Ziele und Nichtziele. Zum Beispiel, erinnern das Krebs-Beispiel vorgestellt früher in diesem Kapitel, und die Folgen der Herstellung eines falsch-positiven Fehler gegenüber einem falsch-negativen Fehler. Im vorliegenden Beispiel werden wir willkürlich erklären, dass der Fehler beim Erfassen eines Ziels fünfmal so schlecht ist wie der Fehler beim Detektieren eines Nicht-Ziels. In der Tat, dies sagt dem Netzwerk eine bessere Arbeit mit den Zielen zu tun, auch wenn es schadet die Leistung der nontargets. Subroutine 3000 ist das Herzstück der neuronalen Netzwerkstrategie, der Algorithmus zum Ändern der Gewichte bei jeder Iteration. Wir verwenden eine Analogie, um die zugrundeliegende Mathematik zu erklären. Betrachten Sie die Zwangslage eines militärischen Fallschirmjäger fiel hinter feindlichen Linien. Er geht zu Fall in ungewohntem Gebiet, nur um zu finden, dass es so dunkel ist, dass er nicht mehr als ein paar Meter weit sehen kann. Seine Befehle sollen auf den Boden des nächsten Tals gehen, um den Rest seiner Mission zu beginnen. Das Problem ist, ohne mehr als ein paar Meter zu sehen, wie er seinen Weg zum Talboden macht. Anders ausgedrückt, benötigt er einen Algorithmus, um seine x - und y-Position auf der Erdoberfläche einzustellen, um seine Höhe zu minimieren . Dies ist analog zu dem Problem der Anpassung der neuronalen Netzwerkgewichte, so dass der Netzwerkfehler ESUM minimiert wird. Wir betrachten zwei Algorithmen, um dieses Problem zu lösen: Evolution und steilste Abstieg. In der Evolution nimmt der Fallschirmjäger einen Sprung in eine zufällige Richtung. Wenn die neue Höhe höher ist als die vorherige, flucht er und kehrt zu seinem Ausgangspunkt zurück, wo er wieder versucht. Wenn die neue Höhe niedriger ist. Er fühlt sich ein Maß für Erfolg, und wiederholt den Prozess aus dem neuen Standort. Schließlich wird er den Boden des Tales erreichen, obwohl in einem sehr ineffizient und planlos Weg. Diese Methode heißt Evolution, weil sie die gleiche Art von Algorithmus von der Natur in der biologischen Evolution verwendet wird. Jede neue Generation einer Spezies hat zufällige Variationen von der vorherigen. Wenn diese Unterschiede für die Arten von Nutzen sind, werden sie eher zurückgehalten und an die nächste Generation weitergegeben. Dies ist ein Ergebnis der Verbesserung, die dem Tier erlaubt, mehr Nahrung zu erhalten, seinen Feinden zu entgehen, mehr Nachkommen zu produzieren usw. Wenn das neue Merkmal schädlich ist, wird das benachteiligte Tier zum Mittagessen für ein Raubtier, und die Variation wird verworfen. In diesem Sinne ist jede neue Generation eine Iteration des evolutionären Optimierungsverfahrens. Wenn Evolution als Trainingsalgorithmus verwendet wird, wird jedes Gewicht im neuronalen Netzwerk geringfügig geändert, indem der Wert von einem Zufallszahlengenerator addiert wird. Wenn die modifizierten Gewichte ein besseres Netzwerk bilden (d. h. einen niedrigeren Wert für ESUM), werden die Änderungen beibehalten, andernfalls werden sie verworfen. Während dies funktioniert, ist es sehr langsam in konvergierenden. Dies ist der Jargon zu beschreiben, dass kontinuierliche Verbesserung auf eine optimale Lösung (der Boden des Tales) gemacht wird. In einfacheren Worten, das Programm wird Tage brauchen, um eine Lösung zu erreichen, anstatt Minuten oder Stunden. Glücklicherweise ist der steilste Abstieg Algorithmus viel schneller. Dies ist, wie die Fallschirmjäger natürlich reagieren würde: bewerten, welcher Weg bergab ist. Und bewegen sich in diese Richtung. Denken Sie über die Situation auf diese Weise. Der Fallschirmjäger kann einen Schritt nach Norden bewegen und die Änderung in der Höhe notieren. Nach der Rückkehr in seine ursprüngliche Position, kann er einen Schritt in den Osten zu nehmen, und aufzeichnen, dass Höhenänderung. Mit diesen beiden Werten kann er bestimmen, welche Richtung bergab ist. Angenommen, der Fallschirmjäger fällt 10 cm, wenn er einen Schritt in die nördliche Richtung und fällt 20 cm, wenn er einen Schritt in die östliche Richtung bewegt. Um direkt abwärts zu fahren, muss er entlang jeder Achse eine Menge proportional zur Steigung entlang dieser Achse bewegen. In diesem Fall könnte er nach Norden um 10 Schritte und Osten um 20 Schritte bewegen. Dies bewegt ihn den steilsten Teil der Piste eine Strecke von radikalen 10 2 20 2 Schritten. Alternativ könnte er in einer geraden Linie auf die neue Position, 22,4 Schritte entlang der Diagonale bewegen. Der wichtigste Punkt ist: Der steilste Abstieg wird erreicht, indem man entlang jeder Achse einen Abstand proportional zur Steigung entlang dieser Achse bewegt. Subroutine 3000 implementiert diesen gleichen steilsten anständigen Algorithmus für die Netzwerkgewichte. Vor dem Eintritt in die Unterroutine 3000 wurde eines der Beispielbilder auf die Eingabeschicht angewendet und die Information an den Ausgang weitergegeben. Das bedeutet, dass alle Werte für: X1, X2 und X3 sowie die aktuellen Gewichtswerte WH angegeben sind. Und WO. Darüber hinaus kennen wir den Fehler, den das Netzwerk für dieses Bild erzeugt, ELET. Die verborgenen Schichtgewichte werden in den Zeilen 3050 bis 3120 aktualisiert, während die Ausgabeschichtgewichte in den Zeilen 3150 bis 3190 modifiziert werden. Dies geschieht durch Berechnen der Steilheit für jedes Gewicht und anschließendes Ändern jedes Gewichts um einen Betrag, der proportional zu dieser Steilheit ist. Im Fallschirmschirmfall wird die Steigung entlang einer Achse durch Bewegen eines kleinen Abstands entlang der Achse (beispielsweise Delta x), Messen der Höhenänderung (zB Delta E) und anschließendes Dividieren der beiden (Delta E / Delta x ). Die Steigung eines neuronalen Netzwerkgewichts kann auf diese Weise gefunden werden: fügen Sie dem Gewichtswert (Delta w) ein kleines Inkrement hinzu, finden Sie die resultierende Änderung des Ausgangssignals (Delta X3) und teilen Sie die beiden Delta X3 / Delta W). Später in diesem Kapitel werden wir ein Beispiel betrachten, das die Steigung auf diese Weise berechnet. Allerdings wird in dem vorliegenden Beispiel ein effizienteres Verfahren verwendet. Früher haben wir gesagt, dass die Nichtlinearität (das Sigmoid) differenzierbar sein muss. Hier werden wir diese Eigenschaft nutzen. Wenn wir die Steigung an jedem Punkt auf der Nichtlinearität kennen, können wir direkt eine Gleichung für die Steigung jedes Gewichts schreiben (Delta X3 / Delta w) ohne es tatsächlich stören zu müssen. Man betrachte ein spezifisches Gewicht, beispielsweise WO1, entsprechend dem ersten Eingang des Ausgangsknotens. Betrachten Sie die Struktur in den Abb. 26-5 und 26-6, und fragen Sie: wie wird die Ausgabe (X3) beeinflusst werden, wenn dieses bestimmte Gewicht (w) etwas geändert wird, aber alles andere bleibt gleich Die Antwort ist: wo SLOPE O die erste Ableitung von ist Das Ausgabeschicht-Sigmoid, ausgewertet, wo wir auf seiner Kurve arbeiten. Mit anderen Worten beschreibt SLOPE O, wie stark sich das Ausgangssignal des Sigmoids in Reaktion auf eine Änderung des Eingangs zum Sigmoid ändert. Aus Gl. 26-2 kann SLOPE O aus dem aktuellen Ausgangswert des Sigmoids berechnet werden, X3. Diese Berechnung ist in Zeile 3160 gezeigt. In Zeile 3170 wird die Steilheit für dieses Gewicht über Gl. 26-3 gespeichert und in der Variablen DX3DW (d. h. Delta X3 / Delta w) gespeichert. Unter Verwendung einer ähnlichen Analyse kann die Steigung für ein Gewicht auf der verborgenen Schicht, wie z. B. WH1,1, gefunden werden durch: SLOPE H1 ist die erste Ableitung des verborgenen Schicht-Sigmoids, ausgewertet, wo wir auf seiner Kurve arbeiten. Die anderen Werte, X11 und WO1, sind einfach Konstanten, die die Gewichtsänderung sieht, wenn sie ihren Weg zum Ausgang macht. In den Zeilen 3070 und 3080 werden die Neigungen der Sigmoide unter Verwendung von Gl. 26-2. Die Steigung des verborgenen Schichtgewichts DX3DW wird in Zeile 3090 über Gl. 26-4. Nun, da wir die Steigung von jedem der Gewichte kennen, können wir untersuchen, wie jedes Gewicht für die nächste Iteration geändert wird. Der neue Wert für jedes Gewicht wird ermittelt, indem das aktuelle Gewicht genommen wird und ein Betrag addiert wird, der proportional zur Steigung ist: Diese Berechnung wird in Zeile 3100 für die ausgeblendete Ebene und Zeile 3180 für die Ausgabeschicht ausgeführt. Die Proportionalitätskonstante besteht aus zwei Faktoren, ELET, dem Fehler des Netzwerks für diesen bestimmten Eingang und MU, einer Konstante, die zu Beginn des Programms eingestellt ist. Um zu verstehen, die Notwendigkeit für ELET in dieser Berechnung, stellen Sie sich vor, dass ein Bild auf dem Eingang platziert einen kleinen Fehler in das Ausgangssignal. Als nächstes stellen Sie sich vor, dass ein anderes Bild, das auf die Eingabe angewendet wird, einen großen Ausgabefehler erzeugt. Wenn wir die Gewichte anpassen, wollen wir das Netzwerk mehr für das zweite Bild ausstoßen als das erste. Wenn etwas schlecht funktioniert, wollen wir es ändern, wenn es gut funktioniert, wir wollen es alleine lassen. Dies wird erreicht, indem jedes Gewicht proportional zum Stromfehler ELET geändert wird. Um zu verstehen, wie sich MU auf das System auswirkt, sei an das Beispiel des Fallschirmjägers erinnert. Sobald er die Abfahrt Richtung bestimmt, muss er entscheiden, wie weit zu fahren, bevor die Neigung der Neigung des Geländes. Indem er diesen Abstand kurz macht, z. B. ein Meter, kann er präzise den Konturen des Terrains folgen und immer in eine optimale Richtung fahren. Das Problem ist, dass er die meiste Zeit verbringt die Bewertung der Steigung, anstatt tatsächlich den Berg hinunter. Im Vergleich dazu könnte er die Entfernung groß wählen, sagen wir 1000 Meter. Während dies dem Fallschirmjäger ermöglichen würde, sich schnell entlang des Terrains zu bewegen, könnte er den Abfahrtsweg überschreiten. Ein zu großer Abstand macht ihn über das ganze Land hinaus, ohne den gewünschten Fortschritt zu machen. In dem neuronalen Netzwerk steuert MU, wie viel die Gewichte bei jeder Iteration geändert werden. Der zu verwendende Wert hängt von dem speziellen Problem ab, das so niedrig wie 10 -6 ist. Oder so hoch wie 0,1. Aus der Analogie der Fallschirmjägerin ist zu erwarten, dass ein zu kleiner Wert zu langsamer Konvergenz des Netzwerkes führt. Im Vergleich dazu führt ein zu großer Wert zu einer unregelmäßigen Konvergenz und einer chaotischen Oszillation um die endgültige Lösung. Leider kann die Art und Weise, wie neuronale Netze auf verschiedene Werte von MU reagieren, schwer zu verstehen oder vorherzusagen sein. Dies macht es kritisch, dass der Netzwerkfehler (d. h. ESUM) während des Trainings überwacht wird, wie zum Beispiel das Drucken auf den Videobildschirm am Ende jeder Iteration. Wenn das System nicht ordnungsgemäß konvergiert, beenden Sie das Programm und versuchen Sie einen anderen Wert für MU. Ein künstliches neuronales Netzwerk (p. D. Q) Modell für die Zeitvorhersage Mehdi Khashei. Zusammenfassung Künstliche neuronale Netze (ANNs) sind flexible Computing-Frameworks und universelle Approximatoren, die auf eine breite Palette von Zeitreihen-Prognose-Problemen mit einer Anwendung angewendet werden können Hohe Genauigkeit. Trotz aller Vorteile, die für künstliche neuronale Netze genannt werden, ist ihre Leistung für einige Echtzeitreihen nicht zufriedenstellend. Die Verbesserung der Prognose vor allem der Zeitreihen-Prognosegenauigkeit ist eine wichtige, aber oft schwierige Aufgabe für die Prognostiker. Sowohl theoretische als auch empirische Befunde haben gezeigt, dass die Integration verschiedener Modelle eine effektive Möglichkeit zur Verbesserung ihrer prädiktiven Leistung sein kann, insbesondere wenn die Modelle im Ensemble ganz anders sind. In diesem Beitrag wird ein neuartiges Hybridmodell für künstliche neuronale Netze vorgeschlagen, das autoregressive integrierte Moving Average (ARIMA) Modelle verwendet, um ein genaueres Prognosemodell zu liefern als künstliche neuronale Netze. Die empirischen Ergebnisse mit drei bekannten realen Datensätzen deuten darauf hin, dass das vorgeschlagene Modell ein effektiver Weg sein kann, um die Prognosegenauigkeit zu verbessern, die durch künstliche neuronale Netze erreicht wird. Daher kann es als ein geeignetes alternatives Modell für die Prognoseaufgabe verwendet werden, insbesondere wenn eine höhere Prognosegenauigkeit erforderlich ist. Schlüsselwörter Künstliche neuronale Netze (ANN) Auto-regressiver integrierter gleitender Durchschnitt (ARIMA) Zeitreihenvorhersage Abb. Fig. Fig. Tabelle 1. Fig. Fig. Fig. Fig. Fig. Fig. Tabelle 2. Fig. Fig. Fig. Fig. Fig. Fig. Tabelle 3. Fig. Fig. Fig. Fig. 19.Hybrid Neuronales Netzwerk Stop-and-Reverse-Strategien für Forex von Michael R. Bryant Neuronale Netze werden seit vielen Jahren in Handelssystemen mit unterschiedlichem Erfolg eingesetzt. Ihre primäre Attraktion ist, dass ihre nichtlineare Struktur ist besser in der Lage, die Komplexität der Preisbewegung als Standard, Indikator-basierte Handelsregeln zu erfassen. Eine der Kritik ist, dass neuronale Netzwerk-basierte Trading-Strategien tendenziell über-fit und daher nicht gut auf neue Daten. Eine mögliche Lösung für dieses Problem besteht darin, neuronale Netze mit einer regelbasierten Strategie-Logik zu kombinieren, um eine hybride Strategie zu schaffen. Dieser Artikel zeigt, wie dies mit Adaptrade Builder durchgeführt werden kann. Insbesondere wird in diesem Artikel Folgendes veranschaulicht: Kombinieren von neuronalen Netzwerken und regelbasierter Logik für Handelseinträge Es wird ein Drei-Segment-Datenansatz verwendet, wobei das dritte Segment verwendet wird, um die endgültigen Strategien zu validieren. Der resultierende Strategiecode für MetaTrader 4 und TradeStation wird gezeigt und es wird gezeigt werden, dass die Validierungsergebnisse für jede Plattform positiv sind. Neuronale Netze als Handelseintragsfilter Mathematisch ist ein neuronales Netz eine nichtlineare Kombination eines oder mehrerer gewichteter Eingänge, die einen oder mehrere Ausgangswerte erzeugt. Für den Handel wird ein neuronales Netz generell auf eine von zwei Arten verwendet: (1) als Vorhersage der zukünftigen Preisbewegung oder (2) als Indikator oder Filter für den Handel. Hier wird die Verwendung als Indikator oder Handelsfilter berücksichtigt. Als Indikator fungiert ein neuronales Netzwerk als zusätzliche Bedingung oder Filter, die erfüllt sein müssen, bevor ein Trade eingegeben werden kann. Die Eingaben in das Netzwerk sind typischerweise andere technische Indikatoren wie Impuls, Stochastik, ADX, gleitende Durchschnittswerte und so weiter sowie Preise und Kombinationen der vorhergehenden. Die Eingaben werden skaliert, und das neuronale Netzwerk ist so ausgelegt, dass das Ausgangssignal ein Wert zwischen -1 und 1 ist. Ein Ansatz besteht darin, eine lange Eingabe zu ermöglichen, wenn die Ausgabe größer als oder gleich einem Schwellenwert wie 0,5 und a ist Kurze Eingabe, wenn die Ausgabe kleiner oder gleich dem negativen Wert der Schwelle ist -0,5. Diese Bedingung wäre zusätzlich zu bestehenden Eintrittsbedingungen. Wenn es zum Beispiel eine lange Eingangsbedingung gab, müsste es wahr sein und die neuronale Netzwerkausgabe müsste mindestens dem Schwellenwert für eine lange Eingabe entsprechen. Bei der Einrichtung eines neuronalen Netzes wäre typischerweise ein Händler für die Auswahl der Eingaben und der Netzwerktopologie und für die gleichzeitige Durchführung des Netzes verantwortlich, das die optimalen Gewichtswerte bestimmt. Wie im Folgenden gezeigt, führt Adaptrade Builder diese Schritte automatisch als Teil des evolutionären Buildprozesses durch, auf dem die Software basiert. Die Verwendung des neuronalen Netzes als Handelsfilter erlaubt es, leicht mit anderen Regeln kombiniert zu werden, um eine hybride Handelsstrategie zu schaffen, die die besten Eigenschaften traditioneller, regelbasierter Ansätze mit den Vorteilen neuronaler Netze kombiniert. Als ein einfaches Beispiel könnte Builder eine gleitende durchschnittliche Übergangsregel mit einem neuronalen Netzwerk kombinieren, so dass eine lange Position genommen wird, wenn der schnell bewegte Durchschnitt über dem langsamen gleitenden Durchschnitt kreuzt und die neuronale Netzwerkausgabe an oder über seinem Schwellenwert liegt. Stop-and-Reverse Trading-Strategien Eine Stop-and-Reverse-Trading-Strategie ist eine, die immer auf dem Markt, entweder lang oder kurz. Streng genommen bedeutet quotstop-und-reversequot, dass Sie den Handel umkehren, wenn Ihr Stop-Auftrag getroffen wird. Allerdings benutze ich es als Short-Hand für jede Handelsstrategie, die von langem zu kurzem zu lange und so weiter umkehrt, so dass Sie immer auf dem Markt. Durch diese Definition ist es nicht notwendig, dass die Aufträge Aufträge beenden. Sie könnten eingeben und rückgängig mit Markt-oder Limit Orders sowie. Es ist auch nicht notwendig, dass jede Seite die gleiche Logik oder sogar die gleiche Auftragsart verwenden. So können Sie beispielsweise bei einem Stoppauftrag long (und exit short) eingeben und bei einem Marktauftrag unter Verwendung verschiedener Regeln und Konditionen für jeden Ein - und Ausstieg kurz (und beenden long) eingeben. Dies wäre ein Beispiel für eine asymmetrische Stop-and-Reverse-Strategie. Der primäre Vorteil einer Stop-and-Reverse-Strategie ist, dass durch immer auf dem Markt, verpassen Sie nie alle großen bewegt. Ein weiterer Vorteil ist die Einfachheit. Wenn es separate Regeln und Bedingungen für das Betreten und Beenden von Trades gibt es mehr Komplexität und mehr, die schief gehen kann. Die Kombination von Ein - und Ausgängen bedeutet, dass weniger Timing-Entscheidungen getroffen werden müssen, was weniger Fehler bedeutet. Andererseits kann man argumentieren, dass die besten Bedingungen für den Austritt eines Handels selten die gleichen sind wie für die Eintragung in die entgegengesetzte Richtung, dass eintretende und austretende Geschäfte von sich aus getrennte Entscheidungen sind, die daher separate Regeln und Logiken anwenden müssen. Ein weiterer potenzieller Nachteil der immer auf dem Markt ist, dass die Strategie wird durch jede Öffnung Lücke Handel. Ein großer Öffnungsspalt gegen die Position kann einen großen Verlust bedeuten, bevor die Strategie rückgängig gemacht werden kann. Strategien, die selektiv eintreten und diesen verlassen oder diesen bis zum Ende des Tages verlassen, können die Auswirkungen von Öffnungslücken minimieren. Da es sich um eine Forex-Strategie handelt, ist MetaTrader 4 (MT4) eine offensichtliche Wahl für die Handelsplattform, da MetaTrader 4 primär für Forex entwickelt und für den Handel mit diesen Märkten weit verbreitet ist (siehe zB MetaTrader vs. TradeStation) : Ein Sprachvergleich). Doch in den letzten Jahren hat TradeStation die Devisenmärkte viel aggressiver ausgerichtet. Abhängig von Ihrem Handelsvolumen und / oder Konto-Ebene, ist es möglich, den Handel mit den Forex-Märkten durch TradeStation ohne irgendwelche Plattform Gebühren oder die Zahlung von Provisionen. Spreads sind Berichten zufolge eng mit guter Liquidität auf die wichtigsten Forex-Paare. Aus diesen Gründen waren beide Plattformen für dieses Projekt gezielt. Bei mehreren Plattformen gleichzeitig treten mehrere Probleme auf. Erstens können die Daten auf verschiedenen Plattformen unterschiedlich sein, wobei Unterschiede in Zeitzonen, Preisangaben für einige Balken, Volumen und verfügbare Datumsbereiche vorhanden sind. Um diese Unterschiede zu glätten, wurden Daten von beiden Plattformen erhalten, und die Strategien wurden über beide Datenreihen gleichzeitig aufgebaut. Die besten Strategien waren daher diejenigen, die bei beiden Datenreihen trotz unterschiedlicher Daten gut funktionierten. Die im Builder verwendeten Dateneinstellungen sind in Abb. 1. Wie aus der Tabelle "Marktdaten" hervorgeht, wurde der Euro / Dollar-Devisenmarkt mit einer Bargröße von 4 Stunden (240 Minuten) angestrebt (EURUSD). Andere Stangengrößen oder Märkte würden ebenso gedient haben. Ich war nur in der Lage, so viele Daten über meine MT4-Plattform zu erhalten, wie durch den in Fig. 1 (Datenreihe 2), so dass der gleiche Zeitraum für den Erhalt der äquivalenten Datenreihe von TradeStation (Datenreihe 1) verwendet wurde. 80 der Daten wurden für Gebäude (kombiniert in Stichprobe und quotout-of-samplequot), mit 20 (6/20/14 bis 2/10/15) beiseite für die Validierung verwendet. 80 des Originals 80 wurde dann auf einen Stichprobenquot mit 20 gesetzt, der auf "outout of-sample" gesetzt wurde, wie in Fig. 1. Die Bid / Ask-Spanne wurde auf 5 Pips festgelegt, und die Handelskosten von 6 Pips oder 60 pro Full-Size-Los (100.000 Aktien) wurden pro Round-Turn angenommen. Beide Datenreihen wurden in den Build aufgenommen, wie die Häkchen in der linken Spalte der Tabelle Market Data anzeigen. Abbildung 1. Marktdateneinstellungen für den Aufbau einer Forex-Strategie für MetaTrader 4 und TradeStation. Ein weiteres potenzielles Problem beim Targeting auf mehrere Plattformen besteht darin, dass Builder so konzipiert ist, dass die Art und Weise, wie jede unterstützte Plattform ihre Indikatoren berechnet, so dupliziert wird, dass die Indikatorwerte je nach ausgewählter Plattform unterschiedlich sein können. Um diese mögliche Diskrepanz zu vermeiden, sollten alle Indikatoren, die in MetaTrader 4 anders als in TradeStation ausgewertet werden, aus dem Build entfernt werden, was bedeutet, dass folgende Indikatoren vermieden werden sollten: Alle anderen Indikatoren, die für beide Plattformen verfügbar sind, werden in gleicher Weise berechnet Beide Plattformen. TradeStation umfasst alle Indikatoren, die im Builder verfügbar sind, während MetaTrader 4 nicht. Daher sollte die MetaTrader 4-Plattform als Codetyp im Builder ausgewählt werden, um nur Indikatoren zu enthalten, die auf beiden Plattformen verfügbar sind. Damit werden automatisch alle Indikatoren aus dem Build-Set entfernt, die für MT4 nicht verfügbar sind, wodurch die Indikatoren, die auf beiden Plattformen verfügbar sind, hinterlassen werden. Außerdem habe ich, da ich Unterschiede in den Volumendaten, die von jeder Plattform erhalten wurden, bemerkte, alle volumenabhängigen Indikatoren aus dem Build-Set entfernt. Schließlich wurde die Uhrzeitanzeige wegen der Unterschiede in den Zeitzonen zwischen den Datendateien entfernt. In Fig. 2, unten, wird die Liste der Indikatoren, die in dem Build-Set verwendet werden, sortiert nach dem Hinweis angezeigt, ob das Kennzeichen vom Buildprozess berücksichtigt wurde (Spalte "Coonsiderquot"). Die aus den Erwägungen aus den oben dargelegten Gründen entfernten Indikatoren sind oben in der Liste aufgeführt. Die restlichen Indikatoren, beginnend mit "Simple Mov Avequot", waren alle Teil des Build-Sets. Abbildung 2. Indikatorauswahlen im Builder, die die aus dem Build-Set entfernten Indikatoren zeigen. Die Auswertungsoptionen, die in dem Erstellungsprozess verwendet werden, sind in 4 gezeigt. 3. Wie diskutiert, wurde MetaTrader 4 als Codeausgangsauswahl ausgewählt. Nachdem Strategien im Builder erstellt wurden, können beliebige Optionen auf der Registerkarte Evaluierungsoptionen einschließlich des Codetyps geändert und die Strategien neu ausgewertet werden, wodurch auch der Code in der ausgewählten Sprache umgeschrieben wird. Diese Funktion wurde verwendet, um den TradeStation-Code für die endgültige Strategie zu erhalten, nachdem die Strategien für MetaTrader 4 erstellt wurden. Abbildung 3. Evaluierungsoptionen im Builder für die EURUSD forex-Strategie. Um Stop-and-Reverse-Strategien zu erstellen, wurden alle Exit-Typen aus dem Build-Set entfernt. 4. Alle drei Arten von Eintragsaufträgen - Markt, Stop und Limit - wurden als quotconsiderquot hinterlassen, was bedeutet, dass der Buildprozess während des Buildprozesses einen beliebigen davon berücksichtigen könnte. Abbildung 4. In Builder selektierte Auftragstypen, um eine Stop-and-Reverse-Strategie zu erstellen. Die Builder-Software generiert automatisch regelbasierte logische Bedingungen für die Ein - und / oder Ausfahrt. Um der Strategie ein neuronales Netzwerk hinzuzufügen, ist es nur nötig, die Option "Neuronales Netz einschließen" auf der Registerkarte "Strategieoptionen" auf die Registerkarte "Strategieoptionen" zu setzen. 5. Die Einstellungen des neuronalen Netzwerks blieben bei den Vorgaben. Als Teil der Stop-and-Reverse-Logik wurde die Option Marktseiten auf Long / Short gesetzt, und die Option zum Warten auf Exit wurde vor der Eingabe von new tradequot deaktiviert. Letzteres ist notwendig, um es der Eintragsreihenfolge zu ermöglichen, die aktuelle Position bei einer Umkehr zu verlassen. Alle anderen Einstellungen wurden mit den Voreinstellungen belassen. Abbildung 5. In Builder ausgewählte Strategieoptionen, um eine hybride Strategie zu erstellen, die sowohl regelbasierte als auch neuronale Netzwerkbedingungen verwendet. Die evolutionäre Natur des Build-Prozesses in Builder wird von der Fitness geleitet. Die aus den Zielen und Bedingungen berechnet wird, die auf der Registerkarte Metriken definiert sind, wie unten in Abb. 6. Die Bauziele wurden einfach gehalten: Maximierung des Reingewinns bei gleichzeitiger Minimierung der Komplexität, die im Vergleich zum Reingewinn ein geringes Gewicht hatte. Besonderer Wert wurde auf die Baubedingungen gelegt, die den Korrelationskoeffizienten und die Bedeutung für die allgemeine Strategiequalität sowie die durchschnittlichen Handelsströme und die Anzahl der Trades beinhalteten. Zunächst wurden nur die durchschnittlichen Balken in Trades als Build-Zustand aufgenommen. Allerdings wurde in einigen der frühen Builds der Nettogewinn über die Handelslänge begünstigt, so dass die Anzahl der Trades Metrik hinzugefügt wurde. Der angegebene Bereich für die Anzahl der Trades (zwischen 209 und 418) entspricht durchschnittlichen Handelslängen zwischen 15 und 30 Bar basierend auf der Anzahl der Balken in der Bauzeit. Als Ergebnis dieses Hinzufügens dieser Metrik legte mehr Gewicht auf das Ziel der Handelslänge, die in mehr Mitglieder der Bevölkerung mit dem gewünschten Umfang der Handelslängen führte. Abbildung 6. Die auf der Registerkarte Metriken festgelegten Ziele und Bedingungen bestimmen, wie die Fitness berechnet wird. Die Bedingungen für die Auswahl von Top Strategiesquot duplizieren die Build-Bedingungen, außer dass die Top-Strategien Bedingungen über den gesamten Bereich der Daten ausgewertet werden (nicht einschließlich der Validierung Segment, das ist separat), anstatt nur über die Bauzeit, wie es der Fall ist Bedingungen. Die obersten Strategien Bedingungen werden durch das Programm verwendet, um alle Strategien, die alle Bedingungen in einer separaten Bevölkerung. Die endgültigen Einstellungen werden auf der Registerkarte "Erstellungsoptionen" vorgenommen (siehe unten). 7. Die wichtigsten Optionen hierbei sind die Bevölkerungsgröße, die Anzahl der Generationen und die Option, basierend auf der Quoteout-of-samplequot-Performance zurückzusetzen. Die Bevölkerungsgröße wurde so gewählt, dass sie groß genug ist, um eine gute Vielfalt in der Bevölkerung zu erhalten, während sie noch klein genug ist, um in einer angemessenen Zeitspanne zu bauen. Die Anzahl der Generationen basierte darauf, wie lange es gedauert hat, bis einige Konjunkturerfolge aufgetreten sind. Abbildung 7. Die Buildoptionen umfassen die Populationsgröße, die Anzahl der Generationen und Optionen für das Zurücksetzen der Population anhand der Quoteout-of-samplequot-Leistung. Die Option zur Rücksetzung auf Out-of-Sample (OOS) Performancequot startet den Buildvorgang über die angegebene Anzahl von Generationen, wenn die angegebene Bedingung in diesem Fall erfüllt ist, wird die Population zurückgesetzt, wenn der Quotout-of-samplequot Nettogewinn liegt Weniger als 20.000. Dieser Wert wurde auf der Grundlage von Vorversuchen ausgewählt, um einen ausreichend hohen Wert zu erreichen, den er wahrscheinlich nicht erreichen würde. Als Ergebnis wurde der Herstellungsprozess alle 30 Generationen wiederholt, bis manuell gestoppt wurde. Dies ist ein Weg, um das Programm zu identifizieren Strategien auf der Grundlage der Top Strategies Bedingungen über einen längeren Zeitraum. In regelmäßigen Abständen kann die Top-Strategien-Population überprüft und der Buildprozess abgebrochen werden, wenn geeignete Strategien gefunden werden. Beachten Sie, dass ich quotout-of-samplequot in Anführungszeichen setzen. Wenn die Quotientarbeitszeitperiode verwendet wird, um die Population auf diese Weise zurückzusetzen, ist die Quotientenperiode nicht mehr wirklich out-of-sample. Seit dieser Zeit wird nun verwendet, um den Build-Prozess, seine effektive Teil der In-Sample-Periode zu führen. Deshalb ist es ratsam, ein drittes Segment zur Validierung aufzuheben, wie oben diskutiert wurde. Nach mehreren Stunden der Verarbeitung und einer Reihe von automatischen Rebuilds, eine geeignete Strategie wurde in der Top-Strategien Bevölkerung gefunden. Seine geschlossene Eigenkapitalkurve ist unten in Figur 1 gezeigt. 8. Die Eigenkapitalkurve zeigt eine konsistente Performance über beide Datensegmente hinweg mit einer ausreichenden Anzahl von Trades und im Wesentlichen die gleichen Ergebnisse über beide Datenreihen. Abbildung 8. Eigenkapitalkurve für die EURUSD-Stop-and-Reverse-Strategie. Um die Strategie über den Validierungszeitraum zu prüfen, wurden die Datumskontrollen auf der Registerkarte Märkte (siehe Abb. 1) bis zum Enddatum der Daten geändert (2/11/2015), und die Strategie wurde mit der Option Auswerten neu ausgewertet Befehl aus dem Menü Strategie im Builder. Die Ergebnisse sind unten in Fig. 1 gezeigt. 9. Die Validierungsergebnisse in dem roten Feld zeigen, dass die Strategie auf Daten, die während des Erstellungsprozesses nicht verwendet werden, gehalten wird. Abbildung 9. Geschlossene Eigenkapitalkurve für die EURUSD-Stop-and-Reverse-Strategie einschließlich des Validierungszeitraums. Die endgültige Überprüfung ist zu sehen, wie die Strategie auf jeder Datenreihe durchgeführt separat mit der Code-Ausgabe-Option für diese Plattform. Dies ist notwendig, da es, wie oben erläutert, Unterschiede in den Ergebnissen gibt, die von (1) dem Codetyp und (2) den Datenreihen abhängen. Wir müssen überprüfen, dass die gewählten Einstellungen diese Unterschiede minimieren, wie beabsichtigt. Um die Strategie für MetaTrader 4 zu testen, wurde die Datenreihe von TradeStation auf der Registerkarte Märkte deaktiviert und die Strategie neu ausgewertet. Die Ergebnisse sind unten in Fig. 1 gezeigt. 10, die die untere Kurve in Fig. 10 dupliziert. 9. Abbildung 10. Geschlossene Eigenkapitalkurve für die EURUSD-Stop-and-Reverse-Strategie einschließlich des Validierungszeitraums für MetaTrader 4. Schließlich wurde für die Teststrategie der TradeStation die Datenreihe von TradeStation ausgewählt und die Serie für MetaTrader 4 auf der Registerkarte Markets deaktiviert wurde, wurde die Codeausgabe in quotTradeStation geändert, und die Strategie wurde neu ausgewertet. Die Ergebnisse sind unten in Fig. 1 gezeigt. 11 und scheinen sehr ähnlich zu der mittleren Kurve in Fig. 9, wie erwartet. Abbildung 11. Geschlossene Eigenkapitalkurve für die EURUSD-Stop-and-Reverse-Strategie einschließlich des Validierungszeitraums für die TradeStation. Der Code für beide Plattformen ist unten in Fig. 12. Klicken Sie auf das Bild, um die Code-Datei für die entsprechende Plattform zu öffnen. Die Prüfung des Codes zeigt, dass der regelbasierte Teil der Strategie unterschiedliche volatilitätsbedingte Bedingungen für die langen und kurzen Seiten verwendet. Die neuronalen Netzeingaben bestehen aus einer Vielzahl von Indikatoren, darunter Tag-of-Week, Trend (ZLTrend), Intraday High, Oszillatoren (InvFisherCycle, InvFisherRSI), Bollinger-Bänder und Standardabweichung. Der Hybrid-Charakter der Strategie kann direkt in der Code-Anweisung (aus dem TradeStation-Code) eingesehen werden: Wenn EntCondL und NNOutput gt 0,5 dann beginnen Buy (quotEnMark-Lquot) NShares Aktien nächste Bar am Markt Die Variable quotEntCondLquot repräsentiert den regelbasierten Eintrag Bedingungen und NNOuputquot ist die Ausgabe des neuronalen Netzwerks. Beide Bedingungen müssen wahr sein, um die lange Eintrittsreihenfolge zu platzieren. Die kurze Eingangsbedingung funktioniert auf die gleiche Weise. Abbildung 12. Handelsstrategie-Code für die EURUSD-Stop-and-Reverse-Strategie (links, MetaTrader 4 rechts, TradeStation). Klicken Sie auf die Figur, um die entsprechende Codedatei zu öffnen. Laden Sie eine Builder-Projektdatei (.gpstrat) mit den in diesem Artikel beschriebenen Einstellungen herunter. Dieser Artikel befasste sich mit dem Aufbau einer hybriden regelbasierten / neuronalen Netzwerkstrategie für den EURUSD mit einem Stop-and-Reverse-Ansatz (immer im Markt) mit Adaptrade Builder. Es wurde gezeigt, wie der Strategiecode für mehrere Plattformen generiert werden kann, indem eine gemeinsame Teilmenge der Indikatoren ausgewählt wird, die in jeder Plattform gleich arbeiten. Die notwendigen Einstellungen zur Erzeugung von Strategien, die von Long auf Short und Back umkehren, wurden beschrieben, und es wurde gezeigt, dass die resultierende Strategie positiv auf einem separaten Validierungssegment von Daten durchgeführt wurde. Es wurde auch überprüft, dass die Strategie ähnliche Ergebnisse mit der Daten-und Code-Option für jede Plattform. Wie oben diskutiert, hat der Stop-and-Reverse-Ansatz mehrere Nachteile und kann nicht jedem gefallen. Allerdings ist ein immer-in-der-Markt-Ansatz kann attraktiver mit Forex-Daten, weil die Forex-Märkte rund um die Uhr Handel. Infolgedessen gibt es keine Session-opening Lücken, und die Handelsaufträge sind immer aktiv und verfügbar, um den Handel umzukehren, wenn der Markt ändert. Die Verwendung von Intraday-Daten (4-Stunden-Balken) lieferte mehr Balken von Daten für die Verwendung im Build-Prozess, war aber ansonsten ziemlich willkürlich, dass die immer im Markt befindliche Strategie bedeutet, dass Trades über Nacht durchgeführt werden. Der Build-Prozess wurde erlaubt, verschiedene Bedingungen für die Eingabe von langen und kurzen entwickeln, was zu einer asymmetrischen Stop-and-Reverse-Strategie. Trotz des Namens greift die daraus resultierende Strategie sowohl lange als auch kurze Trades auf Marktaufträgen ein, obwohl Markt-, Stop - und Limit Orders alle vom Build-Prozess unabhängig für jede Seite berücksichtigt wurden. In der Praxis bedeutet das Rückgängigmachen von kurzem zu kurz, das Doppelte der Anzahl der Aktien am Markt zu verkaufen, da die Strategie z. B. Wenn die aktuelle Long-Position 100.000 Aktien, würden Sie verkaufen verkaufen 200.000 Aktien am Markt. Ebenso, wenn die aktuelle Short-Position war 100.000 Aktien, würden Sie kaufen 200.000 Aktien am Markt, um von kurz-zu-lang umzukehren. Ein kürzerer Preisverlauf wurde verwendet, als es ideal wäre. Dennoch waren die Ergebnisse positiv auf dem Validierungssegment, was darauf hindeutet, dass die Strategie nicht übertrieben war. Dies unterstützt die Idee, dass ein neuronales Netz in einer Handelsstrategie verwendet werden kann, ohne notwendigerweise die Strategie auf den Markt zu bringen. Die hier vorgestellte Strategie ist nicht für den tatsächlichen Handel gedacht und wurde nicht in Echtzeit verfolgt oder getestet. Allerdings kann dieser Artikel als Vorlage für die Entwicklung ähnlicher Strategien für die EURUSD oder andere Märkte verwendet werden. Wie immer Sie eine Trading-Strategie entwickeln sollten gründlich in Echtzeit-Tracking oder auf separaten Daten getestet werden, um die Ergebnisse zu überprüfen und sich mit den Handels Eigenschaften der Strategie Handel leben vor vertraut zu machen. Dieser Artikel erschien in der Februar 2015 Ausgabe des Adaptrade Software-Newsletters. HYPOTHETISCHE ODER SIMULIERTE LEISTUNGSERGEBNISSE HABEN BESTIMMTE INHERENTE EINSCHRÄNKUNGEN. EINE AKTUELLE LEISTUNGSAUFNAHME, SIMULATIVE ERGEBNISSE NICHT VERTRETEN. Da auch die TRADES tatsächlich ausgeführt WURDEN NICHT, DASS DIE ERGEBNISSE UNDER - oder überkompensiert für die Auswirkungen, wenn überhaupt, Marktfaktoren, wie der Mangel an Liquidität. SIMULATED HANDELSPROGRAMME IM ALLGEMEINEN SIND AUCH AUF DIE TATSACHE, DIE SIE MIT DEM VORTEIL VON HINDSIGHT ENTWERFEN. KEINE REPRÄSENTATION IST GEMACHT, DASS JEDE KONTO ODER GELTEND ZU ERWERBENDE GEWINNE ODER VERLUSTE VERÄNDERT WIRD. Wenn Sie über Neuentwicklungen, Neuigkeiten und Angebote von Adaptrade Software informiert werden möchten, können Sie sich gerne an unsere E-Mail-Liste wenden. Vielen Dank.


Comments