Ich brauche eine gute History-Datei für EURUSd - Seite 4

 

schnappi, natürlich ist die Methodik zur Erkennung (und eventuellen Beseitigung) von schlechten Ticks und Datenlücken selbst ein sich entwickelnder Prozess. Das Problem dabei ist, dass man den Datensatz dazu zwingt, den eigenen Vorstellungen und Erwartungen darüber zu entsprechen, wie die Preisdaten aussehen sollten, was für die eigentlichen statistischen Merkmale der Preisentwicklungsdynamik des Finanzinstruments repräsentativ sein kann oder auch nicht.

Schließlich ging meine Methode so weit, dass ich einfach verlange, dass die Daten mit den inhärenten Merkmalen des Finanzinstruments selbst konsistent sind (in dieser Diskussion geht es um Währungspaare, aber das gilt für alle Bereiche). In der Praxis bedeutet dies, dass ich eine Reihe von "bekannt guten Marktdaten" nehme und ihre Attribute robust charakterisiere: Zeitlücken, Preislücken usw. Daraus ergibt sich ein Profil der natürlichen/charakteristischen Preisentwicklung für das Währungspaar (das maklerspezifisch sein wird, da jeder Makler seine eigenen subtilen "Pump and Pulse"-Algorithmen hat, um den Preis-Feed "am Leben" zu halten).

Ausgestattet mit diesen Charakterisierungsdaten lasse ich das Skript dann die älteren, fragwürdigeren Zeiträume durchlaufen, wobei jeder Balken danach beurteilt wird, ob er statistisch mit der inhärenten Natur des Währungspaares übereinstimmt. Nehmen wir zum Beispiel an, wir beobachten, dass die Kurslücke zwischen aufeinanderfolgenden M1-Kerzen für den USDJPY im Allgemeinen <3 Pips beträgt. Das heißt, das Schlussgebot für Kerze N+1 liegt im Allgemeinen zwischen -3 und +3 Pips vom Eröffnungsgebot für Kerze N entfernt.

Dies ist eine einfach zu erstellende Metrik, für die Sie die Statistiken einfach analysieren und ein Histogramm erstellen können: (beachten Sie, dass ich speziell/absichtlich Preislücken ausschließe, die von Kerzenpaaren stammen, die selbst eine Zeitlücke zwischen ihnen für diese Phase der Charakterisierung haben)


Wenn Sie nun die historischen Daten für ein früheres Jahr, z. B. 2003, auswerten und Ihr Skript eine Kurslücke zwischen aufeinanderfolgenden Kerzen (keine Zeitlücke) feststellt, die weit außerhalb des statistisch konsistenten Bereichs liegt (für dieses Beispiel nehmen wir an, es wird eine Lücke von 50 Pips festgestellt), dann hat Ihr Skript Grund, die zu diesem Zeitpunkt ausgewerteten Kursdaten als verdächtig zu betrachten.

Was Sie mit Ihren verdächtigen Kerzen machen (die Behebungsphase), ist eine ganz andere Frage, aber hier ist ein Beispiel:


Bei der Bereinigung von Daten gibt es Gefahren und Fallstricke, die es zu vermeiden gilt. Sie können ungewollt mehr Schaden anrichten als Nutzen stiften, wenn Sie nicht darauf achten, wie Sie die Liste der verdächtigen Kerzen und deren Ersatz definieren (ich betrachte das einfache Löschen der Kerze aus dem hst-Datensatz ebenfalls als Ersatzpolitik, wobei in diesem Fall eine schlechte Preislücke durch eine künstliche Zeitlücke ersetzt wird).

 
Phillip, das ist interessant, aber es scheint mir zu riskant und zeitaufwändig zu sein. Ich ziehe es vor, Quellen zu verwenden, denen ich vertrauen kann, anstatt zu versuchen, Quellen zu "reparieren", denen ich nicht vertrauen kann...

Bezüglich dieser "verdächtigen" Kerzen. Viele Makler haben seltsame Preisspitzen aus verschiedenen Gründen. In Ihrem Beispiel oben, woher wissen Sie, dass es eine offensichtliche "schlechte Tick" Daten ist? Spikes wie das tun passieren...
 
