Bt - Flexible Backtesting für Python Was ist bt bt ist ein flexibles Backtesting Framework für Python verwendet, um quantitative Trading-Strategien zu testen. Backtesting ist der Prozess der Prüfung einer Strategie über einen bestimmten Datensatz. Dieses Framework ermöglicht es Ihnen, leicht zu erstellen Strategien, die Mischung und passen verschiedene Algos. Es zielt darauf ab, die Schaffung von leicht testbaren, wiederverwendbaren und flexiblen Blöcken der Strategielogik zu fördern, um die rasche Entwicklung komplexer Handelsstrategien zu erleichtern. Das Ziel: Quants zu retten, um das Rad neu zu erfinden und sie auf den wichtigen Teil der Job-Strategie-Entwicklung zu konzentrieren. Bt ist in Python codiert und verbindet ein lebendiges und reichhaltiges Ökosystem für die Datenanalyse. Zahlreiche Bibliotheken existieren für das maschinelle Lernen, die Signalverarbeitung und die Statistik und können genutzt werden, um das Räder nicht neu zu erfinden - etwas, das allzu oft passiert, wenn man andere Sprachen benutzt, die den gleichen Reichtum an hochwertigen Open-Source-Projekten haben. Bt ist auf der ffn gebaut - eine finanzielle Funktionsbibliothek für Python. Check it out Ein schnelles Beispiel Hier ist ein kurzer Geschmack von bt: Eine einfache Strategie Backtest Let8217s erstellen eine einfache Strategie. Wir schaffen eine monatlich neu ausgewogene, langjährige Strategie, bei der wir in jedem Vermögensvermögen gleichgewichtig auf jeden Vermögenswert setzen. Zuerst werden wir einige Daten herunterladen. Standardmäßig gibt bt. get (alias für ffn. get) den Adjusted Close von Yahoo Finance herunter. Wir werden einige Daten ab dem 1. Januar 2010 für die Zwecke dieser Demo herunterladen. Sobald wir unsere Daten haben, werden wir unsere Strategie schaffen. Das Strategieobjekt enthält die Strategielogik durch die Kombination verschiedener Algos. Schließlich schaffen wir einen Backtest. Das ist die logische Kombination einer Strategie mit einem Datensatz. Sobald dies geschehen ist, können wir den Backtest laufen und die Ergebnisse analysieren. Jetzt können wir die Ergebnisse unseres Backtests analysieren. Das Ergebnisobjekt ist ein dünner Wrapper um ffn. GroupStats, der einige Hilfemethoden hinzufügt. Ändern einer Strategie Nun, wenn wir diese Strategie wöchentlich laufen und auch einige Risiko-Parität Stil Ansatz mit Gewichten, die proportional zu den inversen jeder Asset8217s Volatilität Nun, alles, was wir tun müssen, ist in einigen anderen Algos Plug-in. Siehe unten: Wie Sie sehen können, ist die Strategielogik einfach zu verstehen und wichtiger, einfach zu ändern. Die Idee, einfache, kompatible Algos zu verwenden, um Strategien zu schaffen, ist einer der Kernbausteine von bt. Die Baumstruktur erleichtert den Aufbau und die Komposition von komplexen algorithmischen Handelsstrategien, die modular und wiederverwendbar sind. Darüber hinaus hat jeder Baumknoten seinen eigenen Preisindex, der von Algos verwendet werden kann, um eine Node8217s Zuweisung zu bestimmen. Algos und AlgoStacks sind ein weiteres Kernmerkmal, das die Erstellung einer modularen und wiederverwendbaren Strategielogik erleichtert. Aufgrund ihrer Modularität sind diese Logikblöcke auch einfacher zu testen - ein wichtiger Schritt beim Aufbau robuster Finanzlösungen. Bt bietet auch viele nützliche Charting-Funktionen, die helfen, Backtest-Ergebnisse zu visualisieren. Wir planen auch, weitere Charts, Tabellen und Berichtsformate in der Zukunft hinzuzufügen, z. B. automatisch generierte PDF-Berichte. Darüber hinaus berechnet bt eine Reihe von Stats in Bezug auf einen Backtest und bietet einen schnellen Weg, um diese verschiedenen Statistiken über viele verschiedene Backtests über Results Display Methoden zu vergleichen. Zukünftige Entwicklungsbemühungen konzentrieren sich auf: Aufgrund der flexiblen Natur von bt musste ein Kompromiss zwischen Usability und Performance gemacht werden. Usability wird immer die Priorität sein, aber wir wollen die Leistung so weit wie möglich verbessern. Wir werden auch im Laufe der Zeit weitere Algorithmen entwickeln. Wir ermutigen auch alle, ihre eigenen Algos auch zu beisteuern. Dies ist ein weiterer Bereich, den wir ständig verbessern wollen, da die Berichterstattung ein wichtiger Aspekt des Jobs ist. Charting und Reporting erleichtern auch das Finden von Bugs in der Strategielogik. Überblick Was ist bt A Quick Beispiel Features Roadmap Installationsanleitung Alles über Algos Die Baumstruktur Beispiele API Github SchnellsucheEvent-Driven Backtesting mit Python - Teil I Weve verbrachte die letzten paar Monate auf QuantStart Backtesting verschiedene Handelsstrategien mit Python und Pandas. Die vektorisierte Natur von Pandas sorgt dafür, dass bestimmte Operationen auf großen Datensätzen extrem schnell sind. Doch die Formen des vektorisierten Backtests, die wir bisher studiert haben, leiden unter einigen Nachteilen in der Art und Weise, wie die Handelsausführung simuliert wird. In dieser Reihe von Artikeln werden wir einen realistischeren Ansatz für die historische Strategie-Simulation diskutieren, indem wir eine ereignisgesteuerte Backtesting-Umgebung mit Python konstruieren. Event-Driven Software Bevor wir uns mit der Entwicklung eines solchen Backtests vertraut machen, müssen wir das Konzept der ereignisgesteuerten Systeme verstehen. Videospiele bieten einen natürlichen Anwendungsfall für ereignisgesteuerte Software und bieten ein einfaches Beispiel zu erkunden. Ein Videospiel hat mehrere Komponenten, die miteinander in einer Echtzeit-Einstellung bei hohen Frameraten interagieren. Dies wird durch Ausführen des gesamten Satzes von Berechnungen innerhalb einer Endlosschleife, die als Ereignis-Schleife oder Spiel-Schleife bekannt ist, behandelt. Bei jedem Tick der Game-Loop wird eine Funktion aufgerufen, um das aktuelle Event zu erhalten. Die durch einige entsprechende vorherige Maßnahmen innerhalb des Spiels erzeugt worden sind. Abhängig von der Art des Ereignisses, die einen Key-Press oder einen Mausklick beinhalten könnte, wird eine nachfolgende Aktion durchgeführt, die entweder die Schleife beendet oder einige zusätzliche Ereignisse generiert. Der Prozess wird dann fortgesetzt. Hier ist ein Beispiel Pseudocode: Der Code überprüft ständig nach neuen Ereignissen und führt dann Aktionen aus, die auf diesen Ereignissen basieren. Insbesondere ermöglicht es die Illusion von Echtzeit-Antwort Handling, weil der Code wird ständig geschleift und Ereignisse überprüft. Wie sich herausstellen wird, ist genau das, was wir brauchen, um Hochfrequenz-Handelssimulation durchzuführen. Warum ein Event-Driven Backtester Event-driven Systeme bieten viele Vorteile gegenüber einem vektorisierten Ansatz: Code Reuse - Ein Event-driven Backtester, von Design, kann sowohl für historische Backtesting und Live-Trading mit minimaler Ausschaltung von Komponenten verwendet werden. Dies gilt nicht für vektorisierte Backtesters, bei denen alle Daten zur Verfügung stehen müssen, um statistische Analysen durchzuführen. Lookahead Bias - Mit einem ereignisgesteuerten Backtester gibt es keine Lookahead-Bias, da der Marktdatenbeleg als ein Event behandelt wird, auf das man achten muss. So ist es möglich, einen ereignisgesteuerten Backtester mit Marktdaten zu füllen und zu replizieren, wie sich ein Auftragsmanagement und Portfolio-System verhalten würde. Realismus - Event-driven Backtesters ermöglichen eine signifikante Anpassung an die Ausführung von Aufträgen und Transaktionskosten. Es ist einfach, grundlegende Markt - und Limitaufträge zu behandeln, sowie Markt-on-Open (MOO) und Market-on-Close (MOC), da ein benutzerdefinierter Austausch-Handler aufgebaut werden kann. Obwohl ereignisgesteuerte Systeme mit vielen Vorteilen kommen, leiden sie unter zwei großen Nachteilen gegenüber einfacheren vektorisierten Systemen. Erstens sind sie wesentlich komplexer zu implementieren und zu testen. Es gibt mehr bewegte Teile, die zu einer größeren Chance führen, Bugs einzuführen. Um diese korrekte Software-Testmethodik zu mildern, wie z. B. Test-getriebene Entwicklung eingesetzt werden kann. Zweitens sind sie im Vergleich zu einem vektorisierten System langsamer. Optimale vektorisierte Operationen können bei der Durchführung mathematischer Berechnungen nicht genutzt werden. Wir werden über Möglichkeiten diskutieren, diese Einschränkungen in späteren Artikeln zu überwinden. Event-Driven Backtester Überblick Um einen ereignisgesteuerten Ansatz für ein Backtesting-System anzuwenden, müssen wir unsere Komponenten (oder Objekte) definieren, die bestimmte Aufgaben behandeln werden: Event - Das Event ist die grundlegende Klasseneinheit des ereignisgesteuerten Systems. Es enthält einen Typ (wie MARKET, SIGNAL, ORDER oder FILL), der bestimmt, wie er innerhalb der Event-Loop behandelt wird. Event Queue - Die Event Queue ist ein In-Memory-Python-Queue-Objekt, das alle Event-Sub-Class-Objekte speichert, die vom Rest der Software generiert werden. DataHandler - Der DataHandler ist eine abstrakte Basisklasse (ABC), die eine Schnittstelle zur Handhabung von historischen oder Live-Marktdaten präsentiert. Dies bietet eine erhebliche Flexibilität, da die Strategy - und Portfolio-Module so zwischen beiden Ansätzen wiederverwendet werden können. Der DataHandler erzeugt bei jedem Herzschlag des Systems ein neues MarketEvent (siehe unten). Strategie - Die Strategie ist auch ein ABC, das eine Schnittstelle für die Erfassung von Marktdaten und die Erzeugung entsprechender SignalEvents darstellt, die letztlich vom Portfolio-Objekt genutzt werden. Ein SignalEvent enthält ein Tickersymbol, eine Richtung (LONG oder SHORT) und einen Zeitstempel. Portfolio - Dies ist ein ABC, das das Auftragsmanagement mit aktuellen und nachfolgenden Positionen für eine Strategie verknüpft. Es führt auch das Risikomanagement über das Portfolio hinweg, einschließlich der Sektorexposition und Positionsbestimmung. In einer anspruchsvolleren Implementierung könnte dies in eine RiskManagement-Klasse delegiert werden. Das Portfolio nimmt SignalEvents aus der Warteschlange und generiert OrderEvents, die der Warteschlange hinzugefügt werden. ExecutionHandler - Der ExecutionHandler simuliert eine Verbindung zu einem Brokerage. Die Aufgabe des Handlers ist es, OrderEvents aus der Warteschlange zu nehmen und sie entweder über einen simulierten Ansatz oder eine tatsächliche Verbindung zu einer Lebervermittlung auszuführen. Sobald Aufträge ausgeführt werden, schafft der Handler FillEvents, die beschreiben, was tatsächlich getätigt wurde, einschließlich Gebühren, Provision und Schlupf (wenn modelliert). Die Loop - Alle diese Komponenten sind in einer Event-Loop verpackt, die alle Event-Typen korrekt behandelt und sie an die entsprechende Komponente weiterleitet. Das ist ein Grundmodell eines Handelsmotors. Es gibt erhebliche Expansionsmöglichkeiten, vor allem in Bezug auf die Nutzung des Portfolios. Darüber hinaus können unterschiedliche Transaktionskostenmodelle auch in ihre eigene Klassenhierarchie abstrahiert werden. In diesem Stadium stellt es unnötige Komplexität innerhalb dieser Reihe von Artikeln, so dass wir derzeit nicht weiter diskutieren werden. In späteren Tutorials werden wir wahrscheinlich das System erweitern, um zusätzlichen Realismus einzuschließen. Hier ist ein Snippet von Python-Code, der zeigt, wie der Backtester in der Praxis funktioniert. Es gibt zwei Schleifen, die im Code auftreten. Die äußere Schleife wird verwendet, um dem Backtester einen Herzschlag zu geben. Für den Live-Handel ist dies die Häufigkeit, mit der neue Marktdaten abgefragt werden. Für Backtesting-Strategien ist dies nicht unbedingt notwendig, da der Backtester die im Drip-Feed-Formular bereitgestellten Marktdaten verwendet (siehe die Zeile bars. updatebars ()). Die innere Schleife behandelt die Ereignisse aus dem Ereignis-Warteschlangenobjekt. Spezielle Ereignisse werden an die jeweilige Komponente delegiert und anschließend werden neue Ereignisse der Warteschlange hinzugefügt. Wenn die Ereignis-Warteschlange leer ist, geht die Heartbeat-Schleife weiter: Dies ist die grundlegende Übersicht, wie ein ereignisgesteuerter Backtester entworfen wurde. Im nächsten Artikel werden wir die Eventklassenhierarchie besprechen. Just Getting Started mit quantitativen TradingAn Anwendung auf Backtest grundlegende Trading-Strategien für den FX-Markt, basierend auf historischen Daten. Dieser Code ist für Python 2.7 geschrieben und ist nicht mit Python 3 kompatibel. Voraussetzungen: Tkinter Um das Programm auszuführen, laden Sie alle Dateien herunter, pflegen die gleiche Verzeichnisstruktur und führen die Datei inputhandling. py aus dem Python-Interpreter aus. Die Parametereinstellungen sind wie folgt: StartEnd Datum: die Daten, die die historischen Daten, die getestet werden sollen, gebunden haben. Anfangszahlung: die Höhe des Geldes (USD) im Maklerkonto, um mit TimeFrame zu beginnen: die Breite jeder Bar des historischen Daten, die getestet werden sollen, ist der Zeitrahmen, der für jede Strategie verwendet wird Symbol: Unterstützung für nur EURUSD, USDJPY, GBPUSD und USDCHF mit eingeschlossenen Daten Position zum Handel: beschränken den Backtest auf nur Longpositionen, Short-Positionen oder beide Trading Kriterium: die Hauptstrategie zur Simulation von historischen Trades (Moving Average Crossover und Stochastics enthalten) Leverage (Marge): die maximale Leverage Ratio zulässige Bevorzugte Losgröße: eine feste Losgröße, die gehandelt werden soll, wenn eine Position geöffnet wird. Wenn der freie Rand die Losgröße einschränkt, wird er während des Tests angepasst. Spread Modeling-Technik: Durchschnittliche Spreads - davon ausgehen, dass die Spreads in den historischen Daten konstant bleiben Trade Management Technik: TPSL - setzen Sie einen festen Gewinn und Stop-Loss Level in Pips vom Eintrittspreis Preis SL - legen Sie den Stop-Loss zu einem Prozentsatz des Preises und Aktualisieren Sie jeden Stab Sobald diese Parameter eingegeben werden, wird das Programm einen rudimentären Backtest mit Bar durch Bar-Analyse ausführen, um festzustellen, was der endgültige Kontostand sein wird. Dieses Programm kann durch Hinzufügen weiterer Handelsstrategien erweitert werden. Sie sollten die gleiche Schnittstelle wie die Moving Average und Stochastische Strategien implementieren. Sie können diese Aktion zu diesem Zeitpunkt nicht durchführen. Sie haben sich mit einem anderen Tab oder Fenster angemeldet. Reload, um deine Sitzung zu aktualisieren. Sie haben sich in einem anderen Tab oder Fenster angemeldet. Reload, um Ihre Session zu aktualisieren. QSForex ist eine Open-Source-Event-driven Backtesting und Live-Trading-Plattform für den Einsatz in der Devisen - (Forex-) Märkte, derzeit in einem Alpha-Zustand. Es wurde als Teil der Forex Trading Diary-Serie auf QuantStart erstellt, um die systematische Handelsgemeinschaft mit einer robusten Handelsmaschine zu versorgen, die eine einfache Implementierung und Prüfung von Forex-Strategien ermöglicht. Die Software wird unter einer zulässigen MIT-Lizenz (siehe unten) zur Verfügung gestellt. Open-Source - QSForex wurde unter einer äußerst permissiven Open-Source-MIT-Lizenz veröffentlicht, die den vollen Einsatz sowohl in der Forschung als auch in kommerziellen Anwendungen ohne Einschränkung, aber ohne jegliche Gewährleistung ermöglicht. Free - QSForex ist völlig kostenlos und kostet nichts zu downloaden oder zu verwenden. Collaboration - Da QSForex Open-Source ist, arbeiten viele Entwickler zusammen, um die Software zu verbessern. Neue Funktionen werden häufig hinzugefügt. Alle Bugs sind schnell entschlossen und behoben. Softwareentwicklung - QSForex ist in der Programmiersprache Python für eine einfache plattformübergreifende Unterstützung geschrieben. QSForex enthält eine Reihe von Unit-Tests für die Mehrheit seiner Berechnungs-Code und neue Tests werden ständig für neue Features hinzugefügt. Event-Driven Architecture - QSForex ist sowohl für das Backtesting als auch für den Live-Trading komplett ereignisgesteuert, was zu einem einfachen Übergang von Strategien von einer Forschungstestphase zu einer Live-Trading-Implementierung führt. Transaktionskosten - Spread-Kosten sind standardmäßig für alle zurückgesetzten Strategien enthalten. Backtesting - QSForex bietet intraday Tick-Auflösung Multi-Tag Multi-Währungs-Paar Backtesting. 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 die Grundleistungsmessung und die Equity Visualisierung über die Visualisierungsbibliotheken Matplotlib und Seaborn. Installation und Nutzung 1) Besuchen Sie Oanda und richten Sie ein Konto ein, um die API-Authentifizierungsanmeldeinformationen zu erhalten, die Sie für den Live-Handel benötigen. Ich erkläre, wie man das in diesem Artikel ausführt: quantstartarticlesForex-Trading-Tagebuch-1-Automated-Forex-Trading-mit-die-OANDA-API. 2) Klonen Sie dieses Git-Repository in einen 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 eine Reihe von Umgebungsvariablen für alle Einstellungen, die in der Datei settings. py im Anwendungsverzeichnis gefunden wurden. Alternativ können Sie Ihre spezifischen Einstellungen durch Überschreiben der os. environ. get (.) Aufrufe für jede Einstellung hart kodieren: 4) Erstellen Sie eine virtuelle Umgebung (virtualenv) für den QSForex-Code und nutzen Sie Pipe, 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 die folgenden Befehle im Terminal eingeben: Damit wird eine neue virtuelle Umgebung erstellt, um die Pakete zu installieren. Angenommen, Sie haben das QSForex-Git-Repository in ein Beispielverzeichnis wie projectqsforex heruntergeladen (ändern Sie dieses Verzeichnis unten, wo Sie QSForex installiert haben), dann müssen Sie, um die Pakete zu installieren, die folgenden Befehle ausführen: Dies wird einige Zeit dauern, da NumPy, SciPy, Pandas, Scikit-Learn und Matplotlib müssen zusammengestellt werden. Es gibt viele Pakete, die für diese Arbeit erforderlich sind, also bitte werfen Sie einen Blick auf diese beiden Artikel für weitere Informationen: Sie müssen auch einen symbolischen Link aus Ihrem Website-Paket-Verzeichnis zu Ihrem QSForex-Installationsverzeichnis erstellen, um anrufen zu können Importiere qsforex innerhalb des codes. Um dies zu tun, benötigen Sie einen Befehl, der folgend ähnelt: Vergewissern Sie sich, dass Sie pro Outlook-Verzeichnis in Ihr Installationsverzeichnis und venvqsforexlibpython2.7site-Pakete in Ihr virtualenv-Site-Paketverzeichnis umwandeln. Sie können nun die nachfolgenden Befehle korrekt ausführen. 5) In diesem Stadium, wenn Sie einfach wünschen, um Praxis oder Live-Handel durchführen, dann können Sie Python Tradingtrading. py laufen. Die die Standard-TestStrategy-Handelsstrategie verwenden wird. Dies kauft oder verkauft einfach ein Währungspaar jedes 5. Tick. Es ist nur zum Testen - benutze es nicht in einer Live-Handelsumgebung Wenn du eine sinnvollere Strategie schaffen willst, dann schaffe einfach eine neue Klasse mit einem beschreibenden Namen, z. B. MeanReversionMultiPairStrategy und sicherstellen, dass es eine calculatesignals Methode hat. Du musst diese Klasse sowohl die Paarliste als auch die Event-Queue übergeben, wie bei tradingtrading. py. Bitte schauen Sie auf Strategiestrategy. py für Details. 6) Um ein Backtesting durchzuführen, ist es notwendig, simulierte Forex-Daten zu generieren oder historische Tick-Daten herunterzuladen. Wenn Sie einfach die Software ausprobieren möchten, ist der schnellste Weg, um einen Beispiel Backtest zu generieren, um einige simulierte Daten zu generieren. Das aktuelle Datenformat, das von QSForex verwendet wird, ist das gleiche wie das, das vom DukasCopy Historical Data Feed bei dukascopyswissenglishmarketwatchhistorical bereitgestellt wird. Um einige historische Daten zu erzeugen, stellen Sie sicher, dass die Einstellung CSVDATADIR in settings. py auf ein Verzeichnis gesetzt wird, in dem die historischen Daten live leben sollen. Sie müssen dann generatesimulatedpair. py ausführen. Die sich unter dem Skriptverzeichnis befindet. Es erwartet ein einziges Kommandozeilenargument, das in diesem Fall das Währungspaar im Format BBBQQQ ist. Zum Beispiel: In diesem Stadium ist das Skript hartcodiert, um eine einmonatige Daten für Januar 2014 zu erstellen. Das heißt, Sie sehen einzelne Dateien des Formats BBBQQQYYYYMMDD. csv (zB GBPUSD20140112.csv) erscheinen in Ihrem CSVDATADIR für alle Werktage in In diesem Monat Wenn Sie das Monatsdatum der Datenausgabe ändern möchten, ändern Sie einfach die Datei und re-run. 7) Nun, da die historischen Daten erzeugt wurden, ist es möglich, einen Backtest durchzuführen. Die Backtest-Datei selbst wird in backtestbacktest. py gespeichert. Aber das enthält nur die Backtest-Klasse. Um einen Backtest tatsächlich auszuführen, musst du diese Klasse instanziieren und ihm die notwendigen Module zur Verfügung stellen. Der beste Weg, um zu sehen, wie dies geschieht, ist, das Beispiel Moving Average Crossover-Implementierung in der Datei examplesmac. py zu betrachten und diese als Vorlage zu verwenden. Dies nutzt die MovingAverageCrossStrategy, die in strategiestrategy. py gefunden wird. Dies ist standardmäßig der Handel mit GBPUSD und EURUSD, um mehrere Währungspaarnutzung zu demonstrieren. Es verwendet Daten in CSVDATADIR gefunden. Um das Beispiel Backtest auszuführen, führen Sie einfach folgendes aus: Dies wird einige Zeit dauern. Auf meinem Ubuntu-Desktop-System zu Hause, mit den historischen Daten generiert über generatesimulatedpair. py. Es dauert ca. 5-10 Minuten zu laufen. Ein großer Teil dieser Berechnung tritt am Ende des tatsächlichen Backtests auf, wenn der Drawdown berechnet wird, also bitte daran erinnern, dass der Code nicht aufgelegt ist. Bitte lassen Sie ihn bis zur Fertigstellung. 8) Wenn du die Leistung des Backtests ansehen möchtest, kannst du einfach output. py verwenden, um eine Eigenkapitalkurve zu sehen, Periodenrenditen (dh Tick-to-Tick-Renditen) und eine Drawdown-Kurve: Und das ist es. In diesem Stadium bist du bereit Um mit dem Erstellen eigener Backtests zu beginnen, indem du Strategien in Strategiestrategy. py modifizierst oder anhängst und echte Daten von DukasCopy (dukascopyswissenglishmarketwatchhistorical) herunterlädt. Wenn Sie irgendwelche Fragen über die Installation haben, dann fühlen Sie bitte sich frei, mich bei mikequantstart zu mailen. Wenn Sie irgendwelche Bugs oder andere Probleme haben, die Sie denken, kann aufgrund der Codebase spezifisch sein, fühlen Sie sich frei, ein Github Problem hier zu öffnen: githubmhallsmooreqsforexissues Copyright (c) 2015 Michael Halls-Moore Erlaubnis wird hiermit kostenlos an jede Person gewährt Das Erhalten einer Kopie dieser Software und der zugehörigen Dokumentationsdateien (Software), um die Software ohne Einschränkung zu behandeln, einschließlich, ohne Einschränkung, die Nutzungsrechte, Kopie, Änderung, Zusammenführung, Veröffentlichung, Verbreitung, Unterlizenzierung und Verkauf von Kopien der Software, Und Personen, denen die Software zur Verfügung gestellt wird, unter den folgenden Bedingungen zuzulassen: Der oben genannte Urheberrechtshinweis und diese Erlaubnismitteilung sind in allen Kopien oder wesentlichen Teilen der Software enthalten. DIE SOFTWARE WIRD OHNE GEWÄHRLEISTUNG JEGLICHER ART, AUSDRÜCKLICH ODER STILLSCHWEIGEND, EINSCHLIESSEN, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL HAFTEN DIE AUTOREN ODER URHEBERRECHTLICHEN HOLDERS FÜR IRGENDEINEN ANSPRÜCHE, SCHÄDEN ODER ANDERER HAFTUNG, OHNE VERTRAG, SCHÄDEN ODER ANDERWEITIG, DIE AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN HÄNDLERN IN DER SOFTWARE. Forex Trading Disclaimer Handel Devisen am Rande trägt ein hohes Risiko und ist 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 überlegen, Ihre Investition Ziele, Erfahrungsstand und Risiko Appetit. Die Möglichkeit besteht, dass Sie einen Verlust von einigen oder allen Ihrer ursprünglichen Investition aufrechterhalten könnten und deshalb sollten Sie nicht Geld investieren, das Sie sich nicht leisten können, zu verlieren. Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel, und suchen Sie Rat von einem unabhängigen Finanzberater, wenn Sie Zweifel haben.
Comments
Post a Comment