Thursday, October 13, 2016

Forex Algorithmic Trading A Practical Tale Für Ingenieure

Forex Algorithmic Trading: A Practical Tale für Ingenieure Wie Sie vielleicht wissen, wird die Foreign Exchange (Forex) Markt für den Handel zwischen den Währungspaaren eingesetzt. Aber Sie können nicht wissen, dass es ist der liquideste Markt der Welt sein. Vor ein paar Jahren, durch meine Neugier getrieben, nahm ich meine ersten Schritte in die Welt des Devisenhandels-Algorithmen durch die Schaffung eines Demo-Konto und spielen Simulationen (mit gefälschtem Geld) auf der Meta Trader 4 Handelsplattform. Nach einer Woche "Handel" hatte ich fast verdoppelt mein Geld. Auf von meinem eigenen Erfolg angespornt, grub ich tiefer und schließlich bis zu einer Reihe von Foren unterzeichnet. Bald wurde ich stundenlang darüber zu lesen algorithmische Handelssysteme (Regelsätze, die bestimmen, ob Sie kaufen oder verkaufen), kundenspezifische Indikatoren. Marktstimmungen und mehr. Mein erster Kunde Um diese Zeit, zufällig hörte ich, dass jemand versuchte, einen Software-Entwickler, ein einfaches Handelssystem zu automatisieren finden. Das war wieder in meinem College-Tagen, als ich über die parallele Programmierung in Java (Themen, Semaphore und alles, was Junk-) Lernen. Ich dachte, dass dieses automatisierte System dies nicht viel komplizierter als meine erweiterte Daten Wissenschaft Kursarbeit, also fragte ich über den Job und kam an Bord. Der Kunde wollte das System mit MQL4 gebaut. eine funktionale Programmiersprache, die von der Meta Trader 4-Plattform zur Durchführung von aktienbezogenen Aktionen verwendet. MQL5 seit freigegeben. Wie zu erwarten, richtet sie einige MQL4 Fragen und kommt mit mehr integrierte Funktionen, die das Leben leichter macht. Die Rolle von der Handelsplattform (Meta Trader 4, in diesem Fall) ist es, eine Verbindung zu einer Devisenvermittler bereitzustellen. Der Broker stellt dann eine Plattform mit Echtzeit-Informationen über den Markt und führt Ihre Kauf - / Verkaufsaufträge. Für Leser, die nicht mit Forex-Handel, hier ist die Information, die durch die Daten-Feed zur Verfügung gestellt wird: Durch Meta Trader 4, können Sie all diese Daten mit internen Funktionen in verschiedenen Zeitrahmen zugreifen können, zugänglich: jede Minute (M1), alle fünf Minuten (M5), M15, M30, jede Stunde (H1), H4, D1, W1, MN . Die Bewegung der Tagespreis wird als Tick. Mit anderen Worten, ist ein Tick einer Änderung der Geld - oder Briefkurs für ein Währungspaar. Während der aktiven Märkten kann es zu zahlreichen Ticks pro Sekunde betragen. Während der langsamen Märkten kann es Minuten ohne Häkchen werden. Die Zecke ist der Herzschlag eines Forex-Roboter. Wenn Sie eine Bestellung über eine solche Plattform zu platzieren, Sie kaufen oder verkaufen ein bestimmtes Volumen einer bestimmten Währung. Sie auch Stop-Loss und Take-Profit-Grenzen zu setzen. Die Stop-Loss-Limit ist die maximale Menge an Pips (Preisänderungen), die Sie sich leisten können, bevor er aufgibt ein Gewerbe zu verlieren. Die Take-Profit-Limit ist der Betrag der Pips, die Sie zu Ihren Gunsten vor einer Auszahlung werde ansammeln. Wenn Sie mehr über die Grundlagen des Handels (zB Pips, Auftragsarten, verbreitet, Rutschen, Market Orders und mehr) erfahren möchten, finden Sie hier. Algorithmic Trading Vorgaben des Kunden waren einfach: sie wollten einen Roboter, basierend auf zwei Indikatoren. Zu den Hintergründen, sind Indikatoren sehr hilfreich bei dem Versuch, einen Marktzustand definieren und Handelsentscheidungen, wie sie auf Daten aus der Vergangenheit (zB höchster Preis-Wert in den letzten n Tage) basiert. Viele kommen eingebaut, um Meta Trader 4. Allerdings sind die Indikatoren, die mein Mandant war daran interessiert, kam aus einer kundenspezifischen Handelssystem. Sie wollten jedes Mal zwei dieser benutzerdefinierten Indikatoren durchschnitten, und nur in einem bestimmten Winkel zu handeln. Als ich mir die Hände schmutzig, erfuhr ich, dass MQL4 Programme haben die folgende Struktur: [Präprozessordirektiven] [Externer Parameter] [Globale Variablen] [Init Function] [Deinit Funktion] [Start Funktion] [Individualfunktionen] Die Startfunktion ist das Herz eines jeden MQL4 Programm, da es jedes Mal, wenn sich der Markt (ergo, diese Funktion einmal pro Tick ausführen) ausgeführt wird. Dies ist der Fall, unabhängig von der Zeitrahmen Sie verwenden. Zum Beispiel könnten Sie auf dem H1 (eine Stunde) Zeitrahmen in Betrieb sein, doch die Startfunktion würden viele tausend Mal pro Zeitrahmen durchzuführen. Um dies zu umgehen, zwang ich die Funktion, um einmal pro Periode Einheit auszuführen: Immer die Werte der Indikatoren: Die Entscheidungslogik, einschließlich Schnittpunkt der Indikatoren und ihre Winkel: Senden der Aufträge: Wenn Sie interessiert sind, können Sie die komplette, lauffähigen Code auf GitHub zu finden. Back-Testing Sobald ich meine algorithmischen Handelssystem gebaut, wollte ich wissen: 1), wenn es in geeigneter Weise zu verhalten, und 2) wenn er eine war gut. Backtesting ist der Prozess der Prüfung einer bestimmten (automatisiert oder nicht) System unter den Ereignissen der Vergangenheit. Mit anderen Worten, Ihr System zu testen Sie die Vergangenheit als Proxy für die Gegenwart. MT4 kommt mit einem akzeptablen Tool für Backtesting ein Forex Trading System (heute gibt es mehr professionelle Tools, die mehr Funktionalität bieten). So starten Sie Setup Ihren Zeitrahmen und führen Sie Ihr Programm im Rahmen einer Simulation; das Werkzeug wird jeder Tick zu wissen, dass für jede Einheit sollte in bestimmten Preis in der Nähe zu einem bestimmten Preis zu öffnen, und, zu erreichen angegebenen Höhen und Tiefen zu simulieren. Nach einem Vergleich der Maßnahmen des Programms gegen historische Preise, Sie haben einen guten Sinn für, ob es richtig ausführt. Die Indikatoren, die er erwählt hatte, zusammen mit der Entscheidungslogik, waren nicht rentabel. Von Backtesting, hatte ich aus Rendite-Verhältnis des Roboters für einige zufälligen Zeitabständen überprüft; unnötig zu sagen, wusste ich, dass mein Mandant nicht im Begriff war reich an it - den Indikatoren, die er erwählt hatte, zusammen mit der Entscheidungslogik, um zu bekommen, waren nicht rentabel. Als Probe, hier sind die Ergebnisse der Ausführung des Programms über die M15-Fenster für 164 Operationen: Beachten Sie, dass unser Gleichgewicht (die blaue Linie) endet unter seinem Ausgangspunkt. Eine Warnung: zu sagen, dass ein System "profitable" oder "unrentabel" ist nicht immer echt. Oft sind Systeme (un) nützlich zur Zeit auf der Grundlage der Markt die "Stimmung": Parameteroptimierung, und seine Lügen Obwohl Backtesting mich vorsichtig von diesem Roboter Nützlichkeit gemacht hatte, war ich fasziniert, als ich begann das Spiel mit seinen externen Parameter und bemerkte große Unterschiede in der Gesamtrücklaufquote. Diese besondere Wissenschaft wird als Parameteroptimierung bekannt. Ich habe einige grobe Tests zu versuchen und zu schließen, die Bedeutung der externen Parameter auf die Rücklaufquote und kam mit etwas wie dieses: Oder aufgeräumt: Sie mögen denken, (so wie ich), dass Sie die Parameter A. verwenden Aber die Entscheidung ist nicht so einfach, wie es scheinen mag. Insbesondere beachten Sie die Unvorhersehbarkeit der Parameter A: für kleine Fehlerwerte, ändert seine Rückkehr dramatisch. Mit anderen Worten, ist Parameter Eine sehr wahrscheinlich über zukünftige Ergebnisse, da jede Unsicherheit, eine Verschiebung überhaupt in einem schlechteren Leistung führen. Aber in der Tat ist die Zukunft ungewiss! Und so ist auch die Rückkehr der Parameter A ungewiss. Die beste Wahl ist, ist in der Tat auf Unvorhersehbarkeit verlassen. Oft wird ein Parameter mit einem niedrigeren maximalen Return aber überlegen Berechenbarkeit (weniger Fluktuation) vorzuziehen sein, einen Parameter mit hoher Rendite, aber schlechte Vorhersehbarkeit. Das einzige, was Sie können sicher sein, dass Sie nicht über die Zukunft des Marktes kennen und denken, Sie wissen, wie sich der Markt wird sich auf Daten aus der Vergangenheit auf der Grundlage durchzuführen, ist ein Fehler. Im Gegenzug müssen Sie diese Unvorhersehbarkeit anzuerkennen. Denken Sie, wie sich der Markt wird sich auf Daten aus der Vergangenheit auf der Grundlage durchzuführen, ist ein Fehler. Dies bedeutet nicht unbedingt, wir sollten Parameter B verwenden, denn auch die niedrigeren Renditen der Parameter A besser als Parameter B; das ist nur um Ihnen zu zeigen, dass die Optimierung Parameter können in Tests, die wahrscheinliche künftige Ergebnisse überbewerten führen, und solches Denken ist nicht offensichtlich. Insgesamt Forex Algorithmic Trading-Überlegungen Seit diesem ersten algorithmischen Forex Trading-Erfahrung, ich habe mehrere automatisierte Handelssysteme für Kunden gebaut, und ich kann Ihnen sagen, dass es gibt immer Raum zu erkunden. Zum Beispiel habe ich vor kurzem ein System, das auf der Suche nach so genannten "Big Fish" Bewegungen; das heißt, große Pips Schwankungen der kleinen, kleinen Zeiteinheiten. Dies ist ein Thema, das mich fasziniert. Bauen Sie Ihre eigenen Simulationssystem ist eine ausgezeichnete Wahl, um mehr über den Forex-Markt zu lernen, und die Möglichkeiten sind endlos. Zum Beispiel könnten Sie versuchen, die Wahrscheinlichkeitsverteilung der Preisunterschiede in Abhängigkeit von der Volatilität in einem Markt zu entziffern (EUR / USD zum Beispiel), und vielleicht machen ein Montecarlo-Simulationsmodell mit der Ausschüttung je Volatilität Zustand, mit welchem ​​Grad an Genauigkeit du willst. Ich werde dies als eine Übung für den eifrigen Leser überlassen. Der Forex-Welt kann manchmal überwältigend sein, aber ich hoffe, dass diese Zuschreibung hat Sie einige Punkte auf, wie man in Gang zu bringen gegeben. Weiterführende Literatur Heutzutage gibt es einen großen Pool an Werkzeugen zu bauen, zu testen und zu verbessern Trading System Automations: Handels Blox für die Prüfung, Ninjatrader für den Handel, OCaml für die Programmierung, um einige zu nennen. Ich habe ausführlich über die geheimnisvolle Welt, die der Forex-Markt ist zu lesen. Hier sind ein paar Zuschreibungen, die ich empfehlen für Programmierer und begeisterte Leser:


No comments:

Post a Comment