Dienstag, 16. April 2024, 16:46 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

1

Montag, 6. August 2007, 22:18

Historien: Daten konvertieren (HowTo - Anleitung)

Hallo zusammen

Wie viele hier vor mir bin ich mit der HS Entwicklung an einem Punkt angelangt, bei dem man möglichst umfangreiche Daten Historien benötigt. Um die eigenen Entwicklungen zu Backtesten.

Auch habe ich einige Threads im Forum gefunden, aber hier hat mir das gefehlt und dort jenes.

Darum stelle ich mal vor, welche Möglichkeit ich bisher gefunden habe zum Thema Daten konvertieren. Es schliessen sich danach meine offenen Punkte an, sowie die Frage, wie andere genau vorgehen. Vielleicht hilft es jemandem hier, oder ich selbst erhalte Hinweise, wie es leichter geht oder ich die ungelösten Probleme gebacken bekomme.

Ausgangslage:
* mein Eindruck bisher ist, dass das RTT Datenformat recht performant und platz-sparend arbeitet
* also möchte ich gerne irgendwelche Daten so aufbereiten, dass sie in RTT importiert werden können und anschliessend dauerhaft im
RTT Format zur Verfügung stehen
* würde ich die Daten Konvertierung je auf eine andere Weise für eine andere Software benötigen, so soll meine Arbeit bequem anpassbar wiederverwendbar sein
* die Quell-Daten sollen irgendeinem Anbieter entstammen, Hauptsache er liefert irgendwas textmässig lesbares als kleinstem gemeinsamen Nenner (ASCII, ANSI, CSV bla bla usw. usf.)
* die Daten sollen irgendeiner Zeitzone entstammen können (Moskau, New York, Singapur, egal)
* es sollen viele Dateien, ja Gigabyte-Weise, "in einem Rutsch" konvertiert werden, damit ich diese zeitaufwändige Aktion am Abend starten und das Resultat am nächsten Tag weiter verwenden kann
* die einzelnen Dateien sollen auf der Quell- wie auf der Zielseite beliebig gross sein können, nur beschränkt durch die Kapazität meiner Fest-Platten (und diese Grenze wird von der Industrie ja jeden Tag erweitert). Meine Methode soll beliebig damit Schritt halten!
* trotzdem wollte ich nicht meinen Doktor an dieser Aufgabe machen, kein riessen Programmpaket etwickeln

Um diese Aufgabe zu lösen, habe ich mich für ein sehr altes Konzept entschieden. Es stammt sogar aus den Anfängen der C-Urväter und der Unix Umwelt. Das Träger-Programm hat keinerlei Windows Oberfläche, dafür ist es klein, smart, und steht sogar kostenlos für Windoof Umgebungen zur Verfügung: es ist awk.

Wie kann es uns heute noch nützlich sein? Nun, es schafft alle Aufgaben sogar einfach und transparent, wie ich später zeigen werde. Alles was ich davor mit Excel & Co. versucht habe ist kläglich gescheitert an einer der Anforderungen (wie etwa "beliebig gross" ). Und alles war aufwändige manuelle Arbeit für jedes einzelne File. Das muss nicht sein!

Wie es geht, werde ich in Kürze hier posten, mit Schrit für Schritt Anleitung. Auch die Einschränkungen werde ich im einzelnen erwähnen, für die ich noch keine Lösung habe: vielleicht weiss ja jemand anders hier, wie man das dann machen könne.

Bis demnächst also.


Edit: wie immer, Typo
Gruss
Bernd

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »bernd« (6. August 2007, 22:33)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

2

Montag, 6. August 2007, 22:37

Hallo Berrnd,

eine klitzekleine Frage: Warum mietest Du keine Daten von einem Datenanbieter?
Happy Trading

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

3

Montag, 6. August 2007, 22:48

? Frage nicht verstanden

Ich wollte z.B. die Tenfore Historien kaufen für meine weiteren Tests - aber die haben keine RTT Daten. Aber Text-Formate. Billig wäre es auch nicht und vorher muss man es sowieso anpassen für RTT. Oder man wartet, bis Knöpfel Software eine RTT Anpassung vornimmt und es selbst anbietet. Lange wurde es mir versprochen, kommt aber nix.

Natürlich gibt es auch andere Daten / Tickdaten - aber anpassen muss man es am Ende doch. S&P eMini Tickdaten und andere Werte aus US z.B., wo kann ich das preiswert "mieten" passend für Investox? Woher bekomme ich APAC Werte? Ohne es in Investox als ASCII anschliessend langsam verarbeiten zu müssen und erst noch in der falschen Zeitzone? Rechner und Daten auf UTC, ja das wär mal ein Standard. Ist leider nicht in Sicht.