gordon wrote >>
Phillip, das ist eine interessante Sache, aber sie erscheint mir zu riskant und zeitaufwändig. Ich ziehe es vor, Quellen zu verwenden, denen ich vertrauen kann, anstatt zu versuchen, Quellen zu 'reparieren', denen ich nicht vertrauen kann...

Bezüglich dieser "verdächtigen" Kerzen. Viele Makler haben seltsame Preisspitzen aus verschiedenen Gründen. In Ihrem Beispiel oben, woher wissen Sie, dass es eine offensichtliche "schlechte Tick" Daten ist? Spikes wie das tun passieren...


Re: woher wissen Sie, dass es eine offensichtliche "schlechte tick" Daten... in diesem Fall mit diesem Broker eine detaillierte Analyse von 3 + Jahre von Daten zeigte, dass eine solche Spitze nie aufgetreten, nicht einmal in über 1 Million Kerzen von Daten. Ockhams Rasiermesser... was ist wahrscheinlicher, dass um 04:29 Uhr am 2. August 1999 ein Spike auftrat: der Markt stieg um 60 Pips, die Kerze schloss auf dem Höchststand der Kerze, und gleich beim nächsten Tick, der den Eröffnungskurs der nächsten Kerze markierte, ging der Markt wieder um 50 Pips zurück, und die anschließende Marktaktivität hatte nicht mehr Volatilität als die Kerzen vor dem Spike? Oder dass diese spezielle Kerze einen falschen Tick enthält, der legitimerweise (mit Sicherheit) eliminiert werden kann?

Wie Sie aus dem ersten Diagramm in meinem obigen Beitrag ersehen können, ist die Häufigkeit eines Close-to-Open-Gaps von mehr als 4 Pips für dieses Paar gleich null. In diesem Fall fühlte ich mich wohl dabei, den 50-Punkte-Ausreißer als offensichtlichen Ausreißer zu bezeichnen und ihn aus meiner Kopie der historischen Handelsaufzeichnungen zu streichen.

Re: vertrauenswürdige Quellen versus Fixing... da man bei der Verwendung der MT4-Plattform keiner historischen Aufzeichnung für den Briefkurs trauen kann, ist der Gedanke, vertrauenswürdige versus nicht vertrauenswürdige historische Daten zu haben, meiner Meinung nach wirklich eine Frage des persönlichen Komforts. Es hängt natürlich von Ihrer spezifischen Handelsstrategie ab, in meinem Fall sind die genauen Einzelheiten der historischen Aufzeichnungen für meinen EA irrelevant. Wenn eine Handelsstrategie Präzision und Genauigkeit in den historischen Aufzeichnungen erfordert, um profitabel zu sein, dann wird sie wahrscheinlich für Short-Positionen in jedem Währungspaar nicht profitabel sein, da alle Briefkurse im Backtesting durch die Annahme eines festen Spreads (der historisch nicht genau oder repräsentativ für die tatsächlichen Marktbedingungen ist) fabriziert werden.

Wenn Sie also einen EA entwickeln wollen, der robust genug ist, um mit der Tatsache umzugehen, dass Briefkurse beim Backtesting erfunden werden, dann haben Sie wahrscheinlich einen EA entwickelt, der in der Lage ist, mit falschen/fehlerhaften Preisdaten in historischen Aufzeichnungen umzugehen. Ich könnte mich irren, es wäre nicht das erste Mal, aber meine Herangehensweise an historische Daten ist es, sie mit dem Ziel zu verwenden, meinen EA agnostisch zu machen.

 
1005phillip:


Re: woher wissen Sie, dass es eine offensichtliche "schlechte tick" Daten... in diesem Fall mit diesem Broker eine detaillierte Analyse von 3 + Jahre von Daten zeigte, dass eine solche Spitze nie aufgetreten, nicht einmal einmal, in über 1 Million Kerzen von Daten. Ockhams Rasiermesser... was ist wahrscheinlicher, dass um 04:29 Uhr am 2. August 1999 ein Spike auftrat: der Markt stieg um 60 Pips, die Kerze schloss auf dem Höchststand der Kerze, und gleich beim nächsten Tick, der den Eröffnungskurs der nächsten Kerze markierte, ging der Markt wieder um 50 Pips zurück, und die anschließende Marktaktivität hatte nicht mehr Volatilität als die Kerzen vor dem Spike? Oder dass diese spezielle Kerze einen irrtümlich schlechten Tick enthält, der rechtmäßig (mit Vertrauen) eliminiert werden kann?

