Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Performancevergleich von Backtestumgebungen

Geschrieben

Dieser Thread http://www.tom-next.com/community/topic/59908-langsame-berechnung-des-backtests/page__pid__119620 hat mich mal aus Interesse auf die Idee gebracht, einen Performancevergleich (Zeitdauer) verschiedener Backtesteumgebungen zu starten.

 

Als Contender würde ich mal die üblichen Verdächtigen des Forums vorschlagen. Amibroker, Metatrader, Multicharts, Ninjatrader. Die anderen drei Jforex, Strategytester, Trade Projekt sagen mir vom Funktionsumfang her gesehen nichts, aber falls diese auch über Backtestmöglichkeit verfügen und jemand diese Programme verwendet, dann natürlich auch diese. Wer andere Programme verwendet, ist natürlich mit eingeladen am Test teilzunehmen, also zum Bleistift Metatstock oder Tradestation oder ... also alles, was vorhanden ist.

 

Ich würde mal als Anfang ein simples Standardsystem mit CCI vorschlagen (CCI(20)). Cross Level 100 dann Buy, Re-Cross Level 100 nach Buy dann Sell, Cross Level -100 dann Short, Re-Cross Level -100 nach Short dann Cover. Als Testperiode würde ich vorschlagen 2005 bis heute sowie als Timeframe M1, Underlying EURUSD. Würde eventuell auch vorschlagen, dass wir alle noch die selbe Historienquelle verwenden, falls überall die Importmöglichkeit bestehen sollte, wovon ich eigentlich ausgehe?

 

Wer hat Lust?

 

Noch irgendwelche Vorschläge (wozu auch "Mach dich vom Acker" gehören würde)?

  • Antworten 67
  • Aufrufe 6Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Most Popular Posts

  • Ich bin dann mal die 47717 Trades manuell und einzeln durchgegangen   Abweichungsgrund 1 Offensichtlich gilt in AB als Signal nicht CCI = 100, sondern CCI > 100 (und entsprechend der Ausstieg).

  • Naja, zumindest angefragt der Erste Die Tests mache ich am Wochenende. Vielleicht nehme ich noch den MT4 mit, falls den hier vorher keiner testet.

  • Wow, das hätte ich nicht erwartet:   EUR/USD Januar 2005 bis Juli 2011, 45896 Signale im M5 Dauer des Backtests: 7 Sekunden Verwendete Software: MultiCharts v7   Hardware: ein realer Prozessorkern mit

Veröffentlichte Bilder

Featured Replies

Geschrieben

 

Nun die Frage: warum unterscheiden sich AB und MC bei gleicher History und gleicher Implementierung dennoch in der Anzahl an Signalen merklich?

 

 

Unterschiedliche Verarbeitung der Orders am Ende/Anfang/Mitte des Bars zB., je nach System eben.

Geschrieben
  • Autor
Rainworm, wenn ich deine Strategie sehe, habe ich eine Vermutung. Werde es nächste Woche mal überprüfen.
Geschrieben

...habe ich eine Vermutung. Werde es nächste Woche mal überprüfen.

Jetzt machst du es aber spannend :palomitas:

Geschrieben
  • Autor

Ok, extra weil du es bist, habe ich mich überwunden. Aber das war es nicht, da ich es verwechselt hatte.

Ich dachte der Buyprice, Sellprice Shortprice, Coverprice zum nächsten Bar bei dir könnte ein Grund sein, aber das ändert ja nichts an den Buy, Sell, Short, Cover Signalen.

 

Trotzdem ist mir dabei ein weiterer möglicher Grund eingefallen, nämlich der Sonntag. Hast du den mit hineingenommen? MC hat doch auch Sessions Einstellungen, oder? Ich habe nur mal die Sonntagssignale genommen und da komme ich auf immerhin 1179 RTs.

 

Gesamt sind es übrigens 47745 RTs und ein offener short am 11.07.

Die Historie ging ja nur bis 11.07.

 

Falls Sonntag bei dir fehlen sollte und noch hinzugenommen werden müßte, wären es schon mal 47745 - 1179 = 46566 RTs

Wären dann aber immernoch 1000 RTs Unterschied.

 

Hier ist noch der angepasste Code an deinen mit next bar.

 

CCI0   = CCI(20);

Buy   = Cross( CCI0, 100 ); 
Sell  = Cross( 100, CCI0 ); 
Short = Cross( -100, CCI0 );
Cover = Cross( CCI0, -100 );
BuyPrice = SellPrice = ShortPrice = CoverPrice = O;

SetTradeDelays(1, 1, 1, 1);

Geschrieben