Also; was kannst Du mir raten, wie macht man's? Ich nehme gerne Hilfe an, spare Zeit.
Gruss
Bernd

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

4

Montag, 6. August 2007, 23:04

Es kommt darauf an wie lang die Historien sein sollen und welche Komprimierung sie haben? Bei L&P beispielsweise kann man gewisse Zeiträume nachladen-direkt im RTT Format! Das ist der einzige mir bekannte Anbieter der Historien in dem Umfang anbietet. Für ein 1-5 Minuten FDAX System sollte eine Historie von 3-6 Monaten dicke genügen. Bei 60 Minuten könnte es dann schon 1 Jahr sein. Jeder praktiziert das aber anders. Ich persönlich gehe davon aus, das man für Indikatoren Handelssysteme keine ultralangen Historien benötigt-aber das nur am Rande!
Happy Trading

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

5

Montag, 6. August 2007, 23:29

Hallo Udo

> Für ein 1-5 Minuten FDAX System sollte eine Historie von 3-6 Monaten dicke genügen.
Das hängt sicher auch mit der persönlichen Erfahrung zusammen. Deine reicht da sicher "Out-of-Sample" noch weiter zurück, so dass Du diese Aussage für Dich machen kannst.

Mir stehen keine solche Erfahrungen zur Verfügung, auch sagen andere HS-Entwickler, mit denen ich gesprochen habe, dass man längere Historien benötigt. Zumal die letzten 6 Monate Euphorie (ausser den letzten Tagen) möglicherweise nicht representativ sind für alle möglichen Börsen-Phasen?

Wie auch immer, ich handle keine europäischen Werte (man kann an meinen Postings im Forum sehen, dass TZ=CET nicht zu meinen Wach-Phasen
passt =) ) . USA oder APAC (Hongkong, Singapur, Tokyo) passt mir besser, solage ich in Europa lebe. Finde ich für diese Zonen bei L&P Tickdaten (unkomprimiert) über 10 bis 12 Jahre? Wenn nicht, wie machen andere das mit dem Datenbezug und anschliessend der Datenkonversion für Investox?

Wenn niemand eine Antwort hat, werde ich dieser Tage meine Lösung posten. In der Hoffnung auf eine rege Diskussion, was man noch besser machen könnte: ich präsentiere ja nicht den Königsweg, aber ich bin sicher, dass es ein guter Ansatz ist. Technisch gesehen. Was die Umsetzung in der Handels-Praxis angeht, bitte kommentieren. Nur so kann ich auch meine "schwächere Seite", die automatische Trading-Praxis verbessern :] Das war auch wie immer die Idee dieses Threads: ich gebe was und bekomme was. Desswegen vielen Dank für Deinen Input !!!
Gruss
Bernd

Rubelroller

unregistriert

6

Montag, 6. August 2007, 23:56

Zitat

Original von bernd
USA oder APAC (Hongkong, Singapur, Tokyo) passt mir besser, solage ich in Europa lebe. Finde ich für diese Zonen bei L&P Tickdaten (unkomprimiert) über 10 bis 12 Jahre?


Hallo Bernd,

nein, bekommst du nicht. Viele Titel sind ab 2002, viele noch jünger und die Daten sind auch von schlechter Qualität, sehr milde ausgedruckt (siehe Bild)
»Rubelroller« hat folgendes Bild angehängt:
  • fdax.jpg

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

7

Dienstag, 7. August 2007, 00:17

Hallo Bernd,

im Intradaychart hat man an einem einzigen Handelstag oftmals alle psychologischen Fakts beinhaltet. Der Trend (EOD) ist seit den letzten vier Jahren anhaltend. Wer ein EOD-HS lediglich über Jahre mit einem Trendfolger testet wird sehr gute Ergebnisse bekommen-testet aber leider zu 75% nur am Aufwärtstrend! Intraday gelten m.A. andere Gesetze! Die Phasen der Stimmungswechsel laufen im Zeitraffer aber immer wieder mit gleichen Rythmus. Man kann es nach langer Zeit der Rechereche beinahe auswendig aufsagen was passieren wird,wenn sich der Chart bzw. die Trader nach eine bestimmten Schema verhalten. Genau das herauszufinden zählt. Man kann ein System lt. Recherche oder einfach nach mathematischen Gesichtspunkten angehen. Programmiert man nach mathematischen Gesichtspunkten geht das nur über MM/RM weil man in der Regel keine Hintergrundwissen über das Verhalten des gewählten Underlyings hat! Daher könnten x Formen für das Entry zutreffen-oder auch nicht. Man kann nicht sagen wie lange das Entry funktioniert und wann die Power nachlässt. Daher muss man durch gezieltes MM/RM gegensteuern um nicht vorhandenen Gewinne zu verbrennen!

