Jump to content


Photo
- - - - -

performante Simulation


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.

  • Please log in to reply
20 replies to this topic

#1 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 18 February 2017 - 03:56 PM

Hallo,

 

ist jemanden in etwa bekannt wie die schnellen Plattformen wie z.B. Amibroker beim Backtest die Historydaten von der Platte dem System bereitstellen? Entgegen zu EOD Tests ist es bei Tick/M1 nicht wirklich möglich den kompletten Datensatz in den Ram vorzuladen (kann mehrere GB groß sein), daher würde mich mal interessieren wie der Datenbezug von der Platte in die Systemlogik dennoch performant von statten gehen kann?

 

Viele Grüße


  • 0
It's a losing game, without passion !

Thanked by 4 Members:
ajkonly , Vola , whipsaw , chimbonda

#2 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 19 February 2017 - 04:01 PM

Ich kenne es nur von MT4, da wird für die Ticksimulation eine große Datei erzeugt die dann vermutlich durchgeschleift wird. MT4 ist aber sicher nicht so das beste Beispiel für sowas. Eine DB auf einer SSD durchzuschleifen ist sicher schon nicht schlecht aber vom Ram ist eben doch noch was anderes.


  • 0
It's a losing game, without passion !

Thanked by 3 Members:
ajkonly , Vola , chimbonda

#3 Mythos

Mythos

    TEFEx CEO

  • Moderatoren
  • 3,478 posts
  • 16699 thanks

Posted 19 February 2017 - 05:16 PM

Ich stell ehrlicherweise das "Tickdaten gehen sich im Ram nicht aus" infrage:

Effizient gespeichert hat ein Tick ja nur tstamp (4Byte?) und Wert (reichen sicher auch 4Byte), ggf. noch aktuellen Spread (2Byte?).

Sprich 10 Byte pro Tick. Hab leider nur MT Daten zur Verfügung, aber es sieht aus als hätte man < 4Mio Ticks pro Monat -> 40MB pro Monat: effizient gespeichert hast bissl über 2 Jahre an Tickdaten in 1 GB.

Mit 8GB Ram und Standardsystem (konkret: mein standardsystem Win10) hab ich gerade 5GB Ram frei -> also bis zu 10 Jahre Tickdaten gehen sich leicht aus, wenn man bedenkt das ich grad fast bei jedem Schritt Buffer eingebaut hab. Und selbst wenn du 20 Byte pro Tick brauchst, hast noch 5 Jahre. Ein Backtest über mehr als 5 Jahre am Stück klingt eh stark nach überoptimierung...

 

Aber zum Thema: SSD liefert AFAIK ~250MB/s oder mehr -> also effizient gespeichert 25 Mio Ticks. Du müsstest also jeden Tick in durchschn. 0,04 ns abarbeiten. Ein durchschnittlicher PC schafft ein paar Giga FLOPS aber die hast ja nicht alle zur Verfügung. Sprich ich würde vermuten das effizient gespeichert mit SSD die Lesegeschwindigkeit nicht dein Flaschenhals is. Vor allem weil fraglich is wieso dir 4 GB Tickdaten nicht reichen ;)


  • 3

Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.

Einstein


Es ist nicht deine Schuld, das die Welt ist wie sie ist. Es wär nur deine Schuld wenn sie so bleibt.


Thanked by 7 Members:
Kleinerbroker , ajkonly , Vola , Rumpel , whipsaw , Forex1+ , chimbonda

#4 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 20 February 2017 - 12:14 AM

Je nachdem was das System so als Futter braucht, würden auch noch die OHLC Zeitcharts dazukommen aber dessen Liste ist, je höher der TF, auch viel kleiner als bei den Ticks. Wo es eng wird ist allerdings beim Multithreading wenn gleichzeitig und unabhängig die Daten im Ram bereit gestellt werden müssen. Was du zur SSD schreibst hab ich bisher nicht so betrachtet und find ich gut. Es wäre natürlich optimal gar keine Zwischenschicht zu bilden denn dann kann man sich das Gebastel mit dem Zwischenladen in den RAM sparen und alle Charts direkt aus der DB heraus beziehen. Man müsste es einfach mal testen. Vielleicht machen es die großen Plattformen auch nicht anders als Tabellen von der Platte zu iterieren. Allerdings selbst die Portfoliochecks sind echt schnell und das auch bei HDDs. Das war ja auch der Grund warum ich dachte, dass die ein bestimmten Trick zum durchschleifen nutzen auf den ich noch nicht gekommen bin.


  • 0
