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 zur Verfügung stehen kostenlos unter einer liberalen MIT Open-Source-Lizenz, auf der Github Versionskontroll-Website unter der folgenden URL: githubmhallsmooreqsforex. Für diejenigen unter Ihnen, die Git und Github vor verwendet haben, youll in der Lage sein, git klonen das Repo und starten Sie es für Ihre eigenen Zwecke zu ändern. Das QuantStart Automated Forex Trading System ist nun Open-Source unter einer liberalen MIT Lizenz. Den letzten Code auf Github findest du unter dem qsforex Repository unter githubmhallsmooreqsforex. 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 kopiert wird: An dieser Stelle 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, um es Ihnen zu ermöglichen, qsforex in Ihren Code einzugeben (und es auszuführen): Wie bereits erwähnt, müssen Sie die notwendigen Umgebungsvariablen erstellen Für Ihre OANDA-Authentifizierungsberechtigungen. Bitte lesen Sie dazu den Tagebucheintrag 2, wie Sie dies tun können. Bitte beachten Sie die README mit dem Repo verbunden, 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 problemlos über 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, ist es, 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 in die Modelle mit einbezogen, um uns eine gute Vorstellung davon zu vermitteln, wie gut eine Strategie wahrscheinlich ist. Da wir Zugriff auf Tick-Daten haben (Bidask-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. Zusätzlich zu den Transaktionskosten wollen wir ein robustes Portfoliomanagement mithilfe von Risikoüberlagerungen und Positionsgrößen modellieren. Also, was ist derzeit im Forex Trading System bis dato enthalten 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 eine grundlegende Preis-Streaming-Objekt. Dies behandelt 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 (basierend auf den bisherigen 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. Durch blind bedeutet es, dass weder ein Risikomanagement noch eine Positionsbestimmung durchgeführt wird, noch eine 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 Praxis Konten in USD, EUR, CAD, JPY, AUD und NZD gehandelt GBPUSD Trading - Ich wählte das Kabel als Währungspaar, um die ursprünglichen Position und Portfolio-Objekte zu testen mit. Der Umgang mit mehreren Währungspaaren ist ein wichtiger Schritt. Dabei werden die Positions - und Portfolio-Berechnungen modifiziert. 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. LongShort Trading - Zwischen den Tagebucheinträgen 2 und 3 fügte ich die Fähigkeit hinzu, ein Währungspaar zu knacken (im Gegensatz zu nur in der Lage, lange zu gehen). Entscheidend ist, dass dies auch getestet wird. Lokale Portfolio-Handhabung - Meiner Meinung nach einen Backtest durchführen, der die Strategieperformance aufgrund unrealistischer Annahmen aufbaut, ist am besten ärgerlich und äußerst unrentabel im Schlimmsten. Mit der Einführung eines lokalen Portfolio-Objekts, das die OANDA-Berechnungen nachbildet, können wir unsere internen Berechnungen während der Praxis überprüfen 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 PositionPortfolio - Während Ive nicht erwähnt es direkt in Tagebucheinträge 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 äußerst zuversichtlich sein, dass sie wie erwartet funktionieren. Ein weiterer Vorteil dieser Tests ist, dass sie die zugrunde liegende Berechnung so ändern, 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 (GBPUSD) unterstützen. Dafür gibt es zwei Aspekte. Die erste ist, die Berechnungen korrekt zu verarbeiten, wenn weder die Basis oder das Angebot 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 für die Kürze in der Beschreibung der Regeln einer Strategie notwendig. In Wirklichkeit müssen wir - im Falle eines Handels - eine Risikoüberlagerung verwenden, sonst ist es höchstwahrscheinlich, 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-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 Signal-Generierung Spielzeug-Strategien bis heute gezeigt. Nun, da wir beginnen, ein zuverlässiges Intraday Devisenhandel System zu schaffen, sollten wir beginnen, die Durchführung einige interessante Strategien. Zukünftige Tagebucheinträge werden sich auf Strategien konzentrieren, die aus einer Mischung von technischen Indikatoren, Zeitreihenmodellen und maschinellen Lerntechniken gezogen werden. Remote-Deployment - Da wir potentiell am 24-Stunden-Handel interessiert sind (zumindest während der Woche), benötigen wir ein anspruchsvolleres Setup als das Ausführen des Backtests auf einem lokalen Desktop-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 gebaut, 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. Monitoring und Hochverfü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 Plattenverwendung, die Netzwerk-E / A, die Latenzzeit und die Überprüfung, dass alle periodischen Skripts so eingestellt sind, dass sie ausgeführt werden, berichtet werden. Darüber hinaus benötigen wir eine Backup - und Restore-Strategie. Fragen Sie sich, was Backup-Pläne, die Sie an Ort und Stelle haben, wenn Sie große offene Positionen, in einem volatilen Markt, und Ihr Server plötzlich gestorben wäre. Glauben Sie mir, es kommt vor Multiple BrokerFIX Integration - Im Moment sind wir stark an den OANDA Broker gekoppelt. Wie ich schon sagte, ist dies 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 konsolenbefehlsgebunden. Zumindest müssen wir einige grundlegende Charting, um Backtest-Ergebnisse anzeigen. Ein anspruchsvolleres System wird zusammenfassende Statistiken von Trades, Performance-Metriken auf Strategieebene sowie Gesamtportfolio-Performance beinhalten. 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, die auf der Roadmap übrig bleibt. 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 den Wert "-every-" ändern, der in einer Positionsberechnung in einem Dezimal-Datentyp erscheint. Hierzu gehören die Anteile, die Exposure, die Pips, der Gewinn und der prozentuale Gewinn. Dies stellt sicher, dass wir die volle Kontrolle darüber haben, wie Rundungsprobleme im Umgang mit Währungsrepräsentationen 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 gehen mit ROUNDHALFDOWN. Die auf die nächste ganze Zahl mit Bündeln, die in Richtung Null gehen, umläuft. 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 ein Gleitkomma-Argument bereitstellen müssen. Dies liegt daran, dass ein String genau die Genauigkeit des Wertes angibt, während ein Gleitkommatyp 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 Datentypen bei der Erstellung unseres Datenbankschemas nutzen, sonst werden wir auf Rundungsfehler hindeuten, die extrem schwer zu diagnostizieren sind. Für diejenigen, die an einer tieferen Diskussion dieser Themen interessiert sind, in Mathematik und Informatik, Gegenstand der Numerical Analysis umfasst Floating-Point-Speicher-Themen, unter vielen anderen interessanten Themen. In den folgenden Tagebucheinträgen werden wir diskutieren, wie ich Unit-Testing auf den Code angewandt habe und wie wir die Software auf mehr Währungspaare erweitern können, indem wir die Positionsberechnungen ändern. Vollständiger Python-Code Da der vollständige Quellcode für das Projekt jetzt Open Source ist, unter einer MIT-Lizenz. Es kann immer herausgefunden werden bei githubmhallsmooreqsforex. Mit den begleitenden Unterlagen. Wenn Sie die anderen Einträge in der Serie lesen möchten, folgen Sie bitte den unten stehenden Links: QSForex ist eine Open-Source-Event-gesteuerte Backtesting - und Live-Handelsplattform für den Einsatz in Devisenmärkten, die sich derzeit in einem Alpha-Staat befinden. Es wurde als Teil der Forex Trading Diary-Serie auf QuantStart erstellt, um die systematische Trading-Community mit einem robusten Trading-Engine, die einfache Forward-Strategie-Implementierung und Tests ermöglicht. Die Software wird unter einer zulässigen MIT-Lizenz bereitgestellt (siehe unten). Open-Source - QSForex wurde unter einer äußerst zulässigen Open-Source-MIT-Lizenz freigegeben, die eine vollständige Nutzung sowohl in der Forschung als auch in kommerziellen Anwendungen erlaubt, ohne Einschränkung, jedoch ohne jegliche Gewährleistung. Free - QSForex ist völlig kostenlos und kostet nichts zum Herunterladen oder Verwenden. Collaboration - Da QSForex Open Source ist, arbeiten viele Entwickler zusammen, um die Software zu verbessern. Neue Funktionen werden häufig hinzugefügt. Alle Fehler werden schnell bestimmt und behoben. Software-Entwicklung - QSForex wird in der Programmiersprache Python geschrieben, um eine einfache plattformübergreifende Unterstützung zu ermöglichen. QSForex enthält eine Suite von Unit-Tests für den Großteil seines Berechnungscodes und neue Tests werden ständig für neue Funktionen hinzugefügt. Event-Driven Architecture - QSForex ist sowohl für Backtesting - als auch Live-Trader vollständig ereignisgesteuert, was zu einem einfachen Übergang von Strategien aus einer Researchtesting-Phase zu einer Live-Trading-Implementierung führt. Transaktionskosten - Spread-Kosten sind standardmäßig für alle Backtest-Strategien enthalten. Backtesting - QSForex bietet mehrtägiges Multi-Currency-Paar-Backtesting intraday-Tick-Auflösung. Trading - QSForex unterstützt derzeit den Live-Intraday-Handel mit der OANDA Brokerage API über ein Portfolio von Paaren. Performance Metrics - QSForex unterstützt derzeit grundlegende Performance-Messung und Equity-Visualisierung über die Visualisierungsbibliotheken Matplotlib und Seaborn. Installation und Verwendung 1) Besuchen Sie oanda und richten Sie ein Konto ein, um die Anmeldeinformationen für die API-Authentifizierung zu erhalten, die Sie für den Live-Handel benötigen. Ich erkläre, wie man dies in diesem Artikel durchführen: quantstartarticlesForex-Trading-Tagebuch-1-Automatisiert-Forex-Trading-mit-der-OANDA-API. 2) Klonen Sie dieses Git-Repository an einem geeigneten Ort auf Ihrem Computer mit dem folgenden Befehl in Ihrem Terminal: git clone githubmhallsmooreqsforex. git. Alternativ können Sie die ZIP-Datei des aktuellen Master-Zweigs bei githubmhallsmooreqsforexarchivemaster. zip herunterladen. 3) Erstellen Sie einen Satz von Umgebungsvariablen für alle Einstellungen, die in der Datei settings. py im Stammverzeichnis der Anwendung gefunden wurden. Alternativ können Sie Ihre spezifischen Einstellungen durch Überschreiben der Aufrufe von os. environ. get (.) Für jede Einstellung festlegen: 4) Erstellen Sie eine virtuelle Umgebung (virtualenv) für den QSForex-Code und verwenden Sie pip, um die Anforderungen zu installieren. Zum Beispiel können Sie in einem Unix-basierten System (Mac oder Linux) ein solches Verzeichnis wie folgt erstellen, indem Sie folgende Befehle im Terminal eingeben: Dadurch wird eine neue virtuelle Umgebung zur Installation der Pakete erstellt. Angenommen, Sie haben das QSForex git Repository in ein Beispielverzeichnis wie zB Projekteqsforex heruntergeladen (ändern Sie dieses Verzeichnis unten, wo Sie QSForex installiert haben), dann müssen Sie die folgenden Befehle ausführen, um die Pakete zu installieren: Dies wird einige Zeit dauern, da NumPy, SciPy, Pandas, Scikit-Learn und Matplotlib zusammengestellt werden. Es gibt viele Pakete, die für diese Arbeit erforderlich sind. Sehen Sie sich diese beiden Artikel an, um weitere Informationen zu erhalten: Sie müssen auch einen symbolischen Link aus Ihrem Site-Paket-Verzeichnis in Ihr QSForex-Installationsverzeichnis erstellen, um anrufen zu können Import qsforex innerhalb des Codes. Dazu benötigen Sie einen Befehl, der folgend ähnelt: Achten Sie darauf, Projekteqsforex zu Ihrem Installationsverzeichnis und den venvqsforexlibpython2.7site-Paketen in Ihr virtualenv Site-Paketverzeichnis zu ändern. Sie können nun die folgenden Befehle korrekt ausführen. 5) In diesem Stadium, wenn Sie einfach wollen, um Praxis oder Live-Handel, dann können Sie Python tradingtrading. py laufen. Die die Standardstrategie von TestStrategy verwenden wird. Dieses kauft oder verkauft einfach ein Währungpaar jedes 5. Häckchen. Es ist nur zum Testen - verwenden Sie es nicht in einer Live-Trading-Umgebung Wenn Sie eine nützliche Strategie zu erstellen, dann erstellen Sie einfach eine neue Klasse mit einem beschreibenden Namen, z. MeanReversionMultiPairStrategy und stellen Sie sicher, dass es eine calculatesignals-Methode hat. Sie müssen diese Klasse die Paaren Liste sowie die Ereignis-Queue, wie in tradingtrading. py passieren. Weitere Informationen finden Sie unter strategiespot. py. 6) Zur Durchführung von Backtesting ist es notwendig, simulierte Forex-Daten zu erzeugen oder historische Tickdaten herunterzuladen. Wenn Sie einfach die Software ausprobieren möchten, ist der schnellste Weg, einen Beispiel-Backtest zu generieren, einige simulierte Daten zu generieren. Das aktuelle Datenformat, das von QSForex verwendet wird, ist dasselbe, wie es von der DukasCopy Historical Data Feed bei dukascopyswissenglishmarketwatchhistorical zur Verfügung gestellt wird. Um einige historische Daten zu generieren, stellen Sie sicher, dass die CSVDATADIR-Einstellung in settings. py auf ein Verzeichnis festgelegt ist, in dem die historischen Daten gespeichert werden sollen. Sie müssen dann generatesimulatedpair. py ausführen. Die sich unter dem Skriptverzeichnis befindet. Es erwartet ein einziges Befehlszeilenargument, das in diesem Fall das Währungspaar im BBBQQQ-Format ist. Zum Beispiel: In diesem Stadium wird das Skript hartcodiert, um für Januar 2014 einzelne Monate zu erstellen. Das heißt, Sie sehen in Ihrem CSVDATADIR für alle Werktage in der Regel einzelne Dateien des Formats BBBQQQYYYYMMDD. csv (zB GBPUSD20140112.csv) In diesem Monat. Wenn Sie das Monats - jahr der Datenausgabe ändern möchten, ändern Sie einfach die Datei und wiederholen Sie den Vorgang. 7) Nachdem die historischen Daten erzeugt wurden, ist es möglich, einen Backtest durchzuführen. Die Backtest-Datei selbst ist in backtestbacktest. py gespeichert. Aber das enthält nur die Backtest-Klasse. Um einen Backtest auszuführen, müssen Sie diese Klasse instanziieren und mit den notwendigen Modulen versorgen. Der beste Weg, um zu sehen, wie dies getan wird, ist, die Beispiel Moving Average Crossover-Implementierung in der examplesmac. py-Datei zu betrachten und diese als Vorlage zu verwenden. Dies macht Gebrauch von der MovingAverageCrossStrategy, die in der Strategiestrategy. py gefunden wird. Diese Voreinstellung betrifft den Handel sowohl GBPUSD als auch EURUSD, um mehrere Währungspaare anzuzeigen. Es verwendet Daten, die in CSVDATADIR gefunden werden. Führen Sie zum Ausführen des Beispiel-Backtests einfach Folgendes aus: Dies wird einige Zeit in Anspruch nehmen. Auf meinem Ubuntu-Desktopsystem zu Hause, mit den historischen Daten, die über generatesimulatedpair. py generiert wurden. Es dauert etwa 5-10 Minuten zu laufen. Ein großer Teil dieser Berechnung erfolgt am Ende des eigentlichen Backtests, wenn der Drawdown berechnet wird. Bitte denken Sie daran, dass der Code nicht aufgelegt wurde. Bitte lassen Sie ihn bis zur Fertigstellung. 8) Wenn Sie die Performance des Backtests ansehen möchten, können Sie einfach output. py verwenden, um eine Equity-Kurve, Periodenrenditen (dh Tick-to-Tick-Returns) und eine Drawdown-Kurve anzuzeigen. Und das ist es Um eigene Backtests zu erstellen, indem sie Strategien in strategie - und strategie. py ändern oder anhängen und die von DukasCopy (dukascopyswissenglishmarketwatchhistorical) heruntergeladenen Daten verwenden. Wenn Sie irgendwelche Fragen über die Installation haben, dann fühlen Sie bitte sich frei, mich an mikequantstart zu mailen. Wenn Sie irgendwelche Fehler oder andere Probleme haben, die Ihrer Meinung nach möglicherweise auf die Codebasis zurückzuführen sind, können Sie hier ein Github-Problem öffnen: githubmhallsmooreqsforexissues Copyright (c) 2015 Michael Halls-Moore Die Erlaubnis wird hiermit kostenlos gewährt (Die Software), um die Software ohne Einschränkung zu nutzen, einschließlich, aber nicht beschränkt auf die Nutzung, Vervielfältigung, Veränderung, Zusammenführung, Veröffentlichung, Verbreitung, Unterlizenzierung und Vervielfältigung von Kopien der Software, Und Personen, denen die Software zur Verfügung gestellt wird, zu gestatten, unter den folgenden Bedingungen: Der oben genannte Urheberrechtshinweis und diese Genehmigungsmitteilung sind in allen Kopien oder wesentlichen Teilen der Software enthalten. DIE SOFTWARE WIRD OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIE, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG. IN KEINEM FALL HAFTEN DIE AUTOREN ODER URHEBERRECHTSHÄNDLER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDEREN HAFTUNGEN, OB KEINE VERLETZUNG ODER ANDERWEITIGER KLAGE ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN HÄNDLER IN DER SOFTWARE. Forex Trading Disclaimer Trading Devisen auf Margin trägt ein hohes Maß an Risiko, und kann 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 überlegen Sie Ihre Anlageziele, Erfahrung und Risikobereitschaft. Die Möglichkeit besteht, dass Sie einen Verlust von einigen oder allen Ihrer anfänglichen Investition zu erhalten und daher sollten Sie nicht Geld investieren, die Sie nicht leisten können, zu verlieren. Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel und suchen Beratung durch einen unabhängigen Finanzberater, wenn Sie Zweifel haben.
Comments
Post a Comment