Ok, aber das ist ein Extremfall. Was wäre, wenn es ~30 Pips wären und Sie 3 solcher Fälle in all den Jahren der Daten hätten. Wie können Sie dann wissen? MEIN Punkt ist, dass es Fälle geben wird, wo es nicht offensichtlich ist und man raten muss.


Re: vertrauenswürdige Quellen versus Fixing... da man bei der Verwendung der MT4-Plattform keiner historischen Aufzeichnung für den Briefkurs vertrauen kann, ist der Gedanke, vertrauenswürdige versus nicht vertrauenswürdige historische Daten zu haben, meiner Meinung nach wirklich eine Frage des persönlichen Komforts (...)

Aber das ist nicht der Punkt. Ich spreche von vertrauenswürdigen Quellen, die Sie einfach so verwenden können, wie sie sind und sich nicht die ganze Mühe machen müssen. Das Fehlen des Ask-Preises (fester Spread) im MT4-Tester hat damit nichts zu tun, da es sowohl schlechte als auch gute Quellen und feste Quellen betrifft... Es ist ein völlig separates Thema.

 

Phillip: Meiner Meinung nach ist das der richtige Weg. Ich denke, dass man schlechte Ticks recht sicher identifizieren kann, indem man die Kurssprünge in Kombination mit der nachfolgenden Volatilität analysiert. Wenn der Markt einen Kurssprung und keine abnormale Volatilität direkt auf dem nächsten M1-Balken zeigt, dann handelt es sich mit sehr hoher Wahrscheinlichkeit um einen schlechten Tick. Der Screenshot, den Sie oben zeigen, ist ein solches Beispiel.

Sie sind bereits auf das wichtigere Problem gestoßen: Schlechte Ticks zu definieren ist eine Sache - sie zu korrigieren eine andere. Meiner Meinung nach gibt es 2 Möglichkeiten, dies zu tun.

1.: Schlechte Ticks identifizieren und durch Raten beheben. Wenn es die Eröffnung ist, die plötzlich eine Lücke von +50 Pips aufweist, dann setzen Sie sie zurück auf sagen wir +3 Pips und so weiter. --> ist zwar nicht präzise, aber leicht zu implementieren
2.: Erkennen Sie schlechte Ticks und vergleichen Sie die Preise mit einem anderen Datenstrom. Dies wäre ein präziserer Weg - aber viel schwieriger zu implementieren.

 

Gordon, ich vermeide Vermutungen, indem ich mich auf die Statistiken selbst verlasse, um die Konsistenz der historischen Aufzeichnungen zu erzwingen. Ich glaube mich zu erinnern, dass Sie in einem anderen Beitrag erwähnt haben, dass Sie ein von fundamentalen Statistiken angetriebener Händler sind. Sie werden also verstehen, wovon ich spreche, wenn ich sage, dass die Prämisse darin besteht, die Kullback-Leibler-Divergenz zwischen dem verdächtigen Datensatz und dem bekannten guten Datensatz zu minimieren (was Sie als die "vertrauenswürdige Quelle" bezeichnen würden).

Nur im Fall von Devisen würden wir die verallgemeinerte Normalverteilung anstelle der normalen Gauß-Verteilung verwenden, da die Kurtosis der Finanzmärkte in der Regel größer als Null ist. Ich bezweifle, dass ich Ihnen irgendetwas Neues sage, aber ich erweitere nur die Prämisse meiner Methodik, um verdächtige Daten mit Vertrauen zu identifizieren und auszusondern (die statistische Art, nicht die Macho-Art ;)), damit Sie wissen, dass mein Auswahlkriterium nicht etwas so Simples (und Fehlerhaftes) ist wie das Setzen von Hoch-/Tief-Bandpassfiltern und das Durchstoßen der Daten.

