Wednesday, 22 March 2017

Forex Neuronales Netzwerk Ea

MetaTrader 4 - Beispiele mit Neuronalen Netzwerken in MetaTrader Einführung Viele von Ihnen haben wahrscheinlich die Möglichkeit der Verwendung von neuronalen Netzwerken in Ihrem EA betrachtet. Dieses Thema war sehr heiß nach 2007 Automated Trading Championship und die spektakuläre Gewinnung von Better mit seinem System auf neuronale Netze basiert. Viele Internet-Foren wurden mit Themen über Neuronale Netze und Devisenhandel überflutet. Leider ist das Schreiben nativer MQL4-Implementierung von NN nicht einfach. Es erfordert einige Programmierkenntnisse und das Ergebnis wäre nicht sehr effizient, besonders wenn youd wie Sie Ihr Endergebnis in Tester auf große Anzahl von Daten zu testen. In diesem Artikel zeigen wir Ihnen, wie Sie die frei verfügbare (unter LGPL), bekannte Fast Artificial Neural Network Library (FANN) in Ihrem MQL4-Code verwenden können, ohne dabei bestimmte Hindernisse und Einschränkungen zu vermeiden. Außerdem nehme ich an, dass der Leser mit künstlichen neuronalen Netzwerken (ann) und Terminologie in Bezug auf dieses Thema vertraut, so krank konzentrieren sich auf praktische Aspekte der Verwendung bestimmter Umsetzung von ann in MQL4 Sprache. FANN-Funktionen Um die Möglichkeiten der FANN-Implementierung zu verstehen, müssen Sie sich mit der Dokumentation und den am häufigsten verwendeten Funktionen vertraut machen. Der typische Einsatz von FANN besteht darin, ein einfaches Feedforward-Netzwerk zu erstellen, es mit einigen Daten zu trainieren und auszuführen. Das erstellte und trainierte Netzwerk kann dann in einer Datei gespeichert und später für die weitere Verwendung wiederhergestellt werden. Um ein ann zu erstellen, muss man die fanncreatestandard () Funktion verwenden. Lets see seine Syntax: Wo numlayers die Gesamtzahl der Ebenen einschließlich der Eingabe-und Output-Layer darstellt. Das lNnum und die folgenden Argumente repräsentieren die Anzahl der Neuronen in jeder Ebene, beginnend mit der Eingabeschicht und endend mit der Ausgabeschicht. Um ein Netzwerk mit einer versteckten Schicht mit 5 Neuronen, 10 Eingängen und 1 Ausgabe zu erstellen, müsste man es wie folgt aufrufen: Nach der Erstellung der Ann wird die nächste Operation mit einigen Ein - und Ausgabedaten trainiert. Die einfachste Trainingsmethode ist ein inkrementales Training, das durch folgende Funktion erreicht werden kann: Diese Funktion nimmt den Zeiger auf struct fann zurück, der zuvor von fanncreatestandard () und dem Eingangsdatenvektor und dem Ausgangsdatenvektor zurückgegeben wurde. Die Eingangs - und Ausgangsvektoren sind vom Array vom Fankype-Typ. Diese Art ist in der Tat ein Doppel-oder Float-Typ, je nachdem, wie die FANN zusammengestellt wird. In dieser Implementierung werden die Eingangs - und Ausgangsvektoren Arrays von double sein. Sobald die ann geschult ist, würde das nächste gewünschte Merkmal sein, dieses Netzwerk auszuführen. Die Funktion, die implementiert, ist wie folgt definiert: Diese Funktion nimmt den Zeiger auf struct fann, der das zuvor erstellte Netzwerk repräsentiert, und einen Eingabevektor des definierten Typs (double array). Der zurückgegebene Wert ist ein Ausgabevektorarray. Diese Tatsache ist wichtig, da für ein Versorgungsnetzwerk immer ein Elementarray mit dem Ausgangswert und nicht dem Ausgangswert selbst erhalten wird. Leider verwenden die meisten FANN-Funktionen einen Zeiger auf eine Struktur fann, die die Ann darstellt, die nicht direkt von MQL4 behandelt werden kann, die Strukturen nicht als Datentypen unterstützt. Um diese Einschränkung zu vermeiden, müssen wir das in irgendeiner Weise einpacken und uns vor MQL4 verstecken. Die einfachste Methode besteht darin, ein Array von struct fann-Zeigern mit den richtigen Werten zu erstellen und sie mit einem Index zu verweisen, der durch eine int-Variable dargestellt wird. Auf diese Weise können wir den nicht unterstützten Variablentyp durch einen unterstützten ersetzen und eine Wrapper-Bibliothek erstellen, die einfach in den MQL4-Code integriert werden kann. Wrapping der FANN rund Nach meinem besten Wissen MQL4 nicht unterstützt Funktionen mit variablen Argumenten-Liste, damit wir mit, dass zu behandeln. Wenn andererseits die C-Funktion (mit variabler Argumentlänge) mit zu vielen Argumenten aufgerufen wird, passiert nichts falsch, so dass wir eine feste maximale Anzahl von Argumenten in der an die C-Bibliothek übergebenen MQL4-Funktion annehmen können. Die resultierende Wrapper-Funktion würde wie folgt aussehen: Wir änderten den führenden fann mit f2M (was für FANN TO MQL steht), verwendete statische Anzahl von Argumenten (4 Ebenen) und der zurückgebende Wert ist nun ein Index für das interne Array von anns, das das struct enthält Die von FANN für den Betrieb benötigt werden. Auf diese Weise können wir diese Funktion einfach aus MQL-Code aufrufen. Das gleiche gilt für: Last, but not least ist die Tatsache, dass Sie Ihre einmal erstellte Ann durch den Aufruf zu zerstören: Um Freigabe Ann Handles sollten Sie Netzwerke in umgekehrter Reihenfolge zu zerstören, als sie erstellt wurden. Alternativ können Sie: Im Im ziemlich sicher einige von euch vielleicht bevorzugen, um ihre geschultes Netz für die spätere Verwendung mit speichern: Natürlich kann das gespeicherte Netz später geladen werden (oder eher neu erstellt) mit: Sobald wir die grundlegenden Funktionen, die wir versuchen könnten, kennen Verwenden Sie das in unserem EA, aber zuerst müssen wir das Fann2MQL Paket installieren. Installieren von Fann2MQL Um die Verwendung dieses Pakets zu erleichtern, habe ich das msi-Installationsprogramm erstellt, das den gesamten Quellcode sowie vorkompilierte Bibliotheken und die Fann2MQL. mqh-Header-Datei enthält, die alle Fann2MQL-Funktionen deklariert. Das Verfahren der Installation ist recht einfach. Zuerst werden Sie informiert, dass Fann2MQL unter GPL-Lizenz ist: Installation von Fann2MQL, Schritt 1 Dann wählen Sie den Ordner, um das Paket zu installieren. Sie können das Standard-Programm FilesFann2MQL verwenden oder direkt in Ihr Meta Traderexperts Verzeichnis installieren. Das spätere wird alle Dateien direkt in ihre Plätze sonst youll müssen sie manuell zu kopieren. Installation von Fann2MQL, Schritt 2 Das Installationsprogramm stellt Dateien in folgende Ordner ein: Wenn Sie sich für die Installation im dedizierten Fann2MQL-Ordner entschieden haben, kopieren Sie bitte den Inhalt der zugehörigen Unterordner und Bibliotheken in das entsprechende Meta Trader-Verzeichnis. Das Installationsprogramm installiert auch die FANN-Bibliothek in den Ordner Systembibliotheken (Windowssystem32 in den meisten Fällen). Der src-Ordner enthält den gesamten Quellcode von Fann2MQL. Sie können den Quellcode lesen, der eine ultimative Dokumentation ist, wenn Sie mehr Informationen über die Interna benötigen. Sie können den Code auch verbessern und zusätzliche Eigenschaften hinzufügen, wenn Sie mögen. Ich ermutige Sie, schicken Sie mir Ihre Patches, wenn Sie etwas Interessantes umzusetzen. Verwenden von neuronalen Netzwerken in Ihrem EA Sobald die Fann2MQL installiert ist, können Sie beginnen, Ihre eigene EA oder Indikator zu schreiben. Theres viel der möglichen Nutzung von NN. Sie können sie verwenden, um zukünftige Preisbewegungen zu prognostizieren, aber die Qualität solcher Vorhersagen und die Möglichkeit, sie wirklich zu nutzen, ist zweifelhaft. Sie können versuchen, Ihre eigene Strategie mit Reinforcement Learning Techniken, sagen ein Q-Learning oder etwas ähnliches zu schreiben. Sie können versuchen, NN als Signalfilter für Ihre heuristische EA verwenden oder kombinieren Sie alle diese Techniken und was auch immer Sie wirklich wollen. Youre begrenzt durch Ihre Fantasie nur. Hier zeige ich Ihnen ein Beispiel für die Verwendung von NN als einfachen Filter für Signale, die von MACD erzeugt werden. Bitte betrachten Sie es nicht als wertvolle EA, sondern als Beispielanwendung von Fann2MQL. Während der Erklärung, wie das Beispiel EA: NeuroMACD. mq4 funktioniert Ill zeigen Ihnen, wie die Fann2MQL effektiv in MQL verwendet werden kann. Das erste, was für jede EA ist die Deklaration der globalen Variablen, definiert und Abschnitt einschließen. Hier ist der Anfang von NeuroMACD, der diese Dinge enthält: Der Befehl include sagt, die Fann2MQL. mqh-Header-Datei zu laden, die die Deklaration aller Fann2MQL-Funktionen enthält. Danach stehen alle Fann2MQL-Paketfunktionen für das Skript zur Verfügung. Die ANNPATH-Konstante definiert den Pfad zum Speichern und Laden von Dateien mit geschulten FANN-Netzwerken. Sie müssen diesen Ordner erstellen, d. H. C: ANN. Die NAME-Konstante enthält den Namen dieses EA, der später zum Laden und Speichern von Netzwerkdateien verwendet wird. Die Eingabeparameter sind ziemlich offensichtlich, und diejenigen, die arent sind, werden später erläutert, sowie globale Variablen. Der Eintrittspunkt jeder EA ist ihre init () - Funktion: Zuerst prüft sie, ob die EA angewendet wird, um die Zeitrahmenperiode zu korrigieren. AnnInputs Variable enthält die Anzahl der neuronalen Netzeingänge. Ebenso verwenden 3 Sätze von verschiedenen Argumenten wollen wir es durch 3 teilbar. AnnPath wird berechnet, um die EA NAME und MagicNumber widerspiegeln. Die aus dem SlowMA berechnet wird. FastMA - und SignalMA-Eingangsargumente, die später für die MACD-Anzeigesignalisierung verwendet werden. Sobald es die AnnPath kennt, versucht die EA, neuronale Netze mit annload () - Funktion zu laden, die Ill unten beschreiben. Die Hälfte der geladenen Netze ist für die Langpositionsfilterung und die andere Hälfte für Kurzschlüsse bestimmt. Die Variable AnnsLoaded wird verwendet, um anzuzeigen, dass alle Netzwerke korrekt initialisiert wurden. Wie Sie wahrscheinlich bemerkt haben, dieses Beispiel EA versucht, mehrere Netzwerke zu laden. Ich bezweifle es wirklich notwendig in dieser Anwendung noch wollte ich Ihnen zeigen, das volle Potenzial von Fann2MQL, die Handhabung mehrere Netzwerke zur gleichen Zeit und kann sie parallel unter Ausnutzung von mehreren Kerne oder CPUs verarbeiten. Um es zu ermöglichen, nutzt Fann2MQL die Intel Threading Building Blocks Technologie. Mit der Funktion f2Mparallelinit () wird diese Schnittstelle initialisiert. Hier ist die Art und Weise, wie ich Netze zu initialisieren: Wie Sie sehen können, wenn die f2Mcreatefromfile () fehlschlägt, was durch den negativen Rückgabewert angezeigt wird, wird das Netzwerk mit f2Mcreatestandard () - Funktion mit Argumenten, dass das erstellte Netzwerk sollte 4 Schichten (Einschließlich Eingang und Ausgang), AnnInput Eingänge, AnnInput Neuronen in der ersten versteckten Schicht, AnnInput21 Neuronen in der 2. versteckten Schicht und 1 Neuron in der Ausgabeschicht. F2Msetactfunctionhidden () wird verwendet, um die Aktivierungsfunktion von ausgeblendeten Layern auf SIGMOIDSYMMETRICSTEPWISE zu setzen (siehe FANN Dokumentation von fannactivationfuncenum) und das gleiche gilt für die Ausgabeschicht. Dann gibt es den Aufruf von f2mrandomizeweights (), mit dem Neuron-Verbindungsgewichte im Netzwerk initialisiert werden. Hier habe ich die Reichweite von lt-0.4 0.4gt, aber Sie können alle anderen je nach Ihrer Anwendung verwenden. An diesem Punkt haben Sie wahrscheinlich die Funktion debug () bemerkt, die ich ein paar Mal verwendet habe. Seine eine der einfachsten Methoden, um das ausführliche Niveau Ihres EA zu ändern. Zusammen mit ihm und dem Eingangsparameter DebugLevel können Sie einstellen, wie Ihr Code die Debug-Ausgabe erzeugt. Wenn das erste Argument der Funktion debug () die Debug-Ebene höher als DebugLevel ist, erzeugt die Funktion keine Ausgabe. Wenn sein unterer Wert gleich der Textfolge ist, wird gedruckt. Wenn die Debug-Ebene 0 ist, wird der String ERROR: an den Anfang angehängt. Auf diese Weise können Sie von Ihrem Code erzeugten Debugging auf mehrere Ebenen aufteilen. Die wichtigsten sind wahrscheinlich Fehler, so dass sie der Ebene 0 zugeordnet sind. Sie werden gedruckt, es sei denn, Sie senken Ihre DebugLevel auf unter 0 (was nicht empfohlen wird). Auf der Ebene 1 werden einige wichtige Informationen gedruckt, wie die Bestätigung der erfolgreichen Netzwerkbeladung oder - erstellung. Auf Stufe 2 oder höher nimmt die Bedeutung der gedruckten Information allmählich ab. Vor der ausführlichen Erklärung der start () - Funktion, die sehr langwierig ist, muss ich Ihnen einige weitere Funktionen zeigen, die den Netzwerkeingang vorbereiten und die eigentlichen Netzwerke vorbereiten sollen: Die Funktion annprepareinput () wird verwendet, um den Input-Namen für die Netzwerke vorzubereiten (Also der Name). Der Zweck davon ist ganz einfach, aber das ist der Punkt, den ich daran erinnern muss, dass die Eingangsdaten richtig normalisiert werden müssen. Es gibt keine anspruchsvolle Normalisierung in diesem Fall habe ich einfach die MACD Haupt-und Signalwerte, die nie überschreiten den gewünschten Bereich auf den Rechnungsdaten. In dem realen Beispiel sollten Sie wahrscheinlich mehr Aufmerksamkeit auf dieses Problem zu zahlen. Wie Sie vermutlich vermuten, die richtige Eingabe Argumente für Netzwerk-Eingang, Codierung, Zerlegung und Normalisierung ist einer der wichtigsten Faktoren in der neuronalen Netzwerk-Verarbeitung. Wie ich bereits erwähnt habe, hat die Fann2MQL die Möglichkeit, die normale Funktionalität von MetaTrader zu erweitern, dh eine parallele Multithread-Verarbeitung neuronaler Netzwerke. Das globale Argument Parallel steuert dieses Verhalten. Die runanns () - Funktion führt alle initialisierten Netzwerke aus und erhält die Ausgänge und speichert sie im AnnOutput-Array. Die Funktion "annsrunparallel" ist verantwortlich für die multithreaded Bearbeitung des Jobs. Es ruft die f2mrunparallel () auf, die als erstes Argument die Anzahl der zu verarbeitenden Netzwerke annimmt, das zweite Argument ist ein Array, das Handles für alle Netzwerke enthält, die Sie ausführen möchten, und liefert den Eingabevektor als drittes Argument. Alle Netze müssen auf den gleichen Eingangsdaten laufen. Das Abrufen der Ausgabe aus dem Netzwerk erfolgt über mehrere Aufrufe zu f2mgetoutput (). Nun sehen wir die start () Funktion: Ill beschreiben sie kurz, da sie gut kommentiert ist. Die tradeallowed () prüft, ob sie handeln darf. Grundsätzlich prüft es die AnnsLoaded-Variable, die angibt, dass alle Anns ordnungsgemäß initialisiert wurden, prüft dann auf den richtigen Zeitrahmen Zeitraum minimalen Kontostand und am Ende erlaubt nur den ersten Tick einer neuen Bar handeln. Die nächsten zwei Funktionen, die verwendet werden, um die Netzwerkeingabe vorzubereiten und die Netzwerkverarbeitung durchzuführen, wurden nur wenige Zeilen oben beschrieben. Als nächstes berechnen und setzen wir Variablen für die spätere Verarbeitung der MACD-Werte von Signal und Hauptleitung für die letzte Aufbauleiste und die vorherige. Der aktuelle Balken wird weggelassen, da er noch nicht aufgebaut ist und wahrscheinlich neu gezeichnet wird. Das SellSignal und das BuySignal werden entsprechend dem MACD-Signal und dem Hauptnetz-Crossover berechnet. Beide Signale werden für die Long - und Short-Positionsverarbeitung verwendet, die symmetrisch sind, so dass ich nur den Fall für longs beschreibe. Die LongTicket-Variable enthält die Ticketnummer der aktuell geöffneten Position. Wenn seine gleich -1 ist keine Position geöffnet, so dass, wenn das BuySignal gesetzt ist, dass eine gute Gelegenheit, um lange Position öffnen könnte. Wenn die Variable NeuroFilter nicht gesetzt ist, wird die Long-Position geöffnet und das ist der Fall ohne die neuronale Netzwerk-Filterung von Signalen - die Bestellung wird gesendet, um zu kaufen. An dieser Stelle soll die Variable LongInput den InputVector berücksichtigen, der von annprepareinput () für die spätere Verwendung vorbereitet wird. Wenn die LongTicekt-Variable die gültige Ticketnummer enthält, prüft die EA, ob sie noch geöffnet ist oder durch den StopLoss oder TakeProfit geschlossen wurde. Wenn die Bestellung nicht abgeschlossen ist, geschieht nichts, wenn der Auftrag jedoch geschlossen ist, wird der Trainings-Vektor, der nur einen Wert hat, berechnet, um den Wert -1 zu erhalten, wenn der Auftrag mit Verlust abgeschlossen wurde oder 1, wenn der Auftrag mit Gewinn abgeschlossen wurde . Dieser Wert wird dann an die anntrain () - Funktion übergeben und alle Netzwerke, die für die Handhabung der Long-Position verantwortlich sind, werden damit trainiert. Als Eingangsvektor wird die Variable LongInput verwendet, die den InputVector zum Zeitpunkt des Öffnens der Position hält. Auf diese Weise wird das Netzwerk gelehrt, welches Signal Gewinn bringt und welches nicht. Sobald Sie ein geschultes Netzwerk haben, schalten Sie den NeuroFilter auf true um. Das annwiselong () verwendet das neuronale Netzwerk, das als Mittelwert von Werten berechnet wird, die von allen Netzwerken zurückgegeben werden, die für die Verarbeitung der Langposition bestimmt sind. Der Delta-Parameter wird als Schwellenwert verwendet, der anzeigt, dass das gefilterte Signal gültig oder nein ist. Wie viele andere Werte wurde es durch den Prozess der Optimierung erhalten. Jetzt, sobald wir wissen, wie es funktioniert Ill zeigen Ihnen, wie es verwendet werden kann. Das Testpaar ist natürlich EURUSD. Ich verwendete die Daten von Alpari. Konvertiert in M5 Zeitrahmen. Ich verwendete den Zeitraum von 2007.12.31 bis 2009.01.01 für Trainingoptimierung und 2009.01.01-2009.03.22 für Testzwecke. Im allerersten Versuch habe ich versucht, die profitabelsten Werte für StopLoss, TakeProfit, SlowMA, FastMA und SignalMA Argument zu erhalten, die ich dann in die Datei NeuroMACD. mq4 codiert habe. Der NeuroFlter wurde ebenso ausgeschaltet wie SaveAnn. Wurde die AnnsNumber auf 0 gesetzt, um eine neuronale Verarbeitung zu vermeiden. Ich habe den genetischen Algorithmus für die Optimierung verwendet. Sobald die Werte erhalten wurden, sah der resultierende Bericht wie folgt aus: Bericht über Trainingsdaten nach grundsätzlicher Parameteroptimierung. Wie Sie sehen können, habe ich diese EA auf dem Mini-Konto mit der Lot-Größe von 0,01 und der Anfangs-Balance von 200 ausgeführt. Allerdings können Sie diese Parameter entsprechend Ihren Account-Einstellungen oder Einstellungen abstimmen. An diesem Punkt haben wir genug profitable und verlieren Trades, so konnten wir die SaveAnn einschalten und die AnnsNumber auf 30 setzen. Einmal getan, so laufe ich das Tester noch einmal. Das Ergebnis war genau das gleiche mit Ausnahme der Tatsache, dass der Prozess viel langsamer war (als Ergebnis der neuronalen Verarbeitung) und der Ordner C: ANN wurde mit den ausgebildeten Netzwerken, wie auf dem Bild unten gezeigt bevölkert. Stellen Sie sicher, dass vor dem Ausführen des Ordners C: ANN der Ordner C: ANN vorhanden war. Sobald wir Netzwerke trainiert haben, ist es Zeit zu testen, wie es sich verhält. Versuche es zuerst mit den Trainingsdaten. Ändern Sie den NeuroFilter auf true und SaveAnn auf false und starten Sie den Tester. Das Ergebnis, das ich erhalten habe, ist unten gezeigt. Beachten Sie, dass es leicht variieren kann für Sie Fall, da es einige Zufälligkeit in Netzwerken in Neuron-Verbindung Gewichte bei der Netzwerk-Initialisierung (in diesem Beispiel habe ich explizite Aufruf von F2Mrandomizeweights () innerhalb annload ()). Ergebnis bei Trainingsdaten mit eingeschalteter Signalneuralfilterung. Der Reingewinn ist etwas größer (20,03 gegenüber 16,92), der Gewinnfaktor ist jedoch deutlich höher (1,25 gegenüber 1,1). Die Anzahl der Trades ist viel geringer (83 vs 1188) und die durchschnittliche aufeinander folgende Verlustzahl wird von 7 auf 2 gesenkt. Allerdings zeigt es nur, dass die neuronale Signal-Filterung funktioniert, aber es sagt nichts darüber, wie es auf Daten, die nicht verwendet wurden, arbeitet Während des Trainings. Das Ergebnis, das ich aus dem Testzeitraum (2009.01.01 - 2009.30.28) erhalten habe, ist nachfolgend dargestellt: Ergebnis aus Testdaten mit Neuronalfilterung eingeschaltet. Die Anzahl der ausgeführten Trades ist recht niedrig und es ist schwer zu sagen, die Qualität dieser Strategie, aber ich war nicht dabei, Ihnen zu zeigen, wie die besten profitable EA zu schreiben, sondern zu erklären, wie Sie neuronale Netze in Ihrem MQL4-Code verwenden könnte. Die wirkliche Wirkung der Verwendung von neuronalen Netzwerken in diesem Fall kann nur gesehen werden, wenn die Ergebnisse der EA auf Testdaten mit NeuroFilter ein-und ausschalten verglichen. Unten ist das Ergebnis der Testdatenperiode ohne neuronale Signalfilterung: Ergebnisse aus Testdaten ohne Neuronalfilterung. Der Unterschied ist ganz offensichtlich. Wie Sie sehen können, die neuronale Signal-Filterung verließ die EA zu einem profitablen Fazit Ich hoffe, dass Sie aus diesem Artikel gelernt haben, wie man neuronale Netze in MetaTrader verwenden. Mit Hilfe der einfachen, kostenlosen und opensource Paket Fann2MQL können Sie leicht hinzufügen, die neuronale Netzwerk-Ebene in praktisch jedem Expert Advisor oder starten Sie Ihre eigenen, die vollständig oder teilweise auf neuronale Netze basiert schreiben. Die einzigartige Multithreading-Fähigkeit beschleunigt die Verarbeitung oft, je nach Anzahl der CPU-Kerne, speziell bei der Optimierung bestimmter Parameter. In einem Fall verkürzte es die Optimierung meiner Reinforcement Learning basierten EA-Verarbeitung von etwa 4 Tagen auf nur 28 Stunden auf einer 4-Core Intel CPU. Während des Schreibens dieses Artikels habe ich beschlossen, Fann2MQL auf seiner eigenen Website: fann2mql. wordpress setzen. Dort finden Sie die aktuelle Fann2MQL-Version und eventuell alle zukünftigen Versionen sowie die Dokumentation aller Funktionen. Ich verspreche, diese Software unter GPL-Lizenz für alle Versionen zu halten, so dass, wenn Sie mir Kommentare, Feature-Anfragen oder Patches, die ich interessant finden Sie sicher sein, es zu finden nächsten Releases. Bitte beachten Sie, dass dieser Artikel nur die sehr grundlegende Verwendung von Fann2MQL zeigt. Da dieses Paket ist nicht viel mehr als FANN können Sie alle Werkzeuge für die Verwaltung von FANN-Netzwerken, wie verwenden: Und theres viel mehr über FANN auf der Fast Artificial Neural Network Library Homepage: leenissen. dkfann Post Scriptum Nach dem Schreiben dieses Artikels habe ich gefunden Ein unbedeutender Fehler in NeuroMACD. mq4. Die OrderClose () - Funktion für die Short-Position wurde mit einer Long-Position-Ticketnummer gespeist. Es führte zu einer schiefen Strategie, die eher Shorts und schließen longs: In der richtigen Version des Skripts habe ich diesen Fehler behoben und entfernt die OrderClose () - Strategie überhaupt. Dies änderte nicht das Gesamtbild des Einflusses der neuronalen Filterung auf die EA noch die Balance-Kurve Form war ganz anders. Sie finden beide Versionen dieser EA zu diesem Artikel beigefügt. Interview mit Leonid Velichkovsky: Der größte Mythos über Neural Networks ist Super-Profitabilität Der Held unseres Interviews Leonid Velichkovski (LeoV) hat bereits an Automated Trading Championships teilgenommen. Im Jahr 2008 war sein mehrwährendes neuronales Netz wie ein heller Blitz am Himmel und verdiente 110.000 in einem bestimmten Moment, aber schließlich fiel er seinem eigenen aggressiven Geldmanagement zum Opfer. Vor zwei Jahren erzählte Leonid in seinem Interview seine eigene Handelserfahrung und erzählte uns von den Eigenschaften seines Expertenberaters. Am Vorabend der ATC 2010, Leonid spricht über die häufigsten Mythen und Missverständnisse im Zusammenhang mit neuronalen Netzwerken. - Leonid, Sie sind ein seltener Vertreter der Händler Gemeinschaft, die neuronale Netze für den Handel zu verwenden. Das sind ziemlich komplizierte Entwicklungen, aber die Armee ihrer Fans wächst weiter. Was Sie an neuronalen Netzen anzieht: Vor sechs Jahren, von Anfang an, haben neuronale Netze mich mit ihrer Neuheit, ihrem ungewöhnlichen geheimnisvollen Charakter und ihrer scheinbar hohen Profitabilität angezogen. Im Laufe der Jahre sind viele Mythen gegangen, aber neuronale Netze ziehen mich immer noch mit ihrer Fähigkeit, sich an jede Kurve anzupassen und Muster zu finden, wo nichts und niemand anderes sie finden kann. - Könnten Sie mehr über die Mythen, die mit neuronalen Netzwerken assoziiert haben Sie haben jede Enttäuschung in diesem Bereich erfüllt - Der größte Mythos mit neuronalen Netzwerken verbunden ist ihre Super-Rentabilität. Aber das gilt nicht nur für neuronale Netze, sondern für Forex als Ganzes. Auf den ersten scheint es, dass es leicht zu verdienen ist - kaufen und verkaufen, theres nichts kompliziert in ihm. Später, aber einige Faktoren erscheinen, von denen Sie nicht einmal wissen - nur dann beginnen Sie zu begreifen und zu verstehen. In neuronalen Netzwerken, enttäuschend ist genau das, was Sie zieht - ihre Fähigkeit zu trainieren und an jedem Markt mit allen verfügbaren Daten anzupassen. Ihr großer Vorteil ist ein erheblicher Nachteil bei der Anwendung auf die Finanzmärkte. Dies ist eine erstaunliche Metamorphose - Wie haben Sie zu verstehen, dass neuronale Netze nicht bringen Super-Profits War es eine persönliche Erfahrung - Es gibt keine Super-Profitabilität in Forex auch, nicht nur in neuronalen Netzwerken. Streng genommen sind neuronale Netze die gleichen Handelssysteme (im Folgenden: TS). Sie verwenden nur ein Neuronet statt gemeinsame Indikatoren. Und dann die wichtigste Facette ist Geld-Management, d. H. Die Händler Gier. Wenn Sie Handel beginnen, haben Sie nicht das Konzept des Geldmanagements als solches. Aber dann kommen Sie zu erkennen, die Notwendigkeit dieses Werkzeugs. Die Arbeit an Forex, und in der Regel an den Finanzmärkten, ist immer mit Risiken verbunden. Sie müssen sich bewusst sein, dass das Risiko von 100 und 100.000 sind zwei verschiedene Dinge. Als ich an einer ersten Einlage von 100, 500 und sogar 1.000 Dollar handelte, gab es ein gewisses Risiko, und der gesamte Ansatz zum Handel war spezifisch. Und als ich anfing, größere Mengen zu handeln, wurde die Einstellung zum Handel etwas ganz anderes - das Risiko erhöhte sich und ich verstand schnell, dass ich alles verlieren konnte. Dazu kam eine gewisse Verantwortung. Zum Beispiel, wenn der Handel auf die Hinterlegung von 100, kann der Gewinn von 100 pro Jahr kaum befriedigend, denke ich. Aber Handel auf der Hinterlegung von 100.000 ein Gewinn von 100 pro Jahr ist überhaupt nicht schlecht. So gibt es eine Art von psychischen Konflikten - Händler, die auf kleine Einlagen handeln, versuchen, so schnell und so viel wie möglich verdienen. Dies drängt Händler, über alle denkbaren Risiken hinauszugehen. Das Ergebnis ist der natürliche Verlust der Anzahlung Daher glaube ich, ist der Handel auf kleinen Einlagen zum Scheitern verurteilt, weil der natürliche Wunsch eines Händlers, so schnell und so viel wie möglich zu verdienen. Und 100, zum Beispiel, ist nicht groß genug, um Sie weg von Risiken zu halten. - Seit sechs Jahren arbeiten Sie mit neuronalen Netzen im Handel. Wie schaffen Sie diese geheimnisvollen neuronalen Netzwerken Was verwenden Sie - Im nicht ein Programmierer, Im ein Händler. Die Programmierung neuronaler Netze und deren Nutzung auf den Finanzmärkten sind ganz anders. Programmierer helfen mir, Expert Advisors - Roman Kramar (Stein), Yuri Zaitsev (YuraZ), Victor Nikolaev (Vinin) und Dmitriy Fedoseev (Integer) zu entwickeln. Alle von ihnen sind Profis in ihrem Bereich, ich brauche nicht zu erklären, viel - sie wissen alles perfekt. Und ich bin allen für ihre Arbeit und Professionalität sehr dankbar. Außerdem habe ich mit Steve Ward (Ward Systems Group) und Sergei Dolenko (Neuroproject) zusammengearbeitet, die mir wertvolle Informationen über die Anwendung neuronaler Netze in den Finanzmärkten gegeben haben. Darüber hinaus arbeitete ich eng mit Dennis Meyers (Meyers Analytics), Philippe Lonjoux (Noxa Analytics, Inc.) und Mark Simpson (Bowfort Technologies Inc.) zusammen, mit denen ich neue Systeme und Indikatoren getestet habe. Id wie zu beachten, dass die Anwendung von neuronalen Netzwerken in Finanzmärkten hat viele Merkmale und innovative Konzepte und Techniken, und unterscheidet sich sehr von ihrer Verwendung in anderen Bereichen. Ich benutze MetaTrader 4, natürlich versuche ich jetzt, mich mit MetaTrader 5 zu treffen. Ein weiteres unentbehrliches Werkzeug für die Arbeit ist NeuroShell, ohne das ich das nicht kann. Ich benutze MTFeed als Brücke zwischen MetaTrader 4 und NeuroShell. - Es gibt viele Methoden der Ausbildung neuronaler Netze. Leonid, wie trainierst du sie Und endlich die Frage, die viele Anfänger im neuronalen Netzwerkhandel quält: Wie vermeide ich das so genannte Übertraining - Das ist eine komplizierte Frage, auf die ich (und nicht nur ich) keine Antwort habe Was unmöglich ist, klar zu systematisieren. Trotzdem werde ich versuchen, die Kernprobleme der Ausbildung und Wege zur Vermeidung von Übertraining zu berühren. Wegen seiner starken Nichtlinearität und der Fähigkeit, sich an beliebige Daten anzupassen, ist ein neuronales Netzwerk sehr gut angepasst, geschult und als Folge - übertrainiert. Ein neuronales Netzwerk mit nur wenigen Neuronen in seiner inneren Schicht erinnert sich leicht an die Geschichte einiger tausend Takte. Es ist anzumerken, dass Übertraining in neuronalen Netzen nur bei Anwendung auf die Finanzmärkte inhärent ist. Was bedeutet das Wir wissen alle, dass sich der Markt im Laufe der Zeit ändert - was in der Vergangenheit passiert ist, wird in der Zukunft verschwunden sein. Nun, es wird es geben, aber etwas anders, gibt es keine 100 Prozent Spiele. Muster, Gesetze, Marktbereiche - all dies wird auf verschiedenen Teilen des Marktes anders sein. Wenn also ein neuronales Netzwerk die Lektionen (Beispiele) der Vergangenheit zu gut erlernt, wenn es auf Historiendaten geschult wird, kann es letztlich einfach nicht fehlen, neue Muster und Marktbereiche in der Zukunft zu erkennen oder zu identifizieren. Weil alle von ihnen einige Änderungen erfahren haben. Das heißt, das neuronale Netz hat sich zu den Marktbedingungen, die es in der Vergangenheit gab, zu gut angepasst, aber es war nicht in der Lage, die neuen Muster in den veränderten Marktbedingungen zu erkennen. Gibt es eine Möglichkeit, Übertraining zu vermeiden Es gibt viele Möglichkeiten, aber die wichtigsten sind zwei von ihnen: der frühe Stopp der Ausbildung und Erhöhung der Ausbildungsintervall. Beide Verfahren haben jedoch gravierende Nachteile. In der frühen Anlaufstelle gibt es eine schwierige Frage, zu der es keine Antwort gibt: An welchem ​​Punkt soll ich aufhören zu trainieren? Welche Kriterien sollten dafür verwendet werden? Es gibt viele Antworten auf diese Frage - verwenden Sie Fehler, Gewinnniveau, Drawdown und andere mathematische Kriterien. Aber sie geben nicht eine hundertprozentige Garantie für rechtzeitige Stopps. Daher ist diese rechtzeitige Einstellung der Ausbildung nur von den Fähigkeiten des Händlers abhängig. Es gibt ein Missverständnis, dass, je besser es in der Vergangenheit war, desto besser wird es in der Zukunft sein. Je kleiner der Fehler im Trainingsintervall ist, desto besser wird das Netzwerk in Zukunft funktionieren. Allerdings ist das nicht wahr - der Markt ändert sich, und zu gut geschult in historischen Daten, kann ein neuronales Netzwerk nicht sehen, die Zukunft. Ich weiß aus eigener Erfahrung, dass das Verhältnis von Fehlern der Ausbildung und der Gewinne auf OOS (Out Of Sample - außerhalb des Optimierungsintervalls) oder auf einem realen Konto wie folgt ist: Der Fehler verringert sich allmählich mit zunehmender Trainingszeit, Aber der Gewinn steigt zuerst an und fällt dann, indem er ein Maximum in einem bestimmten Augenblick bildet. Das ist das Maximum, das wir fangen müssen. Wenn die Trainingszeit zunimmt, wird der Fehler auch allmählich abnehmen, und der Gewinn auf OOS kann mehrere mehr Maxima erzeugen, aber sie sind gewöhnlich kleiner als die allererste. Obwohl ich auf eine Situation gestoßen bin, in der die zweiten und sogar die dritten Maxima höher waren als die ersten. Aber es wird angenommen, dass das erste Maximum ist besser als der Rest in Bezug auf die Rentabilität und Effizienz. Tatsächlich ist es unsere Aufgabe, dieses erste Maximum zu erreichen. Und es hängt von Fähigkeiten und Erfahrungen des Händlers ab - ich kenne keine anderen, genaueren Kriterien. Natürlich können und sollten wir uns nach dem Prozentsatz der Rentabilität, des Fehlers, des Drawdowns, des Sharpe-Verhältnisses und vieler anderer Parameter richten. Aber letztlich hängt es allein vom Händler ab, welche Kriterien zu verwenden sind. Und es hängt davon ab, wie er seine TS versteht und weiß, wie es sich verhält. Während des Trainingsintervalls geschehen völlig verschiedene Dinge. Der Fehler und Gewinn verhalten sich genau gegenüber - der Fehler nimmt allmählich ab und der Gewinn steigt reibungslos. Wenn der Gewinn bei der Optimierung steigt, bedeutet dies, dass der Expert Advisor einfach an die Marktkurve angepasst ist und den Kurs in eine glatte Kurve verwandelt. Diese Kurve sollte steigen und wird als Eigenkapital bezeichnet. In der Tat ist diese Optimierung auch auf den Fehler zu reduzieren. Und wir bekommen folgendes: Je größer der Profit im Bereich Training oder Optimierung ist, desto wahrscheinlicher werden Sie Übertraining oder Überoptimierung (passend) und in der Folge Verluste in der Zukunft haben. Der zweite Weg, ein Übertraining zu vermeiden, besteht darin, das Intervall des Trainings zu erhöhen, d. h. die Datenmenge zu erhöhen, auf der das Netzwerk trainiert wird. Aber diese Methode hat auch seine Fallstricke. Eine Erhöhung der Datenmenge an den Finanzmärkten führt dazu, dass das Netz diese Muster und Marktgebiete, die in dem gegebenen Ausbildungsabschnitt existieren, einfach nicht erkennen oder erkennen kann. Der Abschnitt ist dazu zu groß. Dies ist, weil der Markt ändert sich mit der Zeit. Und ein bestimmtes Muster scheint zu unterschiedlich in diesem großen Intervall, und das Netzwerk kann nicht definieren, dass dies das gleiche Muster, das nur im Laufe der Zeit verändert hat. Dann ergibt sich eine natürliche Frage: Welcher Teil des Marktes sollte einem Netzwerk für Ausbildung gegeben werden Hier ist die Antwort: der Teil, in dem das Netz erfolgreich Muster und Marktbereiche erkennt, die für einen TS und den Händler notwendig sind. Das hängt von den Fähigkeiten eines Händlers ab, von der Art, wie er den Markt sieht und wie gut er den richtigen Teil für das Training auswählen kann. Nach meiner Erfahrung ist dies von 500 bis 2000 Bar je nach Zeitrahmen und Marktzustand. Es gibt einige Möglichkeiten, Übertraining zu vermeiden, aber sie sind nicht so bedeutend. Sie sehen, hängt viel davon ab, wie geschickt und erfahren ein Händler ist. So denke ich, dass dieser Beruf nicht nur mathematisches Wissen, sondern auch etwas Kreativität erfordert. It is also clear that all the features and nuances of the use of neural networks, as well as usual TSs, come from the fact that the market changes over time, and the past never repeats exactly in the future. This feature exists only in financial markets. There is a popular myth that you need to give a lot of data to a neural network and let it train - it will learn independently what it needs. For the normal use of neural networks this may be true, but financial markets have their own peculiarities, which I described above, so its not so easy in this case. In my opinion, these two ways to avoid over-training also apply to the optimization of common Expert Advisors, without neural networks. Over-optimization, or fitting, is specific to financial markets only. And the ways to avoid it are the same. The essence of over-optimization also lies in the fact that the nature of financial markets changes in time. Strictly speaking, the market is not stationary. - What are common errors that a trader can face when starting to work with neural networks The popular delusion of traders who start using neural networks and use non-normalized data at the input, trying to get the price of the next bar, is Today will be like yesterday, and tomorrow will be like today (if we consider daily bars). This is a common over-training of a network. While data on Forex do not differ much from each other (100 points make only 0.7 of the price), then the training error will also be small, and the network will quickly find this local minimum of training. - Some neural traders use preprocessing of input data. Do you use anything like this in your neural networks - Generally speaking, I never use pure time series for the inputs of neural networks. Time series are always transformed by some indicator, which normalizes the data into a certain row. For example, from -100 to 100 or from -1 to 1. Further normalization is not required, because if the indicator values are greater than 1, they can always be divided by an appropriate number, to achieve a value not exceeding 1. I try to do as little change of input data as possible, since any transformation brings additional nonlinear distortion in the input signal. This accordingly leads the wrong training of a neural network, since the distortion can be incorrectly interpreted by the network. Moreover, with strong transformations, and consequently large nonlinear distortions, the network can be trained not on a real input signal, but on nonlinear distortions, which may lead to wrong operation and loss of deposit. Here are a few examples of nonlinear distortions that are visible to the naked eye. Take, for example, the usual stochastics. It seems that such a simple indicator would bring no distortions. But in some moments, it makes strong nonlinear distortions, which may mislead the neural network in the training process and in further work on a real account. These areas are marked with a white oval on the chart. In the first case the price goes up, and the stochastic indicator virtually stands still in its maximum values. In the second case, the price is almost at one and the same level, and the stochastic indicator sharply goes down from its maximum to minimum values. In the first case the stochastic indicator will bring no information to the network, while in the latter case it will simply confuse it. In both cases, the behavior of the stochastic indicator will have a negative impact both on the training and on the work of the neural network on a real account. And that can lead to financial losses. It should be noted that these two examples are quite noticeable distortions that you can easily see. And there are much more distortions that we cant see and analyze Believe me. And all these distortions (both large and small) are combined together. Therefore, be extremely careful when doing with the pre-processing of input data. Of course, there are indicators that make much stronger distortions. There are also those that make less strong ones. However, the fact remains - distortion are made by any indicators. Although, you can select specific parameters to any indicator (even stochastic), so that it will bring minimum distortions in the original signal with specific market conditions. Naturally, the nature of the market may change, and you will have to change the indicator parameters in order to reduce the distortion introduced. And in this situation, a proper selection of indicator parameters and their timely adjustment (both automatically and manually) is also totally dependent on a traders skills and experience. - How do you assess the results of a neural network after training or TS after optimization What are the criteria to use them on a real account Currently, I almost never take into account the results of a TS, which have been obtained in the training (optimization) interval. I analyze results on OOS or real, because I believe that in the period of training (optimization), the results of a TS can tell nothing. This can be fitting or over-training and its almost impossible to define whether its fitting or not. You can only define it by testing it on OOS or better on a real account. Sometimes, I simply compare the results on the real account (OOS) and that of training (optimization). Therefore, the figures show equity on a real account with the trading leverage of 1:1 (deposit use is 1 with the leverage of 1:100 given by the dealing center). If we increase the leverage, the range of equity will also increase. Actually, I analyze the results of a TS only with the leverage of 1:1, i. e. with a disabled money management. Because money management can give the wrong idea about the actual drawdown of the TS and, accordingly, an unexpected margin call and other troubles. In the figures, you can see the equity with the leverage of 1:1. By the way, it is the same trading system that participated in the ATC 2008, though with slightly modified parameters. Recently, I noticed the following: if the profit factor is extremely large in the training (optimization) interval with the leverage of 1:1, we can say for sure that it is over-training (over-optimization). And in the future, at the unknown data, the trading system with such parameters will work poorly (i. e. will lose the deposit). One can note that in the figures, the equity rises smoothly rather than sharply. You could conclude that the profitability of such a trading system is not quite small. Although if you increase the trading leverage or use a more aggressive money management, the profits can increase manifold. Everything depends on the drawdown, which appears with the leverage of 1:1, and the drawdown allowed by a trader. - Almost two years have passed since the ATC 2008. What lessons have you learned from the results of that Championship Why couldnt your Expert Advisor win the contest The Championship is a competition. Nothing ventured, nothing gained. I dared and I exceeded all possible risks because of my money management. I managed to earn 110,000 and then fell to 14,749 because of that too aggressive money management. For 3 months, the profit was almost 50, which was pretty good. But the drawdown was 92, which is unacceptable in real life. Then, having run my EA with reasonable money management over the same period, I got almost the same result of 14,000, but with a drawdown of about 25 - this is a good result for real life. The conclusion is that you shouldnt chase the excess profits, otherwise you can lose. But the Championship makes its own rules and, of course, you need to take risks to win. - Has anything changed fundamentally in your developments over this period Perhaps, have you found any know-how and applied it in practice No, in fact everything remains the same. Nothing new has happened. Moreover, the same Expert Advisor with the same parameters can still work, though I found other, more profitable parameters. The essence of the market doesnt change - only its character is changing, which an experienced trader must keep track of, timely adjusting his TS to the new, changed market conditions. - The Expert Advisor of Alexander Topchylo, the winner of the ATC 2007, consisted of three independent subsystems. However the author was going to progress in this direction and create a committee of neural networks. Do you use such committees in your developments - No, I refused to use committees due to them being hard to implement and maintain. Over the years, I have come to use simple TSs, because a too complex TS, as well as that with committees, cannot guarantee a more stable and larger profit in comparison with a simple one. - The author of the only one multicurrency Expert Advisor among the winners of the ATC, Nikolay Kositsin believes that rules of the upcoming Championship are favorable to multicurrency EAs and leave little chance to single currency robots. Do you use multicurrency in your Expert Advisors What pairs do your EAs trade - Of course I use them. This allows hedging trades and getting a smoother equity. Besides, if you use multicurrency for analysis, this helps to create more stable and reliable trading systems. On the Championship, I intend to trade EURUSD, USDJPY and AUDUSD - depends on how the market situation changes closer to the Championship. - Leonid, thank you for the interview. Good luck in the Championship How to Write an Expert Advisor and Not to Violate the Championship Rules In this article we will show how to write an expert adviser and to avoid mistakes that may prevent you from participating in the upcoming Automated Trading Championship 2010 Risk management is an essential component of any trading system. Without it, it is virtually impossible to imagine profitable trading. In this article, experienced developers of automated trading systems share their tips on risk management with the participants of the Championship. MetaNeural Expert Advisor - Neural Network Committee EA I did some programming for a trading firm a while back and recently theyve developed a production version of their trading system for Metatrader. It works surprisingly well and in this sketchy world of scammers I just wanted to put this out there as something that I know works. Neural Networks - Its sort of a new field for retail traders at the small money level because it takes so much money and time to develop profitable neural network trading systems but I believe this is where the industry is going. Anyone who pays attention to the automated trading championship might remember the better ea a few years ago, it blasted every other ea out of the water and put neural networks on the map - problem is, no one knew how to make them, it requires significant programming skill as I know first hand and frankly most of the metatrader automated trading systems are poorly scripted scams. Youll remember that the Better EA developer mentioned using a committee of neural networks working together to process the complex patterns in the market and produce amazingly accurate trades, the Metaneural EA is built on the same concept, the only difference is you can actually buy it and try it for yourself. Its called the Metaneural EA made by Metaneural Engineering, check it out if youre interested in the next evolution of retail trading and perhaps automated trading in general. Their end product uses many of the same basics presented in this mql5 article if youre interested in neural network development: mql5enarticles236 Members must have at least 0 vouchers to post in this thread. 0 Trader die sich gerade ansehen Forex Factoryreg ist ein eingetragenes Warenzeichen.


No comments:

Post a Comment