Wichtig ist das man LOWRisk Punkte findet-das heisst man sucht Entrys die ein gutes CRV bieten. Meist liegen diese Punkte an Support/Resistance Punkten POCs,Pivots,1-2-3 Formationen,klassischen Formationen usw. Dort steigt man ein und versucht einen mindestens 2:1 Trade.Die Levels bauen sich meist innerhalb eines Monats auf. Ältere Levels,so meinee Erfahrung, sind meist Schnee von gestern und verlieren mit zunehmenden Abstand bis dato an Wirkung!

Ich möchte aber keine Grundsatzdiskussion zu Entwicklerstrategien in Deinem Thread lostreten und jeder Entwickler hat sein eigenes (bewährtes) Schema. Wenn jemand der Meinung ist,das man 15 Jahre Tickdaten benötigt wird er wohl seine Meinung und Gründe haben. Ich habe eben für mich festgestellt, das es auch wesentlich kürzeren Historien zu guten Ergebnisse führen können....

Out of Sample- man nimmt an um so mehr Historie man zur Entwicklung hat desto länger behält das System seinen Wirkungsgrad. Aber ist es wirklich so? Ein System das viele Fakts beinhaltet entfernt sich immer weiter von den Nischen. Ob diese Entwicklung gut oder schlecht ist lasse ich dahingestellt! Ein noch wichtiger Punkt ist, was das System handeln soll und danachsollte man man auch die Länge der Historie festmachen. Bei Intermarkets kann die Historie nicht lang genug sein....

Was Deine "Exoten" anbelangt, kann ich leider nicht weiter helfen denn ich handel nicht in Singapur,China oder Tokio. Mir reicht schon Europa..;)
Happy Trading

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

8

Dienstag, 7. August 2007, 00:25

Hallo Juri,

das ist EOD? Die Spikes sind leider immer wieder ein übles Thema. Wenn man Tai Pan auf der Platte hat, kann man sie in der Datenbank selbst korrigieren. Ansonsten sende eine Mail an L&P! Meist wird es in kurzer Zeit korrigiert! Die Gefahr unsaubere Daten zu bekommen ist im Tickbereich hoch. Man kann nie sagen ob die Daten wirklich astrein sind oder nicht und oftmals bekommt man kein BID-ASK. Bei kurzfristigen Systeme ist BID-ASK aber die Essenz um herauszufinden, ob das HS so hätte handeln können oder nicht! Es nutzt nichts wenn von 10 Signalen 5 auf Leveln stattfanden die von BID-ASK niemals tangiert wurden denn dann hat man 5 Nieten der den Drift zwischen Realität und Schema verstärkt!
Happy Trading

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

9

Dienstag, 7. August 2007, 00:34

Hallo Udo

Zitat

Original von Udo
Ich möchte aber keine Grundsatzdiskussion zu Entwicklerstrategien in Deinem Thread lostreten und jeder Entwickler hat sein eigenes (bewährtes) Schema.

Das finde ich jetzt gar nicht schlimm, sondern wünschenswert. Es ist ja sachlich am Thema, und ich bin da sehr dankbar für! Ich habe noch gar nicht "mein Schema" gefunden, muss also Sachen ausprobieren. Sehr hilfreich sind solche Beobachtungen wie von Dir gepostet; probieren werde ich zwar trotzdem, was ich mir in den Kopf gesetzt habe - komme ich aber zu ähnlichen Schlussfolgerungen, dann kann ich den Versuch schneller abbrechen und schneller neue Ideen/Vorgehensweisen anpacken.

Hallo Juri

dieser Low Spike sieht wirklich nicht gut aus. Möglicherweise bekommt man das, wie Udo schreibt, gefixt durch ein Mail an den Datenanbieter. Oder man korrigiert es selbst - für den Backtest. Wie geht man damit um, wenn so ein Signal life hereinkommt, verhindert offensichtlich unsinnige Signale?
Gruss
Bernd

Rubelroller

unregistriert

10

Dienstag, 7. August 2007, 00:48

Hallo Udo,

das sind Tickdaten.

Hallo Bernd,

