Jump to content
Tom Next - Daytrading Community

JForex - schneller Optimieren


Ecart

Recommended Posts

Hallo CFuture,

 

willkommen hier bei uns im TN-Forum...Howdy.gif

 

Na, bist ja schon seit dem 06.02.2011 dabei und jetzt kommen die Beiträge...doubleup.gif

 

Bin auch JForex - User und vielleicht kannst du mir jetzt, bzw. unsere Mitleser-Experten weiterhelfen?

Seit heute morgen ~ 06:00 Uhr läuft auf meinem vServer | 1 GB RAM | der Strategietester für für ein Backtesting. Sind genau 231 Kombinationen und jetzt nach ungefähr 11 Stunden Laufzeit

sind erst 28 % hourglass.gif 'verarbeitet'. [siehe Screenshot]

 

Könnt Ihr mir dazu Tipp's geben? Mehr RAM oder was auch immer - damit die Verarbeitungszeit kürzer wird??? god.gif

JForex_Backtesting.JPG

JForex_Backtesting_CPU.JPG

Link to comment
Share on other sites

Ist jetzt bei 35%. 4 >>> CPU's 0 | 1 | 2 | 3 | sind zu 100 % ausgelastet. (=vServer)

 

Ich habe leider (noch) keine Ahnung wie ich dies verändern kann. Neue Hardware ist in Planung...book.gif

 

Das muss nicht unbedingt ein Problem der Hardware sein!

 

Habe 8 GB RAM Arbeitsspeicher, einen Intel i5-2500 (3,4 GHz)

und sonst auch nur leistungsfähige Hardware im Rechner verbaut,

aber bei einem aufwändigem EA läuft selbst mein Rechner im Schneckentempo.

 

Nutze zwar MT4 aber ich denke, dass JForex da nicht viel anders ist.

 

Die durchschnittliche CPU Auslastung liegt bei 25% (er hätte also noch Ressourcen)

aber dennoch braucht der Rechner viel Zeit (> 30 Min.) um einen 8-tägigen Backtest zu machen!

 

LG Nelly

 

 

P.S. Der EA heißt "THV MTF" und ist hier vielleicht dem ein oder anderen bekannt.

Link to comment
Share on other sites

Wie stark wird denn dabei dein Arbeitsspeicher beansprucht?

 

Ich habe ja auf diesem vServer 1 GB RAM gebucht. Laut Ressourcenmonitor sind installiert 1.024 MB - Verfügbar 1.866 MB - Im Cache 1.518 MB [siehe Screenshot] Was heißt das nun für mich?

 

Zusatzinfo: Backtesting verarbeitet die Tick-Daten vom letzten Quartal 2011 | mit insgesamt 231 Kombinationen z.B. TP | SL | usw.

 

Vielen Dank geht an

SFX Christian

 

der mich immer wieder unterstützt... 10points.gif

vServer_Arbeitsspeicher.JPG

JForex_Strategietester.JPG

Link to comment
Share on other sites

Hi.

 

die Optimierung in JForex ist Strafarbeit. Da kannst Du die beste Hardware haben, es ist unglaublich langsam. Wir haben hier bei FI sehr gute, eigentlich hochperformante Hardware, aber jeder Backtest und jeder Versuch der Optimierung erinnert mich an meinen AMD-K7 mit 750 Mhz, wobei der dagegen wahrscheinlich schnell war beim Starten von Windoofs.

 

Die Probleme bei der Optimierung ist aber nicht nur die Geschwindigkeit. Wenn sich in einem Rechenzyklus mal mehr als ~1.000 Variationen ergeben, dann kannst Du es gleich ganz vergessen, es wird einfach nix. Es hängt sich beständig auf.

 

Vielleicht waren wir bis heute nicht in der Lage JForex korrekt zu bedienen, aber aus der Erfahrung die wir haben (und das sollte nicht so wenig sein) ist es zur Zeit absolute Zeitverschwendung. Dann lieber die echten Tickdaten nach MT importieren und in MT weiter programmieren. Aber das ist ein anderes Thema und auch recht aufwändig.

 

VG

Thomas

Link to comment
Share on other sites

Hallo Thomas,

 

vielen Dank für deine kompetente Antwort. Habe mir eure FI - Homepage angesehen und deine Aussagen sind für mich als 'Nicht-Programmierer' absolut verständlich.

 

Seit über 3 Jahren habe ich viele Plattformen 'getestet', aber diese JAVA-JForex Plattform ist einfach 'geil'. Wenn wir beide Tick-Daten von Ducascopy 'vergleichen' dann sind die einfach zu 100 % gleich und das bei diesem Volumen.

 

Von MetaTrader bin ich ab, es gibt dort keinen Broker wie Dukascopy. Wir sollen uns hier weiter 'austauschen', denn ich bin überzeugt das die Anzahl der JAVA JForex-User ständig steigen wird... correct.gif