Natürlich gibt es Annahmen bezüglich der Stationarität der Preisdaten des Finanzinstruments über den Zeitraum der "vertrauenswürdigen Quelle", wenn man sie als stochastischen Prozess behandelt. Aber wenn ich bereit bin, von meinen EA-Codes zu verlangen, dass sie ihre Aktivitäten auf Zeiträume mit gleichwertiger Stationarität in zukünftigen Zeitreihen beschränken, dann ist die Selbstkonsistenz dem Ansatz inhärent. Da die Länge der Daten der "vertrauenswürdigen Quelle" endlich ist, setzt sie eine Obergrenze für die Zeitspanne, in der wir erwarten können, dass vergangene zyklostationäre Prozesse, die in unserer Charakterisierung erfasst werden, in zukünftigen Zeitreihen dargestellt werden.

Es gibt jedoch noch einen übergeordneten Punkt, der hier hervorgehoben werden sollte, und ich denke, dass wir beide darin übereinstimmen, dass unabhängig von der "historischen Genauigkeit" der Daten oder der von den Daten repräsentierten Zeitspanne der Wert, der sich aus der Verwendung historischer Daten und dem Backtesting zur "Optimierung" einer Handelsstrategie ergibt, ausschließlich von der Person abhängt, die hinter der Tastatur sitzt und die Fragen kennt, die durch das Backtesting beantwortet werden müssen. Quantität ist nicht besser als Qualität. Weder die Länge der historischen Daten noch die Stunden, die damit verbracht werden, eine Optimierung durch iteratives Backtesting zu pauken, werden die Fragen beantworten, die beantwortet werden müssen, wenn die Frage nicht von vornherein gut definiert wurde. Wie lange haben Sie gebraucht, um zu erkennen, dass die Frage "Mit welchen Parametern erreiche ich maximale Gewinne oder einen minimalen Drawdown?" NICHT die Frage ist, die man durch Backtesting beantworten sollte :)

Schnappi, es kommt darauf an, was Sie erreichen wollen. Wollen Sie einen Datensatz, der umso mehr historisch korrekte Preisnuancen widerspiegelt, oder sind Sie an der Anzahl der Zeitreihen interessiert, über die Ihre Handelsauslöser und Ihr Money Management getestet werden? Es gibt keine falsche Antwort, denn natürlich geht jeder anders an den Markthandel heran. Ich persönlich verwende keine historischen Daten für lineare Zeitreihentests, und ich weiß, dass ich damit nicht alleine dastehe, aber ich gebe gerne zu, dass die Mehrheit der Leute das nicht tut. Ich verwende historische Daten, um die rohe statistische Natur zu extrahieren, die der Charakteristik eines Währungspaares zugrunde liegt (Lévy-Itō-Zerlegung), die ich dann verwende, um statistisch äquivalente, aber nicht identische Zeitreihen historischer Daten mit Hilfe von Monte-Carlo-Routinen zu erstellen. Dann führe ich Backtests mit diesen fabrizierten hst-Zeitreihen durch.(Dies ist keine leichte Lektüre, aber ich füge den Link bei, falls Sie ihn noch nicht kennen und ihn nachlesen möchten)

Genau wie bei der Wettervorhersage prognostiziert man das Wetter von morgen nicht, indem man sich darauf konzentriert, die heutigen und gestrigen Wetteraspekte mit immer höherer Präzision und Genauigkeit zu kennen, sondern man erstellt Modelle, die die inhärenten Statistiken der Entwicklung der Wettermetriken (Temperatur, Luftfeuchtigkeit, Luftdruck usw.) erfassen, und dann ändert man absichtlich die Ausgangsbedingungen und lässt das Monte Carlo-Programm in der Zeit vorwärts laufen, man macht das ein paar tausend Mal und mittelt die Ergebnisse (im Geiste, die tatsächlichen Details sind natürlich komplizierter), und das bildet die Grundlage für die morgige Vorhersage "Tiefstwerte in den mittleren 30er Jahren und Höchstwerte in den oberen 60er Jahren".