Trotzdem ist mir dabei ein weiterer möglicher Grund eingefallen, nämlich der Sonntag. Hast du den mit hineingenommen?

Bingo! Den Sonntag habe ich nicht drin. An den habe ich gar nicht gedacht, da er für mich eh nie eine Rolle im automatischen Handel spielt.

 

Gesamt sind es übrigens 47745 RTs und ein offener short am 11.07.

Die Historie ging ja nur bis 11.07.

OK, komme auf 47470 RTs. Die Historie endet jedoch am 10.07. um 23:59 Uhr.

 

Ich habe als Screenshot die ersten Trades zum Vergleich angehängt.

cci-test.png

Geschrieben
  • Autor
Hallo Rainworm, danke für den Auszug. In diesem sind mir bereits einige Dinge aufgefallen, die mich haben stutzig werden lassen. Wenn ich Zeit habe, komme ich darauf zurück, da ich es vorher noch genauer untersuchen muss. Sorry, dass es erst mal spannend bleibt. Deshalb erst mal Musik :guitar: :hbang: als Lückenfüller.
Geschrieben
  • Autor

Rainworm oder andere MC User

 

Schaut mal bitte auf die Ergebnisse des Auszugs, die ich ins Excel Sheet übertragen habe.

Was kann der Grund bei MC zu sein? Ist Timestamp der Bars der Grund?

Die M1 Historie, die ich hochlud, hat ja Timestamp = Startzeit des Bars.

MC Einstellung scheint aber Endzeit des Bars zu sein.

 

Rainworm, kannst du das in MC auch umstellen und dann noch mal versuchen, wenn du Zeit hast, bitte.

Thx!

cci testsystem.zip

Geschrieben

Die M1 Historie, die ich hochlud, hat ja Timestamp = Startzeit des Bars.

MC Einstellung scheint aber Endzeit des Bars zu sein.

Ich habe die ersten Trades anhand deiner Exceltabelle abgeglichen. Diese stimmen nun überein. MC zeigt als Barzeit die Endzeit der Bar. Das hat Vor- und Nachteile. Dies war mir bewusst. Worauf ich nicht geachtet habe ist, dass ich beim Import deiner Historie die Zeiten entsprechend verschieben lassen musste (Haken "use bar end time" im Import). Anonsten gibt es nämlich in den M1-Bars Verschiebungen, die sich leicht, aber mit Auswirkung auf die M5 beziehen. Ist nun angepasst.

 

Allerdings passt es insgesamt immer noch nicht übereinander. Bin nun bei 47407 RTs. Kannst du die Trade Historie als Excel exportieren? Ich habe auf meinem Server kein Excel, daher geht der Export nicht. Könnte ich erst am Wochenende zu Hause machen.

Geschrieben
  • Autor

Allerdings passt es insgesamt immer noch nicht übereinander. Bin nun bei 47407 RTs. Kannst du die Trade Historie als Excel exportieren? Ich habe auf meinem Server kein Excel, daher geht der Export nicht. Könnte ich erst am Wochenende zu Hause machen.

 

Kann ich gern machen. No problem.

 

EDIT: Passen die CCI-Werte im Excelsheet mit deinen?

Geschrieben

EDIT: Passen die CCI-Werte im Excelsheet mit deinen?

Ja. Zumindest die, die ich geprüft habe, passen kommastellengenau.

Geschrieben

Ich bin dann mal die 47717 Trades manuell und einzeln durchgegangen :wink2:

 

Abweichungsgrund 1

Offensichtlich gilt in AB als Signal nicht CCI = 100, sondern CCI > 100 (und entsprechend der Ausstieg). In MC reicht CCI = 100. Ich habe meine Strategie entsprechend angepasst.

 

Abweichungsgrund 2

In deiner Strategie kann eine Bar sowohl Exit als auch Trigger sein. Das war bei mir nicht so. Habe ich angepasst.

 

Abweichungsgrund 3

In der History fehlt der 11.07., daher habe ich hier keine Trades. Die habe ich dann halt in deiner Tabelle ignoriert.

 

Abweichungsgrund 4

Ich tippe auf einen Bug in MC: Ich bekomme den Sonntag 21:00 Uhr bis 22:00 Uhr nicht importiert, wenn ich die Gesamt-History-CSV nehme. Die Session Templates habe ich angepasst (24/7). Es funktioniert, wenn ich aus der CSV den Sonntag 21:00 Uhr bis 22:00 Uhr in eine eigene CSV kopiere und dann importiere. Seltsam, seltsam. Ich habe jetzt allerdings nicht die Sonntage seit 2005 bis jeweils 22:00 Uhr manuell importiert :palomitas:

 

