Django Forex

Forex Nachrichten für NY-Handel am 23. Dezember 2016 In anderen Märkten: SampP-Index 0,3, NASDAQ 0,28, Dow Jones industriellen Durchschnitt 0,07 US-Staatsanleihen sinkt um 1 bp Spot Gold bei 1132, plus 3,77 oder 0,34 WTI Rohöl-Futures 53.10 plus .15 Oder 0,28 Die Devisenmärkte - und Märkte im Allgemeinen - schienen das Ei nog ein wenig früh zu erschließen. Feiertagsmärkte herrschten, die nicht eine Menge Marktaktivität einschließen. Mit Weihnachten an einem Sonntag in diesem Jahr, nehmen sie eine Verschnaufpause am Montag (und möglicherweise die ganze nächste Woche zu). Wirtschaftliche Höhepunkte nächste Woche: Japan CPI am Montag 18:30 Uhr ET / 2330 GMT US Konsumentenvertrauen am Dienstag um 10:00 Uhr ET / 1500 GMT US anstehende Hausverkäufe am Mittwoch um 10:00 Uhr ET / 1500 GMT Japan Einzelhandelsumsätze am Dienstag um 6: 50 PM ET / 2350 GMT US anfängliche Ansprüche am Donnerstag um 830 AM ET / 1330 GMT Das sind die Höhepunkte. Unnötig zu sagen, die Highlights sind nicht so toll. Für die Woche war der USD meist höher. Es fiel gegen den JPY, stieg aber gegen die NZD, CAD, GBP und AUD. Gegenüber CHF und EUR war das Greenback nahezu unverändert. Für den Tag war der AUD der schwächste gegenüber dem USD. Das Paar fiel, als NY Händler für den Tag eintraten. Das Paar fiel unter dem Boden auf der 0.7200 Ebene und fiel etwa 50 Pips. Der Rest des Tages verbrachte sich auf und ab. Bleiben Sie unter 0.7200 jetzt für Händler. Der EURUSD bleibt unter dem 200 Stunden MA bei 1.04639 und über dem 100 Stunden MA bei 1.04218. Die hohe ging bis zur MA-Linie. Die niedrige stalled innerhalb 5 Pips der unteren 100 Stunden MA. Auf der Suche nach der Pause nächste Woche. Der GBPUSD bewegte sich auf den niedrigsten Stand seit dem 2. November. Am niedrigen Paar war unten ungefähr 54 Pips, aber durch das Schließen alle diese Verluste wurden wiederhergestellt. Das Paar beendete den Tag unverändert. Die USDJPY fiel auf die 200 Stunden MA und wanderte über und unter dem MA-Niveau für die über die letzten 7 oder so Stunden in die Nähe. Wir beenden den Tag und die Woche rechts auf der MA-Linie bei 117,26. Für die Woche war der Höchststand vor allem durch die 118,06-Ebene (obwohl es handelte bis zu 118,23 am Dienstag). Der Tiefstand bei 116,53 stagnierte bei 38,2 der Aufwärtsbewegung vom Tief vom 8. Dezember. Lasst es dort enden. Wir wünschen Ihnen allen die schönste Weihnachtszeit. Premier Forex Trading Nachrichten-Website Gegründet im Jahr 2008, ist ForexLive die führende Forex Trading-News-Website bietet interessante Kommentare, Meinungen und Analysen für echte FX Trading-Profis. Holen Sie sich die neuesten Börsenhandel Börsenmeldungen und aktuelle Updates von aktiven Händlern täglich. ForexLive Blog Beiträge Feature führenden technischen Analyse Charting-Tipps, Forex-Analyse und Währung Paar Handel Tutorials. Finden Sie heraus, wie die Vorteile von Swings in globalen Devisenmärkten zu nutzen und sehen Sie unsere Echtzeit-Forex-Nachrichten Analyse und Reaktionen auf Zentralbank Nachrichten, Wirtschaftsindikatoren und Weltveranstaltungen. 2016 - Live Analytics Inc v.0.8.2659 HIGH RISK WARNUNG: Der Devisenhandel hat ein hohes Risiko, das möglicherweise nicht für alle Anleger geeignet ist. Leverage schafft zusätzliche Risiken für Risiken und Verluste. Bevor Sie sich entscheiden, Devisenhandel, sorgfältig überlegen Sie Ihre Anlageziele, Erfahrung Ebene und Risikobereitschaft. Sie könnten einige oder alle Ihre anfänglichen Investitionen verlieren nicht Geld investieren, die Sie nicht leisten können, zu verlieren. Erziehen Sie sich auf die mit dem Devisenhandel verbundenen Risiken und suchen Sie Ratschläge von einem unabhängigen Finanz - oder Steuerberater, wenn Sie Fragen haben. BERATUNG WARNHINWEIS: FOREXLIVE bietet Referenzen und Links zu ausgewählten Blogs und anderen Quellen von Wirtschafts - und Marktinformationen als Bildungsdienst für ihre Kunden und Interessenten und unterstützt nicht die Meinungen oder Empfehlungen der Blogs oder anderer Informationsquellen. Kunden und Interessenten werden empfohlen, die Meinungen und Analysen, die in den Blogs oder anderen Informationsquellen im Kontext des Klienten angeboten werden, sorgfältig zu prüfen und individuelle Analysen und Entscheidungen zu treffen. Keiner der Blogs oder anderen Informationsquellen ist als eine Erfolgsbilanz zu betrachten. Die bisherige Wertentwicklung ist keine Garantie für zukünftige Ergebnisse und FOREXLIVE empfiehlt insbesondere Kunden und Interessenten, alle Ansprüche und Darstellungen von Beratern, Bloggern, Geldmanagern und Systemanbietern sorgfältig zu überprüfen, bevor sie Geld investieren oder ein Konto bei einem Devisenhändler eröffnen. Alle in dieser Website enthaltenen Nachrichten, Meinungen, Recherchen, Daten oder sonstigen Informationen werden als allgemeine Marktkommentare zur Verfügung gestellt und stellen keine Anlage - oder Handelsberatung dar. FOREXLIVE lehnt ausdrücklich jegliche Haftung für entgangenen Gewinn oder Gewinn ohne Einschränkung ab, der sich direkt oder indirekt aus der Nutzung oder dem Vertrauen auf diese Informationen ergeben kann. Wie bei allen solchen Beratungsleistungen sind auch die bisherigen Ergebnisse keine Garantie für zukünftige Ergebnisse. Viewing Touch / Click irgendwo zu schließenForex Trading Diary 1 - Automatisierte Forex Trading mit dem OANDA-API Ich zuvor erwähnt in der QuantStart: 2014 Im Bericht Artikel, dass ich einige Ausgaben 2015 über automatisierte Devisenhandel verbringen würde. Angesichts der Tatsache, dass ich selbst in der Regel Forschung in Aktien-und Futures-Märkte, dachte ich, es wäre lustig (und pädagogisch) über meine Erfahrungen mit dem Eintritt in den Forex-Markt im Stil eines Tagebuchs zu schreiben. Jeder Tagebucheintrag wird versuchen, auf all jenen aufzubauen, sollte aber auch relativ eigenständig sein. In diesem ersten Eintrag des Tagebuchs Ill beschreiben, wie die Einrichtung eines neuen Praxis-Brokerage-Konto mit OANDA sowie wie eine grundlegende multithreaded ereignisgesteuerte Trading-Engine, die automatisch ausgeführt werden kann, sowohl in einer Praxis und Live-Einstellung zu schaffen. Letztes Jahr verbrachten wir viel Zeit mit Blick auf den ereignisgesteuerten Backtester. Vor allem für Aktien und ETFs. Die, die ich hier unten ist auf Forex ausgerichtet und kann sowohl für den Papierhandel oder Live-Handel verwendet werden. Ich habe alle folgenden Anweisungen für Ubuntu 14.04, aber sie sollten leicht zu Windows oder Mac OS X, mit einer Python-Distribution wie Anaconda zu übersetzen. Die einzige zusätzliche Bibliothek, die für die Python-Handelsmaschine verwendet wird, ist die Anforderungsbibliothek, die für die HTTP-Kommunikation zur OANDA-API erforderlich ist. Da dies der erste Posten direkt über den Devisenhandel ist und der nachfolgend dargestellte Kodex direkt an ein Live-Trading-Umfeld angepasst werden kann, möchte ich folgende Disclaimer vorstellen: Disclaimer: Der Handel mit Devisen an der Margin trägt ein hohes Risiko, Und möglicherweise nicht für alle Anleger geeignet. Die Wertentwicklung in der Vergangenheit ist kein Hinweis auf zukünftige Ergebnisse. Der hohe Grad der Hebelwirkung kann sowohl gegen Sie als auch für Sie arbeiten. Vor der Entscheidung, in Devisen zu investieren, sollten Sie sorgfältig Ihre Anlageziele, Erfahrungsniveau und Risiko Appetit. Die Möglichkeit besteht, dass Sie einen Verlust von einigen oder allen Ihrer anfänglichen Investition zu erhalten und daher sollten Sie nicht investieren Geld, das Sie sich nicht leisten können, zu verlieren. Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel und suchen Rat von einem unabhängigen Finanzberater, wenn Sie irgendwelche Zweifel haben. Diese Software wird bereitgestellt, wie es ist, und alle ausgedrückten oder implizierten 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 Dienstleistungsverlusten, Daten oder Gewinnen oder Betriebsunterbrechungen) ), Die in irgendeinem Fall aus der Nutzung dieser Software entstanden sind, auch wenn auf die Möglichkeit eines solchen Schadens hingewiesen wird, auf irgendeine Haftungslehre, sei es auf vertraglicher, strikter Haftung oder unerlaubter Handlung (einschließlich Fahrlässigkeit oder anderweitig). Einrichten eines Kontos mit OANDA Die erste Frage, die in den Sinn kommt, ist Warum wählen Sie OANDA. Einfach gesagt, nach ein wenig Googeln herum für Forex Broker, die APIs hatte, sah ich, dass OANDA hatte vor kurzem eine richtige REST-API, die leicht mit fast jeder Sprache in einer äußerst direkten Weise kommuniziert werden konnte. Nach dem Lesen durch ihre Entwickler-API-Dokumentation. Ich beschloss, ihnen einen Versuch, zumindest mit einem Praxis-Konto. Um klar zu sein - ich habe keine vorherige oder bestehende Beziehung mit OANDA und bin nur die Bereitstellung dieser Empfehlung basierend auf meiner begrenzten Erfahrung herumspielen mit ihrer Praxis-API und einige kurze Nutzung (für Marktdaten-Download), während bei einem Fonds zuvor beschäftigt. Wenn jemand auf irgendwelche anderen Forex-Broker gekommen ist, die auch eine ähnlich moderne API dann Id sind glücklich, ihnen einen Blick auch zu geben. Vor der Nutzung der API muss man sich für ein Praxiskonto anmelden. Gehen Sie hierzu zum Anmelde-Link. Sie sehen dann den folgenden Bildschirm: Sie können sich dann mit Ihren Anmeldeinformationen anmelden. Achten Sie darauf, die Registerkarte fxTradePractice aus dem Anmeldebildschirm auszuwählen: Einmal müssen Sie eine Notiz über Ihre Kontonummer machen. Er wird unterhalb des schwarzen My Funds Headers neben Primary aufgelistet. Mine ist eine 7-stellige Zahl. Darüber hinaus müssen Sie auch ein persönliches API-Token generieren. Dazu klicken Sie unterhalb der Registerkarte Andere Aktionen links unten auf API-Zugriff verwalten: In diesem Stadium können Sie ein API-Token generieren. Sie benötigen den Schlüssel für Gebrauch später, also stellen Sie sicher, ihn aufzuschreiben auch. Sie werden nun die FXTrade Practice-Anwendung starten, die es uns ermöglicht, die ausgeführten Aufträge und unseren (Papier-) Gewinn amp loss zu sehen. Wenn Sie ein Ubuntu-System ausführen, müssen Sie eine etwas andere Java-Version installieren. Insbesondere die Oracle-Version von Java 8. Wenn Sie dies nicht tun, dann wird die Praxis-Simulator nicht aus dem Browser laden. Ich lief diese Befehle auf meinem System: Sie werden jetzt in der Lage, die Praxis Handelsumfeld zu starten. Kehren Sie zum OANDA Dashboard zurück und klicken Sie auf den grün markierten Link FXTrade Practice starten. Es wird ein Java-Dialog fragen, ob Sie es ausführen möchten. Klicken Sie auf Ausführen, und das fxTrade-Übungsprogramm wird geladen. Mine wurde mit dem Zählpanel auf der linken Seite zu einem 15-minütigen Kerzendiagramm von EUR / USD eingestellt: An diesem Punkt sind wir bereit, mit dem Entwerfen und Kodieren unseres automatisierten Devisenhandelssystems gegen die OANDA API zu beginnen. Überblick über die Trading-Architektur Wenn Sie die Event-driven Backtester-Serie für Aktien und ETFs, die ich im letzten Jahr erstellt habe, verfolgt haben, werden Sie sich bewusst sein, wie ein solches ereignisgesteuertes Handelssystem funktioniert. Für diejenigen unter Ihnen, die neu für ereignisgesteuerte Software sind. Ich würde stark vorschlagen, durch den Artikel zu lesen, um einen Einblick zu erhalten, wie sie funktionieren. Im Wesentlichen wird das gesamte Programm in einer infinte while-Schleife ausgeführt, die nur abschließt, wenn das Handelssystem abgeschaltet wird. Der zentrale Kommunikationsmechanismus des Programms erfolgt über eine Warteschlange, 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 durch eine entsprechende Komponente des Programms behandelt werden. Daher könnte ein Marktdaten-Feed TickEvent s erzeugen, die bei Eintreffen eines neuen Marktpreises auf die Warteschlange gestellt werden. Ein signalgenerierendes Strategieobjekt kann OrderEvent-S erzeugen, die an eine Brokerage gesendet werden sollen. Die Nützlichkeit eines solchen Systems wird durch die Tatsache gegeben, dass es nicht wichtig ist, welche Reihenfolge oder Arten von Ereignissen auf der Warteschlange platziert werden, da sie immer korrekt von der richtigen Komponente innerhalb des Programms behandelt werden. Darüber hinaus können verschiedene Teile des Programms in separaten Threads ausgeführt werden. Was bedeutet, dass es nie irgendwelche Warten auf eine bestimmte Komponente vor der Verarbeitung irgendeines anderen. Dies ist äußerst nützlich in algorithmischen Handelssituationen, in denen Marktdaten-Feed-Handler und Strategie-Signalgeneratoren sehr unterschiedliche Leistungsmerkmale aufweisen. Die Haupthandelsschleife wird durch den folgenden Python-Pseudocode gegeben: Wie oben erwähnt, läuft der Code in einer Endlosschleife. Zuerst wird die Warteschlange abgefragt, um ein neues Ereignis abzurufen. Wenn die Warteschlange leer ist, wird die Schleife nach einer kurzen Schlafperiode, die als Herzschlag bezeichnet wird, einfach neu gestartet. Wenn ein Ereignis gefunden wird, wird sein Typ bewertet und dann wird das entsprechende Modul (entweder die Strategie oder der Ausführungsbehandler) aufgerufen, um das Ereignis zu behandeln und möglicherweise neue zu generieren, die wieder in die Warteschlange zurückkehren. Die grundlegenden Komponenten, die wir für unser Handelssystem erstellen werden, umfassen die folgenden: Streaming Price Handler - Dies hält eine langfristige Verbindung offen für OANDAs-Server und senden Tick-Daten (dh bid / ask) über die Verbindung für alle Instrumente, die interessiert waren In. Strategie-Signal-Generator - Dies wird eine Sequenz von Tick-Ereignisse und verwenden sie zur Erzeugung von Handelsaufträgen, die durch die Ausführung Handler ausgeführt werden. Execution Handler - nimmt eine Reihe von Order-Events auf und führt sie dann blind mit OANDA aus. Ereignisse - Diese Objekte stellen die Nachrichten dar, die auf der Ereigniswarteschlange weitergegeben werden. Für diese Implementierung benötigen wir nur zwei, nämlich das TickEvent und das OrderEvent. Haupteingangspunkt - Der Haupteintragspunkt enthält auch die Handelsschleife, die kontinuierlich die Nachrichtenwarteschlange abfragt und Nachrichten an die richtige Komponente sendet. Dies wird häufig als Ereignis - oder Ereignishandler bezeichnet. Wir werden nun die Implementierung des Codes im Detail diskutieren. Am unteren Rand des Artikels ist die vollständige Auflistung aller Quellcode-Dateien. Wenn Sie sie im selben Verzeichnis platzieren und python trading. py ausführen, beginnen Sie mit der Generierung von Aufträgen, vorausgesetzt, Sie haben Ihre Kontonummer und Ihr Authentifizierungstoken von OANDA ausgefüllt. Python-Implementierung Es ist schlecht, Kennwörter oder Authentifizierungsschlüssel in einer Codebasis zu speichern, da Sie nie vorhersagen können, wer schließlich Zugriff auf ein Projekt erlaubt. In einem Produktionssystem würden wir diese Credentials als Umgebungsvariablen mit dem System speichern und diese Envvars dann jedes Mal abfragen, wenn der Code redeployed ist. Dadurch wird sichergestellt, dass Kennwörter und Auth-Token niemals in einem Versionskontrollsystem gespeichert werden. Da wir aber nur daran interessiert sind, ein Spielzeug-Handelssystem zu entwickeln und nicht mit Produktionsdetails in diesem Artikel zu tun haben, werden wir diese Autotoken stattdessen in eine Einstellungsdatei trennen. In der folgenden settings. py-Konfigurationsdatei haben wir ein Wörterbuch namens ENVIRONMENTS, das die API-Endpunkte für die OANDA-Streaming-API und die Trading-API speichert. Jedes Unterwörterbuch enthält drei separate API-Endpunkte: real. Praxis und Sandkasten. Die Sandbox-API ist rein zum Testen von Code und zur Überprüfung, dass es keine Fehler oder Bugs gibt. Es verfügt nicht über die Uptime-Garantien der realen oder Praxis-APIs. Die Praxis API, im Wesentlichen bietet die Fähigkeit, Papierhandel. Das heißt, es bietet alle Features der realen API auf einem simulierten Praxiskonto. Die wirkliche API ist nur, dass - es ist Live-Handel Wenn Sie diesen Endpunkt in Ihrem Code verwenden, wird es gegen Ihren Live-Kontostand zu handeln. SEHR EXTREM SORGFÄLTIG WICHTIG: Beim Handel gegen die Praxis API daran erinnern, dass eine wichtige Transaktion Kosten, die der Auswirkungen auf den Markt. Wird nicht berücksichtigt. Da keine Trades tatsächlich in die Umwelt gelegt werden, müssen diese Kosten anderweitig mit einem Market-Impact-Modell berücksichtigt werden, um die Performance realistisch beurteilen zu können. Im Folgenden verwenden wir das in der DOMAIN-Einstellung angegebene Praxiskonto. Wir benötigen zwei separate Wörterbücher für die Domänen, jeweils eine für die Streaming - und Handels-API-Komponenten. Schließlich haben wir die ACCESSTOKEN und ACCOUNTID. Ive gefüllt die beiden unten mit Dummy-IDs, so müssen Sie Ihre eigenen nutzen, die von der OANDA-Konto-Seite zugegriffen werden kann: Der nächste Schritt ist es, die Ereignisse, die die Warteschlange verwendet wird, um zu helfen, alle einzelnen Komponenten kommunizieren zu definieren. Wir brauchen zwei: TickEvent und OrderEvent. Der erste speichert Informationen über Instrumentenmarktdaten wie das (beste) Angebot / Nachfrage und die Handelszeit. Der zweite wird verwendet, um Aufträge an den Ausführungsbearbeiter zu übermitteln und enthält somit das Instrument, die Anzahl der zu handelnden Einheiten, die Auftragsart (Markt oder Grenze) und die Seite (d. H. Kauf und Verkauf). Um unseren Event-Code zukunftssicher zu machen, werden wir eine Basisklasse mit dem Namen Event erstellen und alle Ereignisse von diesem erben. Der Code wird unten in events. py zur Verfügung gestellt: Die nächste Klasse, die wir erstellen werden, wird die Handelsstrategie behandeln. In dieser Demo werden wir eine ziemlich unsinnige Strategie schaffen, die einfach alle Marktticks erhält und bei jeder 5. Tick zufällig 10.000 Einheiten EUR / USD kauft oder verkauft. Klar ist dies eine lächerliche Strategie Aber es ist fantastisch für Testzwecke, weil es einfach zu Code und zu verstehen ist. In zukünftigen Tagebucheinträgen werden wir dies durch etwas spannenderes ersetzen, das (hoffentlich) einen Gewinn macht. Die Strategie. py-Datei finden Sie weiter unten. Lässt Arbeit durch sie und sehen, was los ist. Zuerst importieren wir die zufällige Bibliothek und das OrderEvent-Objekt aus events. py. Wir benötigen die gelegentliche lib, um eine gelegentliche Kauf - oder Verkaufsorder zu wählen. Wir brauchen OrderEvent, da das Strategieobjekt Aufträge an die Ereigniswarteschlange sendet, die später von der Ausführungsbehandlungsroutine ausgeführt wird. Die TestRandomStrategy-Klasse übernimmt das Gerät (in diesem Fall EUR / USD), die Anzahl der Einheiten und die Ereigniswarteschlange als Parametermenge. Es erstellt dann einen Ticks-Zähler, der verwendet wird, um zu sagen, wie viele TickEvent-Instanzen es gesehen hat. Der Großteil der Arbeit erfolgt in der calculatesignals-Methode, die einfach ein Ereignis nimmt, bestimmt, ob es sich um ein TickEvent handelt (andernfalls ignorieren) und den Tickzähler erhöht. Dann prüft es, ob die Zählung durch 5 teilbar ist, und dann nach dem Zufallsprinzip kauft oder verkauft, mit einer Marktordnung, die angegebene Anzahl von Einheiten. Seine sicherlich nicht die weltweit größte Trading-Strategie, aber es wird mehr als geeignet für unsere OANDA Brokerage API Testzwecke Die nächste Komponente ist die Ausführung Handler. Diese Klasse hat die Aufgabe, auf OrderEvent-Instanzen zu reagieren und Anfragen an den Broker (in diesem Fall OANDA) stumm zu stellen. Das heißt, es gibt keine Risikomanagement - oder Potfolio-Konstruktionsüberlagerung. Der Ausführungsbehandler führt einfach eine beliebige Reihenfolge aus. Wir müssen alle Authentifizierungsinformationen an die Execution-Klasse übergeben, einschließlich der Domäne (Praxis, real oder Sandbox), des Zugriffstokens und der Konto-ID. Anschließend erstellen wir eine sichere Verbindung mit httplib. Einer der Pythons in Bibliotheken gebaut. Der Großteil der Arbeit erfolgt in executeorder. Die Methode erfordert ein Ereignis als Parameter. Es konstruiert dann zwei Wörterbücher - die Header und die params. Diese Wörterbücher werden dann korrekt codiert (teilweise durch urllib eine andere Python-Bibliothek) als HTTP-POST-Anforderung an OANDAs API gesendet werden. Wir übergeben die Content-Type - und Authorization-Header-Parameter, zu denen unsere Authentifizierungsinformationen gehören. Darüber hinaus codieren wir die Parameter, die das Instrument (EUR / USD), Einheiten, Auftragsart und Seite (Kauf / Verkauf). Schließlich machen wir die Anfrage und speichern die Antwort: Die komplexeste Komponente des Handelssystems ist das StreamingForexPrices-Objekt, das die Marktpreisaktualisierungen von OANDA übernimmt. 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. Zu den Parametern gehören die Konto-ID und die notwendige Instrumentenliste, die für Updates zu hören ist (in diesem Fall nur EUR / USD). Beachten Sie die folgende Zeile: Damit wird die Verbindung gestreamt und so lange offen gehalten. Die zweite Methode, streamtoqueue. Tatsächlich versucht, eine Verbindung zum Stream herzustellen. Wenn die Antwort nicht erfolgreich ist (d. h. der Antwortcode ist nicht HTTP 200), dann kehren wir einfach zurück und beenden. Wenn es erfolgreich ist, versuchen wir, das in ein Python-Wörterbuch zurückgegebene JSON-Paket zu laden. Schließlich konvertieren wir das Python-Wörterbuch mit dem Instrument, Bid / Ask und Zeitstempel in ein TickEvent, das an die Ereignis-Warteschlange gesendet wird: Wir haben jetzt alle wichtigen Komponenten vorhanden. Der letzte Schritt ist, alles, was wir bisher geschrieben haben, in ein Hauptprogramm aufzunehmen. Das Ziel dieser Datei, bekannt als trading. py. Ist es, zwei separate Threads zu erstellen. Von denen einer den Preispreis führt und der andere, der den Handelsbehandler ausführt. Warum brauchen wir zwei separate Threads Put einfach, führen wir zwei separate Stücke von Code, die beide kontinuierlich ausgeführt werden. Wenn wir ein Programm ohne Threads erstellen sollten, würde der Streaming-Socket, der für die Preisaktualisierungen verwendet wird, niemals den Hauptcodepfad wieder freigeben und daher würden wir niemals irgendeinen Handel durchführen. Ähnlich, wenn wir lief die Handelsschleife (siehe unten), würden wir eigentlich nie wieder die Flow-Pfad zu den Preis-Streaming-Sockel. Daher benötigen wir mehrere Threads, eine für jede Komponente, so dass sie unabhängig ausgeführt werden können. Sie kommunizieren miteinander über die Warteschlange. Lets untersuchen dies ein wenig weiter. Wir erstellen zwei separate Threads mit den folgenden Zeilen: Wir übergeben die Funktion oder den Methodennamen an das Schlüsselwort-Argument des Ziels und übergeben dann eine iterable (wie eine Liste oder ein Tupel) an das Argument args-Schlüsselwort, das dann diese Argumente an die tatsächliche Methode übergibt /Funktion. Schließlich starten wir beide Threads mit den folgenden Zeilen: So sind wir in der Lage, zwei, effektiv unendlich Schleifen, Code-Segmente unabhängig, die beide über die Ereignis-Warteschlange zu kommunizieren laufen. Beachten Sie, dass die Python-Threading-Bibliothek aufgrund der CPython-Implementierung von Python und des Global Interpreter Lock (GIL) keine Multithreading-Multicast-Umgebung erzeugt. Wenn Sie mehr über Multithreading auf Python lesen möchten, werfen Sie einen Blick auf diesen Artikel. Lets untersuchen den Rest des Codes im Detail. Zuerst importieren wir alle notwendigen Bibliotheken einschließlich Warteschlange. Gewinde und Zeit. Wir importieren dann alle oben genannten Code-Dateien. Ich persönlich bevorzuge die Aktivierung von Konfigurationseinstellungen, die eine Gewohnheit ist, die ich von der Arbeit mit Django abgeholt habe. Danach definieren wir die Handelsfunktion, die im Python-Pseudocode oben erklärt wurde. Eine unendliche while-Schleife wird durchgeführt (während True:), die kontinuierlich aus der Ereignis-Warteschlange abfragt und nur die Schleife überspringt, falls sie leer ist. Wenn ein Ereignis gefunden wird, ist es entweder ein TickEvent oder ein OrderEvent und dann wird die entsprechende Komponente aufgerufen, um es auszuführen. In diesem Fall handelt es sich entweder um eine Strategie - oder eine Ausführungsbehandlungsroutine. Die Schleife schläft dann einfach für Herzschlag-Sekunden (in diesem Fall 0,5 Sekunden) und fährt fort. Schließlich definieren wir den Haupteintrittspunkt des Codes in der Hauptfunktion. Es ist gut kommentiert unten, aber ich werde hier zusammenfassen. Im Wesentlichen instanziieren wir die Ereignis-Warteschlange und definieren die Instrumente / Einheiten. Danach erstellen wir die StreamingForexPrices-Preis-Streaming-Klasse und anschließend die Execution-Execution-Prozedur. Beide erhalten die erforderlichen Authentifizierungsdaten, die von OANDA beim Erstellen eines Kontos angegeben werden. Dann erstellen wir die TestRandomStrategy-Instanz. Schließlich definieren wir die beiden Threads und starten sie dann: Um den Code auszuführen, müssen Sie einfach alle Dateien im selben Verzeichnis platzieren und am Terminal folgendes anrufen: Beachten Sie, dass zum Stoppen des Codes in diesem Stadium ein schwerer Abbruch der Python-Prozess. Über Strg-Z oder Äquivalent Ive nicht ein zusätzlicher Thread zu behandeln, die Suche nach der sys. exit (), die erforderlich wäre, um den Code sicher zu stoppen. Eine Möglichkeit, den Code auf einer Ubuntu / Linux-Maschine zu stoppen, besteht darin, Folgendes einzugeben: Anschließend übergeben Sie die Ausgabe dieser (eine Prozessnummer) in die folgende: Wo PROCESSID durch die Ausgabe von pgrep ersetzt werden muss. Beachten Sie, dass dies nicht besonders gut ist In späteren Artikeln werden wir einen anspruchsvolleren Stop / Start-Mechanismus erstellen, der von der Ubuntus-Prozessüberwachung Gebrauch macht, damit das Handelssystem rund um die Uhr laufen kann. Die Ausgabe nach 30 Sekunden oder so, abhängig von der Tageszeit relativ zu den Haupthandelstunden für EUR / USD für den obigen Code, ist unten angegeben: Die ersten fünf Zeilen zeigen die von OANDA mit Bid / Ask zurückgegebenen JSON-Tickdaten Preise. Anschließend können Sie die Ausgabe der Ausführungsreihenfolge sowie die von OANDA zurückgegebene JSON-Antwort sehen, die die Eröffnung eines Kaufhandels für 10.000 Einheiten EUR / USD und den erzielten Preis bestätigt. Dies wird unbegrenzt weiterlaufen, bis Sie das Programm mit einem Ctrl-Z-Befehl oder ähnlichem beenden. Whats Next In späteren Artikeln werden wir einige dringend benötigte Verbesserungen durchführen, darunter: Reale Strategien - Richtige Forex-Strategien, die rentable 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 Portfolio von Strategien, die in die Risikomanagement-Overlay integrieren Wie bei den equities event-driven Backtester, müssen wir auch ein Forex Backtesting-Modul zu erstellen. Das wird uns eine schnelle Forschung ermöglichen und es einfacher machen, Strategien einzusetzen. Settings. py (vergessen Sie nicht, ACCOUNTID und ACCESSTOKEN zu ändern):


Comments