Jump to content
Tom Next - Daytrading Community

100% Eigenentwicklung vs. NinjaTrader, MT4-EAs, ...


turiddu

Recommended Posts

Hi Leute!

 

Ich stelle mir folgende Frage: Lohnt es sich Handelstools und Backtest komplett selbst zu schreiben? Damit meine ich dass wir als Beispiel mit C++, C#, ... uns an eine API andocken und darüber handeln. Dass wir eine eigene SQL-Datenbank haben und ALLES selbst schreiben. Jeden Indikator, Bestände verwalten, ...

 

Bei MQL und Co. nimmt das Tool einem schon viel ab. Sei es Trades verbuchen, State einer Order, ...

 

Inzwischen gibt es so viele mächtige Tools wie MultiChart. Wenn ich mir die Screensots angucke wie da ein Backtest da "ausgewertet" wird, dann denke ich mir nur: WOW! Dafür müsste ich viele Stunden schreiben! :pinch:

 

In diversen Foren (auch hier) lese ich immer wieder von Händlern die nur Tools in einer "Trader-Sprache" schreiben (MQL, ...). Wieso frage ich mich? Ist es einfach zeitgemäß oder weil es einfacher ist als eine "Hochsprache" wie C++, C# oder was auch immer zu erlernen?

Wie machen es denn die "großen"?

 

Sind Handelstools wie Kuchen? Ist "selbst" programmieren besser?

 

 

MfG

Link to comment
Share on other sites

schwer zu sagen.

Ich denke viele programmieren in tradersprachen weil es einfach schneller/einfacher ist. auch "korrekter". Wenn du die backtests etc. selber schreibst musst du dich auch um die korrekte abrechnung kümmern.

 

Was gescheiter ist hängt glaub ich vom einsatzgebiet ab. Ein langfristiger Trendfolger ohne groß Berechnungen, ist egal wo du es schreibst. Beim HFT kommst du aber mit MT etc. auch schnell mal an die Grenzen was die Performance angeht.

Aus meiner Sicht macht eine komplette Eigenentwicklung erst Sinn wenn du ein System hast das läuft und mit der Eigenentwicklung noch einen tick mehr speed etc. rausholen willst/musst.

Am Anfang der Entwicklung alles selber schreiben is Riesenaufwand und du verbringst viel Zeit mit dem drumherum die du sonst direkt in die Systementwicklung stecken könntest...

  • Upvote 2
Link to comment
Share on other sites

da Problem ist echt die Zeit, erstmal ein Basicframework zu programmieren, wo du nur mal die rudimentären Indikatoren einzeichnest und simple auswerten kannst.

 

Hätte ich das nötige "Kleingeld" würde ich aus allen, mir bekannten Plattformen (Investox, MT4 +5, Jtrader, Multicharts, Ninjatrader, etc.) die, meiner Meinung nach, besten Komponenten rausnehmen

und in ein komplett neues Framework bauen, welches sich auf Bladeserver bzw. HighPerformanceServer skalieren lässt .... *träum* ... dann könnte man eine Indikatorbibliothek bauen, kombinieren

mit künstlicher Intelligenz + genetic und von allen Brokern mit API, DDE etc. die Daten abgreifen und alle Märkte gleichzeitig handeln.

 

Ich fürchte aber, das bekomme ich nicht mal bei den Chinesen zum Diskontpreis oder ich müsste die besten Programmierer in ein Bürokomplex, natürlich Unterirdisch, entführen und Monate bzw. Jahre an diesem programmieren lassen... naja, Cäsar lässt grüssen blackjack.gif

 

Fazit: Ich denke, der Aufwand ist enorm und bis die Fehlerquellen und Bugs draussen sind, vergehen Jahre ... aber Versuch macht klug!!

Link to comment
Share on other sites

Schau dir mal Tradeproject an. Daniel ist so einer der seine SW geschrieben hat. Sie ist extrem schnell und auf C++ aufgebaut. Die Schnelligkeit war ihm damals sehr wichtig. Was mir jedoch nicht gefiel war das Charting. Mein Stand ist von Mitte 2010. Er hat bestimmt viele neue Features in seinem Baby ein gebaut.