Link to comment
Share on other sites

Seit über 3 Jahren habe ich viele Plattformen 'getestet', aber diese JAVA-JForex Plattform ist einfach 'geil'.

mmmmhhhh. da bin ich anderer Meinung. Geil ist das in meinen Augen nicht. Es bietet zwar andere Möglichkeiten, aber 1. ist Java weit weg von geil, da ist mir ein sauberes C oder C++ lieber. und 2. Die Anzahl der Updates der Plattform und der spärliche Support bei Problemen seitens DC ist auch far away von geil.

 

Wenn wir beide Tick-Daten von Ducascopy 'vergleichen' dann sind die einfach zu 100 % gleich und das bei diesem Volumen.

NEIN! Du hast bei DC genau das selbe Problem wie bei MT. Im Livetrading werden "3 Konten 4 Kurse" haben! Wir traden Live-Accounts bei DC. Alle auf dem gleichen Server. Und trotzdem ist es einfach technisch nicht machbar, dass alle Konten im Livetrading die selben Ticks erhalten! Wir sehen es fast täglich. Auch wenn die Abweichungen klein sind und die Datenqualität sehr gut... es gibt keine richtigen Forex Daten und die Versorgung tausender Kunden im Millisekunden Takt mit gleichen Daten weltweit ist auch bei Dukascopy unmöglich.

 

Natürlich haben wir im Backtest die selben Daten. Aber das können wir auch in MT hinbekommen. Es gibt inzwischen gute Datenquellen und über die symbols.sel kann man schon mal fast identische Datensätze erzeugen. Natürlich ist MT nicht perfekt und an diversen Stellen muss man improvisieren, aber JForex ist weit weg von ausgereift und ich verwende es nur für sehr spezielle Probleme und für ein paar Untersuchungen dann und wann. Aber für das tägliche Entwickeln ist JForex absolut noch nicht reif.

 

Trotzdem können wir uns gerne über JForex austauschen. Wir nutzen es ja auch und in gewissen Bereich hat es Vorteile.

 

VG

Thomas

  • Upvote 1
Link to comment
Share on other sites

Hi Ecart,

 

 

ich habe bisher mal Strategien vom Strategy-Contest versucht laufen zu lassen. Dass dies auf meiner Workstation so lange dauerte habe ich auf die Ladezeit der History-Daten geschoben und dass Java mehr Rechenzeit braucht. Die Strategien aus dem Contest selbst sind ja nicht so komplex, MAs, BB.., soweit mir bekannt.

 

Das mit "231 Kombinationen" habe ich nicht wirklich verstanden (und muss leider auch gestehen Deine Arbeiten noch nicht intensiv gelesen zu haben, finde ich aber sehr interessant).. Intermarkets, Versuch eine funktionierende Strategie für die jetzige Marktsituation automatisch aus zu wählen, Timeframe-Filter, Anwendung der Strategien für verschiedene Timeframes mit automatisch angepasstem Moneymanagement, neuronale Netze (KI?), keine Ahnung. 1Gb sind natürlich wenig RAM, wenn sonst noch was auf der Maschine läuft schaufelt die HD mehr als die Xeons rechnen.

 

Ich habe mich mit Automatisierungen bisher nicht tiefer beschäftigt weil Hedgefonds da eine enorme Manpower mit Informatiker/Mathematikerteams, dauernden Anpassungen und geschulter 24/6 Livebeaufsichtigung reinstecken. Mir sind auch nicht die Handelsmarken der Smartmoney-Riesen bekannt, z.B. EMA200?, so dass man solche Handelssysteme wenigstens nachbilden kann.

 

Dazu meine ich auch, das der Algo ja auch unterscheiden können muss zwischen den verschiedenen Marktphasen und in diesen vielleicht sogar verschiedene Timeframes, es gibt ja überall Möglichkeiten.

 

Mir ist auch bekannt, dass z.B. Reuters maschinenlesbare News anbieten, die man halt nur mit entsprechenden, erfahrenen Programmierern in einen Algo einfliessen lassen kann, um mindestens mal den Algo abzuschalten oder auch zu versuchen mal schnell News mitzutraden. In wie weit das bei Sitzungen von Zentralbanken mit nebulösen Aussagen funktioniert.. Ist ja schon manuell schwer zu bewerten.

 

Bei diesem Aufwand gibt/gab es auch immer mal monströse Verluste bei absoluten Vollprofis, wie http://de.wikipedia.org/wiki/Long-Term_Capital_Management, Zentralbanken ganzer Länder. Mit technischen Tricks/schnellem Zugang und Insiderwissen über das stupid money, Ordebuch/Darkpools, "Unternehmensberatung" wichtiger Länder, etc. machen die Algos z.B. von Goldman jeden Tag zuverlässig ein paar hundert Millionen. Und ja, selbst die Riesen konnten bisher ohne technische Tricks/mit normalem Trading/Algos nur mit Hilfe der Steuerzahler/Staatsverschuldung gerettet werden?! Der heilige Gral scheint da selbst bei diesen Institutionen (noch) nicht gefunden zu sein.

 

Auf jeden Fall bin ich bei solchen Überlegungen noch nicht so weit. Hält mich bisher auch davon ab meine Handelsideen irgendwie zu programmieren. Mein Traum bisher wäre vielleicht jeweils zur Marktphase den "richtigen" Algo auswählen zu können um sich von sonstiger Subjektivität zu verabschieden.

 

Vielleicht liegt es wirklich am Java und der Kursversorgung sowie dem Arbeitsspeicher.

Aus eigener Erfahrung berichte ich dann mal in einigen Jahren. :)

 

 

Viele Grüße

CFuture

  • Upvote 1
Link to comment
Share on other sites

Kenn JForex nicht, aber am meisten bringt parallelisiern. Ich nehme mal an, die Software unterstützt kein Grid-Computing, aber man kann trotzdem die Optimierungsfälle auf mehrere Rechner aufteilen, oder, falls möglich, mehrere Instanzen der Software mit den jeweiligen Optimierungsfällen auf einem Rechner mit Multicore CPU laufen lassen. Man muss die Reports dann halt zusammen kleistern.

 

Z.B. Neoticker unterstützt das von Haus aus. Ist recht nett, wenn man n Rechner hat, beschleunigt sich die Berechnung auch tatsächlich um den Faktor n.

 

Ansonsten hilft nur den Code optimieren. Alles Unnötige radikal ausmisten, und nochmal durchdenken, ob es nicht eine einfachere Lösung gibt. Kann auch Wunder wirken.

Link to comment
Share on other sites

Habe 8 GB RAM Arbeitsspeicher, einen Intel i5-2500 (3,4 GHz)

und sonst auch nur leistungsfähige Hardware im Rechner verbaut,

aber bei einem aufwändigem EA läuft selbst mein Rechner im Schneckentempo.

 

Nutze zwar MT4 aber ich denke, dass JForex da nicht viel anders ist.

 

Die durchschnittliche CPU Auslastung liegt bei 25% (er hätte also noch Ressourcen)

 

Du hast also 4 Kerne :-)

Was man für Anwendungen wie MT4 oder JForex brauch ist eine CPU mit möglichst wenig Kernen, dafür umso mehr Leistung pro Kern. Aber in der Hardwarekonstellation lohnt es sich trotzdem nicht eine andere CPU einzubauen....

Die Anwendungen können nur einen Kern nutzen, da ist das Problem.

Das ist der Vorteil von MT5, MultiCharts, NinjaTrader etc, die können die gesamte Rechenpower nutzen. Im Beispiel wäre der Backtest dann praktisch 3x so schnell, da die anderen Kerne dann mitbenutzt werden.

Link to comment
Share on other sites

Ohne selbst schon meine Algos im Backtest beobachtet zu haben vermute ich auch, das es am Laden der Historie-Daten liegt (also langsamer Festplattenzugriff in Kombination mit wenig RAM). Die reine Berechnung bringt moderne Prozessoren eher nicht ins schwitzen.
Link to comment
Share on other sites

Ohne selbst schon meine Algos im Backtest beobachtet zu haben vermute ich auch, das es am Laden der Historie-Daten liegt (also langsamer Festplattenzugriff in Kombination mit wenig RAM). Die reine Berechnung bringt moderne Prozessoren eher nicht ins schwitzen.

 

Flaschenhals ist bei Optimierungen/Backtests immer die Prozessorleistung.

RAM und Plattengeschwindigkeit ist nebensächlich.

Link to comment
Share on other sites

Die Anwendungen können nur einen Kern nutzen, da ist das Problem.

Das ist der Vorteil von MT5, MultiCharts, NinjaTrader etc, die können die gesamte Rechenpower nutzen.

 

Nun ja. Man muss sich nur zu helfen wissen. Wenn man zB eine klassische Optimierung durchlaufen lässt die alle Varianten rechnen soll, dann wählt man sich einen der zu optimierenden Parameter, teilt den Bereich in Teile auf. Und lässt jeden Teil separat in einem MT rechnen. Jeder MT nutzt einen vollen Kern. Auswerten muss man es dann eh extern und zusammenkopieren is ja nit die Tragik.

 

 

Ohne selbst schon meine Algos im Backtest beobachtet zu haben vermute ich auch, das es am Laden der Historie-Daten liegt (also langsamer Festplattenzugriff in Kombination mit wenig RAM). Die reine Berechnung bringt moderne Prozessoren eher nicht ins schwitzen.

Kommt drauf an wie intelligent es gemacht ist. Wenn man über 1000000 bars optimiert und der Algo bei jedem Durchlauf die gesamte History neu lädt, dann wirds da eng ja. (btw. ich glaub bei einem misslungenen Update hat das MT mal bei mir ne zeitlang gemacht, da is die RAM-Nutzung mit jedem Durchlauf um 2 MB angewachsen)

Aber mit halbwegs intelligenter Datenstruktur liegt es rein an der Rechenpower. Wer will kann sich ja mal die Arbeit machen und die Laufzeit seines Algos pro Tick ausrechnen (also die nötigen Flops)... Dann wundert einen nichts mehr.

Link to comment
Share on other sites

Habe eben mal mit der aktuellen Jforex-Version ein paar Strategien durchgetestet.

 

Ist HD und CPU-intensiv, CPU limitiert die maximale Geschwindigkeit. Kann man schön mit den Geschwindigkeitseinstellungen des Strategietesters ausprobieren, beim Core2Duo werden beide CPUs voll ausgelastet.

 

Ich denke mal es liegt am Java und eventuell der Art der Programmierung, andere Plattformen sind wirklich schneller.

 

Viele Grüße

CFuture

Link to comment
Share on other sites

Du hast also 4 Kerne :-)

Was man für Anwendungen wie MT4 oder JForex brauch ist eine CPU mit möglichst wenig Kernen, dafür umso mehr Leistung pro Kern. Aber in der Hardwarekonstellation lohnt es sich trotzdem nicht eine andere CPU einzubauen....

Die Anwendungen können nur einen Kern nutzen, da ist das Problem.

Das ist der Vorteil von MT5, MultiCharts, NinjaTrader etc, die können die gesamte Rechenpower nutzen. Im Beispiel wäre der Backtest dann praktisch 3x so schnell, da die anderen Kerne dann mitbenutzt werden.

 

Darum hat er auch nur 25% der vorhandenen Kernressourcen genutzt, aha (4x 25% = 100%).

 

So ein Mist, da kauft man sich ne neue Maschine & die Software kann diese nicht (richtig) nutzen ...

 

Danke trotzdem für Deine Antwort!

 

LG Nelly

Link to comment
Share on other sites

Das mit "231 Kombinationen" habe ich nicht wirklich verstanden (und muss leider auch gestehen Deine Arbeiten noch nicht intensiv gelesen zu haben, finde ich aber sehr interessant).

 

Siehe Screenshot => nur ein 'kleiner' Auszug der Indikatoren.guitar.gif

 

Noch ~ 18 Stunden = 35 % Restlaufzeit ungeduldig.gif

Auszug Optimierung der Eingabeparameter.JPG

Stand_07042011_14Uhr.JPG

Link to comment
Share on other sites

Nun ja. Man muss sich nur zu helfen wissen. Wenn man zB eine klassische Optimierung durchlaufen lässt die alle Varianten rechnen soll, dann wählt man sich einen der zu optimierenden Parameter, teilt den Bereich in Teile auf. Und lässt jeden Teil separat in einem MT rechnen. Jeder MT nutzt einen vollen Kern. Auswerten muss man es dann eh extern und zusammenkopieren is ja nit die Tragik.

 

 

 

Ich hab das einmal gemacht, eine Optimerung aufgeteilt. Nie wieder. Ist einfach unpraktikabel, man hat so schon genug zu tun die Daten zu organisieren.

Link to comment
Share on other sites

Hi Ecart,

 

alles klar, vielen Dank.

 

Beschäftige mich gerade mit den Strategien von

 

http://www.dukascopy.com/swiss/english/forex/jforex/forum/viewtopic.php?f=8&t=15573

 

 

http://www.jforexstrategy.com/scalper/JForexStrategy_scalper_v6.jfx

http://www.jforexstrategy.com/

 

http://www.jforexstrategy.com/jforexrobot.com/jfx/JForexRobot_awe_V1.jfx

http://www.jforexrobot.com/

 

 

Viele Grüße

CFuture

Edited by CFuture
Link to comment
Share on other sites

Ich hab das einmal gemacht, eine Optimerung aufgeteilt. Nie wieder. Ist einfach unpraktikabel, man hat so schon genug zu tun die Daten zu organisieren.

Dafür hast dann ja auch die gesparten 3 Tage Zeit ;)

Im Ernst: ich versteh dich.

Ich bins möglicherweise mehr gewohnt Daten zu organisieren oder hab einfach zuviel "freie" Zeit ;). Für mich is es nur ein, "Alles kopieren"->In Excel dazufügen und du hast die gesamte Tabelle. Die Auswertung läuft dann eh dort. Der Aufwand zahlt sich natürlich nur aus, wenn man sich mindestens 20 Stunden spart ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...