bevor ich mail schreibe und wieß Gott wie lange warte, lege ich die Hand selber an und lösche die ofensichtlich falsche Ticks. Für Backtest reicht das vollkommen. Auswirkung im Realhandel, so gut wie keine. Man wäre ausgestopt und dann wieder in die Position rein, da TP nur Datenlieferant ist würde alles zu z.B. IB Kursen abgerechnet.
Es gibt aber bei TP auch Kurse die für Backtest nichts taugen, Kurslücken Stunden-, Tage- oder sogar Wochenlang.

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

11

Dienstag, 7. August 2007, 01:45

So, hier die versprochene Anleitung, wie man Daten von einem (ASCII, CSV) Format in ein anderes bringt.

1) Natürlich gibt es beliebig viele Möglichkeiten mit fast beliebigen Programmiersprachen; für die Lösung in diesem Beispiel
benutzen wird gawk. Ich habe awk gewählt, weil es genau für Datenkonversionen konzipiert wurde. Man kann es für Windows z.B. hier herunter laden: http://www.klabaster.com/freeware.htm . Bitte darauf achten, dort wirklich gawk zu ziehen, nicht z.B. mawk; nur gawk hat die timestamp Versionen, die wir brauchen, im Bauch.

2) gawk.zip entpachen wir in ein beliebiges Verzeichnis, bei mir z.B. C:\apps\gawk

3) Nun gehen wir (Windows XP) in die Windows Systemsteuerung, wählen auf der linken Seite "Klassische Ansicht", gehen nach System / Erweitert (unter Vista: Erweiterte Systemeinstellungen) und drücken den Button "Umgebunsgvariablen". Dort fügen wir (als Benutzervariable) entweder die Variable Path hinzu mit dem Wert aus 2), also z.B. C:\apps\gawk , oder falls Path bereits existiert, hängen wir dem vorhandenen Wert dies an: ;C:\apps\gawk (das Simikolon ist wichtig beim anhängen).

4) Das Fenster nun mit OK bestätigen, ebenso das Systemeigenschaften Fenster auch mit OK verlassen

5) nun machen wir einen kleinen Test: Windows-Taste gedrückt halten und Taste R drücken: unter öffnen geben wir cmd ein (Enter). Auf dem nun sich öffnenden Command Prompt bitte mal gawk eingeben, es sollte die Hilfe-Anzeige von gawk angezeigt werden. Wenn nur eine Fehlermeldung kommt: zurück zu 1)

6) Im Folgenden gehe ich mal davon aus, dass die zu konvertierenden Daten (ASCII Datein) im Verzeichniss c:\temp\tickkonvert abgelegt sind mit der Endung .csv

7) Bitte das als Dateianhang gepostete Coding als Datei a2rtti.awk ins Verzeichnis c:\temp\tickkonvert abspeichern (der Name des .awk Scripts ist beliebig, aber im folgenden arbeite ich mal mit diesem Namen; a2rtti soll ein Mnemonik sein für Ascii to RTT Import, .awk erinnert uns auch Monate später noch daran, dass es sich um ein awk Script handelt) (im Dateianhang musste ich den Namen a2rtti.awk.txt verwenden, weil .awk Dateien nicht erlaubt sind im Forum ?!?, also beim Abspeichern nicht vergessen, aus a2rtti.awk.txt wieder a2rtti.awk zu machen)

8) Mit dem Notepad (bitte keinesfalls mit Word & Co.) öffnen wir das Script a2rtti.awk und passen gemäss den Kommentaren das Coding an die eigenen zu konvertierenden Daten an

9) nun öffnen wir erneut ein Command Fenster wie unter 5) beschrieben und bewegen uns mit dem Befehl cd \temp\tickkonvert dort hin

10) Jetzt rufen wir diesen Befehl auf: gawk -f a2rtti.awk *.csv - und einige Zeit später gibt es zusätzlich zu den .csv Dateien auch .rtt.txt Dateien, die man in RTT importieren kann (Titelauswahl, neuen Titel hinzufügen. Danach Verwaltung / Daten / Importieren und den Pfad zur jeweiligen .rtt.txt Datei eingeben)

Die derzeitigen Einschränkungen (z.B. Sommer/Winterzeit Umstellung bei verschiedenen Zeitzonen) sowei mögliche Lösungsansätze sind im Script-text dokumentiert.

Was mir noch nicht klar ist: falls die Eingabedaten gerollte, aber nicht adjustierte Daten sind, wie könnte man a) eine geeignete Adjustierung im Script vorsehen oder ist es möglich/besser dies b) später in Investox zu machen? Ich habe im Forum Threads gefunden über eine mit Investox angeblich mögliche Adjustierung aber keine Details, und die Investox Hilfe hat mir keine Treffer zum Begriff Adjustierung gezeigt.