Fazit:

Ich komme nun (bis auf Punkt 4) auf die gleichen Ergebnisse.

 

Auswirkungen auf die Backtestzeit hatte das jetzt nicht. Aber nun können wir loslegen mit den interessanten und berechnungsintensiven Strategien.

Einprozessor (2,4 GHz): 12 sec

Core i7 870 (3 GHz): 7 sec

Geschrieben
  • Autor

Ich bin dann mal die 47717 Trades manuell und einzeln durchgegangen :wink2:

 

Abweichungsgrund 1

Offensichtlich gilt in AB als Signal nicht CCI = 100, sondern CCI > 100 (und entsprechend der Ausstieg). In MC reicht CCI = 100. Ich habe meine Strategie entsprechend angepasst.

 

Abweichungsgrund 2

In deiner Strategie kann eine Bar sowohl Exit als auch Trigger sein. Das war bei mir nicht so. Habe ich angepasst.

 

Abweichungsgrund 3

In der History fehlt der 11.07., daher habe ich hier keine Trades. Die habe ich dann halt in deiner Tabelle ignoriert.

 

Abweichungsgrund 4

Ich tippe auf einen Bug in MC: Ich bekomme den Sonntag 21:00 Uhr bis 22:00 Uhr nicht importiert, wenn ich die Gesamt-History-CSV nehme. Die Session Templates habe ich angepasst (24/7). Es funktioniert, wenn ich aus der CSV den Sonntag 21:00 Uhr bis 22:00 Uhr in eine eigene CSV kopiere und dann importiere. Seltsam, seltsam. Ich habe jetzt allerdings nicht die Sonntage seit 2005 bis jeweils 22:00 Uhr manuell importiert :palomitas:

 

Fazit:

Ich komme nun (bis auf Punkt 4) auf die gleichen Ergebnisse.

 

Auswirkungen auf die Backtestzeit hatte das jetzt nicht. Aber nun können wir loslegen mit den interessanten und berechnungsintensiven Strategien.

Einprozessor (2,4 GHz): 12 sec

Core i7 870 (3 GHz): 7 sec

 

Hallo Rainworm,

 

zu 1)

 

Stimmt nicht. Cross(A, B) bedeutet, dass A beim Cross auch gleich B sein kann.

Aber selbst wenn es nur > wäre, hätte es keine Auswirkungen, da ja hier der CCI Wert genau 100 sein müßte bis auf die x-te Null als Nachkommastelle, von denen es ja unendlich gibt. Sehr, sehr unwahrscheinlich. Kam hier auch in der Tat kein einziges Mal vor.

 

zu 2)

 

Wenn du meinst, dass es vorkam, dass der Bar von z.B. Sell und Short bzw Sellprice und Shortprice oder Cover und Buy bzw Coverprice und Buyprice gleich waren, dann ja. War hier 327 Mal der Fall. Wenn du meinst, dass es vorkam, dass der Bar von Buy Signal und Sellprice oder Short Signal und Coverprice gleich waren, dann ja. War hier für beide Möglichkeiten 12166 Mal der Fall. Ich vermute, du meinst Fall 1. Wenn du meinst, dass es vorkam, dass der Bar von z.B. Buy Signal und Sell Signal gleich waren, dann nein. War hier Null Mal der Fall.

 

Allg. kann man das aber bzgl letzten Fall in den Einstellungen oder im Code über SetOption("AllowSamebarExit", True oder False (bzw 1 oder 0)); beeinflussen. Hat aber hier keinen Einfluß, da es bei True Setting wie gesagt eh nicht vorkommt.

 

Hier noch mal genauer was AllowSameBarExit bewirkt:

 

1) When

 

a) the flag is ON (TRUE) and

b) Buy and Sell occurs at the same bar

c) and there is NO already open LONG trade

then new long position will be opened

and then closed at the same bar

 

2) When

 

a) the flag is OFF (FALSE) and

b) Buy and Sell occurs at the same bar

c) and there is NO already open LONG trade

then new long position will be opened

and will NOT be closed at the same bar - but rather on NEXT sell signal.

 

3) When

 

a) the flag is OFF and

b) Buy and Sell occurs at the same bar

c) and there IS already open LONG trade

then already open long position will be closed and new position will NOT be open

 

4) When

 

a) the flag is ON and

b) Buy and Sell occurs at the same bar

c) and there IS already open LONG trade

then already open long position will be closed and new position will be open

 