Schreib ihm mal eine email. Er ist sehr nett.

Link to comment
Share on other sites

Da ich gerade dabei bin, ein eigenes Handelssystem in C# zu entwickeln, kann ich das bisher gesaget nur unterschreiben. Es ist schon ein sehr großer Aufwand. Deshalb gehe ich eine Mittelweg. Ich habe die Handelslogik und die Chartdarstellung "ausgelagert". Orderabwicklung und Backtest erfolgen weiterhin in NT. Leider mußte ich auch die Chartdarstellung auslagern (hierzu setzte ich MSChart und native Grafikmethoden ein), da NT in einer Strategy nur einen Chart zulässt. Ich wollte aber für jeden Timeframe einen eigenen Chart mit den 1-2-3's, Insidebars, etc., haben. Diesen ganzen Grafik-Kram darf man nicht unterschätzen.

 

Ich hänge den C#-Code als DLL in NinjaTrader ein. NT sendet z.B. 1Min Daten an das HS. Das HS erzeugt Handelssignale, die ich an NT weiterreiche. Die Ausführung der Orders erfolgt in NT. Einige NT Events wie z.B. OnBarUpdate, OnOrderUpdate, OnExecution verarbeite ich aber auch noch. Z.B. um die Orderausführung zu überwachen.

 

Da mein Handelssystem auf Markttechnik basiert, komme ich mit sehr wenigen Indikatoren aus (ATR, Parabolic SAR, MACD). Diese Inids habe ich für mein HS adaptiert (es sind "normale" Klassenmethoden geworden). Der Aufwand, alle Indikatoren nachzuprogrammieren, entfällt damit im wesentlichen.

 

Zwei Punkte haben mich im wesentliche bewogen diesen Weg zu gehen:

1. Das HS wurde recht schnell komplex. NT bietet keine sinnvolle Möglichkeit an, seinen Code zu verwalten. Auch sind nur sehr rudimentäre Debugmöglichkeiten vorhanden.

2. Leider kann man in NT in einer Strategy nur einen Chart darsstellen.

Link to comment
Share on other sites

Zwei Punkte haben mich im wesentliche bewogen diesen Weg zu gehen:

1. Das HS wurde recht schnell komplex. NT bietet keine sinnvolle Möglichkeit an, seinen Code zu verwalten. Auch sind nur sehr rudimentäre Debugmöglichkeiten vorhanden.

2. Leider kann man in NT in einer Strategy nur einen Chart darsstellen.

 

1. Hast du NT mit Visual Studio integriert?

- NT ist auch ein proprietäres System

2. Nehme für deine Orderausführung doch einfach einen Tickchart (NT unterstützt doch Multitimeframe oder nicht mehr). Als Datentransporteur kannst du doch jeden Chart nehmen ohne Strategieeinstellungen.

- verstehe ich nicht

Link to comment
Share on other sites

1. Hast du NT mit Visual Studio integriert?

- NT ist auch ein proprietäres System

Ja, mit Visual Studio Pro. Den Code kann ich aber innerhalb NT nur in den beiden Verzeichnissen Strategy und Indicator ablegen. Man kann keine Orderstrukturen erstellen. Das erschwert die Übersichtlichkeit erheblich.

 

2. Nehme für deine Orderausführung doch einfach einen Tickchart (NT unterstützt doch Multitimeframe oder nicht mehr). Als Datentransporteur kannst du doch jeden Chart nehmen ohne Strategieeinstellungen.

- verstehe ich nicht

Den Tickchart könnte ich wohl auch nehmen. NT unterstützt Multitimeframe. Man kann in einer Strategie beliebig viele Timeframes ansprechen. Man kann in einer Strategie aber nur einen Chart öffnen. Ich kenne keine Möglichkeit, mehrere Charts parallel offen zu haben. Als Plot-Bereiche innerhalb des Charts kann man etwas machen. Aber die Möglichkeiten sind dann doch sehr eingeschränkt.

