Forex Trading Diary 3 - Open Sourcing das Forex Trading System In der heutigen Eintragung des Forex Trading Diary Ich möchte den längerfristigen Plan für das Devisenhandelssystem zu diskutieren. Darüber hinaus möchte ich skizzieren, wie Ive Pythons Decimal-Datentyp verwendet, um Berechnungen genauer zu machen. Bisher haben wir mit der OANDA Rest-API experimentiert, um zu sehen, wie es mit der API von Interactive Brokers verglichen wurde. Weve auch gesehen, wie man in einem grundlegenden Portfolio-Replikationselement als ersten Schritt zu einem richtigen Ereignis-getriebenen Backtesting-System hinzufügen. Ive hatte auch einige hilfreiche Kommentare zu beiden früheren Artikeln (1 und 2), was darauf hindeutet, dass viele von euch sind scharf auf den Wandel und Erweiterung der Code selbst. Open Sourcing das Forex Trading System Aus den oben genannten Gründen habe ich beschlossen, Open-Source-Forex Trading System. Was bedeutet dies, bedeutet, dass alle aktuellen und zukünftigen Code kostenlos unter einer liberalen MIT Open Source-Lizenz auf der Github-Versionskontroll-Website unter der folgenden URL zur Verfügung stehen: github / mhallsmoore / qsforex. Für diejenigen unter Ihnen, die Git und Github vor verwendet haben, youll in der Lage sein, git klonen das Repo und starten Sie die Änderung für Ihre eigenen Zwecke. Das QuantStart Automated Forex Trading System ist jetzt Open-Source unter einer liberalen MIT Lizenz. Den aktuellen Code finden Sie auf Github unter dem qsforex-Repository unter github / mhallsmoore / qsforex. Für diejenigen unter Ihnen, die neu in Source-Versionskontrolle sind Sie wahrscheinlich wollen, um zu lesen, wie git (und Versionskontrolle im Allgemeinen) arbeitet mit dem fantastischen kostenlosen ebook Pro Git. Es lohnt sich, etwas Zeit damit zu verbringen, über Quellcodeverwaltung zu lernen, da es Ihnen eine riesige Menge künftiger Kopfschmerzen ersparen wird, wenn Sie viel Zeit mit der Programmierung und Aktualisierung von Projekten verbringen. Der Schnellstart für ein Ubuntu-System ist die Installation von git: Sie müssen es dann machen Ein Verzeichnis für das Projekt qsforex, in dem das Projekt stattfindet und das Projekt von der Github-Site wie folgt kopieren: An diesem Punkt müssen Sie eine virtuelle Umgebung erstellen, in der der Code ausgeführt werden soll: Sie müssen dann die Anforderungen installieren (dies wird dauern Einige Zeit): Schließlich müssen Sie eine symbolische Verknüpfung in Ihrer virtuellen Pythonumgebung erstellen, damit Sie import qsforex in Ihren Code eingeben können (und ausführen): Wie bereits erwähnt, müssen Sie die notwendigen Umgebungsvariablen erstellen Für Ihre OANDA-Authentifizierungsberechtigungen. Eine Anleitung dazu finden Sie unter Tagebucheintrag 2. Bitte beachten Sie die README im Zusammenhang mit dem Repo, da es Installationsanweisungen, einen Haftungsausschluss und eine Garantie über die Verwendung des Codes enthält. Da sich die Software im Alpha-Modus befindet, werden diese Anweisungen im Laufe der Zeit einfacher. Insbesondere werde ich versuchen, das Projekt in ein Python-Paket zu wickeln, so dass es einfach per pip installiert werden kann. Wenn Sie irgendwelche Fragen über die Installation haben, dann zögern Sie bitte nicht, mich auf mikequantstart zu mailen. Longer-Term Plan Die Philosophie des Devisenhandelssystems, wie auch der Rest der QuantStart-Seite, besteht darin, den realen Handel so weit wie möglich in unserem Backtesting zu simulieren. Dies schließt auch die Details ein, die häufig aus forschungsorientierteren Backtesting-Situationen ausgeschlossen sind. Latenz, Serverausfälle, Automatisierung, Überwachung, realistische Transaktionskosten werden alle in die Modelle aufgenommen, um uns eine gute Vorstellung davon zu vermitteln, wie gut eine Strategie wahrscheinlich ist. Da wir Zugriff auf Tick-Daten haben (Bid / Ask-Zeitstempel), können wir den Spread in die Transaktionskosten aufnehmen. Wir können auch Modell Schlupf. Es ist weniger direkt, die Auswirkungen des Marktes zu modellieren, obwohl dies bei kleineren Handelsbeträgen weniger von Belang ist. Neben den Transaktionskosten wollen wir ein robustes Portfoliomanagement mit Hilfe von Risiko-Overlays und Positionsgrößen modellieren. Also, was ist derzeit im Forex Trading System auf dem Laufenden Event-Driven Architecture - Das Forex Trading System wurde als ein ereignisgesteuertes System von Grund auf, wie dies ist, wie ein Intraday-Trading-System wird in einer Live-Umgebung implementiert werden . Preis-Streaming - Wir haben ein Grundpreis-Streaming-Objekt. Dies handhabt derzeit Abonnement für nur ein einziges Paar, aber wir können dies leicht ändern, um mehrere Währungspaare abonnieren. Signalerzeugung - Wir können Trading-Strategien (direkt basierend auf vergangenen und aktuellen Tick-Preisen) mit dem Strategy-Objekt, das SignalEvent-Objekte erzeugt, einbinden. Order Execution - Wir haben ein naives Order Execution System, das blind Aufträge aus dem Portfolio an OANDA sendet. Mit blindlich meine ich, dass es kein Risikomanagement oder Position Sizing durchgeführt wird, noch jede algorithmische Ausführung, die zu reduzierten Transaktionskosten führen könnte. GBP Basiswährung - Um die Dinge einfach zu halten, habe ich nur das System für GBP Basiswährung geschrieben. Dies ist vielleicht der wichtigste Aspekt zu ändern, wie viele von Ihnen haben die Praxis Konten in USD, EUR, CAD, JPY, AUD und NZD GBP / USD Trading geteilt - Ich wählte das Kabel als das Währungspaar, um die ursprüngliche Position zu testen und Portfolioobjekte mit. Der Umgang mit mehreren Währungspaaren ist ein wichtiger Schritt. Dies beinhaltet eine Änderung der Positions - und Portfolio-Berechnungen. Dezimalbehandlung - Jedes Produktionssystem muss Währungsberechnungen korrekt bearbeiten. Insbesondere sollten Währungswerte nicht als Floating-Point-Datentypen gespeichert werden, da sich Rundungsfehler akkumulieren. Sehen Sie bitte diesen fantastischen Artikel auf Gleitkomma-Darstellungen für mehr Details. Long / Short Trading - Zwischen den Tagebucheinträgen 2 und 3 fügte ich die Fähigkeit hinzu, ein Währungspaar zu kürzen (im Gegensatz zu nur in der Lage, lange zu gehen). Entscheidend ist, dass dies auch getestet wird. Lokales Portfolio Handling - Meiner Meinung nach einen Backtest durchzuführen, der die Strategieperformance aufgrund unrealistischer Annahmen aufbaut, ist am besten und extrem unrentabel im schlimmsten Fall. Die Einführung eines lokalen Portfolio-Objekts, das die OANDA-Berechnungen repliziert, bedeutet, dass wir unsere internen Berechnungen während der Praxis überprüfen können Handeln. Was uns mehr Vertrauen gibt, wenn wir später dieses gleiche Portfolio-Objekt für Backtesting auf historische Daten verwenden. Unit Tests für Position / Portfolio - Während ich nicht erwähnt es direkt in den Tagebucheinträgen 1 und 2, Ive tatsächlich schrieb einige Unit-Tests für die Portfolio-und Position-Objekte. Da diese für die Berechnungen der Strategie so entscheidend sind, muss man sehr zuversichtlich sein, dass sie wie erwartet funktionieren. Ein weiterer Vorteil dieser Tests ist, dass sie die zugrunde liegende Berechnung ändern, so dass, wenn alle Tests noch passieren, können wir darauf vertrauen, dass das gesamte System wird sich weiterhin wie erwartet verhalten. In diesem Stadium fehlt dem Forex Trading System die folgende Funktionalität: Slippage Handling - Das System erzeugt derzeit viel Schlupf aufgrund der Hochfrequenz-Charakter der Tick-Daten von OANDA zur Verfügung gestellt. Dies bedeutet, dass der lokal ausgewiesene Portfolio-Saldo nicht den von OANDA berechneten Saldo widerspiegelt. Bis eine korrekte Ereignisabwicklung und Schlupfeinstellung durchgeführt wird, bedeutet dies, dass ein Backtest die Realität nicht korrekt wiedergibt. Mehrere Basiswährungen - Wir sind derzeit auf GBP beschränkt. Zumindest müssen wir die wichtigsten Währungsbezeichnungen - USD, EUR, CAD, AUD, JPY und NZD. Mehrere Währungspaare - Ähnlich müssen wir die wichtigsten Währungspaare über Kabel (GBP / USD) unterstützen. Dafür gibt es zwei Aspekte. Die erste ist, die Berechnungen korrekt zu verarbeiten, wenn weder die Basis oder das Zitat eines Währungspaares gleich der Konten-Nennwährung ist. Der zweite Aspekt ist, mehrere Positionen zu unterstützen, so dass wir ein Portfolio von Währungspaaren handeln können. Risikomanagement - Viele Research Backtests ignorieren das Risikomanagement vollständig. Leider ist dies generell notwendig für die Kürze in der Beschreibung der Regeln einer Strategie. In Wirklichkeit müssen wir - wenn möglich - eine Risikoüberlagerung verwenden, sonst ist es sehr wahrscheinlich, dass wir irgendwann einen erheblichen Verlust erleiden werden. Dies bedeutet nicht, dass das Risikomanagement dies vollständig verhindern kann, aber es macht es sicherlich weniger wahrscheinlich. Portfolio-Optimierung - In einem institutionellen Rahmen haben wir ein Investitionsmandat, das ein robustes Portfolio-Management-System mit verschiedenen Zuteilungsregeln diktiert. In einem Einzelhandel / persönliche Einstellung können wir eine Position Dimensionierung Ansatz wie das Kelly Criterion verwenden, um unsere langfristige zusammengesetzte Wachstumsrate zu maximieren. Robuste Strategien - Ich habe nur einige einfache zufällige Signalerzeugung Spielzeug Strategien bis heute gezeigt. Nun, da wir beginnen, ein zuverlässiges Intraday Forex Trading System zu schaffen, sollten wir beginnen, einige interessante Strategien. Künftige Tagebucheinträge konzentrieren sich auf Strategien, die aus einer Mischung von technischen Indikatoren / Filtern sowie Zeitreihenmodellen und maschinellen Lerntechniken gezogen werden. Remote Deployment - Da wir potenziell am 24-Stunden-Handel interessiert sind (zumindest in der Woche), benötigen wir ein anspruchsvolleres Setup als der Backtester auf einem lokalen Desktop / Laptop-Rechner zu Hause. Es ist wichtig, dass wir eine robuste Remote-Server-Implementierung unseres Systems mit entsprechender Redundanz und Überwachung schaffen. Historisches Backtesting - Wir haben das Portfolio-Objekt aufgebaut, um ein realistisches Backtesting durchzuführen. In diesem Stadium fehlt uns ein historisches Tick-Datenspeichersystem. In nachfolgenden Artikeln werden wir auf die Erfassung historischer Tickdaten und deren Speicherung in einer geeigneten Datenbank wie HDF5 schauen. Trade Database - Eventuell wollen wir unsere Live Trades in unserer eigenen Datenbank speichern. Dies ermöglicht es uns, unsere eigenen Analysen auf Live-Trading-Daten durchzuführen. Eine gute Empfehlung für eine relationale Datenbank wäre PostgreSQL oder MySQL. Überwachung und hohe Verfügbarkeit - Da wir ein hochfrequentes Intraday-System in Betracht ziehen, müssen wir eine umfassende Überwachung und Hochverfügbarkeits-Redundanz vorsehen. Dies bedeutet, dass die CPU-Auslastung, die Datenträgerverwendung, die Netzwerk-E / A, die Latenzzeit und die Überprüfung, ob periodische Skripts ausgeführt werden, berichtet werden. Darüber hinaus benötigen wir eine Backup - und Restore-Strategie. Fragen Sie sich, was Backup-Pläne Sie an Ort und Stelle haben, wenn Sie große offene Positionen, in einem volatilen Markt hatte, und Ihr Server plötzlich starb. Glauben Sie mir, es passiert Multiple Broker / FIX Integration - Im Moment sind wir stark an den OANDA Broker gekoppelt. Wie gesagt, das ist einfach, weil ich über ihre API kam und fand es zu einem modernen Angebot. Es gibt viele andere Broker da draußen, von denen viele das FIX-Protokoll unterstützen. Das Hinzufügen einer FIX-Fähigkeit würde die Anzahl der Broker erhöhen, die mit dem System verwendet werden könnten. GUI Control und Reporting - Im Moment ist das System vollständig auf Konsole / Befehlszeilen basiert. Zumindest müssen wir einige grundlegende Charting, um Backtest-Ergebnisse anzeigen. Ein anspruchsvolleres System wird zusammenfassende Statistiken von Trades, Performance-Metriken auf Strategieebene sowie die Gesamtleistung des Portfolios enthalten. Diese GUI könnte unter Verwendung eines plattformübergreifenden Fenstersystems wie Qt oder Tkinter implementiert werden. Es könnte auch präsentiert werden, mit einem Web-basierten Front-End, mit einem Web-Framework wie Django. Wie man sehen kann, gibt es eine Menge Funktionalität auf der Roadmap hinterlassen. Davon abgesehen, wird jeder neue Tagebucheintrag (und potenzielle Beiträge der Gemeinschaft) das Projekt voranbringen. Dezimal-Datentypen Nun, da wir den längerfristigen Plan diskutiert haben, möchte ich einige der Änderungen vorstellen, die ich an dem Code seit dem Tagebucheintrag 2 vorgenommen habe. Insbesondere möchte ich beschreiben, wie ich den Code geändert habe, um die Decimal - Anstatt Gleitkomma-Speicher zu verwenden. Dies ist eine äußerst wichtige Änderung, da Gleitkomma-Darstellungen eine wesentliche Quelle für Langzeitfehler in Portfolio - und Auftragsmanagementsystemen sind. Python unterstützt nativ Dezimaldarstellungen auf eine beliebige Genauigkeit. Die Funktionalität ist in der Dezimalbibliothek enthalten. Insbesondere müssen wir jeden Wert ändern, der in einer Positionsberechnung in einem Dezimal-Datentyp erscheint. Dies schließt die Einheiten, die Exposure, Pips, Gewinn und prozentualen Gewinn ein. Dies stellt sicher, dass wir die volle Kontrolle darüber haben, wie Rundungsprobleme im Umgang mit Währungsdarstellungen behandelt werden, die zwei Dezimalstellen der Genauigkeit haben. Insbesondere müssen wir die Methode der Rundung wählen. Python unterstützt ein paar verschiedene Typen, aber wir werden mit ROUNDHALFDOWN gehen. Die auf die nächste ganze Zahl umläuft, wobei Bindungen in Richtung Null gehen. Hier ist ein Beispiel, wie der Code geändert wird, um Decimal-Datentypen von ihren vorherigen Gleitkommadarstellungen zu behandeln. Das folgende ist eine Liste von position. py: Beachten Sie, dass wir Decimal mit einem String-Argument anstatt einem Gleitkomma-Argument bereitstellen müssen. Dies liegt daran, dass ein String genau die Genauigkeit des Wertes angibt, während ein Gleitpunkttyp nicht. Beachten Sie auch, dass, wenn wir anfangen, unsere Trades in einer relationalen Datenbank zu speichern (wie oben in der Roadmap beschrieben), müssen wir sicherstellen, dass wir wieder den richtigen Datentyp verwenden. PostgreSQL und MySQL unterstützen eine Dezimaldarstellung. Es ist wichtig, dass wir diese Daten-Typen nutzen, wenn wir unser Datenbank-Schema erstellen, sonst werden wir in Rundungsfehler, die extrem schwierig zu diagnostizieren sind Für diejenigen, die an einer tieferen Diskussion dieser Fragen interessiert sind, in Mathematik und Informatik, die Gegenstand der Numerical Analysis umfasst Floating-Point-Storage-Themen, unter vielen anderen interessanten Themen. In folgenden Tagebucheinträgen werden wir diskutieren, wie ich Unit-Tests auf den Code angewandt habe und wie wir die Software auf mehr Währungspaare erweitern können, indem wir die Positionsberechnungen ändern. Full Python Code Da der vollständige Quellcode für das Projekt nun Open Source ist, unter einer MIT Lizenz. Es kann immer bei github / mhallsmoore / qsforex herausgefunden werden. Mit den begleitenden Unterlagen. Wenn Sie die anderen Einträge in der Reihe lesen möchten, folgen Sie bitte den Links unten: The Algorithmic Trading und Autotrading Universe Im Folgenden finden Sie eine Auflistung der verschiedenen Tools und Dienstleistungen I8217ve gefunden, dass in Autotrading Aktien, Futures, Forex und unterstützen Optionen sowie die Entwicklung algorithmischer Handelsprogramme zur Systematisierung des Handels dieser Instrumente. Einige dieser Seiten erfüllen unzählige Rollen und sind somit unter mehreren Abschnitten aufgelistet. Aktualisiert Ständig. Bitte lassen Sie mich wissen, wenn Sie möchten, dass Ihre Website oder Dienstleistung hinzugefügt, um diese Liste. Stock Screeners und Backtesters Tools, die es dem Benutzer ermöglichen, nach verschiedenen Kriterien zu sortieren, um Bestände zu finden, und in mehreren Fällen Backtest, wie Investitionen, die auf diesen Kriterien basieren, durchgeführt hätten. Backtester sind T ools, die es erlauben, eine Strategie unter Verwendung historischer Daten zu testen, um zu sehen, wie sie hypothetisch durchgeführt werden könnte. Sehr nützlich für die Verfeinerung und Testing Handel Ideen und die Einrichtung von Regeln für den erfolgreichen algorithmischen Handel. Einige Websites erfordern Programmierkenntnisse, und einige sind Point-and-Click. Beratung und Analyse Webseiten, die Ihnen die Möglichkeit bieten, eigene Portfolios zu erstellen und zu sehen, wie sie bestehende Portfolios ausführen oder importieren können, um die laufende Performance zu analysieren. Modellauswahl Die grundlegendste Form des Autotrading ist die Einrichtung eines Kontos, die Auswahl eines Modells Dh auf der Grundlage Ihres Risikoprofils zu investieren, in den Gesundheitssektor zu investieren, auf der Grundlage der großen Hedgefonds zu investieren usw.) und dann festzulegen und zu vergessen. Soweit algorithmischen Handel geht, ist dies die grundlegendste Form. Manager-Auswahl Diese Option ist der Kern des Autotrading. Machen Sie Ihre Due Diligence auf die Handelssysteme zur Verfügung gestellt, wählen Sie ein oder mehrere Handelssysteme, und haben es in Ihrem Konto gehandelt. Einige dieser Optionen erfordern ein Konto eingerichtet auf der bevorzugten bevorzugten Broker, aber in allen Fällen können Sie Trades in Ihrem Konto sehen, wie sie geschehen. Einige von diesen basieren auf algorithmischen Handelsmodellen, und einige sind diskretionäre Trades durch den Modellmanager. Ehrenhafte Erwähnung: Die Autotrading von Newlettern Funktionalität, die von verschiedenen Brokern wie OptionsXpress (Xecute und die OX XML API werden eingestellt, Vielen Dank, Schwab), Trademonster. Deutsch:. Etc. Social Verbinden Sie Ihr Konto mit diesen Dienstleistungen und analysieren Sie Ihre Trades, oder lassen Sie sie automatisch auf Twitter geschickt. Facebook. Oder Google. Ideen teilen und von anderen lernen, wie sie handeln. Do It Yourself Willst du deine Hand auf die Entwicklung Ihrer eigenen algorithmischen Handelsmodelle und automatisieren Sie Ihre eigenen Strategien versuchen Hier sind Websites, die Ihnen die Werkzeuge, um dies zu tun. Möglicherweise müssen Sie Software auf Ihrem Computer ausführen, um die Trades ausführen, jedoch. Für Programmierer: Für diejenigen, die Algorithmen durch eine visuelle (Point-and-Click, Kalkulationstabelle oder andere) Schnittstelle erstellen möchten: Brokerage mit APIs Alle mit Ihren Werkzeugen und Algorithmen eingestellt Jetzt brauchen Sie einen Ort zum Handeln. Hoffentlich werden mehr Makler RESTful APIs implementieren, damit Händler ihre Programmiersprachen und Schnittstellen der Wahl nutzen können. Alternative Nicht stock investing, aber immer noch ein Weg, um Ihre Investitionen zu diversifizieren und haben eine automatisierte Investitionsprozess. Bildung Erfahren Sie mehr über Finanzen, Handel und Programmierung. Virtual Trading Practice Handel mit einem virtuellen Konto, um Ihre Fähigkeiten zu schärfen, und in einigen Fällen verdienen Belohnungen oder Bargeld. INTJ Capital sagt: Es hängt von Ihrer Programmierfähigkeit ab. Diejenigen von uns, die nicht Programmierer sind, können mit Excel8217s Solver optimieren. Einige Plattformen, die Programmierfähigkeit erfordern, sind Zipline (die Open-Source-Version von Quantopian, die angeblich Optimierungsmöglichkeiten hat) oder MetaTrader 5 (erfordert Kenntnisse in MQL, kann von Ihrem Broker kostenlos zur Verfügung gestellt werden) oder die R-Plattform hat sich gut entwickelt Optimierungspakete, aber man muss die Sprache R kennen. Wenn Sie über andere Lösungen kommen, lassen Sie es mich wissen, da es auch etwas ist, mit dem ich ringe. Großer Artikel. Dies muss die umfassendste Liste sein, die ich je gesehen habe. Vielen Dank für die Erstellung dieser Liste. Ich bin ein Algo-Händler und nutzen die Tradier API. Ich fange gerade an, einige der Werkzeuge zu betrachten, die oben aufgeführt werden. Neueste Artikel Aktuelle Kommentare Kategorien
Dagangan Demo Forex Kaufen Percuma Akaun Premium Verbreitung diskaun serendah EUR / USD 1.1 pips 39 pasang mata wang. Gold dan Silber dan CFDs 100 gelegen: 1 Leveragesup1 belajar selanjutnya raquo Tiada halangan atas penggunaan strategi seperti EA dan perdagangan frekuensi tinggi Dolch Meninggalkan kita e-mel dan Nombor telefon bimbit. Menjadi pemenang bertuah 100 USD. 5 Pemenang setiap bulan Ketahui Lebih Lanjut Jika kakitangan kami dapat menghubungi undeinem melalui Telefon dengan maklumat Yang undeinem Telah meninggalkan dalam Borang pendaftaran akaun Demo undeinem layak untuk memasuki cabutan bertuah Secara automatik. Peserta mesti bermastautin di Malaysia dan Mampu menyediakan membuktikan kediaman 5 Pemenang Akan dipilih setiap bulan, Pemenang Akan mendapat 100 US-kredit akaun yang akan dikreditkan ke akaun FXCM Pemenang dalam tempoh 30 hari bekerja selepas Pengumuman keputusan. Pemenang hanya Akan dipilih daripada Mereka Yang mendaftar akaun Demo FXCM Pada FXCM / my dalam bulan i...
Comments
Post a Comment