Für die Umsetzung von 24GB .csv Daten braucht mein Rechner knapp 3 Stunden (AMD X2 3800+ auf 2GHz (keine Tuning Option aktiviert, kein Übertackten für diesen Test), 2GB RAM, 500GB Platte Samsung HD501LJ).

Viel Erfolg!
»bernd« hat folgende Datei angehängt:
  • a2rtti.awk.txt (3,52 kB - 589 mal heruntergeladen - zuletzt: 3. April 2024, 23:18)
Gruss
Bernd

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

12

Dienstag, 7. August 2007, 08:12

Oh, wieder wach heute morgen sehe ich, es gibt noch einen Fehler im Script a2rtti.awk:

Die Zeile mit NR == 1 {
muss so heissen: FNR = 1 {

... damit die Kopfzeile auf für jedes weitere File neu erzeugt wird.
Gruss
Bernd

winkel

unregistriert

13

Dienstag, 7. August 2007, 18:18

RTT Daten in CSV oder ASCII umwandeln

Hallo Bernd und alle anderen User,

besteht die Möglichkeit RTT-Daten in CSV oder ASCII zu konvertieren?

Grüße
Torsten

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

14

Dienstag, 7. August 2007, 18:24

RE: RTT Daten in CSV oder ASCII umwandeln

Hallo Torsten

Klar, in RTT selbst mit Export. Danach kannst Du sie mit meiner hier geposteten Scriptvorlage beliebig anpassen, um sie in eine andere Software zu importieren.


Ausserdem sehe ich bei mir einen Hang zur Legastenie (oder ist auch das wieder falsch: Legasthenie :D ): habe ja die Korrektur oben gepostet, nur ist die wieder nicht korrekt, man muss natürlich zwei Gelichheitszeichen schreiben, sonst ist's ja kein Vergleich sondern eine Zuweisung:

FNR == 1 {
Gruss
Bernd

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bernd« (7. August 2007, 18:35)


bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

15

Dienstag, 7. August 2007, 18:41

RE: RTT Daten in CSV oder ASCII umwandeln

Hallo Hans-Jürgen

Früher hätte man so ein kleines = statt == Fehlerchen schnell ausbessern können im ursprünglichen Posting. Heute, mit der neuen Policie nur noch eine Stunde ändern zu dürfen, muss man ja echt voll die Hosen runter lassen im Fehlerfall :fire: Das ist schon fast wie ein Audit-Protokoll jetzt ...

OK, kein Vorwurf, ich verstehe ja die Gründe. Aber es erscheint mir schon mühsam. Schöne neue Welt.
Gruss
Bernd

winkel

unregistriert

16

Mittwoch, 8. August 2007, 20:06

@ Bernd,

danke für den Tip, hatte diese Funktion bisher nicht genutzt.
Es funktioniert einwandfrei, die Datei ist um Welten Größer als die RTT-Datei.

Grüße
Torsten

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

17

Mittwoch, 8. August 2007, 21:40

Hallo Torsten

Stimmt, das RTT Format arbeitet platzsparend und Investox geht damit auch sonst resourcen-schonend und performant um.

Diese ASCII- und CSV Formate sind unangenehm gross, aber dafür kann man sie mit Tools wie awk beliebig "rumschubsen". Praktisch alle Programme können ASCII Im- und exportieren. Dazwischen muss man mit einem Konvertierungs-Script wie dem von mir geposteten Beispiel machmal "vermittelnd eingreifen".

Ich verwende solche Formate nur zum Austausch zwischen Programmen, und bearbeite sie nur in NTFS komprimierten Directories. So braucht während der Konversion eine Anzahl von 80 Dateien von z.B. 143 GB bei mir auf der Platte nur 23 GB. (siehe Eigenschaften auf dem Directory und der Unterschied zwischen "Grösse" und "Grösse auf dem Datenträger" ).

Wenn ich die Dateien mit awk nach RTT (oder von RTT in eine Form für ein anderes Programm) gebracht habe, so werden sie natürlich wieder gelöscht. Allenfalls wird die Ursprungs-Datei gezipt und auf DVDs gespeichert.
Gruss
Bernd

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

18

Mittwoch, 8. August 2007, 22:08

Noch ein Tipp, wie man schnell das Ergebniss einer Datenkonversion mit awk und einem eigenen Script begutachten kann: am Command Prompt in's Verzeichnis wechseln mit dem Befehl cd, und dann dort mit dem Befehl more die ersten Zeilen ansehen.

Das geht um Längen schneller, als die Datei in irgendeinen Editor laden, und meist sieht man an den ersten Zeilen, ob alles so ist wie es sein soll!
Gruss
Bernd