Saturday 27 May 2017

Trading System Api Daten Wörterbuch


Erstellen von automatisierten Handelssystemen mit interaktiven Brokern automatisierten Handel mit interaktiven Brokern. Die interaktive Broker-Handelsplattform selbst bietet keine automatisierten Handel Allerdings sind mehrere Lösungen für Händler, die Handelssysteme mit der IB Trader Workstation TSW-Plattform zu automatisieren möchten, einschließlich. Third - Party APIsProgramming Consultants. Third-Party-APIs Eine Application Programming Interface API ist ein Sprachformat, das von einem Anwendungsprogramm genutzt wird, um mit einer anderen Systemsoftware zu kommunizieren. Eine API fungiert als Schnittstelle oder Ganze, die es ermöglicht, dass Code mit der IB-Handelsplattform kommuniziert Drittanbieter bieten eine Vielzahl von proprietären APIs an, die anpassbare, vorkonfigurierte Algorithmen und Plug-and-Play-Trading-Software-Anwendungen bereitstellen, die in Verbindung mit der IBS Trader Workstation TWS-Handelsplattform ausgeführt werden sollen. Eine Liste der APIs der dritten Stufe ist auf der IB Website von der Homepage klicken Sie auf die Bildungsüberschrift und wählen Sie den Marktplatz IB Lesen Sie den Haftungsausschluss und wenn Sie den Bedingungen zustimmen, klicken Sie auf Wenn Sie dem Haftungsausschluss zustimmen, klicken Sie bitte hier, um fortzufahren Klicken Sie auf die Registerkarte Software Tools und die Unterposition Auftrag Management-Software zum Anzeigen von Anbietern und Produkten, die in Abbildung 1 dargestellt sind. Abbildung 1 - Wählen Sie die Registerkarte Software-Tools auf dem Marktplatz IB, um Drittanbieter zu durchsuchen. Programming-Berater Zusätzlich zu den im Handel erhältlichen APIs hat der Marktplatz IB auch einen Link zur Programmierung Berater, die Händler und Investoren bei der Entwicklung von kundenspezifischen Indikatoren und Strategien unterstützen können, um im automatisierten Handel eingesetzt zu werden Die Berater bieten Codierung in einer Vielzahl von Sprachen wie Java, C, Visual Basic, SQL, Perl, Matlab sowie andere Handelsplattformen proprietär Sprachen, die mit IB verbunden werden können. Beachten Sie, dass Programmierer nur absolute Regeln programmieren können und bieten in der Regel keine Vorschläge zur Verbesserung der Rentabilität eines Systems - nur die Leistung des Codes Vor der Arbeit mit einem Programmierer ist es wichtig zu sein In der Lage sein, alle Einzugs-, Ausstiegs - und Verwaltungslogik des Handelssystems zu definieren Wenn es definiert werden kann, kann es wahrscheinlich codiert werden. Programmierung mit IB-APIs Eine dritte Lösung ist für Händler mit den Fähigkeiten oder dem Wunsch, zu lernen, ihre eigenen APIs zu programmieren Interactive Brokers bietet mehrere APIs, die Händler verwenden können, um entweder über die TWS oder die IB Gateway zu verbinden. Die Verbindung über die TWS erfordert die Anwendung, die ausgeführt werden soll, aber ermöglicht es den Händlern zu testen und zu bestätigen, dass die API-Aufträge korrekt funktionieren Verbinden über das IB Gateway, Auf der anderen Seite gibt es keine Schnittstelle zum Testen und Bestätigen, aber erlaubt es der API, ohne eine große GUI-Anwendung laufen zu laufen. Wo die Drittanbieter-APIs anpassbare, vordefinierte Algorithmen bereitstellen, ist die IB-API-Programmierumgebung im Wesentlichen Rohmaterial IB bietet die Ausrüstung und Komponenten, und der Benutzer hat alle Programmierer Benutzer können in einer Vielzahl von Sprachen programmieren, einschließlich C, Java, ActiveX oder DDE für Excel Es gibt eine Reihe von API-bezogenen Einstellungen in TWS, die Händler konfigurieren können, Gezeigt in Abbildung 2 Das IB-API-Referenzhandbuch, das auf der interaktiven Broker-Website-Suche nach API-Referenzhandbuch zur Verfügung steht, bietet eine Übersicht sowie Anweisungen für die verschiedenen Programmiersprachen. Abbildung 2 - Konfigurieren der API-Einstellungen in TWS. Conclusion-Händlern, die es wünschen Implementieren automatisierte Handelssysteme über die Interactive Brokers-Plattform haben eine Vielzahl von Optionen Nicht-Programmierer können die Drittanbieter-API-Anbieter erkunden, die eine Vielzahl von anpassbaren oder Plug-and-Play-Optionen anbieten. Händler mit einzigartigen Ideen können mit einer qualifizierten Programmierung arbeiten Berater Diejenigen mit Programmier-Erfahrung oder die Zeit und der Wunsch, eine Programmiersprache lernen können die IB-APIs bei der Entwicklung von automatisierten Handelssystemen. Bloomberg Download. Date 7. Dezember 2013 Größe 69 6 Update ergänzende Schriften. Die Bloomberg API BLPAPI ist ein Satz von frei Verfügbare Software-Entwicklungskits SDKs, die es Softwareentwicklern ermöglichen, Anwendungen zu erstellen, die Marktdaten verbrauchen. Framework v3 5 Installieren oder aktualisieren Sie private Framework-Software. Trading System API Components Client Downloads Diese Software ist nur für Benutzer des Bloomberg Trading System. Bloomberg für Blackberry Bloomberg Professional App für Blackberry. Trading System API Data Dictionary Diese Software ist nur für Benutzer der Bloomberg Trading System. Date Spiele Wie das Leben ist seltsam 6. Februar 2012 Größe 41 4 Installieren Sie die Bloomberg Voice Fonts. Desktop Beiträge Anwendung v Diese Software ist nur für Datenbeiträge zu Bloomberg. This Software wird Sie durch die Schaffung einer benutzerdefinierten Konfigurationsdatei für eine Unbeaufsichtigte Installation des Bloomberg Professional Service. Date 27. März 2012 Größe 3 58 MB Excel Add-In für Non-BPS Benutzer von Managed B-Pipe und Plattform 32-Bit Version. Voice Fonts Installieren Sie die Bloomberg Voice Fonts. Date September 11, 2011 Größe 10 6 MB Office Tools Installationspaket für Windows XP Workstations mit Office 2007.Date 27. März 2012 Größe 639 KB Dienstprogramme Client Downloads List Manager Upload Download Software ermöglicht es Kunden, Körbe von Equity-Bestellungen alle Internet Browser kostenloser Download in den List Manager hochladen Anwendung auf dem Bloomberg Professional Service. Bloomberg für Android Bloomberg Professional App für Android. Date Mai 5, 2014 Größe 49 5 MB installieren oder aktualisieren private Framework-Software. Desktop Beiträge Anwendungen Client Downloads Diese Software ist nur für Datenbeiträge zu Bloomberg. Forex Trading Diary 1 - Automatisierte Forex Trading mit der OANDA API. I zuvor erwähnt in der QuantStart 2014 In Review Artikel, dass ich würde einige von 2015 schreiben über automatisierte Forex Trading. Gegeben, dass ich selbst in der Regel führen Forschung in Aktien und Futures-Märkte, dachte ich Es würde lustig und pädagogisch sein, über meine Erfahrungen des Eintritts in den Forex-Markt im Stil eines Tagebuchs zu schreiben. Jeder Tagebucheintrag wird versuchen, auf all jenen zu bauen, aber sollte auch relativ selbstbewohnt sein. In diesem ersten Eintrag des Tagebuchs Ich werde beschreiben, wie man ein neues Praxis-Brokerage-Konto mit OANDA sowie wie man eine grundlegende multithreaded ereignisgesteuerte Trading-Engine, die automatisch ausgeführt werden kann Trades in einer Praxis und Live-Einstellung. Last Jahr verbrachten wir viel Zeit Blick auf den ereignisgesteuerten Backtester in erster Linie für Aktien und ETFs Diejenige, die ich unten präsentiere, ist auf Forex ausgerichtet und kann für Papierhandel oder Live-Trading verwendet werden. Ich habe alle folgenden Anweisungen für Ubuntu 14 04 geschrieben, aber sie sollten leicht Übersetzen auf Windows oder Mac OS X, mit einer Python-Distribution wie Anaconda Die einzige zusätzliche Bibliothek, die für die Python-Trading-Engine verwendet wird, ist die Anforderungsbibliothek, die für die Kommunikation mit der OANDA API notwendig ist. Da dies der erste Post direkt über Devisen ist Handel und der unten dargestellte Code kann einfach an ein Live-Handelsumfeld angepasst werden. Ich möchte die folgenden Haftungsausschlüsse vorstellen. Disclaimer Trading Devisen am Rande tragen ein hohes Risiko und ist möglicherweise nicht für alle Anleger geeignet. Die Wertentwicklung in der Vergangenheit ist Nicht indikativ für zukünftige Ergebnisse Der hohe Grad der Hebelwirkung kann gegen Sie als auch für Sie arbeiten Vor der Entscheidung, in Devisen zu investieren, sollten Sie sorgfältig überlegen, Ihre Investitionsziele, Erfahrungsstand und Risiko Appetit Die Möglichkeit besteht, dass Sie einen Verlust zu erhalten Von einigen oder allen Ihrer ursprünglichen Investition und deshalb sollten Sie nicht Geld investieren, dass Sie sich nicht leisten können, Sie zu verlieren Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel und suchen Beratung von einem unabhängigen Finanzberater, wenn Sie irgendwelche Zweifel haben. Dieses Software wird zur Verfügung gestellt, und alle ausdrücklichen oder stillschweigenden Garantien, einschließlich, aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck werden ausgeschlossen. In keinem Fall haften die Regenten oder Mitwirkenden für direkte, indirekte, zufällige, Besondere, vorbildliche oder Folgeschäden, einschließlich, aber nicht beschränkt auf die Beschaffung von Ersatzgütern oder Dienstleistungen Verlust von Nutzung, Daten oder Gewinne oder Betriebsunterbrechung verursacht jedoch und auf jede Theorie der Haftung, ob im Vertrag, strenge Haftung oder unerlaubter Handlung Fahrlässigkeit oder anderweitig in irgendeiner aus der Nutzung dieser Software entstanden, auch wenn auf die Möglichkeit eines solchen Schadens gerichtet ist. Setting ein Konto mit OANDA. Die erste Frage, die in den Sinn kommt, ist Warum wählen OANDA Einfach gesagt, nach ein bisschen Googeln Um für Forex-Broker, die APIs hatte, sah ich, dass OANDA vor kurzem eine ordnungsgemäße REST-API veröffentlicht hatte, die leicht von fast jeder Sprache in einer extrem einfachen Weise kommuniziert werden konnte. Nach dem Lesen durch ihre Entwickler-API-Dokumentation habe ich beschlossen, ihnen einen Versuch zu geben Am wenigsten mit einem Praxis-Account. Um klar zu sein - ich habe keine vorherige oder bestehende Beziehung mit OANDA und bin nur die Bereitstellung dieser Empfehlung auf der Grundlage meiner begrenzten Erfahrung spielen mit ihrer Praxis API und einige kurze Nutzung für Marktdaten Download, während bei einem Fonds zuvor beschäftigt Wenn irgendjemand auf irgendwelche anderen Forex-Broker gekommen ist, die auch eine ähnlich moderne API haben, dann würde ich glücklich sein, ihnen einen Blick als gut zu geben. Vor dem Gebrauch der API ist es notwendig, sich für ein Praxiskonto anzumelden, um dies zu tun, Kopf zum Anmeldungslink Sie sehen den folgenden Bildschirm. OANDA Anmeldebildschirm. Sie können sich dann mit Ihren Anmeldeinformationen anmelden. Achten Sie darauf, die Registerkarte fxTradePractice aus dem Anmeldebildschirm auszuwählen. OANDA Anmeldebildschirm In Sie müssen eine Notiz von Ihrer Konto-ID zu notieren Es ist unterhalb der schwarzen My Funds Header neben Primary Mine ist eine 7-stellige Zahl aufgeführt Zusätzlich müssen Sie auch ein persönliches API-Token generieren Um dies zu tun, API-Zugriff verwalten Unterhalb der Registerkarte "Andere" auf der linken Seite. In diesem Stadium kannst du ein API-Token generieren. Du brauchst den Schlüssel für spätere Verwendung, also schaffe es sicher, es auch zu schreiben. Du willst jetzt die FXTrade Practice starten Anwendung, die uns erlauben, die ausgeführten Aufträge und unsere Papiergewinnverlust zu sehen. Wenn Sie ein Ubuntu-System laufen, müssen Sie eine etwas andere Version von Java installieren. Insbesondere die Oracle-Version von Java 8 Wenn Sie dies nicht tun Dann wird der Übungssimulator nicht aus dem Browser laden Ich lief diese Befehle auf meinem System. Sie werden nun in der Lage sein, die Praxis Trading-Umgebung zu starten Zurück zum OANDA Dashboard und klicken Sie auf die grüne hervorgehoben Starten FXTrade Praxis Link Es wird ein Java-Dialog zu bringen Fragen, ob Sie es ausführen möchten, klicken Sie auf Run und das fxTrade Practice Tool lädt Mine auf ein 15-minütiges Kerzen-Diagramm von EUR USD mit dem Zitat-Panel auf der linken Seite. OANDA fxTrade Practice-Bildschirm. An diesem Punkt sind wir bereit, mit dem Design zu beginnen Und Kodierung unserer automatisierten Forex Trading System gegen die OANDA API. Overview of Trading Architecture. Wenn Sie die Event-driven Backtester-Serie für Aktien und ETFs, die ich im letzten Jahr erstellt haben, werden Sie sich bewusst sein, wie solch ein Ereignis-getriebenen Handel System-Funktionen Für diejenigen von Ihnen, die neu zu ereignisgesteuerten Software sind, würde ich dringend vorschlagen, durch den Artikel zu lesen, um einen Einblick in, wie sie arbeiten zu gewinnen. Im Wesentlichen wird das gesamte Programm in einem infinte while-Schleife ausgeführt, die nur beendet, wenn Das Handelssystem wird abgeschaltet Der zentrale Kommunikationsmechanismus des Programms wird über eine Warteschlange gegeben, die Ereignisse enthält. Die Warteschlange wird ständig abgefragt, um nach neuen Ereignissen zu suchen. Sobald ein Ereignis aus der Warteschlange genommen wurde, muss es von einem gehandhabt werden Angemessene Komponente des Programms So könnte ein Marktdaten-Feed TickEvent s erzeugen, die auf die Warteschlange gestellt werden, wenn ein neuer Marktpreis eintrifft. Ein signalgenerierendes Strategieobjekt könnte OrderEvent s schaffen, die an eine Brokerage gesendet werden sollen. Die Nützlichkeit eines solchen System ist gegeben durch die Tatsache, dass es nicht darum geht, welche Reihenfolge oder Arten von Ereignissen auf die Warteschlange gestellt werden, da sie immer korrekt von der richtigen Komponente innerhalb des Programms behandelt werden. Zusätzlich können verschiedene Teile des Programms separat ausgeführt werden Threads bedeutet, dass es nie irgendwelche Warten auf eine bestimmte Komponente vor der Verarbeitung von anderen Dies ist äußerst nützlich in algorithmischen Handelssituationen, wo Marktdaten-Feed-Handler und Strategie-Signal-Generatoren haben erhebliche Leistungsmerkmale. Die wichtigsten Trading-Schleife ist durch die folgenden Python-Pseudo gegeben - code. Wie wir oben angegeben haben, läuft der Code in einer Endlosschleife Zuerst wird die Warteschlange abgefragt, um ein neues Ereignis abzurufen Wenn die Warteschlange leer ist, startet die Schleife nach einer kurzen Schlafperiode, die als Herzschlag bekannt ist, einfach neu. Wenn ein Ereignis gefunden wird Seine Art wird beurteilt und dann wird das jeweilige Modul entweder die Strategie oder der Ausführungsbearbeiter aufgefordert, das Ereignis zu behandeln und eventuell neue zu generieren, die auf die Warteschlange zurückgreifen. Die grundlegenden Komponenten, die wir für unser Handelssystem schaffen, sind folgendes. Streaming-Preis-Handler - Dies wird eine langwierige Verbindung offen für OANDAs-Server und senden Tick-Daten dh Bid fragen über die Verbindung für alle Instrumente, die wir interessiert in. Strategy Signal Generator - Dies wird eine Folge von Tick-Events und verwenden Sie sie Um Handelsaufträge zu generieren, die von der Ausführungshandler ausgeführt werden. Execution Handler - nimmt einen Satz von Auftragsereignissen an und führt sie dann blind mit OANDA. Events aus - Diese Objekte bilden die Nachrichten, die auf der Ereignis-Warteschlange weitergegeben werden. Wir benötigen nur zwei für Diese Implementierung, nämlich der TickEvent und der OrderEvent. Main Entry Point - Der Haupteingangspunkt beinhaltet auch die Trade Loop, die die Message Queue kontinuierlich abfragt und Nachrichten an die richtige Komponente sendet. Dies wird oft als Event Loop oder Event Handler bezeichnet. Wir werden Jetzt diskutieren die Umsetzung des Codes im Detail Am unteren Rand des Artikels ist die vollständige Auflistung aller Quellcode-Dateien Wenn Sie sie in das gleiche Verzeichnis platzieren und Python laufen, werden Sie mit der Erstellung von Aufträgen beginnen, vorausgesetzt, Sie haben Ihre Konto-ID ausgefüllt und Authentifizierungs-Token von OANDA. Python Implementation. It ist schlechte Praxis, um Passwörter oder Authentifizierungsschlüssel innerhalb einer Codebasis zu speichern, da man niemals vorhersagen kann, wer schließlich Zugriff auf ein Projekt erlaubt In einem Produktionssystem würden wir diese Anmeldeinformationen als Umgebungsvariablen mit dem System speichern Und dann abfragen diese envvars jedes Mal, wenn der Code redeployed Dies stellt sicher, dass Passwörter und auth-Token werden nie in einem Versionskontrollsystem gespeichert. Jedoch, da wir nur daran interessiert sind, ein Spielzeug-Handelssystem zu bauen, und sind nicht mit Produktionsdetails in diesem betroffen Artikel, werden wir stattdessen diese Auth-Token in eine Einstellungsdatei trennen. In der folgenden Konfigurationsdatei haben wir ein Wörterbuch namens ENVIRONMENTS, das die API-Endpunkte für die OANDA-Preisstreaming-API und die Handels-API speichert. Jedes Unterverzeichnis enthält drei separate API-Endpunkte real Praxis und Sandbox. Die Sandbox API ist rein zum Testen von Code und für die Überprüfung, dass es keine Fehler oder Bugs Es hat nicht die Uptime-Garantien der Real-oder Praxis-APIs Die Praxis-API, im Wesentlichen bietet die Möglichkeit, Papierhandel Das ist , Bietet es alle Features der realen API auf einem simulierten Praxis-Account Die reale API ist genau das - es ist Live-Handel Wenn Sie diesen Endpunkt in Ihrem Code verwenden, wird es gegen Ihren Live-Kontostand handeln EXTREM SORGFÄLTIG. WICHTIG Wann Handel gegen die Praxis API erinnern, dass eine wichtige Transaktionskosten, die der Markt Auswirkungen ist nicht berücksichtigt Da keine Trades tatsächlich in die Umwelt platziert werden, müssen diese Kosten in anderer Weise an anderer Stelle mit einem Markt Auswirkungen Modell, wenn Sie realistisch beurteilen wollen berücksichtigt werden Leistung. Im Folgenden verwenden wir das Übungskonto, wie es die DOMAIN-Einstellung gibt. Wir benötigen zwei separate Wörterbücher für die Domains, jeweils eine für die Streaming - und Trading-API-Komponenten. Schließlich haben wir die ACCESSTOKEN und ACCOUNTID Ich habe die beiden unten mit Dummy gefüllt IDs, so müssen Sie Ihre eigenen nutzen, die von der OANDA-Account-Seite zugegriffen werden kann. Der nächste Schritt ist es, die Ereignisse zu definieren, die die Warteschlange verwenden wird, um alle einzelnen Komponenten zu kommunizieren Wir brauchen zwei TickEvent und OrderEvent Die ersten Läden Informationen über Instrumentenmarktdaten wie die beste Geldbörse und die Handelszeit Die zweite wird verwendet, um Aufträge an den Ausführungsbeauftragten zu übermitteln und enthält somit das Instrument, die Anzahl der zu handelnden Einheiten, die Auftragsart Markt oder Grenze und die Seite dh kaufen Und verkaufen. Um zukunftssichere unsere Veranstaltungen Code werden wir eine Basisklasse namens Event erstellen und haben alle Ereignisse von diesem erben Der Code wird unten in gegeben. Die nächste Klasse, die wir erstellen werden, wird die Handelsstrategie behandeln In dieser Demo Wir werden eine eher unsinnige Strategie schaffen, die einfach alle Marktticks empfängt und auf jeder 5. Tick zufällig kauft oder verkauft 10.000 Einheiten von EUR USD. Klärlich ist dies eine lächerliche Strategie Allerdings ist es fantastisch für Testzwecke, weil es einfach ist Zu kodieren und zu verstehen In zukünftigen Tagebucheinträgen werden wir dies mit etwas deutlich spannender ersetzen, das hoffentlich einen Gewinn verdienen wird. Die Datei kann unten gefunden werden. Lass es uns durchgehen und sehen, was los ist Zuerst importieren wir die zufällige Bibliothek und die OrderEvent-Objekt von Wir brauchen die zufällige lib, um einen zufälligen Kauf - oder Verkaufsauftrag auszuwählen Wir benötigen OrderEvent, da hier das Strategieobjekt Aufträge an die Veranstaltungswarteschlange sendet, die später vom Ausführungsbearbeiter ausgeführt wird. Die TestRandomStrategy-Klasse einfach Nimmt das Instrument in diesem Fall EUR USD, die Anzahl der Einheiten und die Ereignisse Warteschlange als eine Reihe von Parametern Es erstellt dann einen Ticks-Zähler, der verwendet wird, um zu erzählen, wie viele TickEvent-Instanzen es gesehen hat. Mehr der Arbeit tritt in der Calculatesignals-Methode , Die einfach ein Ereignis einnimmt, bestimmt, ob es ein TickEvent sonst ignoriert und inkrementiert den Tick-Zähler Es überprüft dann, ob die Zählung von 5 teilbar ist und dann zufällig kauft oder verkauft, mit einer Marktreihenfolge die angegebene Anzahl von Einheiten S sicherlich nicht die weltweit größte Handelsstrategie, aber es wird mehr als geeignet für unsere OANDA Brokerage API Testzwecke. Die nächste Komponente ist die Ausführungs-Handler Diese Klasse ist beauftragt mit handeln auf OrderEvent-Instanzen und Anfragen an den Broker in diesem Fall OANDA in einer dummen Art und Weise Das heißt, es gibt kein Risikomanagement oder Potfolio-Konstruktions-Overlay Der Ausführungs-Handler wird einfach jede Bestellung ausführen, die er gegeben hat. Wir müssen alle Authentifizierungsinformationen an die Execution-Klasse übergeben, einschließlich der Domain-Praxis, real Oder Sandbox, das Zugriffstoken und die Kontonummer Wir erstellen dann eine sichere Verbindung mit einem der in den Bibliotheken eingebauten Pythons. Die meisten der Arbeiten werden im Executeorder ausgeführt. Die Methode erfordert ein Ereignis als Parameter und erstellt dann zwei Wörterbücher - die Header und die Params Diese Wörterbücher werden dann korrekt durch eine andere Python-Bibliothek, die als POST-Anfrage an OANDAs API gesendet werden soll, korrekt codiert. Wir übergeben die Content-Type - und Authorization-Header-Parameter, die unsere Authentifizierungsinformationen enthalten. Darüber hinaus kodieren wir die Parameter, die das Instrument enthalten EUR USD, Einheiten, Auftragsart und Seite Kauf verkaufen Schließlich machen wir die Anfrage und speichern die Antwort. Die komplexeste Komponente des Handelssystems ist das StreamingForexPrices-Objekt, das die Marktpreisaktualisierungen von OANDA verarbeitet. Es gibt zwei Methoden connecttostream und streamtoqueue. Die erste Methode verwendet die Python-Anforderungsbibliothek, um eine Verbindung zu einem Streaming-Socket mit den entsprechenden Headern und Parametern herzustellen. Die Parameter beinhalten die Account-ID und die notwendige Instrumentenliste, die für Updates gehört werden soll, in diesem Fall nur EUR USD Beachten Sie folgendes Line. This sagt die Verbindung zu streamen und somit offen gehalten in einer langwierigen Weise. Die zweite Methode, Streamtoque tatsächlich versucht, eine Verbindung zum Stream Wenn die Antwort ist nicht erfolgreich, dh der Antwort-Code ist nicht 200, dann kehren wir einfach zurück Und beenden Wenn es erfolgreich ist, versuchen wir, das JSON-Paket in ein Python-Wörterbuch zurückzukehren. Schließlich konvertieren wir das Python-Wörterbuch mit dem Instrument, bitten und Zeitstempel in ein TickEvent, das an die Ereignis-Warteschlange gesendet wird. Wir haben jetzt alle Hauptkomponenten an Ort und Stelle Der letzte Schritt ist, alles, was wir bisher geschrieben haben, in ein Hauptprogramm zu verpacken Das Ziel dieser Datei, bekannt als ist es, zwei separate Threads zu erstellen, von denen einer den Preishandler und der andere, der den Handelshandler betreibt,.Warum brauchen wir zwei getrennte Threads Setzen Sie einfach, wir führen zwei getrennte Stücke von Code aus, die beide kontinuierlich laufen Wenn wir ein Non-Thread-Programm erstellen würden, dann würde der Streaming-Sockel, der für die Preis-Updates verwendet wird, niemals freigeben Zurück zum Hauptcodepfad und damit würden wir niemals irgendeinen Handel ausführen. Ähnlich, wenn wir die Handelsschleife liefen, sehen wir unten, wir würden niemals den Flow-Pfad zum Preis-Streaming-Sockel zurückgeben. Daher benötigen wir mehrere Threads, eine für jede Komponente , So dass sie unabhängig durchgeführt werden können Sie werden beide miteinander über die Ereignis-Warteschlange kommunizieren. Let s untersuchen dies ein bisschen weiter Wir erstellen zwei separate Threads mit den folgenden Zeilen. Wir übergeben die Funktion oder Methodenname an das Ziel-Keyword-Argument Und dann passieren eine iterable wie eine Liste oder Tupel auf die args Keyword-Argument, die dann übergibt diese Argumente an die eigentliche Methode function. Final wir starten beide Threads mit den folgenden Zeilen. Thus sind wir in der Lage, zwei, effektiv unendliche Schleife laufen, Code-Segmente unabhängig voneinander, die beide über die Ereignis-Warteschlange kommunizieren Beachten Sie, dass die Python-Threading-Bibliothek keine echte Multicread-Multithread-Umgebung aufgrund der CPython-Implementierung von Python und der Global Interpreter Lock GIL erzeugt. Wenn Sie mehr über Multithreading lesen möchten Python, bitte werfen Sie einen Blick auf diesen Artikel. Let s untersuchen den Rest des Codes im Detail Zuerst importieren wir alle notwendigen Bibliotheken einschließlich Queue Threading und Zeit Wir importieren dann alle oben genannten Code-Dateien Ich persönlich bevorzuge, alle Konfigurationseinstellungen zu nutzen , Die eine Gewohnheit ist, die ich von der Arbeit mit Django abgeholt habe. Danach definieren wir die Handelsfunktion, die in Python-Pseudocode oben erklärt wurde. Eine unendliche while-Schleife wird durchgeführt, während True, die kontinuierlich von der Ereignis-Warteschlange abfragt und nur die Schleife überspringt Wenn es leer gefunden wird Wenn ein Event gefunden wird, dann ist es entweder ein TickEvent oder ein OrderEvent und dann wird die entsprechende Komponente aufgerufen, um es auszuführen In diesem Fall ist es entweder eine Strategie oder Ausführung Handler Die Schleife schläft dann einfach für Herzschlag Sekunden in Dieser Fall 0 5 Sekunden und fährt fort. Schließlich definieren wir den Haupteingangspunkt des Codes in der Hauptfunktion Es ist gut kommentiert unten, aber ich werde hier zusammenfassen Im Wesentlichen instanziieren wir die Ereignisse Warteschlange und definieren die Instrumente Einheiten Wir erstellen dann die StreamingForexPrices Preis-Streaming-Klasse und dann anschließend die Execution Execution Handler Beide erhalten die notwendigen Authentifizierungsdetails, die von OANDA bei der Erstellung eines Kontos gegeben werden. Wir erstellen dann die TestRandomStrategy-Instanz. Schließlich definieren wir die beiden Threads und starten sie dann. Um den Code zu starten, den du einfach benötigst Um alle Dateien im selben Verzeichnis zu platzieren und am Terminal anzurufen. Hinweis, dass der Code in diesem Stadium zu stoppen erfordert eine harte Tötung des Python-Prozesses über Ctrl-Z oder gleichwertig Ich habe nicht einen zusätzlichen Thread zu behandeln suchen Für das, was nötig wäre, um den Code sicher zu stoppen Ein möglicher Weg, um den Code auf einem Ubuntu Linux-Rechner zu stoppen ist zu geben. Und dann übergeben die Ausgabe dieser eine Prozessnummer in die folgenden. Wo PROCESSID muss mit der Ausgabe von ersetzt werden Pgrep Beachten Sie, dass dies nicht besonders gut praktisch ist. In späteren Artikeln werden wir einen anspruchsvolleren Stop-Start-Mechanismus erstellen, der die Ubuntu-Prozessüberwachung nutzt, um das Handelssystem laufen zu lassen. 7. Die Ausgabe nach 30 Sekunden oder so, Je nach Tageszeit im Verhältnis zu den Haupthandelsstunden für EUR USD, für den oben genannten Code, ist unten angegeben. Die ersten fünf Zeilen zeigen die JSON-Tick-Daten, die von OANDA mit Bid-Ask-Preisen zurückgegeben werden. Anschließend können Sie die Ausführung der Auftragsausgabe als So wie die JSON-Antwort von OANDA zurückkehrte, die die Eröffnung eines Kaufhandels für 10.000 Einheiten von EUR USD bestätigte und der Preis, den es erreicht wurde. Dies wird auf unbestimmte Zeit laufen, bis Sie das Programm mit einem Ctrl-Z-Befehl oder ähnlichem töten Artikel werden wir einige dringend benötigte Verbesserungen durchführen, einschließlich. Real Strategien - Richtige Forex-Strategien, die profitable Signale generieren. Produktionsinfrastruktur - Remote-Server-Implementierung und 24 7 überwachtes Handelssystem mit Stop-Start-Fähigkeit. Portfolio und Risikomanagement - Portfolio Und Risiko-Overlays für alle vorgeschlagenen Aufträge aus der Strategie. Mehrere Strategien - Aufbau eines Portfolios von Strategien, die in die Risikomanagement-Overlay integrieren. Wie mit dem Aktien-Event-driven Backtester, müssen wir auch ein Forex-Backtesting-Modul, die uns tragen zu schaffen Schnelle Forschung und machen es einfacher, Strategien zu implementieren. Denken Sie daran, ACCOUNTID und ACCESSTOKEN. Just Getting Started mit Quantitative Trading ändern.

No comments:

Post a Comment