In einem Indikator-Chart kann man aber keine Orders absetzten. Sonst wäre das genial.

Link to comment
Share on other sites

Du kannst doch mit globalen Variablen arbeiten, sprich, du baust mehrere Strategien, die übergreifend zusammenarbeiten können. Dann hast du mehrere "echte" Charts.

Vielleicht eine Möglichkeit. Gefühlsmäßig habe ich aber erstmal ein Unbehagen. Ich benötige dann eine zentrale Stelle (eine DLL?), die die einzelnen Strategien synchronisiert.

 

Ich grüble gerade darüber nach, wie ich folgende Anforderungen lösen kann:


  •  
  • Strategie 1 prüft die Marktphase und erzeugt einen Entry. Die Stopp-Setzung erfolgt in Strategie 2 (im niedrigeren Time).
    Kann man Strategie-übergreifend auf die Orderverwaltung zugreifen?
  • Im niedriegeren Timeframe möchte ich einen Punkt (P2) des höheren Timeframe abfragen.
     

Link to comment
Share on other sites

Eddy, habe mich lange nicht mehr mit NT beschäftigt. Was man aber machen kann mit C# ist eigentlich unbegrenzt.

Du hast einen Rechner bzw. Server. Da nehmen wir mal beispielsweise einen i7 (64bit) mit 16GB oder mehr.

 

Grundsystem (i7 mit 16GB) - fungiert als Server Betriebssystem (Windows 7 besser wäre Citrix Xenserver)

 

1. Client: Windows XP/7, 3GB HS, feste IP - 1. NT Instance - Datentranspoteur

  • hier zeichnest du alles auf
  • was auch immer

2. Client: Windows XP/7, 6GB HS, feste IP - Datenbank und Logik

  • hier findet die eigentliche Arbeit ohne NT statt
  • du kannst auch von hier die NT datenbank ansteuern
  • ist eine MSSQL datenbank (bisl reverse eng.)
  • ggf. weitere Datenbank für Tick, Time und Indikatordaten aus 1. Instance
  • Analysis

3. Client: Windows XP/7, 3GB HS, feste IP - 2. NT Instance - Strategie (Buy/Sell)

  • Buy Strategie
  • Sell Strategie

 

4. eventuell schaffst du noch ein Ausfallsystem bzw. replizierst

 

Für deine Ordnerprobleme: Lege die einen ordentlichen Namespace an und bezeichne deine vielen DLLs unique.

Link to comment
Share on other sites

@wh

Der Weg den du beschreibt, ist ok. Dazu passt vielleicht noch dieser Hinweis: Mein Link.

 

ABER: Ich glaube, mein Wissen reicht dafür nicht aus. :white_flag: Ich programmiere zwar in C#, aber aus dem aktiven Programmierleben bin ich schon sehr lange raus. Vor ca. 10 Jahren habe ich meine IT-Firma verkauft, in der ich die letzten Jahre für Vertrieb und Projektcontrolling verantwortlich war.

 

Vielleicht gibt es hier im Forum ja noch andere Entwickler, die ein ähnliches Problem haben bzw. Interesse an einer Lösung haben. Man könnte dann versuchen ein Framework zu entwickeln, mit dem man deinen Vorschlag umsetzten kann.

 

Eddy

Link to comment
Share on other sites

Ich glaube nicht, dass man mit vertretbarem Aufwand eine Tradingsoftware schreiben kann, die auch nur annähernd an die "Komplettpakete" Ninjatrader oder Metatrader etc. herankommt. Vielleicht erreicht man, dass die eigene Software in einigen wenigen Punkten besser sein wird, aber in der Masse der Funktionen wird sie schlechter oder immer ein riesen Baustelle sein.

 