Wenn Sie auf die Idee kommen, schlechte Ticks aus älteren historischen Daten herauszufiltern, weil Sie einfach 10 Jahre anstelle von 3 Jahren backtesten wollen, dann möchte ich Sie nur darauf hinweisen, dass Sie möglicherweise dem Trugschluss verfallen, dass Quantität die Qualität bestimmt. Das habe ich auch einmal erlebt und bin eine Zeit lang dort hängen geblieben. Ich war überzeugt, dass meine Verlustcodes zu Gewinnern werden würden/könnten, wenn ich nur mehr historische Daten hätte, um den Backtest zu optimieren. Vielleicht stellt sich heraus, dass es für einige wahr ist und dass ein längerer Backtest wirklich den Trick für ihre Forward-Testing-Gewinne ausmacht, aber für mich stellte sich heraus, dass es nur Narrengold war (und eine Menge verschwendete Zeit).

Wenn Sie längere historische Aufzeichnungen wünschen, weil Sie Autokorrelationsfunktionen und Ähnliches verwenden, dann sollten Sie Ihre eigenen Reihen virtueller/synthetischer Preisdaten erstellen, um Ihre Verriegelungen und Phasenverriegelungen zu verbessern, denn dann können Sie die Robustheit der Verriegelungsprotokolle direkt über die Art und Weise steuern, wie Sie die Zeitreihen überhaupt erst erstellen.

Ich behaupte nicht, die richtigen Antworten zu haben, ich sage nur, wenn wir nicht von vornherein mit den richtigen Fragen beginnen, können wir nicht darauf hoffen, dass die Antworten für unser Gesamtziel (vermutlich Gewinne) von Nutzen sind.

 
Ja, ich kenne diese Begriffe, aber hauptsächlich auf theoretischer Ebene. Mein Hintergrund ist eigentlich Hardwaretechnik und ich beschäftige mich erst seit etwas mehr als einem Jahr mit statistischen Algorithmen. Bei meinen aktuellen Projekten arbeite ich mit einigen Mathematikern zusammen, so dass der Großteil der theoretischen Arbeit von ihnen geleistet wird. Ich bin sicher, dass sie diese Themen besser mit Ihnen besprechen können :). Trotzdem ist das Thema faszinierend. Ich erinnere mich, dass das Thema der fabrizierten Geschichte vor ein paar Monaten aufkam, aber wir sind nie dazu gekommen, es zu behandeln. Ich teste immer noch die "echte" Geschichte... (aus einer "vertrauenswürdigen" Quelle).
 
Phillip: Zunächst einmal vielen Dank für diese Einblicke.
Sie sagen, Sie extrahieren die statistischen Merkmale eines Marktes und erstellen dann synthetische Marktdaten und führen Monte-Carlo-Simulationen mit diesen Daten durch. Das ist äußerst interessant, aber leider übersteigt das meine Fähigkeiten. Ich habe begonnen, die beiden von Ihnen geposteten Links zu lesen, aber ich muss sagen, dass ich sie nicht verstehe. Ich habe zwar einen universitären Hintergrund, aber nicht in Mathematik oder etwas Ähnlichem. Meine Herangehensweise ist eher, sagen wir mal, "praxisorientiert" - zumindest aus der Sicht eines diskretionären Händlers. Wirklich traurig. Ihr bietet wahrscheinlich keine Praktika an, oder?

Ich bin mir dieser, wie Sie es nannten, "Quantität treibt Qualität-Fehlschluss" bewusst - da ich auch schon viel Zeit verloren habe, als ich an diesem Punkt feststeckte. Obwohl ich nicht sagen würde, dass ich diese Zeit vergeudet hätte, aber das ist ein anderer Punkt. Nein, der Grund, warum ich in diese Diskussion eingestiegen bin, ist, dass ich im Moment meinen Entwicklungsprozess selbst verbessere. Ich werde zusätzliche Daten beschaffen, um meine Möglichkeiten zu erweitern. Wir arbeiten auch an einer Lösung zur Automatisierung von Backtests mit MT und so weiter.
 