It's a losing game, without passion !

Thanked by 2 Members:
Vola , whipsaw

#5 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 20 February 2017 - 02:51 AM

Wenn man sich RAM vs SSD nochmal näher anschaut (Link) muss man schon deutlich feststellen das zwar SSD im Vergleich zu HDD einen großen Sprung gemacht hat aber RAM ist nochmal eine ganz andere Welt. Zugriffszeit Faktor ca 1550, lesen-MB/s Faktor ca 100 im Vergleich zu SSD. Daher würde ich schon sagen der Flaschenhals ist weiterhin die Festplatte/SSD (oder die Systemlogik wenn man damit übertreibt).


Edited by Forex1+, 20 February 2017 - 02:53 AM.

  • 0
It's a losing game, without passion !

Thanked by 3 Members:
Vola , Rumpel , whipsaw

#6 Mythos

Mythos

    TEFEx CEO

  • Moderatoren
  • 3,478 posts
  • 16699 thanks

Posted 21 February 2017 - 09:48 PM

Multithreading seh ich nicht als problem. Wenn die Daten im RAM sind, kannst ja parallel lesend darauf zugreifen ohne Probleme.

Also wenn du 2 Jahre Tickdaten (~1GB) im RAM hast, dazu noch OHLC (inkl. Volume = 6*4Byte ... sagen wir 30) für M1 für 2 Jahre (= ~750K Minuten -> 22.5 MB)... mit 1.5 GB RAM hast Daten für 2 Jahre inkl. beliebigem Overhead.

 

Deswegen: ich glaub nicht das es notwendig ist während dem Test auf die Platte zuzugreifen. Außer du willst 10 Jahre Tickdaten testen...


  • 0

Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.

Einstein


Es ist nicht deine Schuld, das die Welt ist wie sie ist. Es wär nur deine Schuld wenn sie so bleibt.


Thanked by 5 Members:
whipsaw , Vola , Forex1+ , oldschuren , Rumpel

#7 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 21 February 2017 - 11:50 PM

Auf einem Underlying geht das wirklich gut das stimmt. Mit dem Threading bezog sich auf Portfoliotests wo es dann viele unterschiedliche Quellen gäbe. Aber bis dahin hab ich sowieso noch genug andere Baustellen grin.gif


  • 0
It's a losing game, without passion !

Thanked by 5 Members:
whipsaw , chimbonda , Vola , oldschuren , Rumpel

#8 Mythos

Mythos

    TEFEx CEO

  • Moderatoren
  • 3,478 posts
  • 16699 thanks

Posted 22 February 2017 - 07:52 AM

Hmm ok, dann wirds sicher eng. Portfoliosystem das auf Tick-daten beruht und 10 Underlyings parallel betrachtet wird eng im RAM...white_flag.gif

Aber wenn du solche Systeme baust macht eine entsprechende Maschine Sinn. Da hast dann auch schnell 20 GB RAM frei und du bist wieder save loungelizard.gif


  • 0

Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.

Einstein


Es ist nicht deine Schuld, das die Welt ist wie sie ist. Es wär nur deine Schuld wenn sie so bleibt.


Thanked by 4 Members:
whipsaw , Forex1+ , Vola , oldschuren

#9 joshsmi

joshsmi

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 346 posts
  • 1647 thanks

Posted 22 February 2017 - 07:45 PM

Entgegen zu EOD Tests ist es bei Tick/M1 nicht wirklich möglich den kompletten Datensatz in den Ram vorzuladen (kann mehrere GB groß sein)


Unsinn. Das einzige Limit ist deine Hardware und dein OS.

Du musst 64-bit und nicht 32-bit verwenden! 32-bit Betriebssystem hat eine Grenze von effektiv nutzbarem Arbeitspeicher.
Somit einfache Lösung: 64-bit OS und 64-bit AmiBroker - max. 1 TERABYTE.
Siehe "Adressable memory space"
http://www.amibroker...ide/compat.html

Edited by joshsmi, 22 February 2017 - 07:47 PM.

  • 0

Thanked by 1 Member:
whipsaw

#10 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 23 February 2017 - 01:06 AM

Klar mit genügend teurer Hardware kann man das hinbekommen (was für Singletests, wie Mythos vorgerechnet hat, nicht mal nötig wäre). Mal vom Preis abgesehen müssen die Motherboards das auch erst mal unterstützen.

32bit schafft natürlich Limits und 2038 gibts dann auch noch time-Probleme.

Das Aufrüsten von RAM macht sicher mehr Sinn als komplizierte und langsameren Notlösungen zu basteln auch wenn hier praktische Limits durch Preis oder Motherboard gesetzt sind.

 

Aber für den interessierten User wie mich war die spannende Frage, was machen Amibroker oder Kollegen wenn zu wenig Ram zur Verfügung steht, dass es zum Vorladen nicht reichen kann? Die kommerziellen Plattformen müssen so programmieren, dass es kompatibel mit vielen Computern unterschiedlicher Ausstattung ist.

Die Mindestanforderungen sind z.B. bei Amibroker sehr genügsam mit 128 MB RAM, empfohlen 512 MB RAM. Also kann man davon ausgehen, dass das Programm mit 128 MB noch funktionsfähig wäre. Und man kann davon ausgehen, dass 128 MB für einen Test mit fein skalierten Daten wie Tick oder eben worstcase Portfolio, nicht reicht um es vorzuladen.

Entweder dieser Fall wurde von den Proggern komplett ignoriert und man verlässt sich auf das OS welches den Speicher auf die Festplatte auslagert (pragmatisch aber langsam), oder die Daten werden dann direkt (oder werden sowieso) von der Platte gezogen.


  • 0
It's a losing game, without passion !

Thanked by 2 Members:
whipsaw , Vola

#11 Mythos

Mythos

    TEFEx CEO

  • Moderatoren
  • 3,478 posts
  • 16699 thanks

Posted 23 February 2017 - 10:36 PM

Unsinn. Das einzige Limit ist deine Hardware und dein OS.

Du musst 64-bit und nicht 32-bit verwenden! 32-bit Betriebssystem hat eine Grenze von effektiv nutzbarem Arbeitspeicher.
Somit einfache Lösung: 64-bit OS und 64-bit AmiBroker - max. 1 TERABYTE.
Siehe "Adressable memory space"
http://www.amibroker...ide/compat.html

 

Wenn du so entspannt postest gleich die direkte Antwort: Zeig mir einen Rechner für Endkunden mit 1 TB RAM. Kannst vermutlich sogar das "Endkunden" streichen: Zeig mir einen Rechner mit 1 TB RAM.

 

Aber für den interessierten User wie mich war die spannende Frage, was machen Amibroker oder Kollegen wenn zu wenig Ram zur Verfügung steht,

 

Ohne es zu testen kann man nur vermuten. Wie du schon sagst ist die einfachste Form für den Programmierer es dem System zu überlassen und ggf. ein "Nicht genug Arbeitsspeicher zur Verfügung" zu melden. Ehrlicherweise kann ich mir gut vorstellen das 90% der Programme diese Lösung umsetzt. Nach dem Motto "Wenn du einen 2 Jahresbacktest auf Tickdaten fahren willst, bau entsprechend RAM ein".

Vorher zu checken wieviel RAM verfügbar ist und entsprechend auf Alternativen umschichten rentiert sich für die meisten Programme vermutlich einfach nicht (Also was jetzt die Kosten-Nutzenrechnung im Entwicklungsaufwand angeht).


  • 0

Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.

Einstein


Es ist nicht deine Schuld, das die Welt ist wie sie ist. Es wär nur deine Schuld wenn sie so bleibt.


Thanked by 4 Members:
whipsaw , Forex1+ , chimbonda , Vola

#12 Vola

Vola

    Nur noch Pivot Cluster Traderin

  • *_skilled
  • 6,237 posts
  • 36768 thanks
  • Wohnsitz:aktuell in CH

Posted 24 February 2017 - 10:41 AM

Für den Endkunden und Amibroker Fan.....

http://gizmodo.com/5...ores-1tb-of-ram

 

Ist von 2009, sollte also schon günstiger zu haben sein....


  • 0

Gruß Vola
Ich zähle lieber bis 4
Alle von mir gemachten Aussagen und Antworten auf Fragen entsprechen lediglich meiner persönlichen Meinung und stellen keinerlei Rechts- und Anlageberatung oder ähnliches dar


Thanked by 3 Members:
whipsaw , Forex1+ , chimbonda

#13 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 24 February 2017 - 12:25 PM

Ich vermute für den Preis gibts nur die Basisversion sonst wäre es schon fast günstig. Eine Stromflatrate bräuchte man dann noch... mocking.gif


  • 0
It's a losing game, without passion !

Thanked by 3 Members:
Vola , whipsaw , chimbonda

#14 Mythos

Mythos

    TEFEx CEO

  • Moderatoren
  • 3,478 posts
  • 16699 thanks

Posted 25 February 2017 - 04:55 PM

white_flag.gif Ich kenn mich jetzt nicht mit Supercomputern aus: läuft auf dem ein Standard-OS? Ich meine rein theoretisch: welche Schritte wären nötig um darauf zB Amibroker laufen zu lassen?


  • 0

Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.

Einstein


Es ist nicht deine Schuld, das die Welt ist wie sie ist. Es wär nur deine Schuld wenn sie so bleibt.


Thanked by 5 Members:
Vola , oldschuren , chimbonda , whipsaw , Rumpel

#15 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 26 February 2017 - 12:27 PM

Standard-OS eher nicht:

Octane III supports Microsoft HPC Server 2008, SUSE® Linux® Enterprise Server and Red Hat® Enterprise Linux operating systems. Linux configurations include SGI ProPack™ and ISLE™ cluster management software.

https://www.sgi.com/.../octaneIII.html

http://www.designspa...-octane-III.pdf


  • 0
It's a losing game, without passion !

Thanked by 3 Members:
whipsaw , Vola , oldschuren

#16 Mythos

Mythos

    TEFEx CEO

  • Moderatoren
  • 3,478 posts
  • 16699 thanks

Posted 26 February 2017 - 04:41 PM

Dann besser back to topic ;) Sofern wir keinen Entwickler von Amibroker etc. finden wirds wohl ne offene Frage bleiben :/


  • 0

Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.

Einstein


Es ist nicht deine Schuld, das die Welt ist wie sie ist. Es wär nur deine Schuld wenn sie so bleibt.


Thanked by 4 Members:
whipsaw , Vola , oldschuren , Forex1+

#17 Rumpel

Rumpel

    Floor Broker

  • *_skilled
  • 1,344 posts
  • 7638 thanks

Posted 26 February 2017 - 09:11 PM

Naja, aber wieso schaut denn keiner nach was der Bottleneck beim Backtest ist?


  • 0
Aus technischen Gründen steht meine Signatur auf der Rückseite dieses Posts!

Thanked by 4 Members:
whipsaw , Vola , chimbonda , oldschuren

#18 Forex1+

Forex1+

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 290 posts
  • 1457 thanks

Posted 27 February 2017 - 11:02 PM

Es wird eigentlich nur ein Bottleneck geben, wenn eben nicht alles in RAM passt. Ausserdem kann der Bottleneck nach der Platte auch alles Mögliche sein, Komplexität des Systems, Effizienz der Datenstrukturen, Kompilersettings, Sprache usw...

Die Frage lief ja darauf hinaus wie programmtechnisch damit umgehen wenn RAM nicht reicht. DB parallel lesend in der Regel kein Problem also keine csv nehmen. Sollte ich an den Punkt kommen wo der Platten-Bottleneck kommt zB bei Portfolioticktest, dann werde ich vermutlich mehrere Varianten testen und einfach Messen welche die schnellste ist. Aber vielleicht hab ich am Ende keine Lust, rüste soviel RAM wie möglich auf und synthetisiere bei dem usecase einfach die Ticks nictation.gif Muss sowieso dann mal schauen ob bei Optimierungen dann die Tickgeschichten nicht zu lahm werden.


  • 0
It's a losing game, without passion !

Thanked by 3 Members:
whipsaw , Vola , oldschuren

#19 oldschuren

oldschuren

    Floor Broker

  • *_skilled
  • 1,457 posts
  • 7935 thanks
  • Wohnsitz:Brandenburg

Posted 28 February 2017 - 12:11 AM

Wenn RAM nicht reicht dann wird virtueller Speicher angelegt....


  • 0
ich raube, also bin ich....

Thanked by 2 Members:
whipsaw , Vola

#20 Rumpel

Rumpel

    Floor Broker

  • *_skilled
  • 1,344 posts
  • 7638 thanks

Posted 28 February 2017 - 01:17 AM

Aber das klingt eben so, als würdest du hier ein Problem lösen wollen welches du gar nicht hast.

Wenn es soweit ist kannst du immernoch schauen wo es klemmt. 

 

Alles andere ist doch hier reines Rätselraten?


  • 0
Aus technischen Gründen steht meine Signatur auf der Rückseite dieses Posts!

Thanked by 2 Members:
whipsaw , Vola

Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users