четверг, 17 мая 2018 г.

Neuronale netze forex


MetaTrader Expert Advisor Neuronales Netz ist eines der neueren Schlagworten im Handel. Es klingt cool und anspruchsvolle. Nicht zu viele Leute scheinen zu verstehen, foi alles ber neuronale Netze sind. Neuronen in der realen Welt Unsere Gehirne sind phnomenal kompliziert. Foi morrer meisten berraschend, jedoch, ist, dass das Gehirn mehr oder weniger eine riesige Kiste Schaltungen. Neuronen sind Zellen, die wie Schaltungen mit quotelektrischen Leitungenquot, genannte Axone, Das Auslaufen und ber den menschlichen Krper verbinden. Jede Bewegung, Wahrnehmung ou Aktion, die Sie tun, ist die Summe der die Axone, die elektrische Impulse auslsen. Nderung tritt auf, wenn die Frequency des elektrischen Impulso von den Neuronen gesendet variiert. Weitere Impulse zu einer Reaktion fhren. Eine Verringerung der bewirkt, dass eine andere. Neuronale Netze versucht, morre Prozesse des menschlichen Gehirns zu emulieren, indem die Organização de Informationen in den Neuronen. Im Gegensatz zu tatschlichen Neuron Zellen, eine Neuron Netzwerk existiert nur in der Maschine. Es ist ein Maschinengewicht, morreu Informação: darber, foi um estudante. Ein neuronales Netz fr ein Handelssystem mchten gemeinsame Indikatoren wie ein gleitender Durchschnitt studieren, der RSI und Stochastik Oszillator. Der gleitende Durchschnittswert fr die aktuelle Bar zhlt als eigenes neuron. Morre RSI ist anders, então wird es ein separa Neuron sein. Wenn ich zehn Indikatoren em meinem Werkzeugkasten haben, dann habe ich 10 Neuronen in meinem Netzwerk. Computer lsen traditionell linear, einfache Probleme. Wenn Sie das Ergebnis der mathematischen Operationen wie die Kubikwurzel aus wissen wollen 355, Computer sind ideal fr die Aufgabe. Berechnen sie schnell eine przise Antwort. Wie im menschlichen Gehirn, Neuronale Netze Form Synapsen mit anderen Nervenzellen. Wenn geschult, Gruppen von Nervenzellen knnen lernen, Muster zu erkennen. Es ist diese Eigenschaft, die neuronale Netze so ntzlich macht. Dies ermglicht es uns, Program zu erstellen, die mit traditionellen computing unmglich wre. Erstellen eines Softwareprogramms, ein Gesicht zu erkennen, zum Beispiel, extrem schwierig wre. Es ist viel einfacher, ein Netzwerk, ein Gesicht zu erkennen, indem er immer wieder zeigt die Netzwerk-Gesichter zu trainieren. Das Gehirn ist ein faszinierendes Thema aus eigenem Recht. Nebenbei bemerkt, Meine Frau und ich nehmen einen Umfrage-Kurs in der Neurologie ber eine video-Serie The Great Kurse. Wenn Sie Interesse, allen in den Gegenstand haben, Ich empfehle Verstehen des Gehirns von Jeanette Norden. Es umfasst im Detail wie Neuronen Anatomie im gesamten Gehirns und des gesamten Krpers verbinden. Neuronale Netze und Devisenhandel Neuronale Netze kommen ins Spiel, mora Antwort nicht so przise ist. Kleben mit diesem Blog Thema Devisenhandel, Es gibt keine richtige Antwort, foi o sistema de perfeição System fr den Handel. Ein typischer Privatanleger knnte sagen, Das Beste System, Handel ist der, der das meiste Geld macht. Ein anderes knnte sagen, dass das bestias Sistema em linha com base em Sharpe-ratio. Viele wollen etwas in der Mitte. Das Problem der quotBest trading Systemquot ist mehrdeutig, wodurch es einen idealen Kandidat fr Angriffe mit neuronalen Netzen. Die Designer-Konturen-Stze von Vorschriften, die, Laut des Hndlers, Bilden Sie eine numerische Methode zur Messung des besten Systems. Menschliche Gehirn hosten etwa 100 Milliarden Neuronen. Trotz der Bemhungen vieler unserer Kunden, Ich habe noch mit treffen 100 Milliarden Marktindikatoren zur Verfgung. Eine Mglichkeit, verstrken die Wirkung von Neuronen in unserer Toolbox ist auf ausgeblendete Ebenen erstellen. Ein Netzwerk besteht aus mehreren Schichten, jeweils mit mehreren Neuronen gebildet. Jedes Neuron ist mit jedem Neuron in der nchsten Ebene verbunden. Jede Verbindung dann trgt seine eigene einzigartigen gewichteten Wert. Eine Neuron wird den Wert des Neurons multiplicar e durar as Gewicht des die ausgehende Verbindung auf dessen Wert bergeben. Das Neuron am Ende die ausgehende Verbindung wird zusammenfassend alle eingehenden Verbindungen und propagieren dieses Ergebnis auf die nchste Ebene durch alle ausgehenden Verbindungen. As imagens parecem revelar a intuição. Abbildung 1 enthlt ein kleines Beispiel. Die 2 und 3 auf der linken Seite sind die Eingnge ins Netz. Diese Eingnge erhalten durch das Gewicht der Verbindung auf die nchste Ebene multipliziert. Die 2 multipliziert mit dem 0.5 geben uns 1, und 3 von 2 geben uns 6. Die zweite Schicht enthlt einen Node die fasst die Ergebnisse aus der vorherigen Schicht, geben uns 7. Der nchste Schritt wre zu vermehren 7 durch die Gewichte auf die ausgehenden Verbindungen und bergeben Sie sie auf der nchsten Ebene. Abbildung 1: Ein Beispiel fr ein neuronales Netz, morre Weitergabe der Ergebnisse nach vorn. Das kurze Beispiel oben knnen wiederholt und in Form eines greren Netzwerks miteinander verkettet werden. Unter, em Abbildung 2, Wir haben ein Beispiel eines greren Netzwerks. Beispielnetzwerk hat 3 Eingaben, morre verborgene Ebene verbunden sind. Die verborgene Ebene wird dann zu einem einzigen Ausgang angeschlossen. Ausgeblendeten Ebenen werden Schulungen zu erleichtern. Je komplexer das Problem je mehr Schichten und Knoten erforderlich. Abbildung 2: Ein Beispiel fr ein greres neuronales Netz. Das Netz lernt durch die Gewichte viele Verbindungen aktualisieren. Es gibt viele Softwarealgorithmen, die verwendet werden, um lernen in neuronalen Netzen zu erreichen. Sie caído em zwei Kategorien, berwachte und Unberwachtes Lernen. Betreutes lernen geschieht mit dem Benutzer im Netzwerk zu sagen, wenn seine Vorhersagen korrekt sind. Das Netzwerk dann berechnet seine Fehler und einem der Algorithmen verwendet, um den Fehler zu beheben. Ein Beispiel hierfr ist die umgekehrte Vermehrung, morre Fehler der Vorhersage des Netzes berechnet. Das Netzwerk verwendet einen schnellen Algorithmus dann alle Gewichte Verbindung mit diesem Fehler aktualisieren. Umgekehrte Vermehrung ist eine der hufigeren Training Strategien. Unberwachtes Lernen verwendet irgendeine Art von Fitness ou score-Algorithmus, in dem das Netzwerk wird Ergebnis selbst mit und versuchen, bei jedem nachfolgenden Versuch zu verbessern. Ein Beispiel fr unbeaufsichtigt Training ist der genetische Algorithmus. Dieser Algorithmus erstellt eine Bevlkerung von neuronalen Netzen und verwendet ein Bewertungsalgorithmus entwickelt, die vom Benutzer zum Rang der Bevlkerung. Danach, Es ist berleben der strksten. Die Top-Rang-Netze erhalten bleiben und quotreproduzierenquot und unten auf Platz geworfen bekommen. Die Netze reproduzieren, indem mischen und Anpassen der Verbindung Gewichte. Neuronale Netze knnen erheblich Systeme Hndler ihre Algorithmentechnik durch erforschen Milliarden Kombinationen unter eine relativ kleine Toolbox Indikatoren untersttzen. Dies unterscheidet sich vom standard-Optimierung, morre wird Zahlen em verschiedenen Indikatoren, morreu no Suche nach foi Kombination gibt das meiste Geld zurck. Die Tatsache, dass Netzwerke knnen mehrere Manahmen zu prfen (Gleichgewicht, Sharpe-Ratio, etc.) um zu bestimmen, die besten Handelssystem verringern hilft morre Wahrscheinlichkeit, dass es eine bestimmte Manahme insiste demais. Ein gutes Beispiel dafr ist Kontostand. Wenn ein System das geben und nehmen zwischen die Nettorendite und dem Risiko angepasst wiegt zurck, Es beginnt zu Schritt weg von der Zahlenverarbeitung entdecken die besten Zahlen zu nutzen und weiter em Richtung tatschliche Lern - und Muster-Anerkennung. Neuronale Netze erweisen sich als sehr ntzlich em Einer Vielzahl von Anwendungen von Gesichtserkennung nach Whrung Markt Vorhersagen. Sie excel wo gibt is Muster, die schwierig fr uns, zu erkennen sind. Diese Fhigkeit macht Netzwerke von unschtzbarem Wert bei der Lsung schwieriger Probleme com mehreren Variablen. MetaTrader 4 - Beispiele Neuronale Netze Em MetaTrader verwenden Einfhrung Viele von Ihnen haben wahrscheinlich die Mglichkeit der Verwendung von neuronalen Netzen em Ihrem EA betrachtet. Dieses Thema war sehr hei, besonders nach der 2007 Automated Trading Championship und dem spektakulren Gewinn von Melhor com o sistema de relacionamento no Nease neurônio de base Netze. Viele Internet-Foren wurden mit Themen berflutet im Zusammenhang mit neuronalen Netzen und Devisenhandel. Leider ist die native MQL4 Umsetzung von NN nicht einfach. Es erfordert einige Programmierkenntnisse und das Ergebnis wrde nicht sehr effizient sein, besonders, wenn Sie mchten, dass Ihr abschlieendes Ergenis im Tester auf groe Mengen von Daten testen wollen. No entanto, na Internet, você pode usar a Biblioteca de Redes Neurais Artificiais Rápidas (FANN) no Ihrem MQL4 Code seewenden, whrend bestimmte Hindernisse und Einschrnkungen vermieden werden. Auerdem gehe ich davon aus, dass der Leser mit Artificial Neural Networks (ann) und der Terminologie em Zusammenhang mit diesem Thema vertraut ist, então dass ich mich auf praktische Aspekte der Verwendung von bestimmter Implementierung von ann in MQL4 Sprache konzentrieren werde. FANN Eigenschaften Um em volume. Umfang die Mglichkeiten der FANN Implementierung zu verstehen, muss man sich mit ihrer Dokumentation und den am hufigsten verwendeten Funktionen vertraut machen. Die typische Verwendung von FANN ist ein einfaches vorgeschaltetes Netzwerk zu schaffen, is mit einigen Daten trainieren und laufen. Das erstellte und trainierte Netzwerk knnte dann in eine Datei gespeichert werden und spter zur weiteren Verwendung wieder hergestellt werden. Um ein ann zu erstellenmuss man die fanncreatestandard () Funktion verwende. Sehen wir uns die Syntax e: Wo numllers die Gesamtzahl von Schichten darstellt, einschlielich der Eingabe - und der Ausgabeschicht. Das lNnum und folgende Argumente reprsentiert morrer Anzahl von Neuronen in jeder Schicht, beginnend mit der Eingabeschicht, und endend mit der Ausgabeschicht. Um ein Netz mit einer verborgenen Schicht mit 5 Neuronen, 10 Eingaben und 1 Ausgabe zu erzeugen, msste man es nennen, wie folk: Sobald das ann erstellt ist, wre die nchste Operation, is mit einigen Eingabe - und Ausgabedaten zu trainieren. Die einfachste Ausbildungsmethode ist inkrementelles Treinamento, Duração do folheto Funktion erreicht werden kann: Diese Funktion nimmt den Ponteiro zu estrutura fann zuvor zurckgegeben von fanncreatestandard () und beide Eingabedatenvektor und Ausgabedatenvektor. Die Eingabe - und Ausgabevektoren sind Arrays des fanntype Typs. Diese Art ist in Tat ein double - oder ein float - Typ, abhngig von der Art com FANN kompiliert wird. Em dieser Implementierung werden die Eingabe - und Ausgabevektoren duplo Arrays seingt. Sobald das ann aussgebildet ist, wre das nchte gewnscht Feature die Asufhrung des Netzes. Die Funktion morre morre Umsetzt, ist wie folgt definiert: Diese Funktion nimmt den Pointer zu struct fann. Das zuvor erstellte Netzwerk Darstellend e und Einen Eingabevektor des definierten Typs (Double Array). Der Rckgabewert ist ein Ausgabevektor-Array. Diese Tatsache ist wichtig, da wir fr ein Ausgabe-Netzwerk immer ein Element Array mit dem Ausgangswert, anstelle des Ausgangswert selbst erhalten. Leider verwenden die meisten FANN Funktionen einen Ponteiro em direção a uma fadinha das estrelas, foi nicht direkt gehandhabt werden kann von MQL4, das Strukturen als Datentypen nicht untersttzt. Um diese Einschrnkung zu vermeiden mssen wir das unmanteln, und in irgendeiner Art und Weise vor MQL4 verbergen. Die einfachste Methode ist ein Array von struct fann Pointern zu erstellen, das die richtigen Werte hlt und sich auf sie mit einem Índice bezieht, dargestellt von einer int Variável. . Então, Knnen wir den nicht untersttzten Variablentyp mit einem untersttzten ersetzen und eine Wrapper-Bibliothek erstellen, die mit MQL4 Code leicht integriert werden kann. Die FANN rundum Einwickeln Nach bestem Wissen, untersttzt MQL4 keine Funktionen mit variabler Argumente-Liste, então mssen wir auch damit umgehen. Auf der anderen Seite, wenn die C-Funktion (mit varibler Argumente Lnge) mit zu vielen Argumenten aufgerufen wird, passiert nichts falsches, também bernehmen wir eine feste maximale Anzahl von Argumenten em MQL4 Funktion bergeben an C-Bibliothek. Die resulttierende Wickel-Funktion wrde aussehen wie folk: Wir wechselten die fhrende fann mit f2M (die fr FANN TO MQL steht), verwendeten statische Anzahl von Argumenten (4 Schichten) und der zurckgebende Wert ist jetzt ein Índice fr interne Array von anns die struct Fann Daten haltend, erforderlich fr FANN zum Arbeiten. Auf Diese Weise knnen wir leicht eine solche Funktion innerhalb MQL-Code aufrufen. Das gleiche geht fr: Por último, mas não menos importante, é morrer Tatsache, dass Sie zu Ihr einmal erstelltes ann zerstren mssen, durch den Aufruf zu: Um ann Handles freizugeben, mssen Sie die Netze in umgekehrter Reihenfolge zerstren, wie Sie sie erzeugt haben. Alternativ knnen Sie verwenden: Allerdings bin ich ziemlich sicher, dass einige von Ihnen bevorzugen ihre trainierten Netze zu speichern, fr eine sptere Verwendung mit: Natrlich kann das gespeicherte Netz spter neu geladen (oder eer neu erstellt) werden, mit: Sobald wir die Grundfunktionen Kennen, knnten wir versuchen das in unserem EA zu verwenden, aber zuerst mssen das Fann2MQL Paket installieren. Fann2MQL Installieren Um die Verwendung des Pakets zu vereinfachen, habe ich den msi instalador erstellt, der den gesamten Quellcode enthlt, mais vorkompilierte Bibliotheken und Fann2MQL. mqh Header-Datei, die alle Fann2MQL Funktionen deklariert. Der Installationsvorgang ist sehr einfach. Zuerst werden Sie informiert, dass Fann2MQL unter GPL Lizenz ist: Instalação von Fann2MQL, Schritt 1 Dann whlen Sie denn Ordem um das Paket zu installieren. Sie knnen den Standard Verwenden Program FilesFann2MQL ou Diretório de Instalação em Ihr Meta Traderexperts Verzeichnis. Speter werden alle Dateien direkt an ihre Orte platziert, ansonsten werden Sie alle manuell kopieren mssen. Instalação von Fann2MQL, Schritt 2 Der Installer platziert Data em que caduque Ordem: Encontre mais informações sobre Fann2MQL Ordner installieren mchten, kopieren Sie bitte den Inhalt von den incluir e bibliotecas Unterordner Ihr entsprechendes MetaTrader Verzeichnis. O instalador instalador do programa instala o FANN Bibliothek em Ihren Systembibliotheken Ordner (Windowssystem32 in den meisten Fllen). Der src enthlt den gesamten Quellcode von Fann2MQL. Sie knnen den Quellcode lesen, der eine ultimative Dokumentation ist, wenn Sie mehr Informationen ber die Interna bentigen. Sie knnen den Code auch verbessern und zustzliche Recursos hinzufgen, wenn Sie das mchten. Ich ermutige Sie mir Ihre Patches zu schicken, wenn Sie etwas interessantes implementieren. Neuronale Netze em Ihrem EA verwenden Sobald morre Fann2MQL instalador, seja completado, Ihren eigene EA ou Indikator zu schreiben. Es gibt viele mgliche Verwendung von NN. Sie knnen sie verwenden, um zuknftige Kursbewegungen zu prognostizieren aber die Qualitt solcher Prognosen und die Mglichkeit einen echten Vorteil zu erlangen, ist zweifelhaft. Sie knnen versuchen, Ihre eigene Strategie mit Reinforcement Learning Techniken, etwa ein Q-Learning ou outros e hnliches zu schreiben. Sie knnen versuchen NN als einen Signalfolter fr Ihren heuristischen EA zu verwenden oder allez Dik Techniken kombinieren, foi auch immer Sie mchten. Sie sind nur durch Ihre eigene Fantasie gegrenzt. Hier zeige ich Ihnen ein Beispiel der Verwendung eines NN als einfachen Filtro fr Signale, generiert von MACD. Bitte Betrachten Sie es nicht als wertvollen EA, além de Beispielanwendung von Fann2MQL. Whrend der Erklrung ber das Vorgehen, hierstro Beispiel EA: NeuroMACD. mq4 funktioniert. Ich werde ihnen zeigen, wie die Fann2MQL effektiv em MQL verwendet werden kann. Die allererste Sache fr jeden EA, ist die Deklaration der globalen Variablen definiert und Abschnitt umfassen. Hieritation of Beginn des NeuroMACD, der diese Dinge enthlt: Der Include-Befehl gibt an die Fann2MQL. mqh Header-Datei zu laden, welche die Deklaration aller Fann2MQL Funktionen enthlt. Danach sind alle Fann2MQL Paket-Funktionen fr den Einsatz im Skript verfgbar. Die ANNPATH - Konstante definiert den Pfad zum Speichern und laden von Dateien mit ausgebildeten FANN Netzwerken. Sie mssen diesen Ordner erstellen, d. h. C: ANN. Die NAME - Konstante enthlt den Namen dieses EA, der spter fr das Laden e Speichern Netzwerk-Dateien verwendet wird. Eingabeparameter sind ziemlich offensichtlich und die es nicht sind, werden spter erlutert, sowie globale Variablen .. Der Einstiegspunkt fr jeden EA ist seine init () Funktion: Zunchst wird geprft, ob der EA auf den richtigen Zeitrahmen angewendet wird. Die AnnInputs Variable enthlt die Anzahl der neuronalen Netzwerkeingnge. Da wir drei Stze von verschiedenen Argumenten verwenden werden, soll es teilbar durch 3 sein. AnnPath wird berechnet zum Reflektieren de EA NAME und MagicNumber. Die aus den SlowMA. FastMA e SignalMA Eingabeargumenten berechnet wird, die spter fr die MACD-Indikator Signale verwendet werden. Sobald er den AnnPath kennt, versucht der EA neuronale Netze mit der annload () Funktion zu laden, die ich weiter unten beschreiben werde. Die Hlfte der geladenen Netze ist fr die Long-Position Filterung gedacht und die andere Hlfte fr Shorts. Die AnnsLoaded Variável wird verwendet um die Tatsaches anzuzeigen, dass alle Netze korrekt inicialisiert wurden. Wie Sie wahrscheinlich bemerkt haben, dieser Beispiel EA versucht mehrere Netzwerke zu laden. Ich bezweifle, dass es in Dieser Anwendung wirklich notwendig ist, aber ich wollte Ihnen das volle Potenzial von Fann2MQL zeigen, die mehrere Netzwerke gleichzeitig handhabt und kann sie paralelo verarbeiten kann, unter Ausnutzung von mehreren Kernen ou outras CPUs. Um es zu ermglichen nutzt Fann2MQL morre Intel Threading Building Blocks Technologie. Die Funktion f2Mparallelinit () wird verwendet, die eine Schnittstelle zu initialisieren. O que é o que é o que é o que você quer dizer, é o que é o que é o que é o que é o que é o que você quer? Das erstellte Netzwerk 4 Schichten (einschlielich Ein - und Ausgabe) haben sollte, AnnInput21 Neuronen in der zweiten verborgenen Schicht und 1 Neurons in der Ausgabeschicht. In der Eingnge haben sollte, AnnInput Neuronen in der ersten verborgenen Schicht, f2Mestacãofunctionhidden () wird verwendet, um dado Aktivierungsfunktion von verborgenen Schichten auf SIGMOIDSYMMETRICSTEPWISE einzustellen (siehe FANN Dokumentation von fannactivationfuncenum) und das gleiche gilt fr die Ausgabeschicht. Dann gibt es den Aufruf an f2mrandomizeweights (). Morre verwendet wird neuron Verbindungsgewichte innerhalb des Netzes zu initialisieren. Hier habe ich den Bereich von lt-0,4 0,4gt verwendet, Sie knnen aber jede andere verwenden, abhngig von Ihrer Anwendung. Um dieser Stelle haben Sie wahrscheinlich die Funktion debug () bemerkt, die ich ein paar Mal verwendete. Es ist eine der einfachsten Methoden, um morre Verbose Ebene Ihres EA zu ndern. Zusammen mit ihr und und Eingabeparameter DebugLevel knnen Sie die Art und Weise abstimmen, dass Ihr Code die Debug-Ausgabe produz. Wenn das erste Argument der Funktion debug (). Der Debug-level, além de DebugLevel erzeugt die Funktion keine Ausgabe. Wenn es niedriger als gleich ist, wird der text String ausgegeben. Wenn der Debug-Level 0 ist, wird dieser String ERROR: an den Beginn angehangen. Auf Diese Weise knnen Debug von Ihrem Code erzeugt auf mehrere Ebenen aufteilen. Die wichtigsten sind wahrscheinlich, Fehler, então dass sie auf die Ebene 0 zugeordnet sind. Sie werden ausgegeben, até que você seja o Debuglevel unter 0 senken (was nicht geraten wird). Auf Ebene 1 werden einige wichtige Informationen ausgegeben, com Besttigung des erfolgreichen Ladens des Netzes ou Erzeugung. Auf Stufe 2 ou mais do que morrer Bedeutung von gedruckten Informationen allmhlich ab. Vor der ausfhrlichen Erluterung der start () Funktion, die sehr lang ist, muss ich Ihnen einige weitere Funktionen zeigen, die dazu gedacht sind die Netz Eingabe vorzubereiten und die tatschlichen Netze auszufhren: Die Funktion annprepareinput () wird verwendet, um den Eingabenamen fr die Netze vorzubereiten (Daher der Name). Der Zweck ist recht einfach, aber das ist der Punkt an den ich Sie erinnern muss, dass die Eingabedaten richtig normalisiert werden mssen. Es gibt keine ausgefeilte Normalisierung in diesem Fall, ich habe einfach die MACD Haupt - und Signalwerte, die nie den gewnschten Bereich auf den bercksichtigten Daten berschreiten. Em dem realen Beispiel sollten Sie wahrscheinlich mehr Aufmerksamkeit auf dieses Thema legen. Wie Sie wahrscheinlich vermuten, ist die Auswahl der richtigen Eingabeargumente fr Netzeingabe, is Codieren, ist Zersetzung und Normalisierung einer der wichtigsten Faktoren bei der neuronalen Netz-Verarbeitung. Wie ich bereits erwhnte, hat die Fann2MQL die Fhigkeit die normale Funktionalitt des MetaTrader zu erweitern, foi morto paralelo multithread Verarbeitung von neuronalen Netzen ist. Das globale Argument Parallel steuert dieses Verhalten. Die runanns () Funktion ftlet alle initialisierten Netze aus und erhlt morre Ausgabrn von ihnen und speichert in dem AnnOutput Array. Die Annsrunparallel Funktion ist verantwortlich fr die Handhabung des Jobs no Weise multithread. Sie roft die f2mrunparallel () auf, die die Anzahl von zu verarbeitenden Netzen zu verarbeiten als ein erstes Argumento nimmt, das zweite Argumento ist ein Array with Handles fr alle Netze die Sie ausfhren wollen, die Bereitstellung des Eingabevektor ist ein drittes Argument. Alle Netz mssen auf den gleichen Eingabedaten ausgefhrt werden. Der Empfang der Ausgabe aus dem Netz erfolgt durch mehrere Aufrufe von f2mgetoutput (). Betrachten wir nun die start () Funktion: Ich beschreibe es kurz, da es recht gut kommentiert ist. Die tradeallowed () berprft, ob es der Handel erlaubt ist. Im Grunde ist es berprft die AnnsLoaded Variável, die angibt, dass alle anns richtig inicialisiert wurden, dann berprft sie den richtigen Zeitrahmen, Mindestkontostand und erlaubt am Ende nur auf demerser Tick eines neuen Balken zu handeln. Die nchsten zwei Funktion werden verwendet Netzeingabe vorzubereiten und die Netz-Verarbeitung auszufhren, wurden nur wenige Zeilen weiter oben beschrieben. Als nchstes berechnen wir und setzen sie spter em Variablen zur Verarbeitung, morre MACD Werte der Signal - und Haupt-Linie fr den zuletzt aufgebauten Balken und den vorherigen. Die aktuelle Balken wird ausgelassen, da er noch nicht aufgebaut ist und wird wahrscheinlich neu gezeichnet wird. Die SellSignal e BuySignal werden entsprechend der MACD Signal - und Haupt-Linie Kreuzung berechnet. Beide Signale werden fr lange und kurze Positionsverarbeitung verwendet, die simmetrisch sind, também werde ich nur den Fall fr Long-Positionen beschreiben. Die LongTicket Variable ent. t die Ticketnummer der aktuell geffneten Posição. Wenn es gleich zu -1 ist, wird keine Posição geffnet, por isso, com o BuySignal gesetzt ist, knnte das auf eine gute Mglichkeit hinweisen eine Long-Position zu ffnen. Wenn die Variable NeuroFilter nicht gesetzt ist, wird die Long-Position geffnet und das ist der Fall, ohne die neuronale Netz Filterung der Signale - die Order zu kaufen ist gesendet. Um dieser Stelle soll morre LongInput Variable die an von annprepareinput () fr eine sptere Verwendung vorbereiteten InputVector erinnern. Wenn LongTicekt Variable die gltige Ticket-Nummer hlt, prft der EA obteve-se noch offer ist oder durch StopLoss ou TakeProfit geschlossen wurde. Wenn die Ordem nicht nicht geschlossen ist, passiert nichts, wenn die Ordem por meio de tremoutput Vektor geschlossen ist, der nur eine Ausgabe hat, wird berechnet den Wert von -1 zu halten wenn die Pedido wurde mit Verlust geschlossen wurde oder 1, wenn die Order Mit Gewinn abschloss Dieser Wert wird dann zu anntrain () Funktion bergeben und alle verantwortlichen Netze fr den Umgang com Long-Positionen sind mit ihm trainiert. Als Eingabevektor wird die Variable LongInput verwendet, die die InputVector im Moment des ffnens der Position hlt. Auf diese Weise wird das Netz gelehrt, welches Signal Gewinne erbringt und welches ist es nicht. Sobald Sie ein ausgebildetes Netz haben, lsst das Umschalten von NeuroFilter no verdadeiro das Netz filtern. Die annwiselong () verwendet neuronale Netz weise berechnet als ein Mittelwert der von allen Netzen zurckgegebenen Werte mit Bedeutung fr die Behandlung einer Long-Position. Wird unter Verwendung des neuronalen Netzes weise, como Mittelwert der Werte von Allen Netzen gemeint zu handhaben, morre Long-Position zurck berechnet. Der Delta Parameter wird als ein Schwellenwert verwendet, das anzeigt, dass das gefilterte Signal gltig ist oder nicht. Wie viele andere Werte wurde er durch den Prozess der Optimierung erhalten. Nun, wow wer wissen, é o funktioniert, werde ich Ihnen zeigen, wie es verwendet werden kann. Das Testpaar ist natrlich EURUSD. Ich benutzte morre Daten von Alpari. Zu M5 Zeitrahmen konvertiert. Ich nutzte die Zeit von 31.12.2007 bis 01.01.2009 fr die Ausbildung Optimierung und 01.01.2009-22.032009 fr Testzwecke. Bereits im ersten Lauf habe ich versucht, die profitabelsten Werte fr StopLoss, TakeProfit, SlowMA, FastMA und SignalMA Argumento zu erhalten, die ich dano em NeuroMACD. mq4 Datei codiert habe. Der NeuroFIlter wurde ebenfalls ausgeschaltet, sowie SaveAnn. Morre AnnsNumber wurde auf 0 gesetzt um neuronale Verarbeitung zu vermeiden. Ich benutzte den genetischen Algorithmus fr Optimierungsprozess. Sobald die Werte empfangen wurden, sah der resulttierende Bericht wie folgt aus: Bericht ber Trainigsdaten nach grundlegender Parameteroptimierung. Wie Sie sehen knnen, habe ich den EA auf dem Mini-Konto mit einer Lot-Gre de 0,01 und einer Anfangseinzahlung von 200 eingesetzt. Sie knnen diese Parâmetro jedoch Kontoeinstellungen ou Vorlieben anpassen Um Dieser Stelle haben wir genug rentable und verlierende Negociações, então dass wir den SaveAnn anstellen und die AnnsNumber auf 30 setzen. Ist das getan, asse ich den Teaster noch einmal durchlaufen Das Ergebnis war genau das gleiche, auer der Tatsache, dass der Prozess sehr viel langsamer war (como Folge der neuronalen Verarbeitung) und den Ordner C: ANN wurde mit den trainierten Netzwerken besiedelt, wie Unten auf dem Bild gezeigt. Stellen Sie sicher, dass der C: ANN Ordner vor diesem Durchlauf vor dem existiert Der C: ANN Ordner. Sobald wir Netze trainiert haben, ist es Zeit, zu testen wie es sich verhlt. Zuerst versuchen wir es auf den Trainingsdaten. Ndern Sie den NeuroFilter zu true und SaveAnn zu false e starten Sie den Tester. Das Ergebnis, das ich erhalten haben, wird unten gezeigt. O que é o que você está procurando, é o que é o que você quer dizer. O que é o que você está procurando é o que é o que você está procurando. Saiba mais sobre o assunto. Trainingsdaten mit Signal neuronaler Filterung aktiviert. Der Nettogewinn ist etwas grer (20,03 gegenber 16,92), doch der Gewinnfaktor ist viel hher (1,25 gegenber 1,1). Die Anzahl der Trades ist viel weniger (83 vs 1188) Und die durchschnittlich aufeinanderfolgende Verluste Anzahl wird von 7 auf 2 gesenkt. Jedoch zeigt es nur, dass neuronale Signalfilterung funktioniert, aber es sagt nichts darber, wie sie auf Daten arbeitet, die nicht fr verwendet wurden whrend des Trainings. Das Ergebnis, das ich aus Der Testphase erhalten haben (01.01.2009 - 20.03.2009) ist unten dargestellt: Ergebnis erhalten von Testdaten mit neuronaler Filterung aktiviert. Die Anzahl der ausgefhrten Tra O que é o melhor do que o dinheiro é rentável, e o homem neurônio Netze em Ihrem MQL4 Code nutzen knnte. Der wirkliche Effekt der Verwendung von neuronalen Netzen in diesem Fall kann nur dann gesehen werden, wenn die Ergebnisse der EA auf Testdaten im Vergleich zu sehen sind mit NeuroFilter ein - und ausgeschaltet. Im Folgenden ist das erhaltene Ergebnis der Testdatenperiode ohne neuronale Signalfilterung: Ergebnisse von Testdaten ohne neuronale Filterung. Der Unterschied ist sehr offensichtlich. Wie sie sehen, macht die neuronale Filterung aus einem verlierenden EA einen rentablen Ich hoffe, dass Sie aus diesem Artikel gelernt haben, wie man neuronale Netze no MetaTrader verwendet. Mit Hilfe des einfachen, freien und Open-Source-Paket Fann2MQL Knnen Sie einfach die neuronale Netzschicht in praktisch jedem Consultor Especialista em hinzufgen ou em um novo eixo, em um banco de dados e em uma rede de Netzen Basiert. Die einzigartige Multi-Threading-Fhigkeit kann Ihre Verarbeitung viele Male beschleunigen, abhngig von der Anzahl der CPU-Kerne, insbesondere wenn bestimmte Parâmetro optimiert werden. In einem Fall hat is die Optimierung meiner Reforço Aprendizagem base EA Verarbeitung von etwa 4 Tagen auf nur 28 Stunden verkrzt, com einer 4-Kern CPU Intel. Whrend des Schreibens dieses Artikels habe ich mich entschlossen Fann2MQL auf der eigenen Website zu setzen: fann2mql. wordpress. Sie finden dort die neueste Versão de Fann2MQL e mglicherweise alle zuknftigen Versãoen sowie die Dokumentation aller Funktionen. Ich verspreche, diese Software fr alle Versionen unter GPL-Lizenz zu halten, então, wenn Sie mir jegliche Comentários, Destaque-Anfragen oder Patches, die ich interessant finde, Seien Sie sicher, es in nchsten Versãoen zu finden. Bitte beachten Sie, dass dieser Artikel nur die sehr grundlegende Verwendung von Fann2MQL zeigt. Da dieses Paket nicht viel mehr iss als FANN, knnen Sie alle Werkzeuge fr die Verwaltung von FANN Netzen verwenden, wie: Não é gibt viel mehr ber FANN auf der Fast Artificial Neural Network Library Webseite: leenissen. dkfann Post Scriptum Nach dem Schreiben dieses Artikels Habe ich einen unedeutenden Fehler em NeuroMACD. mq4 gefunden. Die OrderClose () Funktion fr Short-Positionen wurde mit der Ticket-Nummer fr Long-Positionen gespeist. Es fhrte zu einer schiefen Estratégia, estava em um filme de Richtung Ging Shorts zu halten und Longs zu schlieen: In der korrekten Versão des Skripts habe ich diesen Fehler behoben und die OrderClose () Strategie insgesamt entfernt. Das hat das Gesamtbild des Einflusses neuronaler Filterung nicht verndert, noch war die Kontostandkurve vllig anders. Versão em Português: Dieses EA an diesen Artikel angehangen. bersetzt aus dem Englischen von MetaQuotes Software Corp. Originalartikel: mql5enarticles1565Trading Software mit Quellcode Kuumlnstliche Neuronale Netze und Regressionsanalyse zur Aktien Forex Prognose Waumlhrend meines Bachelor Reports habe ich eine Software geschrieben, mit der Anhand der Regressionsanlyse der Dax Kurs prognostiziert werden konnte. Als Eingabe Daten wurden verschiedene Waumlhrungen, Indizes aber auch Rohstoffe uumlbergeben. Anhand dieser Daten wurde dann naumlchste Kurs (Tag, Monat, Woche) berechnet. Das ganze lieszlige sich auch auf den Forex Markt abbilden, zum Vorhersagen von Waumlhrungsdaten. Da Forexdaten in Echtzeit relativ einfach und kostenguumlnstig abgefragt werden koumlnnen, eignet sich die Regressionsanalyse wunderbar fuumlr das Daytrading, in dem auch kleine Intervalle analysiert werden. Wenn ich die Zeit haumltte, wuumlrde ich mir eine entsprechende Forex Boumlrsensoftware programmieren und es mal versuchen. Weiterhin wurde eine Software programmiert, die eine Prognose mit Hilfe von kuumlnstlichen neuronalen Netzen durchfuumlhrt. Auch hier wurden die oben genannten Parameter eingegeben. Da die Software zur Analyse nun seit ca. 2 Jahren auf meinen Rechner rumliegt, habe ich mir uumlberlegt diese kostenlos zum Download anzubieten. Vielleicht kann der eine oder andere was damit Anfangen. Den Teil mit den kuumlnstlichen Neuronalen Netzen finde ich nicht so elegant (braucht verdsammt viel Zeit und auch hier muumlsste noch sehr viel probiert werden), aber mit der Regressionsanalyse bin ich schon der Meinung, dass man daraus ein sehr gutes Forex Tool entwerfen koumlnnte. Die Anwendung wurde mit dem C Builder programmiert. Wer Interesse an den Quellcode hat, sollte hiermit schon arbeiten. Download der Trading Software Regressionsanalyse Kuumlnstliche neuronale Netze Teil 1 Kuumlnstliche neuronale Netze Teil 2 Falls jemand diese Software als Basis fuumlr eine neue nutzt, freue ich mich auf Feedback. Bitte habt Verstaumlndnis dafuumlr, dass die Software fuumlr die Uni Abschlussarbeit programmiert worden ist und daher diverse Punkte nicht integriert sind. Auszligerdem ist ein Bachelor Report nur eine halbe Diplomarbeit, so dass ich nicht so viel Zeit investieren konnte. Betrachtet es nicht als fertige Loumlsung, sondern als einen moumlglichen Ansatz. Falls jemand nun eine Boumlrsen Software programmiert und damit das groszlige Geld verdient, freue ich mich uumlber eine Spende :) Ich moumlchte keine Fragen zur Software beantworten. Im Anhang einige Beispiele der Anwendung Der Regressionsanalyse wird ein Input als CSV uumlbergeben. Hier koumlnnen dann die einzelnen Waumlhrungspaare und ggf. weitere Kennzahlen einflieszligen. Nach der Berechnung wird nun der simulierte und der tatsaumlchliche Kurs angezeigt. Wenn diese Software als Forex Software umgebaut wird, koumlnnte man sich z. B. die naumlchste Kurs Prognose berechnen lassen. Im ersten Schritt findet das Training der kuumlnstlichen neuronale Netze statt. Dies benoumltigt einige Stunden Im zweiten Script, kann das Ergebnis einfach berechnet werden. Das Ergebnis muss dann nur entsprechend multipliziert werden. Hinweis: Dieser Artikel und die dazugehrige Software wurden von Philipp von der Born verfasst. Bitte keine Fragen zur SoftwareMetaTrader 4 - Beispiele Neuronale Netze In MetaTrader verwenden Einfhrung Viele von Ihnen haben wahrscheinlich die Mglichkeit der Verwendung von neuronalen Netzen in Ihrem EA betrachtet. Dieses Thema war sehr hei, besonders nach der 2007 Automated Trading Championship und dem spektakulren Gewinn von Better mit seinem System auf Basis neuronaler Netze. Viele Internet-Foren wurden mit Themen berflutet im Zusammenhang mit neuronalen Netzen und Devisenhandel. Leider ist die native MQL4 Umsetzung von NN nicht einfach. Es erfordert einige Programmierkenntnisse und das Ergebnis wrde nicht sehr effizient sein, besonders, wenn Sie mchten, dass Ihr abschlieendes Ergenis im Tester auf groe Mengen von Daten testen wollen. In diesem Artikel werde ich Ihnen zeigen, wie Sie die frei verfgbare (unter LGPL), bekannte Fast Artificial Neural Network Library (FANN) in Ihrem MQL4 Code verwenden, whrend bestimmte Hindernisse und Einschrnkungen vermieden werden. Auerdem gehe ich davon aus, dass der Leser mit Artificial Neural Networks (ann) und der Terminologie in Zusammenhang mit diesem Thema vertraut ist, so dass ich mich auf praktische Aspekte der Verwendung von bestimmter Implementierung von ann in MQL4 Sprache konzentrieren werde. FANN Eigenschaften Um in vollem Umfang die Mglichkeiten der FANN Implementierung zu verstehen, muss man sich mit ihrer Dokumentation und den am hufigsten verwendeten Funktionen vertraut machen. Die typische Verwendung von FANN ist ein einfaches vorgeschaltetes Netzwerk zu schaffen, es mit einigen Daten trainieren und laufen. Das erstellte und trainierte Netzwerk knnte dann in eine Datei gespeichert werden und spter zur weiteren Verwendung wieder hergestellt werden. Um ein ann zu erstellenmuss man die fanncreatestandard() Funktion verwende. Sehen wir uns die Syntax an: Wo numlayers die Gesamtzahl von Schichten darstellt, einschlielich der Eingabe - und der Ausgabeschicht. Das lNnum und folgende Argumente reprsentiert die Anzahl von Neuronen in jeder Schicht, beginnend mit der Eingabeschicht, und endend mit der Ausgabeschicht. Um ein Netz mit einer verborgenen Schicht mit 5 Neuronen, 10 Eingaben und 1 Ausgabe zu erzeugen, msste man es nennen, wie folgt: Sobald das ann erstellt ist, wre die nchste Operation, es mit einigen Eingabe - und Ausgabedaten zu trainieren. Die einfachste Ausbildungsmethode ist inkrementelles Training, das durch die folgende Funktion erreicht werden kann: Diese Funktion nimmt den Pointer zu struct fann zuvor zurckgegeben von fanncreatestandard () und beide Eingabedatenvektor und Ausgabedatenvektor. Die Eingabe - und Ausgabevektoren sind Arrays des fanntype Typs. Diese Art ist in Tat ein double - oder ein float - Typ, abhngig von der Art wie FANN kompiliert wird. In dieser Implementierung werden die Eingabe - und Ausgabevektoren double Arrays seingt. Sobald das ann aussgebildet ist, wre das nchte gewnscht Feature die Asufhrung des Netzes. Die Funktion die dies Umsetzt, ist wie folgt definiert: Diese Funktion nimmt den Pointer zu struct fann . das zuvor erstellte Netzwerk darstellend, und einen Eingabevektor des definierten Typs ( double Array). Der Rckgabewert ist ein Ausgabevektor-Array. Diese Tatsache ist wichtig, da wir fr ein Ausgabe-Netzwerk immer ein Element Array mit dem Ausgangswert, anstelle des Ausgangswert selbst erhalten. Leider verwenden die meisten FANN Funktionen einen Pointer auf ein struct fann das ann darstellend, was nicht direkt gehandhabt werden kann von MQL4, das Strukturen als Datentypen nicht untersttzt. Um diese Einschrnkung zu vermeiden mssen wir das ummanteln, und in irgendeiner Art und Weise vor MQL4 verbergen. Die einfachste Methode ist ein Array von struct fann Pointern zu erstellen, das die richtigen Werte hlt und sich auf sie mit einem Index bezieht, dargestellt von einer int Variable. . So knnen wir den nicht untersttzten Variablentyp mit einem untersttzten ersetzen und eine Wrapper-Bibliothek erstellen, die mit MQL4 Code leicht integriert werden kann. Die FANN rundum Einwickeln Nach bestem Wissen, untersttzt MQL4 keine Funktionen mit variabler Argumente-Liste, so mssen wir auch damit umgehen. Auf der anderen Seite, wenn die C-Funktion (mit variabler Argumente Lnge) mit zu vielen Argumenten aufgerufen wird, passiert nichts falsches, also bernehmen wir eine feste maximale Anzahl von Argumenten in MQL4 Funktion bergeben an C-Bibliothek. Die resultierende Wickel-Funktion wrde aussehen wie folgt: Wir wechselten die fhrende fann mit f2M (die fr FANN TO MQL steht), verwendeten statische Anzahl von Argumenten (4 Schichten) und der zurckgebende Wert ist jetzt ein Index fr interne Array von anns die struct fann Daten haltend, erforderlich fr FANN zum Arbeiten. Auf diese Weise knnen wir leicht eine solche Funktion innerhalb MQL-Code aufrufen. Das gleiche geht fr: Last, but not least ist die Tatsache, dass Sie zu Ihr einmal erstelltes ann zerstren mssen, durch den Aufruf zu: Um ann Handles freizugeben, mssen Sie die Netze in umgekehrter Reihenfolge zerstren, wie Sie sie erzeugt haben. Alternativ knnen Sie verwenden: Allerdings bin ich ziemlich sicher, dass einige von Ihnen bevorzugen ihre trainierten Netze zu speichern, fr eine sptere Verwendung mit: Natrlich kann das gespeicherte Netz spter neu geladen (oder eher neu erstellt) werden, mit: Sobald wir die Grundfunktionen kennen, knnten wir versuchen das in unserem EA zu verwenden, aber zuerst mssen das Fann2MQL Paket installieren. Fann2MQL Installieren Um die Verwendung des Pakets zu vereinfachen, habe ich den msi installer erstellt, der den gesamten Quellcode enthlt, plus vorkompilierte Bibliotheken und Fann2MQL. mqh Header-Datei, die alle Fann2MQL Funktionen deklariert. Der Installationsvorgang ist sehr einfach. Zuerst werden Sie informiert, dass Fann2MQL unter GPL Lizenz ist: Installation von Fann2MQL, Schritt 1 Dann whlen Sie denn Ordner um das Paket zu installieren. Sie knnen den Standard verwenden Program FilesFann2MQL oder installieren direkt in Ihr Meta Traderexperts Verzeichnis. Spter werden alle Dateien direkt an ihre Orte platziert, ansonsten werden Sie alle manuell kopieren mssen. Installation von Fann2MQL, Schritt 2 Der Installer platziert Dateien in die folgenden Ordner: Wenn Sie in einen dedizierten Fann2MQL Ordner installieren mchten, kopieren Sie bitte den Inhalt von den include und libraries Unterordner Ihr entsprechendes MetaTrader Verzeichnis. Der Installer installiert auch die FANN Bibliothek in Ihren Systembibliotheken Ordner (Windowssystem32 in den meisten Fllen). Der src enthlt den gesamten Quellcode von Fann2MQL. Sie knnen den Quellcode lesen, der eine ultimative Dokumentation ist, wenn Sie mehr Informationen ber die Interna bentigen. Sie knnen den Code auch verbessern und zustzliche Features hinzufgen, wenn Sie das mchten. Ich ermutige Sie mir Ihre Patches zu schicken, wenn Sie etwas interessantes implementieren. Neuronale Netze in Ihrem EA verwenden Sobald die Fann2MQL installiert ist, knnen Sie beginnen, Ihren eigene EA oder Indikator zu schreiben. Es gibt viele mgliche Verwendung von NN. Sie knnen sie verwenden, um zuknftige Kursbewegungen zu prognostizieren aber die Qualitt solcher Prognosen und die Mglichkeit einen echten Vorteil zu erlangen, ist zweifelhaft. Sie knnen versuchen, Ihre eigene Strategie mit Reinforcement Learning Techniken, etwa ein Q-Learning oder etwas hnliches zu schreiben. Sie knnen versuchen NN als einen Signalfolter fr Ihren heuristischen EA zu verwenden oder alle diese Techniken kombinieren, was auch immer Sie mchten. Sie sind nur durch Ihre eigene Fantasie gegrenzt. Hier zeige ich Ihnen ein Beispiel der Verwendung eines NN als einfachen Filter fr Signale, generiert von MACD. Bitte betrachten Sie es nicht als wertvollen EA, sondern als Beispielanwendung von Fann2MQL. Whrend der Erklrung ber das Vorgehen, hier der Beispiel EA: NeuroMACD. mq4 funktioniert. Ich werde ihnen zeigen, wie die Fann2MQL effektiv in MQL verwendet werden kann. Die allererste Sache fr jeden EA, ist die Deklaration der globalen Variablen definiert und Abschnitt umfassen. Hier ist der Beginn des NeuroMACD, der diese Dinge enthlt: Der Include-Befehl gibt an die Fann2MQL. mqh Header-Datei zu laden, welche die Deklaration aller Fann2MQL Funktionen enthlt. Danach sind alle Fann2MQL Paket-Funktionen fr den Einsatz im Skript verfgbar. Die ANNPATH - Konstante definiert den Pfad zum Speichern und laden von Dateien mit ausgebildeten FANN Netzwerken. Sie mssen diesen Ordner erstellen, d. h. C:ANN . Die NAME - Konstante enthlt den Namen dieses EA, der spter fr das Laden und Speichern Netzwerk-Dateien verwendet wird. Eingabeparameter sind ziemlich offensichtlich und die es nicht sind, werden spter erlutert, sowie globale Variablen.. Der Einstiegspunkt fr jeden EA ist seine init() Funktion: Zunchst wird geprft, ob der EA auf den richtigen Zeitrahmen angewendet wird. Die AnnInputs Variable enthlt die Anzahl der neuronalen Netzwerkeingnge. Da wir drei Stze von verschiedenen Argumenten verwenden werden, soll es teilbar durch 3 sein. AnnPath wird berechnet zum Reflektieren von EA NAME und MagicNumber . die aus den SlowMA . FastMA and SignalMA Eingabeargumenten berechnet wird, die spter fr die MACD-Indikator Signale verwendet werden. Sobald er den AnnPath kennt, versucht der EA neuronale Netze mit der annload() Funktion zu laden, die ich weiter unten beschreiben werde. Die Hlfte der geladenen Netze ist fr die Long-Position Filterung gedacht und die andere Hlfte fr Shorts. Die AnnsLoaded Variable wird verwendet um die Tatsache anzuzeigen, dass alle Netze korrekt initialisiert wurden. Wie Sie wahrscheinlich bemerkt haben, dieser Beispiel EA versucht mehrere Netzwerke zu laden. Ich bezweifle, dass es in dieser Anwendung wirklich notwendig ist, aber ich wollte Ihnen das volle Potenzial von Fann2MQL zeigen, die mehrere Netzwerke gleichzeitig handhabt und kann sie parallel verarbeiten kann, unter Ausnutzung von mehreren Kernen oder CPUs. Um es zu ermglichen nutzt Fann2MQL die Intel Threading Building Blocks Technologie. Die Funktion f2Mparallelinit() wird verwendet, die eine Schnittstelle zu initialisieren. Hier ist der Weg, den ich zum Initialisieren der Netze verwendet habe: Wie Sie sehen knnen, wenn die f2Mcreatefromfile() versagt, was durch den negativen Rckgabewert angezeigt wird, wird das Netzwerk mit der f2Mcreatestandard() Funktion erstellt mit Argumenten darauf hinweist, dass das erstellte Netzwerk 4 Schichten (einschlielich Ein - und Ausgabe) haben sollte, AnnInput21 Neuronen in der zweiten verborgenen Schicht und 1 Neurons in der Ausgabeschicht. in der Eingnge haben sollte, AnnInput Neuronen in der ersten verborgenen Schicht, f2Msetactfunctionhidden() wird verwendet, um die Aktivierungsfunktion von verborgenen Schichten auf SIGMOIDSYMMETRICSTEPWISE einzustellen (siehe FANN Dokumentation von fannactivationfuncenum ) und das gleiche gilt fr die Ausgabeschicht. Dann gibt es den Aufruf an f2mrandomizeweights() . die verwendet wird neuron Verbindungsgewichte innerhalb des Netzes zu initialisieren. Hier habe ich den Bereich von lt-0,4 0,4gt verwendet, Sie knnen aber jede andere verwenden, abhngig von Ihrer Anwendung. An dieser Stelle haben Sie wahrscheinlich die Funktion debug() bemerkt, die ich ein paar Mal verwendete. Es ist eine der einfachsten Methoden, um die Verbose Ebene Ihres EA zu ndern. Zusammen mit ihr und dem Eingabeparameter DebugLevel knnen Sie die Art und Weise abstimmen, dass Ihr Code die Debug-Ausgabe produziert. Wenn das erste Argument der Funktion debug() . der Debug - level hher als DebugLevel erzeugt die Funktion keine Ausgabe. Wenn es niedriger als gleich ist, wird der text String ausgegeben. Wenn der Debug-Level 0 ist, wird dieser String ERROR: an den Beginn angehangen. Auf diese Weise knnen Debug von Ihrem Code erzeugt auf mehrere Ebenen aufteilen. Die wichtigsten sind wahrscheinlich Fehler, so dass sie auf die Ebene 0 zugeordnet sind. Sie werden ausgegeben, auer wenn Sie Ihre Debuglevel unter 0 senken (was nicht geraten wird). Auf Ebene 1 werden einige wichtige Informationen ausgegeben, wie Besttigung des erfolgreichen Ladens des Netzes oder Erzeugung. Auf Stufe 2 oder hher nimmt die Bedeutung von gedruckten Informationen allmhlich ab. Vor der ausfhrlichen Erluterung der start() Funktion, die sehr lang ist, muss ich Ihnen einige weitere Funktionen zeigen, die dazu gedacht sind die Netz Eingabe vorzubereiten und die tatschlichen Netze auszufhren: Die Funktion annprepareinput() wird verwendet, um den Eingabenamen fr die Netze vorzubereiten (daher der Name). Der Zweck ist recht einfach, aber das ist der Punkt an den ich Sie erinnern muss, dass die Eingabedaten richtig normalisiert werden mssen. Es gibt keine ausgefeilte Normalisierung in diesem Fall, ich habe einfach die MACD Haupt - und Signalwerte, die nie den gewnschten Bereich auf den bercksichtigten Daten berschreiten. In dem realen Beispiel sollten Sie wahrscheinlich mehr Aufmerksamkeit auf dieses Thema legen. Wie Sie wahrscheinlich vermuten, ist die Auswahl der richtigen Eingabeargumente fr Netzeingabe, es Codieren, ist Zersetzung und Normalisierung einer der wichtigsten Faktoren bei der neuronalen Netz-Verarbeitung. Wie ich bereits erwhnte, hat die Fann2MQL die Fhigkeit die normale Funktionalitt des MetaTrader zu erweitern, was die parallel multithreaded Verarbeitung von neuronalen Netzen ist. Das globale Argument Parallel steuert dieses Verhalten. Die runanns() Funktion fhrt alle initialisierten Netze aus und erhlt die Ausgabrn von ihnen und speichert in dem AnnOutput Array. Die annsrunparallel Funktion ist verantwortlich fr die Handhabung des Jobs in der multithreaded Weise. Sie ruft die f2mrunparallel() auf, die die Anzahl von zu verarbeitenden Netzen zu verarbeiten als ein erstes Argument nimmt, das zweite Argument ist ein Array mit Handles fr alle Netze die Sie ausfhren wollen, die Bereitstellung des Eingabevektor ist ein drittes Argument. Alle Netz mssen auf den gleichen Eingabedaten ausgefhrt werden. Der Empfang der Ausgabe aus dem Netz erfolgt durch mehrere Aufrufe von f2mgetoutput (). Betrachten wir nun die start() Funktion: Ich beschreibe es kurz, da es recht gut kommentiert ist. Die tradeallowed() berprft, ob es der Handel erlaubt ist. Im Grunde ist es berprft die AnnsLoaded Variable, die angibt, dass alle anns richtig initialisiert wurden, dann berprft sie den richtigen Zeitrahmen, Mindestkontostand und erlaubt am Ende nur auf dem ersten Tick eines neuen Balken zu handeln. Die nchsten zwei Funktion werden verwendet Netzeingabe vorzubereiten und die Netz-Verarbeitung auszufhren, wurden nur wenige Zeilen weiter oben beschrieben. Als nchstes berechnen wir und setzen sie spter in Variablen zur Verarbeitung, die MACD Werte der Signal - und Haupt-Linie fr den zuletzt aufgebauten Balken und den vorherigen. Die aktuelle Balken wird ausgelassen, da er noch nicht aufgebaut ist und wird wahrscheinlich neu gezeichnet wird. Die SellSignal und BuySignal werden entsprechend der MACD Signal - und Haupt-Linie Kreuzung berechnet. Beide Signale werden fr lange und kurze Positionsverarbeitung verwendet, die symmetrisch sind, also werde ich nur den Fall fr Long-Positionen beschreiben. Die LongTicket Variable enthlt die Ticketnummer der aktuell geffneten Position. Wenn es gleich zu -1 ist, wird keine Position geffnet, so wenn der BuySignal gesetzt ist, knnte das auf eine gute Mglichkeit hinweisen eine Long-Position zu ffnen. Wenn die Variable NeuroFilter nicht gesetzt ist, wird die Long-Position geffnet und das ist der Fall, ohne die neuronale Netz Filterung der Signale - die Order zu kaufen ist gesendet. An dieser Stelle soll die LongInput Variable die an von annprepareinput() fr eine sptere Verwendung vorbereiteten InputVector erinnern. Wenn LongTicekt Variable die gltige Ticket-Nummer hlt, prft der EA ob sie noch offen ist oder durch StopLoss oder TakeProfit geschlossen wurde. Wenn die Order nicht nicht geschlossen ist, passiert nichts, wenn die Order durch den trainoutput Vektor geschlossen ist, der nur eine Ausgabe hat, wird berechnet den Wert von -1 zu halten wenn die Order wurde mit Verlust geschlossen wurde oder 1, wenn die Order mit Gewinn abschloss Dieser Wert wird dann zu anntrain() Funktion bergeben und alle verantwortlichen Netze fr den Umgang mit Long-Positionen sind mit ihm trainiert. Als Eingabevektor wird die Variable LongInput verwendet, die die InputVector im Moment des ffnens der Position hlt. Auf diese Weise wird das Netz gelehrt, welches Signal Gewinne erbringt und welches ist es nicht. Sobald Sie ein ausgebildetes Netz haben, lsst das Umschalten von NeuroFilter auf true das Netz filtern. Die annwiselong() verwendet neuronale Netz weise berechnet als ein Mittelwert der von allen Netzen zurckgegebenen Werte mit Bedeutung fr die Behandlung einer Long-Position. wird unter Verwendung des neuronalen Netzes weise als Mittelwert der Werte von allen Netzen gemeint zu handhaben, die Long-Position zurck berechnet. Der Delta Parameter wird als ein Schwellenwert verwendet, das anzeigt, dass das gefilterte Signal gltig ist oder nicht. Wie viele andere Werte wurde er durch den Prozess der Optimierung erhalten. Nun, sobald wir wissen, wie es funktioniert, werde ich Ihnen zeigen, wie es verwendet werden kann. Das Testpaar ist natrlich EURUSD. Ich benutzte die Daten von Alpari. zu M5 Zeitrahmen konvertiert. Ich nutzte die Zeit von 31.12.2007 bis 01.01.2009 fr die Ausbildung Optimierung und 01.01.2009-22.032009 fr Testzwecke. Bereits im ersten Lauf habe ich versucht, die profitabelsten Werte fr StopLoss, TakeProfit, SlowMA, FastMA und SignalMA Argument zu erhalten, die ich dann in die NeuroMACD. mq4 Datei codiert habe. Der NeuroFIlter wurde ebenfalls ausgeschaltet, sowie SaveAnn . die AnnsNumber wurde auf 0 gesetzt um neuronale Verarbeitung zu vermeiden. Ich benutzte den genetischen Algorithmus fr Optimierungsprozess. Sobald die Werte empfangen wurden, sah der resultierende Bericht wie folgt aus: Bericht ber Trainigsdaten nach grundlegender Parameteroptimierung. Wie Sie sehen knnen, habe ich den EA auf dem Mini-Konto mit einer Lot-Gre von 0.01 und einer Anfangseinzahlung von 200 eingesetzt. Sie knnen diese Parameter jedoch Kontoeinstellungen oder Vorlieben anpassen An dieser Stelle haben wir genug rentable und verlierende Trades, so dass wir den SaveAnn anstellen und die AnnsNumber auf 30 setzen. Ist das getan, lasse ich den Teaster noch einmal durchlaufen Das Ergebnis war genau das gleiche, auer der Tatsache, dass der Prozess sehr viel langsamer war (als Folge der neuronalen Verarbeitung) und den Ordner C:ANN wurde mit den trainierten Netzwerken besiedelt, wie unten auf dem Bild gezeigt. Stellen Sie sicher, dass der C:ANN Ordner vor diesem Durchlauf vor dem existiert Der C:ANN Ordner. Sobald wir Netze trainiert haben, ist es Zeit, zu testen wie es sich verhlt. Zuerst versuchen wir es auf den Trainingsdaten. ndern Sie den NeuroFilter zu true und SaveAnn zu false und starten Sie den Tester. Das Ergebnis, das ich erhalten haben, wird unten gezeigt. Beachten Sie, dass es leicht fr Sie Fall unterschiedlich sein knnte, da es einige Zuflligkeit innerhalb Netzwerke in Verbindung Gewichten Neuron ist bei dem Netzwerk Initialisierung vorgesehen (in diesem Beispiel, das ich expliziten Aufruf f2Mrandomizeweights verwendet() innerhalb annload(). Ergebnis erhalten auf Trainingsdaten mit Signal neuronaler Filterung aktiviert. Der Nettogewinn ist etwas grer (20,03 gegenber 16,92), doch der Gewinnfaktor ist viel hher (1,25 gegenber 1,1). Die Anzahl der Trades ist viel weniger (83 vs 1188) und die durchschnittlich aufeinanderfolgende Verluste Anzahl wird von 7 auf 2 gesenkt. Jedoch zeigt es nur, dass neuronale Signalfilterung funktioniert, aber es sagt nichts darber, wie sie auf Daten arbeitet, die nicht fr verwendet wurden whrend des Trainings. Das Ergebnis, das ich aus der Testphase erhalten haben (01.01.2009 - 20.03.2009) ist unten dargestellt: Ergebnis erhalten von Testdaten mit neuronaler Filterung aktiviert. Die Anzahl der ausgefhrten Tra des ist ziemlich gering, und es ist schwer zu sagen, ob es die Qualitt dieser Strategie ist, aber ich wollte nicht zeigen, wie man die besten rentable nEA zu schreibt, aber erklren, wie man neuronale Netze in Ihrem MQL4 Code nutzen knnte. Der wirkliche Effekt der Verwendung von neuronalen Netzen in diesem Fall kann nur dann gesehen werden, wenn die Ergebnisse der EA auf Testdaten im Vergleich zu sehen sind mit NeuroFilter ein - und ausgeschaltet. Im Folgenden ist das erhaltene Ergebnis der Testdatenperiode ohne neuronale Signalfilterung: Ergebnisse von Testdaten ohne neuronale Filterung. Der Unterschied ist sehr offensichtlich. Wie sie sehen, macht die neuronale Filterung aus einem verlierenden EA einen rentablen Ich hoffe, dass Sie aus diesem Artikel gelernt haben, wie man neuronale Netze in MetaTrader verwendet. Mit Hilfe des einfachen, freien und Open-Source-Paket Fann2MQL knnen Sie einfach die neuronale Netzschicht in praktisch jedem Expert Advisor hinzufgen oder fangen Sie an Ihren eigenen zu schreiben, der vollstndig oder teilweise auf neuronalen Netzen basiert. Die einzigartige Multi-Threading-Fhigkeit kann Ihre Verarbeitung viele Male beschleunigen, abhngig von der Anzahl der CPU-Kerne, insbesondere wenn bestimmte Parameter optimiert werden. In einem Fall hat es die Optimierung meiner Reinforcement Learning basierten EA Verarbeitung von etwa 4 Tagen auf nur 28 Stunden verkrzt, mit einer 4-Kern Intel CPU. Whrend des Schreibens dieses Artikels habe ich mich entschlossen Fann2MQL auf der eigenen Website zu setzen: fann2mql. wordpress. Sie finden dort die neueste Version von Fann2MQL und mglicherweise alle zuknftigen Versionen sowie die Dokumentation aller Funktionen. Ich verspreche, diese Software fr alle Versionen unter GPL-Lizenz zu halten, so, wenn Sie mir jegliche Kommentare senden, Feature-Anfragen oder Patches, die ich interessant finde, seien Sie sicher, es in nchsten Versionen zu finden. Bitte beachten Sie, dass dieser Artikel nur die sehr grundlegende Verwendung von Fann2MQL zeigt. Da dieses Paket nicht viel mehr ist als FANN, knnen Sie alle Werkzeuge fr die Verwaltung von FANN Netzen verwenden, wie: Und es gibt viel mehr ber FANN auf der Fast Artificial Neural Network Library Webseite: leenissen. dkfann Post Scriptum Nach dem Schreiben dieses Artikels habe ich einen unedeutenden Fehler in NeuroMACD. mq4 gefunden. Die OrderClose() Funktion fr Short-Positionen wurde mit der Ticket-Nummer fr Long-Positionen gespeist. Es fhrte zu einer schiefen Strategie, was mehr in die Richtung ging Shorts zu halten und Longs zu schlieen: In der korrekten Version des Skripts habe ich diesen Fehler behoben und die OrderClose() Strategie insgesamt entfernt. Das hat das Gesamtbild des Einflusses neuronaler Filterung nicht verndert, noch war die Kontostandkurve vllig anders. Sie finden beide Versionen dieses EA an diesen Artikel angehangen. bersetzt aus dem Englischen von MetaQuotes Software Corp. Originalartikel: mql5enarticles1565

Комментариев нет:

Отправить комментарий