schnappi Ich habe gerade deinen Beitrag gesehen. Ich kann deine Meinung gut nachvollziehen und stimme dir zu, dass es auf den ersten Blick ziemlich komplex erscheint (es ist sicher nicht einfach), aber lass dir niemals das Gefühl geben, dass du es nicht irgendwann in der nahen Zukunft aus eigener Kraft schaffen kannst. Sie brauchen keinen Universitätsabschluss, um diese Dinge zu verstehen und anzuwenden, Sie brauchen nur die Zeit, die Hingabe und den persönlichen Antrieb, um dranzubleiben, und Sie werden die Themen unweigerlich meistern.

Es ist hilfreich, sich mit einigen Begriffen und Themen vertraut zu machen, die in der bestehenden professionellen Investment-Finanzbranche verwendet werden, um die Lernkurve zu verkürzen. Ich wäre nicht da, wo ich jetzt bin, wenn nicht andere vor mir mir ihre Schultern angeboten hätten, auf denen ich stehen kann.

Wir "hausgemachten" Quantenhändler haben alle viel gemeinsam, unsere Hintergründe sind extrem unterschiedlich und nicht viele von uns haben eine höhere Ausbildung im Finanzwesen oder in der Programmierung, aber was uns an formaler Bildung fehlt, wollen wir mit Hartnäckigkeit und Ehrgeiz wettmachen. Bei Thomas Edison hat es funktioniert... zugegebenermaßen nicht das beste Beispiel aus ethisch-moralischer Sicht, aber sein Beispiel mit den 10.000 Glühbirnen-Prototypen ist die Moral von der Geschicht.

Sie werden erkennen, und vielleicht haben Sie das auch schon, dass Ihr persönlicher Fortschritt iterativer Natur ist. Sie lernen mehr über Codierungstechniken und Ihre Codes werden ausgefeilter, Sie lernen mehr über Handelsstrategien, die in der Vergangenheit funktioniert haben und die nicht funktioniert haben, und Sie verfeinern Ihre eigenen Strategien ein wenig, Sie lernen etwas über Risikomanagement und Risikomessung und Sie beginnen, sich mit Ihrem Risiko des Ruins auf eine Art und Weise auseinanderzusetzen, von der Sie gar nicht wussten, dass Sie sie überhaupt brauchen.

Und nur weil mein Ansatz scheinbar komplex ist, bedeutet das nicht, dass die Komplexität eine Notwendigkeit ist... weitaus einfachere und weniger komplexe Ansätze könnten in jeder Hinsicht überlegen sein... ich bin nur noch nicht schlau genug, um herauszufinden, wie. Es gibt eine Menge töricht komplexer Methoden, eine Glühbirne herzustellen, und komplexere Methoden sind keine Garantie für eine bessere Glühbirne.

Lassen Sie sich also nicht abschrecken, wenn Sie die Komplexität bzw. Einfachheit Ihres Ansatzes mit der mangelnden Komplexität meines Ansatzes vergleichen... Sie könnten durchaus auf dem richtigen Weg sein, während ich auf dem falschen Fuß stehe.

 

1005phillip: 2010.03.17 18:38

Dieses(beigefügte mq4-Skript) verwende ich, um die Arbeit zu erledigen. Es ist nicht schön (der Code) und könnte etwas aufgeräumt und die sich wiederholenden "Wenns" für Schalter usw. ausgetauscht werden.

Hinweis: Die Öffnungszeiten der W1-Kerze werden automatisch auf den ersten Tag der Handelswoche (Montag) und die Öffnungszeiten der MN-Kerze automatisch auf den ersten Handelstag des neuen Monats ausgerichtet.
Dieses Skript ist fehlerhaft. Der erste Tag der Handelswoche ist Sonntag (2200z) und nicht Montag. Und es behandelt keine Feiertage am Freitag oder Montag. Einfache Lösung:
      time0=Time[i];
//    if((TimeDayOfWeek(time0)==1 && TimeDayOfWeek(Time[i+1])==5) || i==0)
      if (TimeDayOfWeek(time0) < TimeDayOfWeek(Time[i+1])         || i==0)
Grund der Beschwerde: