Forex1+ Posted April 23, 2017 Report Share Posted April 23, 2017 Hallo,hiermit eröffne ich mal ein Thread rund um das Thema Datum und Zeit und wie damit Systemtrader beim Programmieren umgehen.Zwei Aspekte sind, in welchem Format liegt die Zeit vor und wie verarbeite ich es zum Abgleich zwischen Zeitpunkten oder die Ermittlung gewisser Zeitspannen, Wochentage oder sonstigen Zeitfiltern.Meißt liegt die Zeit in den Historys im Timestamp Format YYYYMMDDHHMMSS(NNN) vor.Intern in den Codes wird aber meißt die Unixzeit für die Filter verwendet.Das finde ich irgendwie naja komisch denn das Timestampformat der History muss zuerst in Unixzeit umgerechnet werden. Und dann um aus der Unixzeit Wochentage, Stunden und weiteres rauszuholen bedarf es einer Zeitstruktur um die Komponenten für den gregorianischen Kalender zu erhalten (in zb cpp struct tm). Um Filter zu bauen kommen schon ansatzweise komplexe Funktionen dabei raus um die gewünschten Abfragen durchzuführen.Interessanterweise wird in Tradingbüchern zur Entwicklung automatisierter Systeme so gut wie nicht auf das Thema eingegangen.Die Umwandlungen führen natürlich zu einer Performancebremse, nicht im Livetrading aber schon deutlich spürbar im Backtesting. Da drängt sich mir der Gedanke auf, wieso die Zeit nicht in effektiverer Form zur Verfügung stellen, sodass die Filter einfacher gestaltet werden können. Ohne permanente Umwandlungen von Unixzeit zu den Infos aus dem gregorianischen Kalender wäre es schneller aber man erkauft sich diesen Vorteil evt. durch mehr Speicherverbrauch.Jetzt würde mich interessieren wie andere Systemtrader damit umgehen oder dazu sagen? Es sollte doch nicht sein das die Timestampverarbeitung und Zeitfilter so einen Flaschenhals erzeugen.Grüße 1 Quote Link to comment Share on other sites More sharing options...
Rumpel Posted April 23, 2017 Report Share Posted April 23, 2017 Welchen Vorteil bietet dir denn das YYYYMMDDHHMMSS(NNN)-Format? Keinen. Bis darauf dass du es leichter lesen kannst. Du kannst damit absolut nicht rechnen. Quote Link to comment Share on other sites More sharing options...
Forex1+ Posted April 23, 2017 Author Report Share Posted April 23, 2017 Der Vorteil ist, dass die Daten in dem Format vorliegen wie sie auch verarbeitet werden.Ein Filter der Trades nur von 9-17 Uhr zulässt braucht dann nur die Abfrage if((Stunde>=9)&&(Stunde<17) und fertig. Stunde dann zb als char in einem Struct.Per Unixzeit wird die if Abfrage wesentlich komplexer da erst die Stunde aus den Unixsekunden ermittelt werden muss und dieser Vorgang braucht Zeit zumindest in cpp deutlich spürbar wie ich festgestellt habe. Quote Link to comment Share on other sites More sharing options...
conglom-o Posted April 24, 2017 Report Share Posted April 24, 2017 Ich habe aktuell das "größere" Problem, dass mitunter nicht klar ist in welchem Zeitformat / welcher Zeitzone Daten vorliegen. Bisher habe ich meine Daten immer von forextester.com gezogen aber die scheinen die Datenquelle geändert zu haben so dass es eben nicht mehr GMT Daten sind sondern sich die Zeitzone innerhalb der Daten verändert hat. Das ist natürlich großer Mist. Wenn jemand also vernünftige Forex M1 Daten hat freue ich mich über einen Hinweis. Quote Link to comment Share on other sites More sharing options...
oldschuren Posted April 24, 2017 Report Share Posted April 24, 2017 Schon mal bei Dukascopy nachgeschaut? Scheint was zu sein wenn man Kunde bei denen ist...https://www.dukascopy.com/swiss/deutsch/marketwatch/historical/ Quote Link to comment Share on other sites More sharing options...
Rumpel Posted April 24, 2017 Report Share Posted April 24, 2017 Ein Filter der Trades nur von 9-17 Uhr zulässt braucht dann nur die Abfrage if((Stunde>=9)&&(Stunde Ja, das ist natürlich ein sehr idealisiertes Beispiel.Jetzt schreib mal sowas wie: "Gib mir alle Werte der letzten 2 Wochen zurück". Das machst du weil du zB. einen Indikator draus bauen willst oder so. Quote Link to comment Share on other sites More sharing options...
Forex1+ Posted April 24, 2017 Author Report Share Posted April 24, 2017 Ja, das ist natürlich ein sehr idealisiertes Beispiel.Jetzt schreib mal sowas wie: "Gib mir alle Werte der letzten 2 Wochen zurück". Das machst du weil du zB. einen Indikator draus bauen willst oder so. Ich würde die Periode des Indikators so einstellen das sie entsprechend der gewählten Zeiteinheit dem Zeitraum entspricht. Der Zeitraum ergibt sich aus der gewählten Periode und der Zeiteinheit der Kerzen.Es gibt sicher auch den Usecase, wo es mit der Unixzeit besser klappt. Für mich ist meistens interessant welcher Wochentag und welche Zeitspanne von Stunden am Tag daher die Präferenz diese Werte direkt vorliegen zu haben. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.