Elemente von Georg's FDAX-Trading-Strategie in Python

      Warum programmieren?

      Nach der ganz tollen und nahezu in Realtime angefertigten Auswertung von trash, für die ich mich ganz sehr bedanken möchte :thumbup: , könnte auf die Frage von Georg, warum man eine Strategie progammiert, auch eine Antwort gegeben werden, die auch ihm die sehr großen Vorteile davon aufzeigt.

      In einer Auswertung, egal ob sie mit realen Trades oder mit einem Backtest stattfindet, kann man in vielen Fällen ziemlich klar die entscheidenden Schwachpunkte einer Strategie sehen. Oft kann man auch gleich mehrere Gegenmaßnahmen benennen, aber auch bei diesen ist fraglich, wie sie sich genau und mit ihren Wechselwirkungen auf Performance und Equity-Volatilität ausgewirkt hätten. Ein Backtest schafft zumindest für die Vergangenheit Klarheit. Wenn die Annahmen nicht allzu stark von gerade nur im Backtest-Zeitraum zutreffenden Eigenschaften der Marktbewegung abhingen, was mit etwas kritischer Bewertung auch meist vernünftig eingeschätzt werden kann, haben diese Aussagen auch für die Zukunft eine ausreichend hohe Bedeutung.

      Aus meiner Erinnerung (ohne jetzt die ganzen Threads durchzulesen) waren bei Georgs Strategie die damaligen Haupt-Kritikpunkte:
      • unzureichendes Risikomanagement,
      • zu komplexe Regeln mit zu vielen Sonderergeln für Spezialsituationen,
      • bei Dritten ausgelöster Eindruck zu häufiger Deutungen im Nachhinein.
      Gegen alle diese Punkte hilft Programmierung zusätzlich zur schon oben genannten schnellen Validierbarkeit kleinerer oder größerer Änderungen des Regelwerkes.

      Statt beim unzureichenden Risikomanagement auf die - wie im Nachhinein ganz klar erkennbare - vollauf zutreffende Einschätzung erfahrener Trader vertrauen zu müssen, insbesondere wenn man wegen des vielen Unsinns in Foren und der eigenen noch nicht ausreichenden Skills diese gar nicht erkennen kann, macht man sich selber ein Bild einer erwartbaren Equity-Kurve und weiß dann, ob diese der eigenen auszuhaltenden Leidensfähigkeit entspricht, statt nach dem Prinzip Hoffnung zu lavieren.

      'Unmengen von Sonderregeln' wird auch klar definiert: Solange man die Lust und die Kraft hat, daran rumzubasteln und es noch erkennbare, nicht nur singuläre Verbesserungen bringt, ist es eine zweckmäßige Regel, wenn man von der x-ten Regel, die keine Effekte mehr zeigt, die Nase voll hat, dann gehört sie ausgesondert und darf für weitere Betrachtungen zu anderer Zeit oder in einem anderen Kontext im Anregungsfundus verweilen.

      Auf Selbsttäuschungen mit im Nachhinein-Betrachtungen wird jemand, der sich ernsthaft all die Mühe einer Programmierung gemacht hat, sicher nicht bauen wollen, denn um sich zu täuschen, braucht man weit weniger Aufwand treiben. Wenn einige Leute mutwillig gefälschte Zahlen aus ganz speziell gefertigten "Tests" liefern, die zur unseriösen Ausweisung weit besserer Resultate für ein Publikum, dem man etwas verkaufen will, dienen, dann ist das ganz klarer Betrug und von dem wollen wir hier nicht weiter reden, denn ein solcher wurde im Zusammenhang mit Georgs Arbeit eher nicht thematisiert.

      Georg hätte also mit einem Programm jetzt die Möglichkeit sehr schnell seine Verbesserungen zu prüfen, ohne wieder Jahre warten zu müssen und in endlose Diskussionen mit Leuten zu verfallen, die seine Ideen nicht verstehen können oder wollen, ganz egal, ob die Ursache beim Ideengeber oder beim Leser liegt.

      Bezüglich der Aussage von Georg im Post # 17 in seinem Thread, um was genau er gebeten hat, sage ich mal, dass von einem EA oder einem automatischen Handessystem wirklich nicht die Rede war, von der einfachen Erfassung oder Auswertung mit Excel aber auch nicht, denn die wäre nun eine der kleinsten Handreichungen gewesen. Vielmehr waren die Ausführungen von Georg vor 8 Jahren bei seinem damalgen Erfahrungsstand lange nicht so bestimmt wie heute und genau das war der Grund, warum ihm damals niemand helfen konnte - er konnte das gewünschte Resultat und die Präsentationsform nicht ausreichend genau bestimmen.

      Nun, viele Jahre später mit einem größenordnungsmäßig höheren Wissen um Trading und die Trading-Community gehört Georg, egal was man zu seinen konkreten Aussagen meint und ob man sich überhaupt für sein System interessiert, schon zu den Leuten, die recht gut wissen sollten, wovon sie reden, unter anderem auch weil er neben seinem eigenen Lernprozess hunderte Male sehr deutlich von Dritten auf Defizite hingewiesen wurde.

      Trotzdem kann von der Mehrheit der Trader weder erwartet werden, dass sie selber alle Finessen von Handelssystemen soweit verstehen, dass sie sie auch selber programmieren und die Resultate quantifiziert bewerten können. Der Appell an Georg war eigentlich nur, dass er sich so präzise in seinen Regeln festlegt, dass man sie objektiv nacharbeiten kann und dass er die dabei abgeleiteten Fakten akzeptiert.

      Mit dem eigenen Vorlegen der umfangreichen über mehrere Jahre vorliegenden Trade-Historie hat Georg schon mal einen sehr großen Schritt in Richtung Objektivierung gemacht. Die Gründe für die notwendige ausreichende Überschaubarkeit des Regelwerkes sollten ihm jetzt auch klar geworden sein, ebenso wie die völlige Normalität offener Rest-Schwachpunkte auch des besten Systems, da es kein "Heiliges-Gral"-System geben kann, wieder hier noch sonstwo und die darum auch nicht etwa Ausdruck persönlichen Versagens sind, für das man sich irgendwie schämen müsste.

      Bezugnehmend auf das Start-Post dieses Threads, wo explizit erwähnt war, dass ich hier nicht den Alleinunterhalter geben wollte (alleine, weil ich völlig anders, mit anderen Modellen, anderen Instrumenten und in anderen Zeithorizonten trade und eigentlich nur etwas Unterstützung für Leute geben wollte, die sich an die Programmierung annähern wollten), frage ich die damals Interessierten (oder interessiert Tuenden) nochmal, ob sie auch heute noch Interesse haben, wo Georgs Vorlagen nun ja weit besser geworden sind.

      Es ist dabei überhaupt nicht zwingend, auf Python zu beharren. Python ist auch weiterhin eine exzellente Sprache. Für explorative Datenauswertungen und dem freien Spielen mit Daten zum Finden einer Idee ist Python bestimmt eine einfacher zu handhabendere Wahl als die Produkte, die eher der Endfertigung eines real ausführbaren Handelssystems dienen. Ich selber stelle der endfertigen Implementation in einer reinen Handelssystem-Plattform gerne Untersuchungen mit solchen Tools, wie Python, Octave, R und ähnlichem voran.

      Nachdem Georg nun seine Regeln aber schon recht weit ausformuliert hat, können sie auch ohne Zwischenschritte in MQL, AFL, NinjaScript, EasyLanguage, Equilla, o. ä. ausgedrückt werden.
      @ GeorgM

      Diese Frage hatte ich mit
      • den fünf angegebenen Gründen für die Programmierung wie
        • Machbarkeits-Einstellung der Techniker,
        • Wegfall von Routine,
        • vertieftes fachliches Problemverständnis,
        • Vertiefung der Trading-Programmier-Skills und
        • allgemeines Interesse am Programmieren
      • und der Aussage, dass
        • Alles zu programmieren sei
        • inkl. Voruntersuchungen,
        • Tests und
        • Nebenideen
      auch vollumfänglich beantwortet.

      Warum was programmieren?

      @ GeorgM

      Für das Programmieren gibt es viele Gründe.

      Joseph Weizenbaum beschrieb in seinem Buch Die Macht der Computer und die Ohnmacht der Vernunft schon 1977 die freakischen Programmierer, die die bei Technikern schon sehr weit verbereiten Allmachtsphantasien ("Dem Ingenieur ist nichts zu schwör", Ingenieur: einzige Berufsgattung, die Genie schon im Berufsnamen hat) durch das Losgelöstsein vom Materiellen in reine Abstraktionen besonders weit treiben. Anderseits sollte man das auch nicht zu fix pauschal abwerten, denn letztlich entsteht fast aller technischer Fortschritt genau durch diese unbedingte Hingabe der Techniker an ihre Sache, ganz lösgelöst von den Ansichten des Publikums, welches die Dinge meist erst zum ersten Mal sieht, wenn sie schon weit gediehen sind.

      Ein weiterer Grund wird einfach das dem Menschen innewohnende Bedürfnis sein, sich die Dinge einfach zu machen und nicht vor irgendeiner Maschine Routine-Tätigkeiten auszuführen, die man durch diese mit etwas Programmier-Einsatz auch erbringen kann ("kreative Faulheit"). Die Maschine arbeitet selbst bei etwas geringerer Ausführungsqualität gegenüber dem ursprünglichem menschlichem Experten durch die 365-Tage-24-Stunden-Einsatzbereitschaft und ihre stete Aufmerksamkeit in Summe trotzdem besser. Für die Nachfolger des Experten, die nicht mehr alle Details, die der Experte in Gesamtheit richtig einordnen kann, arbeitet sie oft sogar bei mäßiger Implementations-Qualität besser, als wenn diese die von ihnen nicht richtig verstandenen Dinge, die der Experte vorgemacht hat, imitieren wollen.

      Manche Dinge, die der Experte in Wahrheit ganz anders macht, können kreativ auf andere Lösungen abgebildet werden, so wie ein Flugzeug z. B. nicht wie ein Vogel mit den Flügeln schlägt oder eine Waschmaschine nicht auf einem Waschbrett rubbelt.

      Ein ganz wichtiger Grund ist, dass bei der Aufbereitung für eine wirklich funktionierende automatische Ausführung ein Problem außergewöhnlich breit und tief verstanden werden muss und diese Aufbereitung daher zu einer sonst mangels Motivation gar nicht erreichbaren Sichtweise führt.

      Diejenigen, die sich nicht so sehr für die fachlichen Dinge interessieren, können in einem gemeinsamen Programmier-Projekt ihre technischen Programmier-Skills vertiefen. Weiterhin kann man seine Ansichten über die Machart von Programmen austauschen, was durchaus zu weitreichend auch anderswo brauchbaren Einsichten führen kann. Die meisten Berufseinsteiger verstehen von Programmieren fast nichts, selbst wenn sie Informatik studiert haben. Das eigentliche Asset eines im immateriellen Sektor tätigen Teams sind nicht irgendwelche Code-Schnipselchen, die die meisten Leute völlig unzutreffend als "Software" ansehen, sondern die gemeinsame Sicht auf die Dinge in einer vollauf verstandenen, durch aktiv erworbene Überzeugungen geborenen Arbeitsweise.

      Ein letzter Grund, der mir jetzt auf Anhieb einfällt, ist, dass Programmieren auch ein amüsanter Zeitvertreib sein kann, so etwa wie Andere Kreuzworträtsel oder Sudokus lösen.

      Um ein lauffähiges Endprodukt zu erhalten, muss man natürlich alle Essentials programmieren. Darüber hinaus müssen auch noch diverse Voruntersuchungen und methodisch richtige Tests programmiert werden. Optional kommen noch ergänzende Untersuchungen zu neben dem Mainstream liegenden Fragen hinzu.

      Einen simplen - und darum auch nicht funktionierenden - Plump-Indikator-EA kann jeder nach ein wenig Studium der Doku irgendwo abschreiben und Ummodeln, ohne je was vom Geist der IT oder des Tradings verstanden zu haben. Bei einer ganzheitlichen Strategie, die eben nicht nur mit Scheuklappen auf ein einzelnes (Teil-)Ziel verkürzt, ist mehr an eigener Skills-Vervollkommnung, sowohl auf IT-technischem als auch auf fachlichem Niveau drin.

      Styleguides

      Da Systemtrader im Post # 25 in Georgs neuem Thread gerade leicht süffisante Anmerkungen machte, obwohl im Umfeld sehr hitziger Diskussionen (völlig ohne meine Beteiligung !!) sogar ganze Foren zerflogen sind, gebe ich den Hinweis, auf die im Post Styleguides zur Programmierung vor einigen Monaten schon mal erwähnten guten Vorgaben.

      Würden alle Mitwirkenden sie studieren und beachten, so könnten dieses Mal bei der praktischen Umsetzung, die bei vorigen Versuchen ja vor lauter "Hintergrundgeräuschen" eingestellt wurde (in den anderen Foren auch ohne meine Beteiligung !!), ganz ohne Anlässe für fachlich ansonsten zwingende Kritiken nützliche Beiträge geliefert werden.

      Aus Versehen gelöscht, zum Glück klappte die Zurück-Funktion zur Rettung des Textes, sry PT

      Versions-Verwaltung für Dokumente jedes Typs

      In diesem Thread war ja schon öfter von einer Versions-Verwaltung als besonders handlichem Instrument für Übersichtlichkeit, Sicherheit, Nachvollziehbarkeit und Produktivitäts-Steigerung die Rede, wie u. a. auch im Post # 146.

      Um nochmal zu zeigen, wie übersichtlich die Dinge trotz vieler im Hintergrund gleichzeitig verfügbarer Versionen (oft mehrere pro Tag) werden, hier mal ein Screenshot aus einem Verzeichnis, wo ich meine Tages-Aufgaben verwalte - also ganz bestimmt keine Programmier-Dinge.

      Die Files der aktuellen Version erscheinen mit Symbolen über ihren Bearbeitungs-Stand (geändert gegenüber dem Repository, gleich wie im Repository, nicht verwaltet usw.) in der File-Verwaltung (sieht im Explorer ähnlich aus, der hat aber unter Windows 7 so viele Einschränkungen, daß ich zu Tools zurück gekehrt bin, die ich fast 20 Jahre lang wegen ihrer System-Fremdheit eher nicht so gerne sehen wollte).

      Der einzige Unterschied ist das Repository der Versions-Verwaltung im Verzeichnis .git, welches man lieber nicht ohne die Nutzung der Versions-Verwaltungs-Tools bearbeiten sollte, was wegen diverser Prüfsummen-Abhängigkeiten sehr schnell zu dessen Zerstörung führt.

      Einfacher geht es kaum und ich kann die Benutzung einer Versions-Verwaltung - auch für Nicht-Programmier-Zwecke - nur nochmals empfehlen.
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      @Frank

      in wenigen Worten:
      - Threadersteller haben besondere Rechte
      - mach nen Thread auf, ich habe nix Passendes gefunden und wollte dich nicht unnötig provozieren indem ich ihn in die Sandkiste oder sonstwohin verschiebe
      - mir gehts gut, danke, kannst ja mal reinschauen beim Swingtrading
      - gratuliere dir zu deinem (angeblichen) Tradingerfolg
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Sorry Hintman, schade das Du Deinen Usern nicht die Erfolgsstrategie und Erfahrungen gönnst. Wissen Deine Mitglieder das! Aber Du hast ja mit PT jemanden der für Zahlen und Klicks sorgt. ´Was ist übrigens aus Deiner Strategie gewurden. Endlich im Plus? Und so jemand eröffnet ein Forum. Schöne Grüße an ST. Man sollte Leuten verbieten ein Forum zu eröffnen, wenn sie selber keine stetige Performence nachweisen können.
      Gib nie nie nie auf H.Ford
      Hallo,

      zu MM kann ich nur meine herangehensweise darstellen.

      Ich handhabe es seit dem ich mit der Strategie begonnen habe(30.04.2012) immer so das ich beim absetzen des Trades immer einen NotStop (SL) mit eingebe.1.AZ eine Pos. 2. AZ zwei Pos. alle mit dem gleichen Stop.= 30 Pkt. über/unter der 2. Aktionszone dieser wurde eigentlich nur einmal gebraucht (Trendtag) ansonsten ging es von der 2. Aktionszone immer sofort richtung Mean. z.B. Heute) Diesen Verlust des Trendtages konnte ich binnen 5 Handelstagen wieder ausgleichen und bin nun auch wieder gut im plus!

      Somit wäre dies mit Sicherheit mal ein guter weg wenn diejenigen wo Programmieren können sich auf eine Stopregel einigen könnten damit wir dies weiter testen können.



      Grüße woodix