Zweifellos ist der Lerneffekt nicht zu unterschätzen - allerdings geht diese Zeit vom eigentlichen Ziel (Aufgabe) - nämlich Handelssysteme zu entwickeln und profitabel zu traden ab. Ich selbst handle mit gängigen Tardinglösungen und programmiere nebenher u.a. meine eigene Backtesting-Umgebung - und habe dadurch die Möglichkeit das Backtesting extrem zu beschleunigen, auf mehrere Maschinen zu verteilen und bis ins kleinste Detail zu kontrollieren. Allerdings verwende ich für die grafische Ausgabe auch wieder Drittsoftware (Excel oder Visualisierungsoftware). Es gibt sehr viel gute Software am Markt - ich glaube man hat am Ende des Tages mehr davon, wenn man diese intelligent verknüpft und sich bei der Softwareentwicklung auf das Handelssystem konzentriert.

  • Upvote 1
Link to comment
Share on other sites

Ich kann mich da wingman ausnahmslos anschließen. Ich habe Jahre damit zugebracht, die für mich funktionierende

Infrastruktur aus Plattform, Feed, Programmiersprache, Broker, ... zu finden und habe einiges gesehen :-)

 

Auch die Idee so etwas selbst zu entwickeln hatte ich gehabt. Da ich aus der Java-Ecke komme, habe ich diesen

Software-Stack dort sehr vermisst. Einige Ansätze in dem Bereich waren gut, JForex gab es damals noch nicht,

aber einen Durchbruch habe ich mit den bestehenden Ansätzen nicht erzielen können.

 

Eine Eigenentwicklung hätte mich weitere Jahre zurückgeworfen, da ich nebenberuflich im Trading-Geschäft unterwegs bin.

 

Beste Grüße

DT

Link to comment
Share on other sites

Da kann ich wingman und DarthTrader nur zustimmen. Eine NT-Äquivalent zu Entwickeln halte ich auch für ein schwer zu realisierendes Unterfangen.

 

Aus diesem Grund habe ich auch "nur" die Logik ausgelagert. Die Darstellung der Timeframes mit den 1-2-3's, Insidebars, etc. hilft allerdings enorm beim Testen der Strategie. Deshalb habe ich eine einfache GUI entwickelt. Wenn meine Strategie "fertig" ist, binde ich sie ohne GUI in NT als DLL ein. Die Backtests erfolgen dann ebenfalls in NT.

 

