Saturday, February 25, 2017

Forex Unterstützung Vektor Maschine

MetaTrader 5 - Trading Machine Learning: Wie Support Vector Maschinen können im Trading verwendet werden Was ist ein Support Vector Machine Eine Support-Vektor-Maschine ist eine Methode des maschinellen Lernens, die versucht, die Eingabedaten zu nehmen und zu klassifizieren in eine von zwei Kategorien. Damit eine Unterstützungsvektormaschine wirksam ist, ist es notwendig, zuerst einen Satz von Trainingseingabe - und Ausgabedaten zu verwenden, um das Unterstützungsvektor-Maschinenmodell zu erstellen, das zum Klassifizieren neuer Daten verwendet werden kann. Eine Unterstützungsvektormaschine entwickelt dieses Modell, indem sie die Trainingseingaben aufnimmt, sie in mehrdimensionalen Raum abbildet und dann mit Hilfe einer Regression eine Hyperplane (eine Hyperplane ist eine Oberfläche im n-dimensionalen Raum, die den Raum in zwei Halbräume trennt) am besten trennt Die beiden Klassen von Eingaben. Sobald die Träger-Vektor-Maschine trainiert worden ist, ist sie in der Lage, neue Eingaben in Bezug auf die Trenn-Hyperebene zu beurteilen und sie in eine der beiden Kategorien zu klassifizieren. Eine Träger-Vektor-Maschine ist im wesentlichen eine Eingabe-Ausgabe-Maschine. Ein Benutzer ist in der Lage, einen Eingang zu setzen, und basierend auf dem Modell, das durch Training entwickelt wird, gibt es eine Ausgabe zurück. Die Anzahl der Eingaben für eine gegebene Unterstützungsvektormaschine reicht theoretisch von einem bis unendlich, aber in der Praxis rechnet die Rechenleistung, wie viele Eingänge verwendet werden können. Wenn zum Beispiel N-Eingänge für eine spezielle Unterstützungsvektormaschine verwendet werden (wobei der ganzzahlige Wert von N von 1 bis unendlich reichen kann), muss die Unterstützungsvektormaschine jeden Satz von Eingaben in den N-dimensionalen Raum abbilden und eine (N-1 ) - dimensionale Hyperplane, die die Trainingsdaten am besten trennt. Abbildung 1. Support-Vektor-Maschinen sind Input-Output-Maschinen Der beste Weg, um zu verstehen, wie eine Support-Vektor-Maschine funktioniert, ist durch die Berücksichtigung der zweidimensionalen Fall. Angenommen, wir wollen eine Unterstützungsvektormaschine erstellen, die zwei Eingaben hat und einen einzelnen Ausgang zurückgibt, der den Datenpunkt als zu einer von zwei Kategorien gehörig klassifiziert. Wir können dies visualisieren, indem wir es auf einem 2-dimensionalen Diagramm wie dem Diagramm unten plotten. Abbildung 2. Links: Unterstützung von Vektor-Maschineneingängen, die einem 2D-Diagramm zugeordnet sind. Die roten Kreise und blauen Kreuze werden verwendet, um die beiden Klassen von Eingaben zu bezeichnen. Figure 3. Right: Unterstützung von Vektor-Maschineneingaben, die einem 2D-Diagramm zugeordnet sind. Die roten Kreise und blauen Kreuze werden verwendet, um die beiden Klassen von Eingängen mit einer schwarzen Linie zu bezeichnen, die die trennende Hyperebene anzeigt. In diesem Beispiel geben die blauen Kreuze Datenpunkte an, die zur Kategorie 1 gehören, und die roten Kreise, die Datenpunkte darstellen, die zur Kategorie 2 gehören. Jeder der einzelnen Datenpunkte hat einen eindeutigen Eingang 1-Wert (dargestellt durch ihre Position auf der x-Achse ) Und einen eindeutigen Eingang 2-Wert (repräsentiert durch ihre Position auf der y-Achse), und alle diese Punkte wurden auf den zweidimensionalen Raum abgebildet. Eine Unterstützungsvektormaschine ist in der Lage, Daten zu klassifizieren, indem ein Modell dieser Punkte im zweidimensionalen Raum erzeugt wird. Die Unterstützungsvektormaschine beobachtet die Daten im zweidimensionalen Raum und verwendet einen Regressionsalgorithmus, um eine 1-dimensionale Hyperplane (aka Linie) zu finden, die die Daten in die zwei Kategorien am genauesten trennt. Diese Trennlinie wird dann von der Unterstützungsvektormaschine verwendet, um neue Datenpunkte in entweder Kategorie 1 oder Kategorie 2 zu klassifizieren. Die nachfolgende Animation veranschaulicht den Prozess des Trainierens einer neuen Unterstützungsvektormaschine. Der Algorithmus beginnt mit einer zufälligen Vermutung, die eine Trennungshyperplane findet, dann iterativ die Genauigkeit der Hyperebene zu verbessern. Wie Sie sehen können, der Algorithmus beginnt ziemlich aggressiv, aber dann verlangsamt, wie es beginnt, um die Wünsche Lösung Ansatz. Fig. 4. Eine Animation, die eine Trainingsunterstützungsvektor-Maschine zeigt. Die Hyperplane konvergiert schrittweise über die ideale Geometrie, um die beiden Datenklassen zu trennen Das oben dargestellte 2-dimensionale Szenario erlaubt es uns, den Prozess einer Unterstützungsvektormaschine zu visualisieren, er kann jedoch nur einen Datenpunkt mit zwei Eingängen klassifizieren. Was, wenn wir mehr Eingaben verwenden möchten Dankbar, der Support-Vektor-Maschinen-Algorithmus ermöglicht es uns, das gleiche in höheren Dimensionen zu tun, obwohl es viel schwerer zu konzipieren wird. Betrachten Sie dies, möchten Sie Support-Vektor-Maschine, die 20 Eingaben nimmt zu erstellen und können alle Datenpunkt mit diesen Eingaben in Kategorie 1 oder Kategorie zu klassifizieren. Um dies zu tun, muss die Support-Vektor-Maschine die Daten in 20 dimensionalen Raum zu modellieren Und verwenden Sie einen Regressionsalgorithmus, um eine 19-dimensionale Hyperebene zu finden, die die Datenpunkte in zwei Kategorien trennt. Dies wird außerordentlich schwierig zu visualisieren, da es schwer für uns ist, etwas über 3-Dimensionen zu verstehen, aber alles, was Sie wissen müssen, ist, dass funktioniert genau so wie es für den 2-dimensionalen Fall funktioniert. Wie unterstützen Vector Machines Beispiel: Ist es ein Schnick Stellen Sie sich dieses hypothetische Szenario, Sie sind ein Forscher untersucht ein seltenes Tier nur in den Tiefen der Arktis namens Shnicks gefunden. Angesichts der Abgelegenheit dieser Tiere, nur eine kleine Handvoll jemals gefunden worden sind (sagen wir etwa 5000). Als Forscher sind Sie mit der Frage stecken. Wie kann ich einen Schnick identifizieren Alles, was Sie zu Ihrer Verfügung haben, sind die Forschung Papiere zuvor von der Handvoll von Forschern, die einen gesehen haben veröffentlicht. In diesen Forschungsarbeiten beschreiben die Autoren bestimmte Merkmale über die gefundenen Schnicks, d. h. die Höhe, das Gewicht, die Anzahl der Beine usw. Aber alle diese Merkmale variieren zwischen den Forschungspapieren ohne erkennbares Muster. Wie können wir diese Daten verwenden, um ein neues Tier als Schnick zu identifizieren? Eine mögliche Lösung für unser Problem ist die Verwendung einer Stützvektormaschine, um die Muster in den Daten zu identifizieren und ein Rahmenwerk zu schaffen, das verwendet werden kann, um Tiere entweder als einen Schnick oder zu klassifizieren Nicht ein Schnick. Der erste Schritt ist die Erstellung einer Reihe von Daten, die verwendet werden können, um Ihre Unterstützung Vektor-Maschine, um Schnicks zu identifizieren. Die Trainingsdaten sind ein Satz von Eingängen und passenden Ausgängen für die Unterstützungsvektormaschine, um ein Muster zu analysieren und zu extrahieren. Daher müssen wir entscheiden, welche Eingaben verwendet werden und wie viele. Theoretisch können wir so viele Eingaben haben, wie wir wollen, aber dies kann oft zu langsamen Training führen (je mehr Eingaben Sie haben, desto mehr Zeit braucht die Unterstützung Vektor-Maschine, um Muster zu extrahieren). Außerdem möchten Sie Eingaben Werte, die dazu neigen, relativ konsistent über alle Schnicks werden. Zum Beispiel, Höhe oder Gewicht des Tieres wäre ein gutes Beispiel für eine Eingabe, weil Sie erwarten würden, dass dies relativ konsistent über alle Schnicks wäre. Das durchschnittliche Alter eines Tieres wäre jedoch eine schlechte Wahl, da Sie erwarten würden, dass das Alter der identifizierten Tiere sehr unterschiedlich ausfallen würde. Aus diesem Grund wurden die folgenden Eingaben gewählt: Höhe Gewicht Die Anzahl der Beine Die Anzahl der Augen Die Länge der Tiere Arme Die Tiere durchschnittliche Geschwindigkeit Die Häufigkeit der Tiere passender Anruf Mit den gewählten Eingaben können wir beginnen, unsere Trainingsdaten zu kompilieren . Effektive Trainingsdaten für eine Support-Vektor-Maschine müssen bestimmte Anforderungen erfüllen: Die Daten müssen Beispiele für Tiere, die Schnicks sind Die Daten müssen Beispiele für Tiere, die nicht Schnicks sind In diesem Fall haben wir die Forschungsarbeiten von Wissenschaftler, die erfolgreich einen Schnick identifiziert haben Und ihre Eigenschaften aufgelistet. Daher können wir diese Forschungsberichte lesen und die Daten unter jedem der Eingaben extrahieren und jedem der Beispiele eine Ausgabe von entweder wahr oder falsch zuordnen. Die Trainingsdaten können in diesem Fall ähnlich der folgenden Tabelle aussehen. Tabelle 1. Beispieltabelle von schnick-Beobachtungen Nachdem wir die Daten für alle unsere Trainings-Inputs und Outputs gesammelt haben, können wir sie verwenden, um unsere Support-Vektor-Maschine zu trainieren. Während des Trainingsprozesses wird die Unterstützungsvektormaschine ein Modell im siebendimensionalen Raum schaffen, das verwendet werden kann, um jedes der Trainingsbeispiele in entweder wahr oder falsch zu sortieren. Die Unterstützungsvektormaschine wird dies weiterhin tun, bis sie ein Modell aufweist, das die Trainingsdaten genau darstellt (innerhalb der spezifizierten Fehlertoleranz). Sobald das Training abgeschlossen ist, kann dieses Modell verwendet werden, um neue Datenpunkte als wahr oder falsch zu klassifizieren. Ist die Support-Vector-Maschine tatsächlich mit dem Schnick-Szenario arbeiten, habe ich ein Skript, das testet, wie gut eine Support-Vektor-Maschine kann tatsächlich identifizieren neue Schnicks. Um dies zu tun, habe ich die Unterstützung Vector Machine Learning Tool-Funktion Bibliothek, die vom Markt heruntergeladen werden können verwendet. Um dieses Szenario effektiv zu modellieren, müssen wir zunächst entscheiden, was die tatsächlichen Eigenschaften eines Schnick sind. Die Eigenschaften, die ich in diesem Fall angenommen habe, sind in der folgenden Tabelle aufgelistet. Wenn ein Tier alle Kriterien erfüllt, dann ist es ein Schnick. Tabelle 2. Zusammenfassung der Parameter, die einen schnick definieren Nachdem wir unseren Schnick definiert haben, können wir diese Definition verwenden, um mit Support-Vektor-Maschinen zu experimentieren. Der erste Schritt ist, eine Funktion zu schaffen, die in der Lage ist, die sieben Eingaben für jedes gegebene Tier zu nehmen und die tatsächliche Klassifizierung des Tieres als einen Schnick zurückzugeben oder nicht. Diese Funktion wird verwendet, um Trainingsdaten für die Unterstützungsvektormaschine zu generieren und die Leistung davon am Ende zu beurteilen. Dies kann mit Hilfe der folgenden Funktion geschehen Der nächste Schritt besteht darin, eine Funktion zu erstellen, die die Trainingseingaben und - ausgänge generieren kann. Eingaben in diesem Fall werden erzeugt, indem Zufallszahlen innerhalb eines festgelegten Bereichs für jeden der sieben Eingangswerte erzeugt werden. Dann wird für jede der erzeugten Sätze von Zufallseingängen die obItASchnick () - Funktion verwendet, um die entsprechende gewünschte Ausgabe zu erzeugen. Dies geschieht in der folgenden Funktion: Wir haben jetzt eine Reihe von Trainings-Inputs und Outputs, es ist nun Zeit, unsere Support-Vektor-Maschinen mit dem Support Vector Machine Learning Tool auf dem Markt verfügbar zu schaffen. Sobald eine neue Support-Vektor-Maschine erstellt wird, ist es notwendig, die Trainingseingaben und - ausgänge an sie weiterzugeben und das Training auszuführen. Wir haben jetzt eine Support-Vektor-Maschine, die erfolgreich bei der Identifizierung von Scnhicks trainiert wurde. Um dies zu überprüfen, können wir die letzte Unterstützungsvektormaschine testen, indem wir sie bitten, neue Datenpunkte zu klassifizieren. Dies geschieht, indem zuerst zufällige Eingaben generiert werden und dann mit der isItASchnick () - Funktion ermittelt wird, ob diese Eingaben einer tatsächlichen Schnick entsprechen, und verwenden Sie dann die Support-Vektor-Maschine, um die Eingaben zu klassifizieren und festzustellen, ob das vorhergesagte Ergebnis dem tatsächlichen Ergebnis entspricht. Dies geschieht in der folgenden Funktion: Ich empfehle, mit den Werten innerhalb der obigen Funktionen zu spielen, um zu sehen, wie die Support-Vektor-Maschine unter verschiedenen Bedingungen arbeitet. Warum ist Support Vector Machine so nützlich Der Nutzen einer Unterstützung Vektor-Maschine, um komplexe Muster aus den Daten zu extrahieren ist, dass es nicht notwendig ist, ein vorheriges Verständnis des Verhaltens der Daten. Eine Support-Vektor-Maschine ist in der Lage, die Daten zu analysieren und extrahieren ihre einzigen Einsichten und Beziehungen. Auf diese Weise funktioniert es ähnlich wie eine Blackbox, die Eingänge empfängt und eine Ausgabe erzeugt, die sich als sehr nützlich erweisen kann, um Muster in den Daten zu finden, die zu komplex und nicht offensichtlich sind. Eine der besten Eigenschaften von Unterstützungsvektormaschinen ist, dass sie in der Lage sind, mit Fehlern und Rauschen in den Daten sehr gut umzugehen. Sie sind oft in der Lage, die zugrunde liegenden Muster innerhalb der Daten zu sehen und herauszufiltern Daten Ausreißer und andere Komplexitäten. Betrachten Sie das folgende Szenario, bei der Durchführung Ihrer Forschung auf Schnicks, kommen Sie auf mehrere Forschungs-Papiere, die beschreiben Schnicks mit massiv verschiedenen Eigenschaften (wie ein Schnick, dass 200kg und ist 15000mm groß). Solche Fehler können zu Verzerrungen Ihres Modells führen, was ein Schnick ist, was bei der Klassifizierung neuer Schnick-Entdeckungen möglicherweise einen Fehler verursachen könnte. Der Vorteil der Unterstützungsvektormaschine ist, dass sie ein Modell entwickelt, das mit dem zugrundeliegenden Muster, das einem Modell entgegengesetzt ist, das zu allen Trainingsdatenpunkten passt, übereinstimmt. Dies geschieht, indem ein bestimmter Fehlergrad in dem Modell ermöglicht wird, um der Unterstützungsvektormaschine zu erlauben, irgendwelche Fehler in den Daten zu übersehen. Im Falle der Schnick-Support-Vektor-Maschine, wenn wir eine Fehlertoleranz von 5 erlauben, wird das Training nur versuchen, ein Modell zu entwickeln, das mit 95 der Trainingsdaten übereinstimmt. Dies kann nützlich sein, weil es erlaubt, den kleinen Prozentsatz der Ausreißer zu ignorieren. Wir können diese Eigenschaft der Support-Vektor-Maschine weiter zu untersuchen, indem wir unsere Schnick-Skript. Die Funktion unten wurde hinzugefügt, um bewusste Zufallsfehler in unserem Trainingsdatensatz einzuführen. Diese Funktion wählt Trainingspunkte zufällig aus und ersetzt die Eingänge und die entsprechende Ausgabe durch Zufallsvariablen. Mit dieser Funktion können wir bewusste Fehler in unsere Trainingsdaten einführen. Mit diesem Fehler gefüllt Daten, können wir erstellen und trainieren Sie eine neue Support-Vektor-Maschine und vergleichen Sie die Leistung mit der ursprünglichen. Wenn das Skript ausgeführt wird, erzeugt es die folgenden Ergebnisse im Expertenprotokoll. Innerhalb eines Trainingsdatensatzes mit 5000 Trainingspunkten konnten wir 500 zufällige Fehler einführen. Beim Vergleich der Leistung dieser Fehler gefüllten Support-Vektor-Maschine mit der ursprünglichen, wird die Leistung nur von lt1 reduziert. Dies liegt daran, dass die Unterstützungsvektormaschine in der Lage ist, die Ausreißer in dem Datensatz beim Training zu übersehen und noch in der Lage ist, ein eindrucksvoll genaues Modell der wahren Daten zu erzeugen. Dies deutet darauf hin, dass Support-Vektor-Maschinen möglicherweise ein nützlicheres Werkzeug bei der Extraktion von komplexen Mustern und Erkenntnisse aus lärmenden Datensätzen. Abbildung 5. Das resultierende Expertenprotokoll nach dem Ausführen des Schnick-Skripts im MetaTrader 5. Demoversionen Eine Vollversion des obigen Codes kann von Code Base heruntergeladen werden. Dieses Skript kann jedoch nur in Ihrem Terminal ausgeführt werden, wenn Sie ein Vollversion des Support Vector Machine Learning-Tools aus dem Markt. Wenn Sie nur eine Demo-Version dieses Tools heruntergeladen haben, werden Sie auf die Verwendung des Tools über die Strategie-Tester beschränkt werden. Um das Testen des Schnick-Codes mithilfe der Demo-Version des Tools zu ermöglichen, habe ich eine Kopie des Skripts in einen Expert Advisor umgeschrieben, der mit dem Strategie-Tester bereitgestellt werden kann. Beide Code-Versionen können heruntergeladen werden, indem die folgenden Links heruntergeladen werden: Vollversion - Verwenden eines Skripts, das im MetaTrader 5-Terminal bereitgestellt wird (erfordert eine gekaufte Version des Support Vector Machine Learning-Tools) Demo-Version - mit einem Experten-Berater Eingesetzt im MetaTrader 5 Strategie-Tester (benötigt nur eine Demo-Version des Support Vector Machine Learning Tool) Wie kann der Einsatz von Vector-Maschinen im Markt verwendet werden Zugegeben, das Schnick-Beispiel oben diskutiert ist ganz einfach, aber es gibt einige Gemeinsamkeiten, die Kann zwischen diesem Beispiel und unter Verwendung der Support-Vektor-Maschinen für technische Marktanalyse gezogen werden. Bei der technischen Analyse geht es im Wesentlichen darum, historische Marktdaten zu verwenden, um zukünftige Preisbewegungen vorherzusagen. In ähnlicher Weise haben wir im Rahmen des Schnick-Beispiels die Beobachtungen früherer Wissenschaftler verwendet, um vorherzusagen, ob ein neues Tier ein Schnick ist oder nicht. Darüber hinaus ist der Markt mit Rauschen, Fehler und statistische Ausreißer geplagt, dass die Verwendung eines Support-Vektor-Maschine ein interessantes Konzept zu machen. Die Grundlage für eine beträchtliche Anzahl von Trading-Ansätzen der technischen Analyse sind die folgenden Schritte: Überwachung mehrerer Indikatoren Identifizieren der Bedingungen für jeden Indikator korreliert mit einem potenziell erfolgreichen Handel. Beobachten Sie jeden Indikator und bewerten Sie, wenn alle (oder die meisten) Ist es möglich, einen ähnlichen Ansatz zu verwenden, um Vektor-Maschinen zu unterstützen, um neue Trades in ähnlicher Weise zu signalisieren. Das Lerninstrument der Unterstützungsvektormaschine wurde in diesem Sinne entwickelt. Eine vollständige Beschreibung, wie dieses Tool zu nutzen ist, kann im Markt gefunden werden, so dass ich nur einen schnellen Überblick geben. Der Prozess für die Verwendung dieses Tools ist wie folgt: Abbildung 6. Das Blockdiagramm, das den Prozess für die Implementierung der Support-Vektor-Werkzeugmaschine in einem Expert Advisor zeigt Bevor Sie das Support Vector Machine Learning Tool verwenden können, ist es wichtig, zuerst zu verstehen, wie das Training Werden Ein - und Ausgänge erzeugt. Wie werden Trainings-Inputs generiert So wurden die Indikatoren, die Sie als Input verwenden möchten, bereits initialisiert sowie Ihre neue Support-Vektor-Maschine. Der nächste Schritt besteht darin, die Indikatorgriffe an Ihre neue Support-Vektor-Maschine weiterzugeben und anzugeben, wie die Trainingsdaten generiert werden. Dies geschieht durch Aufruf der Funktion setIndicatorHandles (). Mit dieser Funktion können Sie die Griffe der initialisierten Indikatoren in die Support-Vektor-Maschine übergeben. Dies geschieht durch Übergeben und Integer-Array mit den Handles. Die beiden anderen Eingänge für diese Funktion sind der Versatzwert und die Anzahl der Datenpunkte. Der Versatzwert bezeichnet den Versatz zwischen dem aktuellen Balken und dem Startstab, der beim Erzeugen der Trainingseingaben verwendet werden soll, und die Anzahl der Trainingspunkte (mit N bezeichnet) setzt die Größe Ihrer Trainingsdaten. Das folgende Diagramm zeigt die Verwendung dieser Werte. Ein Offset-Wert von 4 und ein N-Wert von 6 werden der Support-Vektor-Maschine sagen, dass sie nur die in dem weißen Quadrat erfassten Balken verwenden, um Trainingseingaben und - ausgänge zu erzeugen. In ähnlicher Weise werden ein Versatzwert von 8 und ein N-Wert von 8 der Unterstützungsvektormaschine mitteilen, um nur die in dem blauen Quadrat erfassten Balken zu verwenden, um Trainingseingaben und Ausgänge zu erzeugen. Nach Aufruf der Funktion setIndicatorHandles () ist es möglich, die Funktion genInputs () aufzurufen. Diese Funktion verwendet die Indikatorgriffe, um zu übergeben, um ein Array von Eingabedaten zu erzeugen, die für das Training verwendet werden sollen. Abbildung 7. Candle Chart zur Darstellung der Werte von Offset und N Wie werden Trainingsausgaben generiert Trainingsausgaben werden durch Simulationen von hypothetischen Trades basierend auf historischen Preisdaten und Bestimmung, ob ein solcher Trade erfolgreich oder erfolglos gewesen wäre, erzeugt. Um dies zu tun, gibt es ein paar Parameter, die verwendet werden, um die Unterstützung Vektor Maschine lernen Werkzeug, wie man einen hypothetischen Handel als erfolgreich oder erfolglos zu beurteilen. Die erste Variable ist OPTRADE. Der Wert kann entweder KAUF oder VERKAUF sein und entspricht entweder hypothetischen Kauf - oder Verkaufsgeschäften. Wenn der Wert von BUY ist, dann wird beim Erzeugen der Outputs nur der mögliche Erfolg von hypothetischen Buy Trades betrachtet. Alternativ, wenn der Wert von diesem ist SELL, dann bei der Erzeugung der Ausgänge wird es nur auf den potenziellen Erfolg der hypothetischen verkaufen Handeln. Die nächsten Werte sind die Stop Loss und Take Profit für diese hypothetischen Trades. Die Werte werden in Pips gesetzt und legen die Stopp - und Grenzwerte für jeden der hypothetischen Trades fest. Der letzte Parameter ist die Handelsdauer. Diese Variable wird in Stunden gemessen und stellt sicher, dass nur Trades, die innerhalb dieser maximalen Dauer abgeschlossen sind, als erfolgreich angesehen werden. Der Grund für die Einbeziehung dieser Variable besteht darin, die Unterstützungsvektormaschinensignalisierung in einem sich langsam bewegenden Seitwärtsmarkt zu vermeiden. Überlegungen bei der Auswahl von Eingaben Es ist wichtig, einige Gedanken in die Eingabe-Auswahl setzen, wenn Implementierung Support-Vektor-Maschinen in Ihrem Trading. Ähnlich dem Schnick-Beispiel ist es wichtig, einen Eingang zu wählen, von dem erwartet wird, dass er ähnliche Unterschiede aufweist. Zum Beispiel können Sie versucht werden, einen gleitenden Durchschnitt als Eingang zu verwenden, aber da der langfristige Durchschnittspreis dazu tendiert, sich ziemlich dramatisch im Laufe der Zeit zu ändern, ist ein gleitender Durchschnitt in der Isolation möglicherweise nicht der beste Eingang zu verwenden. Dies liegt daran, dass es keine signifikante Ähnlichkeit zwischen dem gleitenden Durchschnittswert heute und den gleitenden Durchschnittswerten vor sechs Monaten. Angenommen, wir handeln EURUSD und verwenden eine Unterstützungsvektormaschine mit einem gleitenden durchschnittlichen Eingang zum Signalkaufhandel. Sagen der aktuelle Preis ist 1,10, aber es ist die Erzeugung von Trainingsdaten von sechs Monaten, als der Preis 0,55 war. Beim Trainieren der Support-Vektor-Maschine kann das Muster, das es findet, nur zu einem Handel führen, der signalisiert wird, wenn der Preis etwa 0,55 ist, da dies die einzigen Daten ist, die er kennt. Daher kann Ihre Unterstützung Vektor-Maschine nie signalisieren, einen Handel, bis der Preis sinkt wieder auf 0,55. Stattdessen kann ein besserer Eingang für die Unterstützungsvektormaschine ein MACD oder ein ähnlicher Oszillator sein, weil der Wert des MACD von dem durchschnittlichen Preisniveau unabhängig ist und nur eine relative Bewegung signalisiert. Ich empfehle Ihnen, mit diesem zu experimentieren, um zu sehen, was die besten Ergebnisse für Sie produziert. Eine weitere Überlegung, die bei der Auswahl von Eingaben zu treffen ist, stellt sicher, daß die Unterstützungsvektormaschine eine angemessene Momentaufnahme eines Indikators aufweist, um einen neuen Handel zu signalisieren. Sie können in Ihrer eigenen Handelserfahrung finden, dass ein MACD nur nützlich ist, wenn Sie die letzten fünf Bars zu sehen haben, da dies einen Trend zeigen wird. Ein einziger Stab des MACD kann nutzlos in Isolation sein, es sei denn, Sie können sagen, ob es oben oder unten Position ist. Daher kann es notwendig sein, die letzten Takte der MACD-Anzeige an die Support-Vektor-Maschine zu übergeben. Es gibt zwei Möglichkeiten, wie Sie dies tun können: Sie können ein neues benutzerdefiniertes Kennzeichen erstellen, das die letzten fünf Balken der MACD-Anzeige verwendet Einen Trend als Einzelwert berechnen. Dieses benutzerdefinierte Kennzeichen kann dann als eine einzige Eingabe an die Unterstützungsvektormaschine übergeben werden, oder Sie können die vorherigen fünf Stäbe des MACD-Indikators in der Unterstützungsvektormaschine als fünf separate Eingaben verwenden. Dazu werden fünf verschiedene Instanzen des MACD-Indikators initialisiert. Jeder der Indikatoren kann mit einem anderen Offset des aktuellen Balkens initialisiert werden. Dann können die fünf Griffe von den separaten Indikatoren an die Unterstützungsvektormaschine übergeben werden. Es sollte beachtet werden, dass Option 2 dazu neigt, längere Ausführungszeiten für Ihren Expert Advisor zu verursachen. Je mehr Eingaben Sie haben, desto länger dauert es, um erfolgreich zu trainieren. Implementierung von Support-Vector-Maschinen in und Expert Advisor Ich habe einen Expert Advisor vorbereitet, der ein Beispiel dafür ist, wie jemand potentiell Support-Vektor-Maschinen im eigenen Handel verwenden könnte (eine Kopie davon kann von folgendem Link heruntergeladen werden: mql5encode1229). Hoffentlich der Expert Advisor ermöglicht es Ihnen, ein wenig mit Support-Vektor-Maschinen zu experimentieren. Ich empfehle Ihnen copychangemodify der Expert Advisor zu Ihrem eigenen Trading-Stil passen. Die EA arbeitet wie folgt: Zwei neue Support-Vektor-Maschinen werden mit Hilfe der Bibliothek svMachineTool erstellt. Einer wird eingerichtet, um neue Buy-Trades zu signalisieren, und der andere wird eingerichtet, um neue Sell-Trades zu signalisieren. Sieben Standardindikatoren werden mit jedem ihrer in einem Integer-Array gespeicherten Handles initialisiert (Anmerkung: Jede Kombination von Indikatoren kann als Eingaben verwendet werden, sie müssen nur an das SVM in einem einzigen Integer-Array übergeben werden). Das Array von Indikatorhandles wird an die neuen Unterstützungsvektormaschinen übergeben. Unter Verwendung des Arrays von Indikatorgrßen und anderen Parametern werden historische Preisdaten verwendet, um genaue Eingaben und Ausgänge zu erzeugen, die zum Trainieren der Unterstützungsvektormaschinen verwendet werden. Sobald alle Eingänge und Ausgänge erzeugt worden sind, werden beide Träger-Vektor-Maschinen trainiert. Die ausgebildeten Support-Vektor-Maschinen werden in der EA verwendet, um neue Kauf - und Verkaufsgeschäfte zu signalisieren. Wenn ein neuer Kauf oder Verkauf Handel signalisiert wird, öffnet sich der Handel zusammen mit manuellen Stop Loss und Take Profit Bestellungen. Die Initialisierung und das Training der Support-Vektor-Maschine werden innerhalb der onInit () - Funktion ausgeführt. Für Ihre Referenz ist dieses Segment des svTrader EA im Folgenden im Anhang enthalten. Advanced Support Vector Machine Trading Zusätzliche Fähigkeit wurde in der Unterstützung Vektor Maschine Lernwerkzeug für die fortgeschrittenen Benutzer da draußen gebaut. Das Tool ermöglicht es Benutzern, ihre eigenen benutzerdefinierten Eingabedaten und Ausgabedaten (wie im Schnick-Beispiel) zu übergeben. Dies ermöglicht Ihnen, benutzerdefinierte Design Ihrer eigenen Kriterien für Support-Vektor-Maschine Eingänge und Ausgänge, und manuell übergeben in diese Daten zu trainieren. Dies eröffnet die Möglichkeit, Support-Vektor-Maschinen in jedem Aspekt Ihres Handels zu verwenden. Es ist nicht nur möglich, Support-Vektor-Maschinen verwenden, um neue Trades zu signalisieren, aber es kann auch verwendet werden, um die Schließung von Trades, Geld-Management, neue erweiterte Indikatoren usw. zu signalisieren. Um jedoch sicherzustellen, dass Sie keine Fehler erhalten, ist es wichtig zu verstehen, wie Diese Ein - und Ausgänge sollen strukturiert sein. Eingänge: Eingänge werden als 1-dimensionales Array von Doppelwerten an SVM übergeben. Bitte beachten Sie, dass jede Eingabe, die Sie erstellen, als doppelter Wert übergeben werden muss. Boolean, Integer, etc. müssen alle in einen Doppelwert konvertiert werden, bevor sie in die Support-Vektor-Maschine übergeben werden. Die Eingaben werden in der folgenden Form benötigt. Nehmen wir zum Beispiel an, dass wir Eingaben mit 3 Eingängen x 5 Trainingspunkten übergeben. Um dies zu erreichen, muss unsere doppelte Anordnung 15 Einheiten lang sein im Format: A 1 B 1 C 1 A 2 B 2 C 2 A 3 B 3 C 3 A 4 B 4 C 4 A 5 B 5 C 5 Es ist auch notwendig Einen Wert für die Anzahl der Eingänge übergeben. Im Fall NInputs3. Ausgänge: Ausgänge werden als Array von Booleschen Werten übergeben. Diese booleschen Werte sind der gewünschte Ausgang des SVM, der jedem der eingegebenen Eingänge entspricht. Nach dem obigen Beispiel, sagen wir, haben wir 5 Trainingspunkte. In diesem Szenario werden wir ein Boolesches Array von Ausgabewerten übergeben, das 5 Einheiten lang ist. Wenn Sie Ihre eigenen Eingaben und Ausgänge generieren, müssen Sie sicherstellen, dass die Länge der Arrays mit den Werten übereinstimmt, die Sie übergeben. Wenn sie nicht übereinstimmen, wird ein Fehler generiert, der Sie über die Diskrepanz informiert. Wenn wir beispielsweise in NInputs3 übergeben und inputs ein Array der Länge 16 ist, wird ein Fehler ausgelöst (da ein Ninputs-Wert von 3 bedeutet, dass die Länge eines beliebigen Eingangsarrays ein Vielfaches von 3 sein muss) . Ebenso stellen Sie sicher, dass die Anzahl der Sätze von Eingaben und die Anzahl der Ausgänge, die Sie übergeben, gleich sind. Wieder, wenn Sie NInputs3, Länge von Eingängen von 15 und eine Länge von Ausgängen von 6 haben, wird ein weiterer Fehler geworfen werden (wie Sie 5 Sätze von Eingängen und 6 Ausgängen haben). Versuchen Sie sicherzustellen, dass Sie genug Abwechslung in Ihren Trainingsausgaben haben. Wenn Sie beispielsweise 100 Ausbildungspunkte übergeben, also ein Ausgabemenü der Länge 100, und alle Werte mit nur einer Wahrheit falsch sind, dann reicht die Unterscheidung zwischen dem wahren und dem falschen Fall nicht aus. Dies wird dazu führen, dass die SVM Ausbildung sehr schnell, aber die endgültige Lösung ist sehr schlecht. Ein vielfältigeres Trainingsset führt oft zu einem affektiveren SVM. Foreign Exchange Trading mit Support Vector Maschinen Referenzen BOSER, B. E. GUYON, I. M. und VAPNIK, V. N. (1992): Ein Trainingsalgorithmus für optimale Randklassifizierer. In: D. Haussler (Hrsg.): Vorträge des 5. Jahrgangs des ACM-Workshops zur Computationalen Lerntheorie. ACM Press, 144152. BOX, G. E.P. Und JENKINS, G. M. (1976): Zeitreihenanalyse: Prognose und Kontrolle. Holden-Tag, San Francisco. (1999): Wissensbasierte Analyse von Mikroarray-Genexpressionsdaten unter Verwendung von Unterstützungsvektor. (1999): Wissensbasierte Analyse von Mikroarray-Genexpressionsdaten unter Verwendung von Unterstützungsvektor Maschinen. Technischer Bericht . Universität von Kalifornien, Santa Cruz. CHANG, C. C. Und LIN, C. J. (2001): LIBSVM: Eine Bibliothek für Unterstützungsvektormaschinen (Version 2.31). Technischer Bericht . Institut für Informatik und Informationstechnik, National Taiwan University, Taipei, Taiwan. CORTES, C. und VAPNIK, V. (1995): Unterstützungsvektor-Netz. Maschinelles lernen . 20, 273297. MATH FRANCOIS, D. WERTZ, V. und VERLEYSEN, M. (2005): Über die Lokalität von Kerneln in hochdimensionalen Räumen. ASMDA 2005-Internationales Symposium zu angewandten stochastischen Modellen und Datenanalyse. Brest, Frankreich, 238245. GRANGER, C. W.J. (1969): Untersuchung kausaler Beziehungen durch ökonometrische Modelle und interspektrale Methoden. Ökonometrie. 37, 424438. CrossRef JOACHIMS, T. (1998): Textkategorisierung mit Support-Vector-Maschinen. Verfahren der Europäischen Konferenz zum Maschinellen Lernen (ECML). KAMRUZZAMAN, J. und SARKER, R. A. (2003a): Prognose des Wechselkurses: Eine Fallstudie. Verfahren der IEEE International Conference on Neuronale Netze Ampsignalverarbeitung (ICNNSP). Nanjing. KAMRUZZAMAN, J. und SARKER, R. A. (2003b): Anwendung von Support Vector Machine auf Forex Monitoring. Dritte Internationale Konferenz über hybride intelligente Systeme (HIS). Melbourne. KAMRUZZAMAN, J. SARKER, R. A. Und AHMAD, I. (2003): SVM-basierte Modelle zur Vorhersage von Wechselkursschwankungen. Verfahren der dritten IEEE Internationale Konferenz zum Data Mining (ICDM). KARATZOGLOU, A. HORNIK, K. SMOLA, A. und ZEILEIS, A. (2004): Kernlab-Ein S4-Paket für Kernelmethoden in R. Journal of Statistical Software. 11, 9. CrossRef KUAN, C. M. Und LIU, T. (1995): Forecasting Wechselkurse mit Feedforward und Recurrent Neuronale Netze. Zeitschrift für anorganische und allgemeine Chemie. 10, 347364. CrossRef MLLER, K. R. SMOLA, A. RTSCH, G. SCHLKOPF, B. KOHLMORGEN, J. und VAPNIK, V. (1999): Verwenden von Unterstützungsvektormaschinen für die Zeitreihenvorhersage. In: B. Schlkopf, C. J.C. Burges und A. J. Smola (Hrsg.): Fortschritte in Kernelmethoden. MIT Press, 242253. PLATT, J. C. (1998): Sequentielle minimale Optimierung: Ein schneller Algorithmus für die Schulung Support Vector Machines. Technischer Bericht . Microsoft Forschung. QUINLAN, M. J. CHALUP, S. K. Und MIDDLETON, R. H. (2004): Anwendung von SVMs zur Farbklassifikation und Kollisionserkennung mit AIBO-Robotern. Fortschritte in neuronalen Informationsverarbeitungssystemen. 16. 635642. SCHLKOPF, B. (2001): Der Kernel-Trick für Entfernungen. Technischer Bericht, MSR 2000-51. Microsoft Forschung, Redmond, WA. VAPNIK, V. (1998): Statistische Lerntheorie. Wiley, New York. MATHTrading mit Support-Vector-Maschinen (SVM) Schließlich haben alle Sterne ausgerichtet und ich kann zuversichtlich einige Zeit für Back-Testing von neuen Handelssystemen zu widmen, und Support Vector Machines (SVM) sind das neue Spielzeug, das wird mich beschäftigen für ein während. SVMs sind ein bekanntes Werkzeug aus dem Bereich der überwachten Machine Learning. Und sie werden sowohl für die Klassifizierung als auch für die Regression verwendet. Weitere Einzelheiten entnehmen Sie bitte der Literatur. Es scheint mir, dass die intuitivste Anwendung für den Handel Regression ist, so beginnen wir mit dem Aufbau eines SVM-Regressionsmodell. Nach unseren Erfahrungen mit ARMAGARCH-Modellen werden wir zunächst versuchen, die Rendite anstatt der Preise zu prognostizieren. Ebenso verwenden wir in unseren ersten Tests nur die Renditen der letzten 5 Tage als Merkmale, die die Rückkehr eines bestimmten Tages bestimmen. Wir beginnen mit der Geschichte von 500 Tagen als Trainingsset. In mathematischer Hinsicht haben wir für das Trainingsset N Merkmale, für jedes haben wir M Proben. Wir haben auch M Antworten. Bei einer Reihe von Merkmalswerten, der linken Matrix, wird das SVM trainiert, um den Antwortwert zu erzeugen. In unserem spezifischen Beispiel haben wir fünf Spalten (Merkmale), wobei jede Spalte den Rückgaben mit einer unterschiedlichen Verzögerung (von 1 bis 5) entspricht. Wir haben 500 Proben und die entsprechenden Antworten. Sobald das SVM auf diesem Set trainiert ist, können wir es mit Sätzen von fünf Funktionen, entsprechend den Renditen für die fünf vorherigen Tage, und die SVM wird uns mit der Antwort, die die prognostizierte Rendite wird. For example, after training the SVM on the previous 500 days, we will use the returns for days 500, 499, 498, 497 and 496 (these are ours as the input to obtain the forecasted return for day 501. From all the packages available in R, I decided to choose the e1071 package. A close second choice was the kernlab package, which I am still planning to try in the future. Then I tried a few strategies. First I tried something very similar to the ARMAGARCH approach the lagged returns from the five previous days. I was quite surprised to see this strategy performing better than the ARMAGARCH (this is the home land of the ARMAGARCH and I would have been quite happy just with comparable performance) Next, I tried to the same five features, but trying to select the best subset. The selection was done using a greedy approach, starting with 0 features, and interactively adding the feature which minimizes the error best. This approach improved things further. Finally, I tried a different approach with about a dozen features. The features included returns over different period of time (1-day, 2-day, 5-day, etc), some statistics (mean, median, sd, etc) and volume. I used the same greedy approach to select features. This final system showed a very good performance as well, but it took a hell of a time to run. Time to end this post, the back-testing results have to wait. Until then you can play with the full source code yourself. Here is an example of using it:


No comments:

Post a Comment