Backtesting Software
-
-
Perfect Trader schrieb:
Bin kein wirklicher Fan von Python oder Ruby, weil diese Sprachen am Ende auch nichts wirklich besser machen, sondern nur anders.) nicht vollauf überzeugt.
Nun PT das ist sicher eine Geschmacks sache ich halte Python für sehr Produktive zum einen wird eine ganz große Lib mit geliefert die einem erheblich viel Arbeit abnimmt, aber gibt einem dennoch große Freiheit fast alles tun zu können was man will, natürlich kann man damit keine Treiber Programmieren, das macht man in C Aber allgemein kann man mit Recht sagen das man damit viel schneller vorran kommt als mit den meisten anderen Sprachen , zu einem weniger Code nötig um das selbe in einer anderen Sprache zu erreichen, zum anderen die gute Übersichtlichkeit und Lesbarkeit. Und was man auch nicht außer acht lassen sollte ist die gute Plattform Unabhängigkeit einige meiner Handelsprogramme laufen ohne Änderungen auf Linux Windows sowie MacOsx, einzig die CFG files oder anders INI files müssen angepasst werden.
LG ST -
Zitat von Krümel
Alternativ geht natürlich immer: Austausch der Daten über eine lokale (Text-)datei (eventuell ist auch ne Socket-Lösung implementierbar). Bei der Textdatei-Variante schreibt dein Signallieferant (z.B. auch Mathematica) die Signale samt Timestamp in ne Datei und Dein Trading-Tool liest diese Datei aus und guckt, ob es Daten mit dem Timestamp schon verarbeitet hat. Wenn nicht, werden die Orders in den Markt gelegt oder gelöscht oder was auch immer es tun soll. Ist auch keine Rocket-Science und geht eigentlich mit jeder Programmiersprache und jedem Tradingtool (was ne Datei per Programm programmgesteuert einlesen kann) und programmgesteuert traden kann (z.B. MT). Man ist also eigentlich nicht auf so eine monolithische Lösung angewiesen, sondern kann auch 2 gute Komponenten /Tools zusammen hängen und nur Nachrichten austauschen (per File oder Socket). Allerdings muss man 2 Programmiersprachen zumindest ansatzweise lernen statt nur eine. Murphys Law sollte jetzt eigentlich besagen, dass wahrscheinlich alle denkbaren Varianten gleich viel Zeit benötigen, um sie zu implementieren (inkl. Programmiersprache(n) lernen) und zu testen und in der Gesamtsumme ähnlich viel kosten. Vermutlich ist das auch so.
Das ist sogar weit einfacher als man sich das vorstellt, bei mir Laufen z.b fast alle Systeme in Python umgesetzt, da ich hier einfach mehr Freiheit habe und machen kann was ich will. Ich habe mir einfach 2 EA geschrieben die mich a mit allen Daten versorgt die ich brauche zum anderen b ein EA der die von mir erstellen Order Tickets ausführt und im Nachhinein auch eine Rückmeldung in form eines txt files zurück gibt um nachvollziehen zu können ob alles korrekt ausgeführt wurde, und das alles mit txt files. Wer sich auch sowas zusammen stellen will sollte aber einen Haken bedenken das man eine Sicherung einbaut die erkennt ob das file vollständig ist sonst kann es passieren das z.b eine RT Kurs nicht drinnen steht und der Code dann abkackt.
Also nicht weiter schwer
LG ST -
-
Da ich nun schon mehrfach per PN gefragt wurde und in der letzten PN meine Antwort die 10000-Zeichen-Marke geknackt hat, da ich zuvor noch wichtige Dinge vergessen hatte, poste ich sie mal in den Public-Bereich, vielleicht kann sie ja noch anderen Usern bei der Entscheidungsfindung helfen.
>> Könntest du mir vielleicht ,für den Start, einige Empfehlungen von Sites, Blogs, Foren, Bücher, Tutorials etc. geben?
Ich habe die Tutorials gemacht, die bei Mathematica dabei sind. Da Mathematica meine *äh*, schätze mal 15.te Programmiersprache ist (hab Informatik studiert, also keine Panik , ist keine Pflicht für Nicht-Nerds) und ich davor vor viel mit R programmiert habe, war der Umstieg relativ easy. Allerdings muss man sich drauf einstellen, dass man noch sehr lange dazu lernen wird, auch wenn das Grundrepertoire mal sitzt (dafür haben bei mir - wie gesagt - die Mathematica-internen Tutorials gereicht. ) Das klingt aber doppelt so schlimm wie es am Ende ist.
Irgendwelche Blogs/Foren hab ich nicht gefunden, allerdings auch nicht groß gesucht, da im Gegensatz zu OpenSource-Projekten wie R (und damit hab ich sehr viel gearbeitet, auch schon in der Zeit als es noch kaum jemand kannte - nur mein damaliger Prof *grummel*, so dass ich auch ran musste.) Mathematica einen sehr guten Support bietet und bei mir kaum Fragen offen bleiben. Hilfe-Dateien sind auch mehr als genug dabei bzw. öffnen sich automatisch, wenn man F1 auf dem Suchbegriff drückt, die Hilfedateien sind ebenfalls Notebooks und interaktiv: Mouse in die Zeile setzen, Shift+Enter und dann wird der aktualisierte Befehl ausgeführt. Geniales Konzept. Der Inhalt der Tutorials + Refenzdateien reicht meist aus, denn die haben sich echt Mühe gegeben. Auch für ne kommerzielle Firma sehr gut gemacht.
Wenn ich mal etwas Inspiration brauche, dann schmökere ich entweder in den internen Tutorials oder dem Hilfesystem oder aber bei Wolfram direkt auf der Webseite. Sie bieten die Möglichkeit, dass User ihre Demos hochladen können (da hatte ich neulich ja mal die Hurst-Demo verlinkt in einem CT-Post von mir). Hier der Link: demonstrations.wolfram.com/ . Wenn mir was gefällt, lade ich mir die Datei runter und guck mir den Sourcecode an.
Außerdem gibts noch ne Menge anderer Literatur wolfram.com/books/ bei Wolfram auf der Webseite, die Tutorial-PDFs sind in der Regel zum freien Download, man zahlt nur, wenn man sich diese als Print bestellt. wolfram.com/learningcenter/tutorialcollection/ .
Ich muss sagen, mittlerweile habe ich selten Programmiersprachenprobleme, sondern eher Probleme mit dem Problem als solches, was ich gerade untersuche . Letztens habe ich z.B. feststellen müssen, dass meine Vostellung, wie der Hurst-Exponent geschätzt wird, total falsch war. Und da wundere ich mich, warum ich so große Abweichungen zwischen den vorgegebenen und den von mir geschätzten Werten herhalte ! Davor schützt einen aber auch die beste Programmiersprache der Welt nicht. Aber mit nem guten Tool findet man seine Fehler schneller.
>>Auch wollte ich dich fragen ob es mit der Software möglich ist automatisch zu traden? Bzw. ob du auf dem Gebiet Erfahrungen hast?
Erfahrungen keine (also automatisches Traden mit Mathematica). ABER: ich habe es auch nicht versucht, denn ich denke nicht, dass Mathematica dafür das Tool der Wahl ist. Prinzipiell kann man mit jeder Programmiersprache automatisch traden, wenn es einem gelingt, die Api des Brokers als Dll einzubinden und die Funktionen daraus verwenden zu können. Der Aufwand ist nur sehr unterschiedlich, z.T. wird man sich sehr viel nachprogrammieren müssen (z.B. Disconnect-Überwachung und Re-Login - bei den z.Z. verfügbaren Tradingtools gehört sowas ja schon oft mit dazu, außerhalb dieser Rahmen muss man sich das Zeugs aber alles selbst reinprogrammieren, denn auch bei den Apis gibts in der Regel nur "Grundbausteine". Geht alles, ist auch sicher nicht so dramatisch, soviele Anbieter von Apis gibts ja nicht (Interactive Brokers z.B.) verglichen mit der Anzahl der MT-Forex-Buden oder der Anzahl der Sterne in der Milchstraße. Aber man muss halt dran denken und es dann noch machen.
Alternativ geht natürlich immer: Austausch der Daten über eine lokale (Text-)datei (eventuell ist auch ne Socket-Lösung implementierbar). Bei der Textdatei-Variante schreibt dein Signallieferant (z.B. auch Mathematica) die Signale samt Timestamp in ne Datei und Dein Trading-Tool liest diese Datei aus und guckt, ob es Daten mit dem Timestamp schon verarbeitet hat. Wenn nicht, werden die Orders in den Markt gelegt oder gelöscht oder was auch immer es tun soll. Ist auch keine Rocket-Science und geht eigentlich mit jeder Programmiersprache und jedem Tradingtool (was ne Datei per Programm programmgesteuert einlesen kann) und programmgesteuert traden kann (z.B. MT). Man ist also eigentlich nicht auf so eine monolithische Lösung angewiesen, sondern kann auch 2 gute Komponenten /Tools zusammen hängen und nur Nachrichten austauschen (per File oder Socket). Allerdings muss man 2 Programmiersprachen zumindest ansatzweise lernen statt nur eine. Murphys Law sollte jetzt eigentlich besagen, dass wahrscheinlich alle denkbaren Varianten gleich viel Zeit benötigen, um sie zu implementieren (inkl. Programmiersprache(n) lernen) und zu testen und in der Gesamtsumme ähnlich viel kosten. Vermutlich ist das auch so.
Zum Bestimmen von Tradingsignalen kann man ebenfalls Mathematica nutzen. Klar, warum nicht, da geht mMn auch alles andere, womit man RT-Feed-Daten ranholen und durchsuchen kann. Auch hier kann man letztendlich, wenn das Tool selbst partout nicht besser nicht hergeben will, wieder über Text-Dateien Quotes austausche, wenn man nicht total ultrakurzfristig unterweg ist und Zeit ein echt kritischer Punkt ist. Ist total "unelegant", aber oftmals sind die merkwürdigsten Lösungen die besten. Aus jetziger Sicht würde ich des dennoch nicht machen, auch wenn ich eine Vorliebe für krepelige Lösungen habe.
Wofür nutze ich Mathematica dann ?
Für mich ist Mathematica ein Werkzeug, welches "Forschungsarbeiten" (Daten auswerten, z.B. Angebot-Nachfrage-Modelle erstellen, Themen erarbeiten, die mich interessieren etc.) unterstützt. Dafür ist es auch gedacht und das kann es extrem gut. Für mich ist enorm wichtig, dass die Sachen, die ich erarbeiten will bzw.erarbeitet habe dokumentiert sind. Wie oft habe ich Sachen in R mehrfach programmiert, weil ich die Idee nicht aufgeschrieben habe, die Datei verbuddelt habe in einem Wust anderer Skripte, die mit der Zeit zusammenkommen usw.
Um Ordnung ins Chaos zu bringen - dafür ist das Notebook-Interface ideal. Es stellt ja quasi eine WYSIWIG-Editor dar, wo man wie in Word arbeitet/ formatierte Text schreibt, ne Skizze reinmalt (ne Handelssystem-Idee z.B., v.a. wenn sie noch diffus ist), ne Grafik einbindet oder auch nen Link und immer, wenn es nötig ist, Quellcode dazwischen, dann lässt man sich ne Abbildung generieren, weil man die grad braucht, kann die im Text gleich sehen oder rechnet sich irgendwas aus, erstellt einen interaktiven Chart und spielt bisschen drin rum oder oder oder.
Bei R o.ä. muss man erst den Code bis zu dieser Stelle ausführen, wenn man die Datei neu aufmacht, um dann die generierte Abbildung zu sehen. Die ist auch nicht im Fließtext eingebettet. Text kann man nur vernünftig als Kommentar verwalten, das liest sich aber ätzend und ist ohne jegliche Formatierung. Ich hab meine Informatik-Diplomarbeit komplett mit R-Weave (abwechselnd R-Code und Latex-Blöcke) geschrieben, das Ding ist am Ende durchgelaufen und hat ein 100 Seiten-PDF rausgeworfen, was echt schick aussah. Aber der Weg dahin war steinig und ich hatte nur dünnsohlige Sandalen an. Für kurze Sachen oder Einmal-Aktionen geht sowas, aber es ist einfach anstrengend, wenn man über nen langen Zeitraum mit wachsender Anzahl an Dateien an einem Thema arbeiten soll.
Bei Mathematica sind alle fertigen Abbildungen auch beim erneuten Öffnen drin, man kann das Notebook einfach wie ein normales Dokument lesen/Bilder/Code angucken usw. Ich kann Trades aus Backtests (mach ich mit Offline-Daten, ich ich importiere) sofort nachanalysieren (Verteilungen anschauen z.B.) und muss sie nicht aus ner Tradingsoftware exportieren.
Wenn Du lediglich einen festumsteckten Anwendungsbereich hast und sagen kannst: mehr will ich nie, nie, niemals machen, dann würd ich nicht Mathematica nehmen, der Aufwand ist zu groß und das Ergebnis mit Sicherheit auch nicht zufriedenstellend. Dann nimm lieber irgendne Standardtradingsoftware. Wenn Du aber nicht weißt, ob Du Dich in 1 bis 2 Jahren nicht noch mit anderen Themen beschäftigen wirst (aktuell beschäftige ich mich z.B. mit Hurst-Exponent/Fraktalgeometrie und andererseits auch Portfoliotheorie/Value At Risk/ Aktienbewertung/-anlage, letzteres alles Bänker-Zeugs, was ich vor 3 Jahren nie angefasst hätte *schüttel*) - dann lohnt es sich, denn Mathematica wächst mit. Und man arbeitet mMn viel professioneller und effizienter als mit anderen Programmen und macht Sachen auch nicht doppelt und dreifach, weil man es besser dokumentieren kann und es auch mehr Spaß macht, Sachen aufzuschreiben ;).
Vorteil von "Forschungssoftware" (Mathematica, R): man kann auch problemlos mit nicht zeitbasierten Plots arbeiten, ohne sich total einen abzubrechen. D.h. man kann also nicht nur die typischen Charts erstellen, sondern auch 2D und 3D (interaktiv dreh- und zoombar) Plots/ Histogramme, Kuchen-Diagramme usw. Seit der letzten Version bietet Mathematica auch FinancialCharts (auch P&F, Renko etc.) an, mit - ich glaub 100 - vorgefertigten Indikatoren. Ist nicht mein Fall, weil ich mit den Dingern nicht mehr arbeite, aber nun ja. Schick ist es schon. EOD-Daten kann man sich auch im Programm vom Wolfram-Server (Datenbank) laden. Die haben auch Tonnen an anderen Daten (Wetter, Konsumklimaindex, Arbeitslosenzahlen weltweit,...). Die werden auch ständig aktualisiert. Für größere Korrelationsstudien (was hängt wie mit was zusammen) echt praktisch.
Mit Mathematica kann man Probleme lösen, die man bis dahin nie angedacht hatte, weil man glaubte, das kriegt man zu Lebzeiten nicht mehr umgesetzt (z.B. vereinfachen die Dir auch mathematische Gleichungen mit Variablen - ich wusste bislang gar nicht, dass das ein Tool überhaupt kann) oder schleppen nicht-initialisierte Variablen einfach solange im Quellcode durch bis Du den Wert im Programm eingibst. Dann rechnen sie Dir auch 5 * x^2 aus. Wenn Du ihnen sagst, dass x = 6 ist. Bis dahin arbeitet man einfach mit dem Ausdruck 5* x^2. Andere Programme stürzen mit ner bitterbösen Fehlermeldung und viel Geweine an solchen Stellen ab. Rundungsprobleme ? Nee, die arbeiten auch solange mit Brüchen (und schreiben die auch so hin, wenn Du willst), bist Du forderst, dass sie 1/3 doch bitte mal als numerische Zahl 0.33333... hinschreiben sollen. Usw. usf. Von den echt geilen interaktiven Plots (wie neulich die Hurst-Demo) will ich mal nicht reden. Hmm, oder doch. Welchen EInfluss hat ein (odere mehrere) Parameter auf das Ergebnis (Tradingsystem oder auch irgendwas anderes) ? Soll man den Stopp besser breiter machen oder nicht ? Was ändert sich ? Dank dieser Manipulate-Miniprogramme sieht mans sofort.
Noch ein letztes ABER: überleg Dir gut, ob Du solche Features brauchst wie ich sie beschrieben habe. Für mich ist es ideal, aber wenn Du tatsächlich nur automatische Handelssystem bauen/backtesten und ausführen willst, ist es nicht optimal und ich würde Dir dann davon abraten. Meine Lösung ist übrigens: Erfahrungsgemäß steckt die Haupt"arbeit" in der Findung der HS-Ideen, dem Testen, Ausprobieren und Validieren, evtl. Optimieren. Den FERTIGEN Algorithmus im Anschluß daran noch in den Code einer Tradingsoftware-Programmiersprache (MQL4 oder 5) zu gießen ist das geringere Übel. Für mich funktioniert das gut (und ich hab sehr viel unterschiedliches probiert, ooooh ja, glaubs mir ). -
goso schrieb:
YMMD
@ PT, ich hatte in der Oberstufe Schwerpunkt in BWL und habe im Studium, zumindest in Rechnungswesen, eher weniger als mehr gelernt....aber soll mir recht sein, hat man mehr Zeit für die interessanten Dinge des Lebens. -
Perfect Trader schrieb:
(wobei ich BWL mal nicht zu den wahnsinnig tiefgehenden "Wissenschaften" zähle [in den USA zählt übrigens nur National-Ökonomie {VWL} als wirklich ausgereifte Wissenschaft und BWL eher als kaufmännisches Elementar-Handwerk, wie das in D auch mal war, zu Zeiten als die Leute noch ohne SAP nur mit einer Kaufmanns-Lehre nach der 8. Klasse einen Jahres-Abschluß mit Papier und Bleistift hinkriegten, den sie heute oft nicht mal mehr lesen können - trotz Uni-Abschluß])
YMMD -
-
Perfect Trader schrieb:
@ Krümel
Was Du mit der Bemerkung meinst, daß man nicht für jede Toolbox extra zahlt, verstehe ich nicht ganz, weil die großen Application Packages ja schon extra kosten und zwar im Verhältnis zur Hobbyisten-Version nicht gerade verschwindende Beiträge.
Bei Matlab wird mehr Funktionalität in Toolboxen ausgelagert (ist zumindest mein Eindruck gewesen, ich hab ja lange genug damit arbeiten dürfen) , für die dann einzeln bezahlt werden muss. Bei Mathematica ist viel viel mehr dieser Funktionalität schon im Grundpaket enthalten. Für die Toolboxen selbst zahlt man dann natürlich auch noch und auch nicht zu knapp, nur ist man nicht wirklich drauf angewiesen, sie zuzubuchen, weil man nicht so gefühlt ohne alles da steht wie bei Matlab, wo man ohne Toollboxen kaum handlungsfähig ist. Das meinte ich, hab es aber etwas missverständlich formuliert.
Perfect Trader schrieb:
Solange man für ein allgemeines Finanz-Forum schreibt, kann man übrigens kaum davon ausgehen, daß eine größere Anzahl von Lesern Mathematica nutzt, obwohl ich es seit 2006 auch schon öfter empfohlen habe.
Deswegen habe ich ja auch den Preis so explizit hervorgehoben, da man von Profi-Tools oft horrende Preise erwartet, was nun aber nicht mehr der Fall ist mit den neuen Home-Editions. Oft schaut man sich ja die Tools auch deswegen nicht an, weil man glaubt, man könne oder wolle sie sich sowieso nicht leisten.
Ich habe ja recht ausgiebig mit allen möglichen Programmierumgebungen und -tools gearbeitet und kann für mich sagen, dass ich Mathematica für sehr sehr sehr geeignet für diese Problemstellung halte und die Notebook-GUI hab ich so zum ersten Mal überhaupt gesehen. Davon hab ich jahrelang nur heimlich geträumt. Ich will mich ja jetzt auch nicht über Mathematica austauschen, das wäre ja tatsächlich etwas viel erwartet von CT, da hast Du natürlich Recht, sondern eigentlich wollte ich nur meine Begeisterung weitergeben. Vielleicht schaut sich ja auch jemand mal das Tool an und kann es für sich auch als nützlich entdecken. Muss ja nicht immer der neueste kostenlos downloadbare Metatrader-Expertadvisor sein, den man anpreist, sondern vielleicht mal was Nachhaltigeres ! -
-
Perfect Trader schrieb:
@ trash
Ein ganz dickes Lob für Deine interessanten Beiträge und deren oft hoher Expertise.
Und Dir, PT, ein ganz dickes Lob für die vorbildliche "Mitarbeiter-"Motivation. Das ist ja leider heutzutage auch nicht mehr selbstverständlich , da man doch lieber nur die gemachten Fehler anzählt, aber nicht das, was jemand gut gemacht hat.
So, aber nun zum eigentlichen Punkt:
ich kann (neben R) Mathematica als Software zur Datenauswertung/Backtesting nur empfehlen. Da Wolfram (von denen auch die Wolfram-Suchmaschine stammt) mittlerweile für den Hobbyisten eine für die gebotene Qualität und den Funktionsumfang fast nachgeworfene Lizenz für 295 Euro anbietet (Studenten zahlen nur 153, haben außerdem noch Upgrades umsonst), die meines Wissens nach auch keine Einschränkungen hat (außer, dass sie nicht 3500 Euro kostet), ist Mathematica für mich mittlerweile eine echte Alternative zu R.
Zumal ein Profi-Tool, welches mWn auch in Banken etc. eingesetzt wird schon eine Reihe Vorteile gegenüber einer Open-Source-Software wie R besitzt. Das sind zum einen das tolle Notebook-GUI :love:, welches ich zwar gerade als R-Paket in Java nachzuprogrammieren versuche (aber das ist reiner Sport), die Leistungsfähigkeit; historische und aktuelle Daten (EOD) aus dem Finanzbereich, aber auch anderen Domänen können aus der Wolfram-Datenbank einfach so verwendet werden (Bsp: Finanzdaten-Beispiel). Man zahlt nicht für jede Toolbox extra (wie bei Matlab,die immer noch zu arrogant für eine Privatperson-Lizenz sind ) einen mehrstelligen Obulus, sondern das ist alles schon drin. Die Qualität der Software ist gesichert und schwankt nicht so wie bei Opensource-Paketen. Und es gibt SUPPORT : also, nicht in irgendnem Forum drauf hoffen, dass jemand sich erbarmt und eine Antwort innerhalb von 2 Wochen postet - solange man das Problem noch hat- , sondern ZEITNAH antwortet jemand, der sich echt mit dem Produkt auskennt.
Man kann sich auch eine 15-Tage-Trialversion ziehen und muss sich nicht wie bei Maple (dem dritten Konkurrenten aus dem Kreise Matlab, Mathematica und Maple) von den Beratern ein Ohr abkauen lassen, nur damit man mal einen Blick in die Software werfen darf. Die Hobby-Version von Maple kostet auch so um die 200 Euro, aber Maple finde ich irgendwie unsympathisch, nicht nur, weil sie so auf der Trialversion sitzen. Das ist aber meine ganz persönliche Meinung. Schlecht ist sie auch nicht und angeblich - wenn man motiviert ist, was ich nicht war - leichter zu lernen als Mathematica.
Einst als Ex-Student mit einer "Ich benutze nur Opensource-Software, weil ich zu geizig für alles bin" -Einstellung ausgestattet, bin ich mittlerweile nach zahllosen verbratenen Stunden in R-Code und dem R zu grundeliegenden C Code (mangels Doku, die will im Opensource-Bereich nämlich immer keiner schreiben), da ich mir auch noch ein Dot-Net-Interface für R schreiben musste - man hat ja sonst keine Sorgen - dazu übergegangen, mal lieber 300 Euro auf den Tisch zu legen, und dann ist Ruhe. Es gibt super Tutorials, hat auch unter Windows ne vernünftige GUI, es gibt auch einen kostenlosen Wolfram-Player - ähnlich wie den Adobe-Reader, der auch nur Wiedergeben, aber nicht Ändern zulässt-. Damit kann sich auch jemand anderes in einem interaktiven Plot bzw. Mathematica-Dokumenten austoben, ohne selbst die Software zu besitzen.
Also, wer sich eh in irgendwas einarbeiten will und das auch längerfristig zu machen gedenkt (Datenauswertung etc.) , dem lege ich Mathematica echt ans Herz. Spart Zeit, Nerven und langfristig auch Geld (weil ja Zeit=Geld gilt). Ach ja, Mathematica ist natürlich wie R auch plattformunabhängig und die Plots werden bei vielen Daten nicht so träge wie die TCL/TK-Plots von R, da die komplette GUI von Mathematica aus Java besteht. -
-
Purri schrieb:
Cerberus: aber hätte Amibroker c# oder java integriert anstatt zum hunderdsten mal die FOR-Schleife neu zu erfinden, wäre es noch viel besser. Das Programm könnte alles was es jetzt auch kann, und zusätzlich hätte man noch Zugriff auf das gesamte Framework und die endlosen externen Bibliotheken. Ausserdem könnte mann dann die Sprache, die man sowieso für Amibroker erlernt hätte, auch ausserhalb von Amibroker verwenden, z.B um die Backtest Ergebnisse weiter zu erforschen, oder um von Amibroker heraus Excel fernzusteuern, oder irgend ein anderes Trading-relevantes Problem zu lösen die sich (bei mir zumindest) immer wieder stellen.
Hatte ich noch nicht gelesen, deshalb muss ich mich mal einmischen in Sachen AB.
AB und C# wäre auch möglich über das im anderen Thread verlinkte .Net Development Kit dotnetforab.com/. Developerversion wäre zwar nicht kostenlos aber im Gesamtpaket mit AB immernoch die Hälfte bis zwei Drittel günstiger als andere Softwarelösungen. Was ich an AB gut finde ist, dass es im Prinzip keine Grenzen gibt (Oder um Tomasz zu zitieren "In AFL you can even paint Van Gogh sunflowers if you want " ), hinzukommen die Zuverlässigkeit, Schnelligkeit und Leichtgewichtigkeit sowie der durchdachte Aufbau. Dass AFL schwierig sei für Anfänger kann ich nicht bestätigen. Im Gegenteil, also ich bin sofort damit zurechtgekommen, als ich anfing, mich näher damit zu beschäftigen. Ich persönlich finde AFL eine der einfachsten, da komme ich mit anderen viel schlechter zurecht, z.B. Ninjascript oder MQL. Kann aber auch an mir liegen.
Excel mit AB steuern. Zitat vom AB Entwickler:
Hello,
You *can* send data from AmiBroker to excel.
Just write a macro in Excel that uses Broker.Application
object - this not only allows to access data,
but also allows you to run backtest/exploration,
export charts and lots of other things.
You can also use AmIBroker's built in OLE support
to write values to Excel cells directly.
amibroker.com/library/detail.php?id=218
(the sample has VBScript part for historical reasons,
but the same can be written in native AFL as well now)
Also with AFL you can create for example XML
files using fopen/fputs/fclose.
Then XML files are native in Excel and they can
be read using VBA/macros as well.
DDE is outdated technology.
Best regards,
Tomasz Janeczko
amibroker.com
Oder dann wieder siehe .NET for AmiBroker
Dann gäbe es hier noch ein Zitat über den Vergleich von Backtests ohne Garantie auf Korrektheit:
Hello All,
I have just completed a few days of testing several modeling/backtesting
programs. I thought, perhaps, the other members of the list might find the
results useful; as I am new here, hopefully this can serve as my first
productive contribution.
I do a lot of testing & modeling on (a) daily bars (looking to execute intraday
trades) and (b) tick data (for short-term trades). In the case of the first, I
need to create signals on a daily series but execute orders against a 1M
intraday series. So, in order to test an idea over five years of data, I have to
do it over 5Y of 1M data. This gets into performance issues when you start
wanting to run a test on several issues and want to run multiple revisions of
the test. As for testing on tick data, I am sure you are familiar (at least
conceptually) with the performance issues there.
I took a look at NinjaTrader, TradeStation, OpenQuant & AmiBroker. I created an
ASCII file of 5Y of EURUSD, USDJPY, GBPUSD, AUDUSD & USDCAD 1M data. In each
program, I ran a simple EMA crossover test (10/50). It was an obnoxious test,
resulting in +300,000 trades, but it was easy to implement and was a good stress
test. What I wanted to do was see if I could get: a) reliable (e.g.
reproducible) results from a single-security test and b) a test of the five FX
pairs as a portfolio (again, in a reliable/reproducible manner).
1. Ninja: I use Ninja daily to scalp with and execute some short-term system
code. I had dim hopes for the backtesting since I am familiar with the program -
Ninja really is an execution platform first and an analytical platform second.
The results were more or less what I expected: I could get it to test one issue
with reproducible results at an okay speed (about 3:00M) but it would start to
go into fits when I ran it against all five at once. The results of the five
issue test would vary from instance to instance - it would usually show the
results for the first 3 issues correctly, but on the last 2 it would suffer some
kind of memory issue and give me numbers that were totally off. In one pass, it
even managed to corrupt itself and I had to reload all the data.
2. TradeStation: I have a lot of time invested in TradeStation and I was already
familar with it's problems - mainly, that over a large test set, TS will return
different test results. I have talked with TS support and posted on the message
board about this, but I never got anyone interested in what I found to be a
critical issue. The results of this test were as expected: I could not get two
results to match. Any time I would refresh data from the TS data servers and run
the test again, I would get a different result. Sometimes it was as much as test
1 being -$190K and test 2 being +$74K. I do not understand how anyone can use
this tool for successful modeling if they are testing over a large dataset;
just making up a number would have been as useful. I even exported and imported
the data to ensure that it wasn't an issue with the TS data servers. Same
inconsistency. I couldn't test all five pairs together since TS does not do
portfolio backtesting. As
for time of a single test, it is hard to tell with TS as to what, exactly, it
is waiting for/trying to do at any given moment, but I would say it would
usually take about 2/4M per test (although, I have no idea what it was doing in
that 2/4M since the results it returned seemed random at times).
3. OpenQuant: This platform looked interesting. I set it up, imported the data
and ran a test. After 20M I noticed that the first EURUSD 1M test was at 10%. I
closed it down and uninstalled it. The performance was just not going to work
for me.
4. AmiBroker: You can likely guess the results as I am here as a new member. AB
was able to test EURUSD in about 30 seconds and was able to do the portfolio of
all 5 pairs in about 2M. No matter how many times I ran the test, the numbers it
would return were the same. This fact is pretty crucial to my work. I understand
that data will have errors in it, but I at least need my modeling software to
consistently return results (which AB did). I even created new databases and
populated them with the same data - all test results returned were the same.
As you all know, AB was, by far, the cheapest option out of all of the above.
I hope some members find these results useful/interesting and I think that these
results really are a credit to Tomasz.
I would be
interested to hear from anyone who has tested AB against any other
off-the-shelf tools that I did not look at.
- Tim"I'm a trader, baby. So, why don't you kill me?!" -
Hallo
Für Anfänger die einfach mal Testen wollen und Experimentieren wollen würde ich mal den Marantrader empfehlen, der ist Kostenlos und mit einer Sprache die fast Tradestation Kompatibel ist besonders für Anfänger geeignet. Die Software beinhaltet auch Daten über Jahre in 1min Komprimierung im FX z.b 10 Jahre
MQL4/MQL5 zu Lernen nur um einfache Systeme zu Testen ist bestimmt nicht der Richtige weg, das nötige Wissen ist da doch erheblich größer als bei Easy Language und co.
LG ST -
Es geht hier wohl darum was man einen Einsteiger rät, der seine "einfachen" Strategien backtesten will.
Und dann gleich auf c oder c++ springen? Das heist dann auch erst mal 1-2 Jahre programmieren lernen,
und ich kenne genügend, die das nicht geschafft haben, obwohl sie in diversen Skriptsprachen programmieren.
Ich habe Informatik studiert und dort fängt man auch nicht gleich mit c++ hardcore an!
Wenn ich als Einsteiger die Grundkonzepte der Programmierung erlernen will, dann suche ich mir eine
einfache Sprache wie c# oder java. c# hätte den Vorteil, dass man im NinjaTrader damit arbeiten kann.
Die Skriptsprachen von Tradestation und Tradesginal waren für mich eine Umstellung,
da die sich in einigen Punkten deutlich von einer höheren Programmiersprache unterscheiden.
Amibroker ist sicher eine gute Software und wie ich jetzt weis gibts sogar Manuals dafür.
Allerdings ist sie für Anfänger für meine Begriffe nicht so einfach zu erlernen wie Tradestaion oder Tradesginal,
das ist aber sicherlich auch geschmakssache. Mir hats nicht gefallen.
Man wird zweifelsohne mehrere Softwareprodukte durchprobieren, bis man bei der landet, die seinen Anforderungen entspricht.
Von daher würde ich auf Basis meiner Anforderung mir eine erste einfache Software suchen.
@Cerberus24
1) Nix Raubkopie, 14 Tage Demo genügten mir, bitte Vorsicht mit solchen Äusserungen!
2) Die länge eines Codes sagt garnix aus. Ich schreibe lieber 10 Zeilen mehr, dafür ist der Code dann wartbarer -
Cerberus: aber hätte Amibroker c# oder java integriert anstatt zum hunderdsten mal die FOR-Schleife neu zu erfinden, wäre es noch viel besser. Das Programm könnte alles was es jetzt auch kann, und zusätzlich hätte man noch Zugriff auf das gesamte Framework und die endlosen externen Bibliotheken. Ausserdem könnte mann dann die Sprache, die man sowieso für Amibroker erlernt hätte, auch ausserhalb von Amibroker verwenden, z.B um die Backtest Ergebnisse weiter zu erforschen, oder um von Amibroker heraus Excel fernzusteuern, oder irgend ein anderes Trading-relevantes Problem zu lösen die sich (bei mir zumindest) immer wieder stellen.
Es wäre auch produktiver. Wenn man ein Programmier-Problem allgemeiner Natur hat, kann man sich zu 100% sicher sein, dass es schon jemand gelöst hat(wenn es nicht ohnehin im Framework enthalten ist) und man findet in kürzester Zeit die Lösung im Web und muss das Rad nicht neu erfinden. Und Produktivität ist m.E. für einen Einzelkämpfer einer der wichtigsten Aspekte.
Ausserdem verstehe ich den Sinn nicht ganz dahinter, wenn jede Tradingplatform ihre eigene Sprache entwickelt und sich in ihr eigenes kleines Universum abzukapseln versucht. Der Trend bei den Neuentwicklungen scheint auch in die andere Richtung zu gehen. -
-
Wenn das Alles so toll ist, mit C und all seinen Derivaten, wieso nutzen dann Heerscharen von Nebenberufstradern, die hauptberuflich Programmierer sind, AFL (Amibroker) ?
Wenn das Alles so toll ist, wieso vergleicht denn keiner mal die Codes der verschiedenen Anbieter: In jeder Ausgabe von Stocks&Commodities wird ein Trading Problem softwaremässig gelöst und der Code von den unterschiedlichsten Anbietern abgeruckt. Warum ist AFL meist der kürzeste, warum von Allen stets der schnellste?
Ich bin ja leider recht programmierphob, aber warum die Erfahrenen stets mit dem Allroundbastelkasten kommen, statt eine problemadäquates Lösungstool zu wählen, wird mir stets ein Rätsel bleiben.
MFG
Cerberus24 -
Danke euch beiden. Ich tendiere auch zu C#. Wobei ich eine Lizenz für den Forextester besitze, mit dem sich hervorragend manuelle Strategien testen lassen. Leider gibt es nur sehr wenige vorprogrammierte Indikatoren und anderes was mich interessieren würde zu testen, bleibt somit auf der Strecke. Als Programmiersprache wird Delphi oder C++ benötigt.
Bis dato verwende ich den Metatrader zur Analyse, Trades werden dann durch Oanda ausgeführt. Was mich momentan beschäftigt sind Indikatoren rund um Volumen im FX Markt wie Market Profiles oder die Marney Indikatoren wie sie in den letzten Ausgaben des FX Trader Magazine vorgestellt wurden. Letztere basieren auf Anzahl Ticks je Zeiteinheit. Ich frage mich welche (gratis) Software inkl. Feed für die Tickberechnung dies am ehesten umzusetzen ist. Ob die Ticks von Market Makern ausreichen ist natürlich eine andere Frage… -
Ich kann mich da PT nur anschließen. Die erste Sprache wird sowieso nicht die Letzte sein, es sei denn, man schmeißt es irgendwann hin.
Wenn ich heute nochmal anfangen müsste, würde ich mit C# und (Visual Studio Expess Version 2010 kostenlos downloadbar) anfangen und die Grundkonzepte der Programmierung lernen (Schleifen, Iteratoren, Grunddatentypen usw.) .
Warum ?
Ich finde C# in der Entwicklungsumgebung sehr angenehm zum Arbeiten, die Dokumentation ist extrem gut (bei google nach MSDN suchen, z.T sind die Seiten sogar manuell ins Deutsche übersetzt), Intellisense und ähnliches ist eingebaut, was das Arbeiten extrem erleichtert, da Infos sehr schnell zur Verfügung stehen. Suchen, Nachlesen, Konzepte verstehen und umsetzen ist das Gros der Programmierung meiner Erfahrung nach. Das Internet ist voll mit C# und Anfängerfragen/-antworten. Das ist bei exotischeren Tools/-Sprachen nicht so und man verschwendet viel mehr Zeit mit Suchen.
C++ würde ich in der ersten Runde nicht nehmen, da man grad als Anfänger jede Menge verwirrender Infos im Netz findet (C++ .Net ist nicht das "klassische" C++, managed vs. unmanaged code, man findet auch Codesnippets von anderen Plattformen die unter Windows nicht laufen oder Mixe aus C und C++ etc.) . Das muss man sich nicht antun als Anfänger, finde ich. Man kann auch dann wechseln (wenn man nicht mit Ninjatrader arbeiten will), sobald man die Grundkonzepte genug trainiert hat. C# ist da eine schöne runde Sache, die auch schnelle Erfolge liefert und Spaß macht. Eventuell kann man danach auch zu Übungszwecken auf den Metatrader umsteigen, um da die typischen Probleme der Indikatorerstellung etc. zu erlernen und sich der Problemdomäne anzunähern. Mutige können auch gleich damit anfangen. Ich würd's nicht tun. Wissenslücken in den Basics rächen sich zigfach.
Das Bundle der aktuellen DotNet-Sprachen unterscheidet sich eh nicht mehr sehr voneinander (VB,F#,C#,C++). Java kann man auch nehmen, aber bietet in meinen Augen keinen Vorteil gegenüber C#, da Plattformunabhängigkeit nicht sonderlich wichtig ist, weil man ja danach sowieso unter Windows weiterarbeiten wird mit der dann ausgewählten Tradingsoftware, nehme ich mal an.
Equilla oder ähnliches wäre noch eine Möglichkeit, aber man stößt meines Erachtens sehr schnell an Grenzen, und ums Verstehen, was man da eigentlich tut, kommt man langfristig auch nicht drumrum, wenn man über das Niveau von "Wir kreuzen hier mal zwei Mittelwerte" hinaus will. Außerdem würde ich Backtests stets gegenchecken mit nem zweiten unabhängigen Tool ("Traue keiner Software, die Du nicht selbst verwanzt hast").
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
- Reddit 0