Fineco Mehrtägiger Devisenhandel
Forex Trading Diary 6 - Multi-Day Trading und Plotter Ergebnisse Sein seit einer Weile seit meinem letzten Forex Trading Diary Update. Ich war damit beschäftigt, an dem neuen QuantStart Jobs Board zu arbeiten und so hatte ich nicht so viel Zeit wie üblich, um an QSForex zu arbeiten. Obwohl ich einige Fortschritte gemacht habe. Insbesondere konnte ich einige neue Features hinzufügen, darunter: Dokumentation - Ive hat nun einen QSForex-Unterabschnitt auf der Website erstellt, der alle Einträge des Forex Trading Diary und die Dokumentation für QSForex enthält. Insbesondere enthält es detaillierte Installationsanweisungen und eine Gebrauchsanweisung für Backtesting und Live Trading. Simulierte Tick-Datenerzeugung - Da es schwierig ist, Forex-Tick-Daten in der Masse herunterzuladen (oder zumindest hat es von bestimmten Anbietern, die ich verwende), entschied ich, dass es einfacher wäre, einfach nur zufällige Tick-Daten zum Testen des Systems zu generieren. Multi-Day Backtesting - Eine langjährige Feature-Anfrage in QSForex ist die Möglichkeit, über mehrere Tage von Tick-Daten zu testen. In der letzten Version unterstützt QSForex nun sowohl mehrtägiges als auch mehrpaariges Backtesting, was es wesentlich nützlicher macht. Plotten Backtesting Ergebnisse - Während Konsolenausgabe ist nützlich, nichts schlägt in der Lage, eine Eigenkapitalkurve oder historische Drawdown zu visualisieren. Ive nutzte die Seaborn-Bibliothek, um die verschiedenen Performance-Charts zu zeichnen. In diesem Eintrag korrigieren Sie alle neuen Features im Detail unten. Wenn du bisher nicht in der Lage bist, die Serie zu verfolgen, kannst du in den QSForex-Bereich gehen, um vorherige Einträge aufzuholen. Simuliertes Tick Data Script Ein äußerst wichtiges angefordertes Feature für QSForex ist die Möglichkeit, über mehrere Tage zu backtest. Bisher unterstützte das System nur das Backtesting über eine einzige Datei. Dies war keine skalierbare Lösung, da eine solche Datei in den Speicher und später in einen Pandas DataFrame gelesen werden muss. Während die Tick-Datendateien nicht riesig sind (jeweils ca. 3,5 Mb), addieren sie sich schnell, wenn wir mehrere Paare über einen Zeitraum von Monaten oder mehr betrachten. Um mit dem Erstellen einer Multi-Daymulti-Datei-Fähigkeit zu beginnen, habe ich versucht, weitere Dateien aus dem DukasCopy historischen Tick-Feed herunterzuladen. Leider bin ich in Schwierigkeiten geraten und ich konnte die notwendigen Dateien nicht herunterladen, um das System zu testen. Da war ich nicht allzu sehr über die eigentliche Zeitreihe selbst, ich fühlte es wäre einfacher, ein Skript zu schreiben, um simulierte Forex-Daten selbst zu generieren. Ich habe dieses Skript in die Datei scriptsgeneratesimulatedpair. py gesetzt. Der aktuelle Code finden Sie hier. Die Grundidee des Skripts besteht darin, eine Liste von zufällig verteilten Zeitstempeln zu erzeugen, die jeweils sowohl Bidask-Werte als auch Bidask-Volumenwerte besitzen. Die Ausbreitung zwischen dem Bid und dem Ask ist konstant, während die Bidask-Werte selbst als zufälliger Spaziergang erzeugt werden. Da ich eigentlich nie irgendwelche echten Strategien auf diese Daten testen würde, war ich nicht zu belästigt über seine statistischen Eigenschaften oder seine absoluten Werte in Bezug auf echte Forex-Währungspaare. Solange es das richtige Format und die ungefähre Länge hatte, konnte ich es benutzen, um das mehrtägige Backtesting-System zu testen. Das Skript ist derzeit hartcodiert, um Forex-Daten für den gesamten Monat Januar 2014 zu generieren. Es verwendet die Python-Kalenderbibliothek, um die Arbeitstage zu ermitteln (obwohl ich havent ausgeschlossene Feiertage noch) und dann eine Reihe von Dateien der Form BBBQQQYYYYMMDD. csv generiert . Wobei BBBQQQ das angegebene Währungspaar (z. B. GBPUSD) und YYYYMMDD das angegebene Datum ist (z. B. 20140112). Diese Dateien werden im CSVDATADIR-Verzeichnis platziert, das in der application. py im Anwendungsstamm angegeben ist. Um die Daten zu erzeugen, muss der folgende Befehl ausgeführt werden, wobei BBBQQQ durch den jeweiligen Währungsnamen von Interesse ersetzt werden muss, z. B. GBPUSD: Die Datei benötigt eine Änderung, um mehrere Monate oder Jahre Daten zu erzeugen. Jede tägliche Tick-Datei ist in der Größenordnung von 3,2 MB groß. In Zukunft werde ich dieses Skript ändern, um mehrere Monate oder Jahre Daten auf der Grundlage einer Liste von Währungspaaren zu erzeugen, anstatt die Werte, die hartcodiert sind, zu erzeugen. Allerdings sollte dies vorerst Ihnen helfen, loszulegen. Bitte beachten Sie, dass das Format genau mit dem der DukasCopy historischen Tick-Daten übereinstimmt, welches der Dataset ist, den ich derzeit verwende. Multi-Day-Backtesting implementiert Im Anschluss an direkt aus der Generierung von simulierten Tick-Daten ist die Umsetzung der mehrtägigen Backtesting. Während mein langfristiger Plan ist, ein robusteres historisches Speichersystem wie PyTables mit HDF5 zu verwenden. Zur Zeit werde ich von einer Reihe von CSV-Dateien Gebrauch machen, eine Datei pro Tag pro Währungspaar. Dies ist eine skalierbare Lösung, da die Anzahl der Tage zunimmt. Die ereignisgesteuerte Natur des Systems erfordert nur immer N-Dateien im Speicher, wo N die Anzahl der Währungspaare ist, die an einem bestimmten Tag gehandelt werden. Die Grundidee des Systems ist für den aktuellen HistoricCSVPriceHandler, die Streamnexttick-Methode weiterhin zu verwenden, aber mit einer Änderung, um mehrere Tage von Daten zu berücksichtigen, indem sie jeden Tag der Daten sequentiell laden. Die aktuelle Implementierung beendet den Backtest beim Empfang der StopIteration-Ausnahme, die durch den nächsten (..) Aufruf von self. allpairs wie in diesem Pseudocode-Snippet gezeigt wird: In der neuen Implementierung wird dieses Snippet auf folgendes geändert: In diesem Snippet, Wenn StopIteration angehoben wird, prüft der Code das Ergebnis von self. updatecsvforday (). Wenn das Ergebnis True ist, geht der Backtest weiter (auf self. curdatepairs, die in die nachfolgenden Tage geändert werden konnten). Wenn das Ergebnis falsch ist. Der backtest endet. Dieser Ansatz ist sehr effizient, da nur ein bestimmter Wert der Daten an einem beliebigen Punkt geladen wird. Es bedeutet, dass wir möglicherweise monatelange Backtest ausführen können und nur durch die CPU-Verarbeitungsgeschwindigkeit und die Datenmenge, die wir generieren oder erwerben können, begrenzt sind. Ich habe die Dokumentation aktualisiert, um die Tatsache zu berücksichtigen, dass das System nun mehrere Tage von Daten in einem bestimmten Format erwartet, in einem bestimmten Verzeichnis, das angegeben werden muss. Plotten von Backtesting-Ergebnissen mit Seaborn-Bibliothek Ein Backtest ist relativ nutzlos, wenn wir die Leistung der Strategie im Laufe der Zeit nicht visualisieren können. Während das System bisher meist konsolenbasiert war, habe ich mit dieser Version den Übergang zu einer grafischen Benutzeroberfläche (GUI) begonnen. Insbesondere habe ich die üblichen drei Scheiben von Charts erstellt, die oft Performance-Metriken für quantitative Handelssysteme begleiten, nämlich die Eigenkapitalkurve, das Renditeprofil und die Drawdown-Kurve. Alle drei sind für jedes Tick berechnet und werden in eine Datei namens equity. csv in der OUTPUTRESULTSDIR in settings. py gefunden ausgegeben. Um die Daten zu betrachten, benutzen wir eine Bibliothek namens Seaborn. Die produzieren Publikationsqualität (ja, ACTUAL Publikation-Qualität) Grafiken, die wesentlich besser aussehen als die Standard-Grafiken von Matplotlib produziert. Die Grafik sieht sehr nah an denen, die vom R-Paket ggplot2 produziert werden. Darüber hinaus verwendet Seaborn eigentlich Matplotlib darunter, also kannst du trotzdem die Matplotlib API verwenden. Um die Ausgabe zu erlauben, habe ich das Ausgabe-Skript geschrieben, das im Backtest-Verzeichnis lebt. Die Auflistung für das Skript ist wie folgt: Wie Sie sehen können, das Skript importiert Seaborn und öffnet die equity. csv Datei als Pandas DataFrame, dann erstellt einfach drei Subplots, jeweils eine für die Equity-Kurve, Returns und Drawdown. Beachten Sie, dass das Drawdown-Diagramm selbst tatsächlich aus einer Helper-Funktion berechnet wird, die in performanceperformance. py lebt. Die aus der Portfolio-Klasse am Ende eines Backtests aufgerufen wird. Ein Beispiel für die mitgelieferte MovingAverageCrossStrategy-Strategie auf einem zufällig generierten Satz von GBPUSD-Daten für den Monat Januar 2014 ergibt sich wie folgt: Insbesondere können Sie die flachen Abschnitte der Aktienkurve an den Wochenenden sehen, an denen keine Daten vorliegen Ist vorhanden (zumindest für diesen simulierten Datensatz). Darüber hinaus können Sie sehen, dass die Strategie einfach verliert Geld in einer eher vorhersagbaren Weise auf diesem zufällig simulierten Datensatz. Das ist ein guter Test des Systems. Wir versuchen einfach einen Trend zu einer zufällig generierten Zeitreihe zu verfolgen. Die Verluste treten aufgrund der im Simulationsprozess eingeführten festen Spread auf. Dies macht deutlich, dass wir, wenn wir einen gleichbleibenden Gewinn im Hochfrequenz-Devisenhandel machen wollen, eine spezifische quantifizierbare Kante benötigen, die über die Transaktionskosten wie die Ausbreitung und das Rutschen positive Erträge generiert. Wir werden noch viel mehr über diesen äußerst wichtigen Punkt in den folgenden Beiträgen des Forex Trading Diary sagen. Nächste Schritte Fixing Position Calculations Ive hatte vor kurzem eine sehr äußerst hilfreiche Korrespondenz mit QSForex-Benutzern über die Disqus-Kommentare und die QSForex Issues-Seite zur Korrektheit der Berechnungen innerhalb der Positionsklasse. Einige haben festgestellt, dass die Berechnungen nicht genau spiegeln können, wie OANDA (der Broker, der für das Trading. py-System verwendet wird) selbst Kreuzwährungs-Trades berechnen. Daher ist einer der wichtigsten nächsten Schritte, um diese vorgeschlagenen Änderungen in position. py tatsächlich zu machen und zu testen und auch die Unit-Tests zu aktualisieren, die in positiontest. py leben. Dies wird einen klopf-on-Effekt mit portfolio. py und auch portfoliotest. py haben. Leistungsmessung Während wir nun über die Eigenkapitalkurve einen Grundsatz visueller Leistungsindikatoren haben, geben wir Profil - und Drawdown-Serien zurück, benötigen wir mehr quantifizierte Performance-Maßnahmen. Insbesondere benötigen wir Strategie-Level-Metriken, einschließlich gemeinsamer Risiko-Rel-Ratios wie das Sharpe Ratio, Information Ratio und Sortino Ratio. Wir benötigen auch Drawdown-Statistiken, einschließlich der Verteilung der Drawdowns, sowie beschreibende Statistiken wie Maximum Drawdown. Weitere nützliche Kennzahlen sind die Compound Annual Growth Rate (CAGR) und die Gesamtrendite. Auf der Tradeposition Ebene wollen wir Metriken wie avg Profit, max Profit, Gewinn-Verhältnis und Winloss-Verhältnis zu sehen. Da wir die Positionsklasse als einen grundlegenden Teil der Software von Anfang an gebaut haben, sollte es nicht zu problematisch sein, diese Metriken über einige zusätzliche Methoden zu generieren. Mehr dazu im nächsten Eintrag, aber nur Getting Started mit quantitativen TradingScalping, Trading intraday e multiday o di posizione: quale conviene sul Forex Chi mi segue sa che sul Forex prediligo il Handel intraday sia allo skalping che al Handel di posizione o multiday. Cerco semper una über di mezzo pro nicht ritrovarmi con delle perdite aufeinanderfolgend o con un grado di stress emotivo troppo alto. Il Handel in scalping infatti comporta uno stress emotivo molto elevato, mentre il Handel di posizione o multiday comporta delle eventuali perdite troppo alte pro il mio modo di fare Handel. Tuttavia, mentre nel primo caso ich guadagni sono molto contenuti, ein volte troppo, e nel lungo periodo potrebbe und ist ein tuo sfavore. Nel secondo caso gli eventuali profitti sono davvero allettanti, ma le perdite Meglio nicht pensarci. E allora quale strada intraprendere Io ho scelto una über intermedia, quella del Handel intraday. Almeno per la maggior parte dei casi e con delle varianti Cosa significa Se hai seguito qualche mia operazione, hai visto che prendo un primo profitto abbastanza ravvicinato per poi lasciar correre il resto della posizione senza pi rischio, spostando lo stop al livello della mia entrata. A questo punto possono presentarsi 2 circostanze: lo stop proft viene toccato senza conseguenze, in quanto ho gi preso un piccolo profitto in scalping il prezzo continua ad und sind verso la mia direzione e sposto lo stop ogni volta che si forma una barra dinversione su un determinato Zeitrahmen, Fino ein Quando Lo Stop Gewinn nicht Viene toccato o fino ein quando nicht decido di chiudere il Handel. In questultimo caso pu signare che lascio aperto il handel anche per pi giorni infrasettimanali, trasformando quindi il Handel intraday im Handel multiday o di posizione. Ci comporta molti benefici, sia a livello emotivo che di profitti e puoi guadagnare molti punti senza pi entrare in posizione, ma semplicemente spostando lo stoppen Gewinn in Basis al movimento del prezzo. Ti faccio un esempio pratico Studio semper ich grafici ein Zeitrahmen pi ampio per fare unanalisi tecnica di pi lungo periodo. Questo perch poi posso trovare meglio una direzione profittevole filtrando le mie entführen su Zeitrahmen intraday. In modo da rischiare molto meno in termini di stop verlust Qualche giorno fa ho notato - con una tecnica di Handel di lungo periodo che ti mostrer pi avanti - una possibilit di und ist ein rialzo sul cambio euro dollaro. Quindi provo ad anticipare il movimento su Zeitrahmen intraday. Ho fatto un tentativo di entrata ein rialzo il 26 febbraio. Ho raggiunto il primo profitto ma poi sono stata stoppata nella notte senza alcuna perdita Il mio secondo tentativo di und ist ein rialzo avviene il 27 febbraio. Il mio primo obiettivo stato raggiunto e il prezzo finalmente continuato ad und ist verso la mia direzione. Sono stata molto fortunata perch ieri 27 febbraio c stato un disservizio di circa 2 ore del broker che utilizzavo, Oanda. Avevo inserito un ordine di vendita pro il mio primo Profitto e fortunatamente ha funzionato, al contrario dello stop che, quando sono riuscita ein rientrare, era stato cancellato. Quindi oggi 28 febbraio cerco di mediare ancora il Handel perch avevo visto unulteriore possibilit di rialzo e chiudo tutta la posizione in mattinata. Avrei potuto lasciarla aperta Nein, pro 2 motivi: non voglio pi rischiare che il mio stoppen Gewinn venga cancellato pro un disservizio del broker oggi venerd e nicht consigliabile lasciare aperti Handel durante il Wochenende sul Forex, Barsch allapertura potrebbero verificarsi dei Lücke. Perch conviene avere un approccio di questo genere Se guardi bene il grafico che ti ho postato ti rendi conto di quanto possa essere conveniente avere un approccio di lungo periodo, pur facendo Handel intraday. Restare in una posizione in Profitto pro pi giorni pu darti molte soddisfazioni sia in termini di guadagno che di entspannen mentale. Da luned si riparte con un altro broker con MT4. Ti weit comunque vedere lultimo video che ho effettuato con Oanda in settimana. Per il momento ti auguro un sereno Wochenende
Comments
Post a Comment