Das müßte sich auf SetOption("MaxOpenPositions", 1) beziehen. Wenn z.B. auf 2, dann dürften für Fälle 3) und 4) die Fälle 1) und 2) in Betracht kommen, sprich eine zusätzliche Position zu einer bereits offenen dürfte eröffnet (wenn neues Buy oder Short Signal) und beide dürften dann je nach Flag zum gleichen oder nächsten Sell oder Cover Signal geschlossen werden (bzw es kommt dann noch Sellprice oder Coverprice Option dazu). Müßte ich noch mal überprüfen (bzgl des letzten Satzes) anhand eines anderen Systems. Das würde aber jetzt zu weit führen, da es noch dutzende Einstellmöglichkeiten gibt und für das Testsystem waren die Ergebnisse systembedingt eh automatisch next bar, egal ob true oder false Setzung.

 

zu 3)

 

Stimmt. Waren 28 RTs für 11.07.11.

 

zu 4)

 

Kann ich nichts zu sagen. Werde MC zwecks Vergleichbarkeit aber selber mal anschauen.

Geschrieben

zu 1)

Stimmt nicht. Cross(A, B) bedeutet, dass A beim Cross auch gleich B sein kann.

Aber selbst wenn es nur > wäre, hätte es keine Auswirkungen, da ja hier der CCI Wert genau 100 sein müßte bis auf die x-te Null als Nachkommastelle, von denen es ja unendlich gibt. Sehr, sehr unwahrscheinlich. Kam hier auch in der Tat kein einziges Mal vor.

So wie geschildert, verstehe ich CROSS auch. Wie ist denn dein CCI am 13.01.2005 am Ende der Kerze 04:30 Uhr (bei mir 04:35). Mir weist der CCI genau 100 aus, inkl. 4 Nachkommastellen. Vielleicht hast du z.B. 99,9999994 und dadurch entsteht kein Signal bei dir. Schau bitte mal nach.

 

zu 2)

Beispiel 03.01.2005:

07:35 Uhr (deine Candle-Zeit) wird zu Beginn der Kerze verkauft, da mit Ende der vorausgehenden Kerze der CCI 100 von oben nach unten unterschritten wurde. Allerdings wurde in der 03:35 Uhr-Kerze der CCI wieder von unten nach oben mit der 100 geschnitten, was zu einem Entry um 07:40 führt. Das heißt, Exit-Kerze = Trigger-Kerze. Das war in meinem Programmcode vorher ausgeschlossen, nach Modifikation nun halt schon möglich. Jetzt passt es auch auf deine im ersten Post genannte Spezifikation, bei der du diesbezüglich ja keine Einschränkung gemacht hast. :wink2:

 

zu 4)

Kann ich nichts zu sagen. Werde MC zwecks Vergleichbarkeit aber selber mal anschauen.

Ich werde das mal an den Support senden. Aber für unseren Vergleichstest sollte das unerheblich sein.

 

Nun gut:

Welche Vorschläge hast du an rechenintensiven Indikatoren?

Geschrieben
  • Autor

Ich habe zu deinen Absätzen 1 und 2 jeweils ein Bild gemacht.

 

Als Zusatz:

 

zu Absatz 1)

Kannst du die CCI Werte (bis zur 12ten Nachkommastelle) vom 13.01 00:00 bis 05:00 von MC exportieren lassen nach txt oder csv? Wollte mal was vergleichen.

 

Mit AB ginge es z.B. so.

 

http://img841.imageshack.us/img841/3158/20110731195949.png

 

zu Absatz 2)

Das kam ja 12k mal vor (bar ...Price = bar ...Signal), aber die ursprüngl Differenz der RTs waren um die 2k.

 

 

 

Welche Vorschläge hast du an rechenintensiven Indikatoren?

 

Muss ich mal überlegen. Bin ja noch nicht dazu gekommen, MC mal einzurichten.

post-1535-0-46263300-1312135593_thumb.png

post-1535-0-44590000-1312135599_thumb.png

  • 1 Monat später...
Geschrieben
  • Autor

Ich habe gestern mal spasseshalber mit der neuen Beta von AB getestet. Selbe Hardware wie zuvor, selbes Testsystem, längere Historie (+3%). Verbesserung von über 6 Sek. auf nun ca 5 Sekunden oder ca 20%.

 

http://img199.imageshack.us/img199/8329/99052673.png

 

Zum (ausführlicheren) Testen von Multichart bin ich noch nicht gekommen. Werde ich aber noch machen. Aufgeschoben ist nicht aufgehoben.

Geschrieben

Aufgeschoben ist nicht aufgehoben.

Ich bin auch noch gerne beim Performancevergleich dabei. Zurzeit finde ich allerdings keine freie Minute. Ab Herbst wieder :palomitas:

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.