Nachteil meiner Vorgehensweise: die strategierelevanten Eigenschaften (z.B. 1-2-3's) sehe ich in NT nicht mehr, da ich nur noch einen Chart habe. Wenn ich da alles reinzeichne, sieht man wahrscheinlich nichts mehr (da es der M1 oder Tickchart ist). (Deshalb auch meine Frage nach der 'Enhanced Mini Data Box' ).

Link to comment
Share on other sites

Ich stimme jetzt mal zu 100% Wingman und Darthtrader zu. Doch denke ich auch das Eddy einen anderen Weg gehen möchte.

Es gibt viele Beispiele im Netz, die den Aufbau einer Tradingsoftware beschreiben bzw. Bausteine liefern können. Doch denke ich

auch das es ein Kampf gegen Windmühlen ist. Es können einfache Stock/Research Tools erstellt werden. Dafür eigenet sich Perl.

Probleme gibts dann mit den Feeds, obwohl es ja FIX gibt. Man kommt schnell in die Zehntausende (Line of Code). Baut man um eine API

(like FXCM, IB oder ...), oder sollte man sich frei machen. Frei sollte wesentlich schwerer sein.

 

Codeplex ist eine schöne Plattform. Es gibt aber auch bei Google Source eine Menge Beispiele.

 

--> stockchart.com

 

Es gibt da zwei Alternativen:

 

1. man schaut sich im GPL Bereich um

2. man benutzt "Advanced Tools" - Decompiler, Disassembler (sollte im C# und Java - Umfeld nicht so schwer sein)

3. Reversed man C/C++ Stuff sollte man sich mit IDA auskennen

 

Wer sagt, dass sei falsch, kann sich versichern, das machen alle großen Firmen. Die haben aber die Manpower und Zeit.

 

Eddy will ja HS schreiben, welches ich von der Didaktik mal nicht mit einem TS vergleiche. C# und NT, Java und JForex wie auch

DLL und Metatrader bzw. C++ und Nanotrader usw. sind alles mächtige Frameworks. Ich gehe jetzt mal nur auf C# und NT ein. Da

hier mein Erfahrungsschatz am größten ist bzw. die besten Möglichkeiten bestehen.

 

In Eddys Link steht eigentlich alles: It is only limited by experience. Ich bin mal realistisch:

 

Ich schreibe 10 Zeilen Code am Tag, wenn ich alleine Grübel und keine Referenz habe. Schaffe aber auch mal 100 Zeilen Code, wenn ich irgendwo

etwas portiere bzw. adaptiere. Jetzt fehlt mir aber auch noch die Zeit zum debuggen und testen.

Da muss ein Tag ja schon 48 Stunden haben bzw. muss mich in Thematiken einarbeiten bzw. Research betreiben, damit ich weiß wie und warum es

funktioniert.

 

@Eddy:

Suche dir erst mal Bibliotheken, die von Interesse sind

Schaue wie du diese mit C# verknüpfen kannst (Interop,COM,...)

Schaue acuh mal, was diverse Scripting-Sprachen (Lua, Perl, Python ...) leisten

Schaue welche Power Dir R/Matlab/co verschaffen können.

 

Habe ich auch schon ein- bis zweimal geschrieben: Mustererkennung in den unterschiedlichen Zeitrahmen funktioniert definitiv für dein 123 System.

 

Eddy hat ja auch ein Vorteil: Rentner ??

  • Upvote 2
Link to comment
Share on other sites

Eddy hat ja auch ein Vorteil: Rentner ??

Ja.

 

Ich habe nicht den Anspruch ein Super-Truper-Sonst-Was-Verkaufbares-System zu schreiben. Mir geht es allein um die Entwicklung einer auf Markttechnik basierenden Handelslogik. Com, Interop, Server, ... sind alles interessante Dinge (hätte ich Spass dran, das zu lehrnen). Für mein Vorhaben reicht aber eine DLL, die in NT eingebunden wird, vollständig aus.

Link to comment
Share on other sites

  • 6 months later...

@Eddy, bist Du noch an dem Markttechnik-Handelssystem dran?

 

Ich weiss, ich bin etwas spaet dran, aber ich habe dieses Forum erst heute entdeckt. :)

 

Das Markttechnik-Buch von Voigt lese ich gerade und wuerde die Handelstechnik gern nachprogrammieren. Ich habe dazu auch etwas "wissenschaftliches" entdeckt: http://smp-fe.de/downloads/automatic.pdf - automatische 1-2-3-Nummerierung.

 

 

Und um wieder zum Thema des Threads zurueckzukommen: Auch ich arbeite an eigenentwickelter Software. Zum einen weil es mir natuerlich Spass macht und eine Herausforderung ist, zum anderen aber auch, weil ich ueberzeugt bin, ein stabileres System hinzubekommen. Ich habe keine Ahnung von MT4 und EAs, aber wie ich gehoert habe, stuerzt mal das eine und dann mal das andere ab. Oder das Internet ist ploetzlich weg und das System kommt aus dem Tritt. Da haette ich bei einem komplett selbst konzipiertem System (inkl. Ueberwachung) mehr Vertrauen.

 

Aber wie schon erwaehnt wurde, es ist eine ganze Menge Arbeit. Jedoch glaube ich auch, dass sehr viel Zeit fuer die Oberflaeche draufgeht. Als Linux-User reicht mir die Kommandozeile und das sollte die Dinge einfacher machen.

 

Fuer Charts verwende ich derzeit ChartDirector von http://www.advsofteng.com/. Das ist nicht ideal, aber reicht fuers einfache Visualisieren.

  • Upvote 1
Link to comment
Share on other sites

Aber wie schon erwaehnt wurde, es ist eine ganze Menge Arbeit. Jedoch glaube ich auch, dass sehr viel Zeit fuer die Oberflaeche draufgeht. Als Linux-User reicht mir die Kommandozeile und das sollte die Dinge einfacher machen.

 

Ganz mein Reden aber irgendwie will es keiner Wahrhaben. Kommandozeile reicht für ein Handelssystem vollkommen aus und man hat weniger overhead und weniger Fehlerquellen. Die Arbeit für Backtesting ist etwas schwerer ..................

Link to comment
Share on other sites

Ganz mein Reden aber irgendwie will es keiner Wahrhaben. Kommandozeile reicht für ein Handelssystem vollkommen aus und man hat weniger overhead und weniger Fehlerquellen. Die Arbeit für Backtesting ist etwas schwerer ..................

 

Für den laufenden Betrieb (also wenn das System "funktioniert" und läuft) bin ich voll bei dir. Da sollte man alles raushauen was man nit braucht und performance kostet.

Aber für die Entwicklung des Systems braucht man mMn sehr viel charting und grafische Auswertungen der Backtests. Aber da ist die Frage ob man das wirklich selber schreiben muss. Man kann ja die Logik in einer vorhandenen Software (MT, NT, MC oder wie sie alle heißen) entwickeln und das fertige System dann erst selber umsetzen.

Link to comment
Share on other sites

Für den laufenden Betrieb (also wenn das System "funktioniert" und läuft) bin ich voll bei dir. Da sollte man alles raushauen was man nit braucht und performance kostet.

Aber für die Entwicklung des Systems braucht man mMn sehr viel charting und grafische Auswertungen der Backtests. Aber da ist die Frage ob man das wirklich selber schreiben muss. Man kann ja die Logik in einer vorhandenen Software (MT, NT, MC oder wie sie alle heißen) entwickeln und das fertige System dann erst selber umsetzen.

 

Hehehe ich denke wir sind da einer Meinung, Systeme mit Hilfe der Plattformen zu Entwerfen und auszuwerten ist definitiv the Best way to work. Man kann natürlich auch mit einer Programmiersprache Backtesten dann sollte man aber die Zeit und Lust dazu haben. Ich selber mache Beides nutze Plattformen und hin und wider nutze ich auch C/C++. Was ich nicht so toll finde ist wenn man mit diesen Plattformen auch selber Handelt das ist meiner Meinung nach wirklich ineffektiv. Viele auch Teils bekannte System Händler benutzen zum Beispiel die Software von Genesis zum Entwickeln und lassen das System in C Python oder VB Laufen z.b Andrea Unga. Das bring viele Vorteile bezüglich Leistung Fehleranfälligkeiten und co. Man Braucht zum Handeln keine GUI Konsole Reicht vollkommen aus.

  • Upvote 1
Link to comment
Share on other sites

Das Markttechnik-Buch von Voigt lese ich gerade und wuerde die Handelstechnik gern nachprogrammieren. Ich habe dazu auch etwas "wissenschaftliches" entdeckt: http://smp-fe.de/dow...s/automatic.pdf - automatische 1-2-3-Nummerierung.

Bin immer noch voll dabei.

Da ich mit NinjaTrader angefangen habe, entwickle ich in C# unter Visual Studio. Die Entwicklung betreibe ich allerdings losgelöst von NT. In NT binde ich eine DLL ein. Das Ordermanagement wird dann von NT übernommen. Vorteil: Ich kann entwickeln und testen ohne NT am laufen zu haben. Nachteil: Grundfunktionen einer Chartingsoftware musste ich selbt schreiben (mit MSCHART). Wenn das System mal steht, kann ich allerding den ganzen "zusätzlichen Kram" weglassen.

 

Ein Hauptgrund so vorzugehen war, das man in einer NT-Strategie nur einen Chart darstellen kann. Zum Testen ist es aber sehr hilfreich, die 1-2-3-relevanten Informationen in den entsprechenden Timeframes zu sehen.

 

Eddy

Link to comment
Share on other sites

Eddy, hast Du Interesse Dich ueber das Markttechnik-System auszutauschen?

Du musst mir aber noch bisschen Zeit geben. Ich will erstmal selber einen (erfolglosen?) Versuch starten. Dann habe ich auch eher etwas zu berichten und kann vielleicht auch ein paar Sachen zurueckgeben. Momentan waere es wohl sehr einseitig und nur ich wuerde dazulernen.

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...