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

      @PT, es wird sich sicher kaum einer finden, der mit aufspringen wird auf den Pythonzug. Da bin ich offen skeptisch und es war auch zu erwarten. Dafür gibt es zu wenige Programmierer hier oder Programmierer mit Zeit/Lust. Andere haben keine Lust, noch eine Sprache zu erlernen oder zusätzliche .exe Dateien zu installieren. Ich würde schon gern Python erlernen. Ich lerne gern dazu. Nur im Moment, gebe ich offen zu, fehlt auch mir die Zeit/Lust und außerdem habe ich schon etwas gefunden, dass zu mir passt und mit dem ich Dinge schnell und einfach bewerkstelligen kann. Gefunden habe ich noch nichts, das nicht möglich und effizient umzusetzen ist. Sollte das nicht mehr der Fall sein, dann müßte ich die Suche ausweiten. Aber zeitökonomisch macht es für mich persönlich im Moment keinen Sinn, mich mit Python zu befassen. Auch liegt es mMn an der Strategie, die nicht vorteilhaft dokumentiert und rübergebracht ist, damit Lust aufkommt. Würde es mehr Sinn machen, die Sache allgemeiner zu gestalten bzw die Regeln allgemeiner genauer zusammenzufassen, um sie in die Sprache der Wahl zu übertragen? Ich denke, dass sollte sich auch schwierig gestalten.
      Um noch Purris Frage nach den Gapfills zu beantworten. Es schwankt um die 73% Gaps, die seit 2006 gefillt wurden. pastehtml.com/view/bzpycpye6.html Somit 27% statt 10%, die nicht gefillt wurden. Also man könnte vermuten, dass auch diese Aussage großzügig geschätzt und nicht überprüft wurde, obwohl recht simple zu machen. Beachten sollte man bei den aufgelisteten Fills noch, das dort keine Aussage darüber enthalten ist, wie weit und wie lang es in die falsche Richtung ging vor der Gapschließung am selben Tag.

      Angehängt sind alle anderen html Dateien mit unterschiedlichem Startjahr (2006 bis 2011). Enddatum immer letzte Woche. Wer will kann es ja nachprüfen, ob's stimmt. :D Als Gap wurde Open "Heute" minus Close "Gestern" definiert. (2006 wurde noch um 09:00 statt 08:00 eröffnet, falls sich jemand wundert)
      Dateien
      • FDAX Gaps.zip

        (51,37 kB, 312 mal heruntergeladen, zuletzt: )

      Purri schrieb:

      Ich würde mit Python so Aussagen wie: "Neunzig Prozent der Gaps sind geringer als 30 Punkte und werden größtenteils im Tageshandel geschlossen" oder die 20% Trendtage und Ähnliches aus dem PDF überprüfen. Das geht relativ einfach, aber richtig Backtesten würde ich mir rein mit Python nicth antun wollen.


      Die erste Aussage habe ich nicht getestet. Aber wie viele Trendtage und Doppelgaptage vorkamen. Wie erwähnt sehr ernüchternd.
      Diesen Beiden wurde ja mehr als eine Seiten gewidmet. Aber eine Aussagekraft sehe ich da nicht. Für die Trendtage gab es ja die strikte Qualifikation. Dow vorher stark im Minus (ich habe >= |1%| bis |1.5%| gewählt) und Nikkei am Folgetag komfortabel im Plus (auch hier >= |1%| bis |1.5%| gewählt) sowie YM um 08:00 Uhr mit Differenz |40| Punkte zum Kurs um 22:15 Uhr des Vortages. Als Ergebnis traten 12 bis 29 von rund 1400 Handelstagen auf. Also im Schnit 2 - 5 oder 0,8% bis 2% Trendtage pro Jahr nach Definition. Hmm... Doppelgaptage auch nur 27 in 5,5 Jahren. Hmm...

      Deshalb noch mal die Frage an den Strategieentwickler, was hat er gehandelt/ermittelt? Wann traten diese Tage bei ihm auf? Hat er es aufgezeichnet?
      Ich würde mit Python so Aussagen wie: "Neunzig Prozent der Gaps sind geringer als 30 Punkte und werden größtenteils im Tageshandel geschlossen" oder die 20% Trendtage und Ähnliches aus dem PDF überprüfen. Das geht relativ einfach, aber richtig Backtesten würde ich mir rein mit Python nicth antun wollen.
      Hi PT

      Wenn du es als Backtest Software haben willst dann halte dich erst mal fest, es werden mehrere Daten gebraucht! Nikkei, Dax, Dow, Vdax allesamt Historisch. Die Daten allesamt in einem System in einer Normalen Plattform zu Entwickeln wäre schon eine Herausforderung aber in Python das ganz nochmal Neu aufzubauen für eine Strategie an der ich nicht glaube sorry da passe ich, auch würde der Leser nur noch Null verstehen da die Sprachmittel dann auch umfangreicher wären (Numpy oder Scipy oder die Auswertung als Eigenentwicklung). Das würde eine Komlette Neuauflage der Programms bedeuten, dann auch ein anderer Professioneller Still da das Projekt deutlich größer werden wird, dann wären auch Git und Versionierung nötig und eigentlich alles wovon du gesprochen hast. Der Aufwand ist mir dazu viel zu Hoch das mach ich mit Sicherheit nicht für oder gegen Georg da spiele ich Lieber mit meinem Sohn und Sparre mir die Zeit. :D
      Hallo PT

      Ja das könnte man machen aber der Code ist ja dann doch nicht allzu Komplex, dazu kommt das eigentlich alle Regelwerke bereits vorbereitet sind und auch Funktionieren ich bin dafür dies nun von der Architektur so zu belassen den Code aufzuräumen was mit den Änderungen ja sukzessive Passiert. Ein Repositori wie GIT etc halte ich für das kleine Projekt als unnötig, sollte es mal zu einem anderen umfangreicheren Projekt kommen hast du aber mit allem gesagten 100% Recht.

      Und nochmal zum allgemeinen Verständnis das Programm ist kein Backtest sondern ein Realtime Regelchecker heißt er läuft Nebenher, und gibt per Text und Alarm aus welche Regeln Aktuell erfühlt sind und sichert diese Täglich in einem eingenem File jeden Tag eines. Auf diese Weise können Georg Trader sicher gehen das die Regeln im PDF erfühlt sind und entsprechend Handeln, und zum anderen werden dadurch auch die einzelnen Tage Dokumentiert wie es gelaufen ist, und zwar Anhand des Regelwerks nicht anhand von im Nachhinein gemalten Trades. Wer das eine weile getan hat wird sehen was das Regelwerk wert ist.

      LG ST
      Hallo

      Hier also das erste Stück Code zur On Toutsh Regel aus dem PDF Seite 10 und 11 im VTAD PDF.

      Quellcode

      1. #--- On Toutsh --- # Wen Dow +- 5 Punkte ist gegenüber des DowFuture ist und der Dax an AktionsZone Sofort einstieg
      2. if (Time.tm_hour == 8 and Time.tm_min <= 1):
      3. if (DowDiff < 5):
      4. if FdaxStart < Zone1Long and ontouchlong1 == 0:
      5. eingabe.insert('end', str(Zeit) + "Dow ist +- 0 Dax an Zone 1 = On Touch Long bei " + str(RTDax)+ "\n\n")
      6. os.system(PlaySound)
      7. ontouchlong1 = 1
      8. if FdaxStart > Zone1Short and ontouchshort1 == 0:
      9. eingabe.insert('end', str(Zeit) + "Dow ist +- 0 Dax an Zone 1 = On Touch Short bei " + str(RTDax)+ "\n\n")
      10. os.system(PlaySound)
      11. ontouchshort1 = 1
      12. if FdaxStart < Zone2Long and ontouchlong2 == 0:
      13. eingabe.insert('end', str(Zeit) + "Dow ist +- 0 Dax an Zone 2 = On Touch Long bei " + str(RTDax)+ "\n\n")
      14. os.system(PlaySound)
      15. ontouchlong2 = 1
      16. if FdaxStart > Zone2Short and ontouchshort2 == 0:
      17. eingabe.insert('end', str(Zeit) + "Dow ist +- 0 Dax an Zone 2 = On Touch Short bei " + str(RTDax)+ "\n\n")
      18. os.system(PlaySound)
      19. ontouchshort2 = 1
      20. #--- On Touch --- # An der Zweiten Zone jederzeit
      21. if (DowDiff < 40): # Warscheinlich noch Zeiten beachten
      22. if RTDax < Zone2Long and ontouchregel2long == 0:
      23. eingabe.insert('end', str(Zeit) + "Dow ist < 40 Dax an Zone 2 = On Touch Long = " + str(RTDax)+ "\n\n")
      24. os.system(PlaySound)
      25. ontouchregel2long = 1
      26. if RTDax > Zone2Short and ontouchregel2short == 0:
      27. eingabe.insert('end', str(Zeit) + "Dow ist < 40 Dax an Zone 2 = On Touch Short = " + str(RTDax)+ "\n\n")
      28. os.system(PlaySound)
      29. ontouchregel2short = 1


      Hier 2 Bilder mit den dazugehörigen Regeln aus dem PDF.



      Die Regeln im Code sind leicht unterschiedlich wie im Regelwerk beschrieben da diese mal Empfehlungen von Georg waren. Aber nun können wir die Regeln Stückweise Korrekt umsetzen.@PT ich würde dich gerne im Sinne der Arbeitsteilung Bitten wenn es dir Recht ist die Funktionen der Zeilen zu beschreiben da ich deine Ausdrucksweise sehr schätze und der Meinung bin das dies dann besser verstanden wird.

      Der Code wird immer erst dann geändert wenn sich alle hier einig sind was das Regelwerk betrifft das hilft es gleich Richtig zu machen ohne das wer sagen kann wir würden Fehler machen.

      LG ST
      Hallo PT

      Wenn ich alle deine Ratschläge aus deinem Posting beachten würde dann würde die Form mehr Arbeit machen als alles anderen drumherum :D Der Code ist warlich nicht der schönste aber auch nicht so schlimm das man von hin Stümpern Reden kann, der größte Teil ist im Rapid verfahren innerhalb sehr Kurzer Zeit entstanden. Im Zuge der Weiterentwicklung werde ich die geänderten Teile natürlich schöner anlegen damit jeder hier einen Sauberen überblick hat. Gehe aber davon aus das sich einige beteiligen, auch du hast dich doch bereit erklärt einen kleinen Teil zu Coden was mich sehr Freut PT. Ich Denke das die einzelnen Strategie Teile von nun an auch gleich in eigene Funktionen verschwinden so kann man sich die Arbeit auch gut einteilen, ich mache das wahrscheinlich schon mal vor ab, also die einzelnen Bestandteile der Strategie zu Trennen.

      LG ST

      Sommerzeit

      Da einiges von US-Handelszeiten abhängt, müsste wohl beim Programmieren berücksichtigt werden, dass die Zeitumstellung zweimal jährlich in D und USA an verschiedenen Daten erfolgt.
      "Promising pussy in the after-life is the lowest thing I ever heard..." - Bill Maher
      Hallo

      Ich werde Morgen mal Versuchs halber mal einen ersten Teil des Python Codes mit ansprechenden Auszügen aus dem Regelwerk hier und in meinem Forum Hochladen, ich erkläre dann etwas über die Funktion des Python Codes also was jede einzelne Zeile bedeutet. Ich würde mich dann freuen wenn ihr Vorschläge macht was verbessert werden kann oder soll vom Regelwerk her etc. Also wenn es Änderungen gibt dann nur durch euch angeregt da ich voreingenommen bin was die Strategie angeht und ich eben auch kein Bock auf eine Show hab, wer kann oder gerne möchte darf auch Code beisteuern.

      Jürgen hat zwar eine schöne Spezifikation geschrieben aber wie sich Zeigt hatte es auch einige Fehler deshalb finde ich es besser zuerst ein Problem in viele Teilprobleme auf zu teilen und diese dann Stückweise aus zu diskutieren bis es zu einem gemeinsamen Kontext kommt.

      Morgen geht es dann mit on touch Regeln los Seite 10 und 11 im PDF

      LG ST
      Hi Trash

      Die 130 Punkte im Dow im Python Code entsprechen ungefähr 1,5% das ist die Größe die Georg als Trendtag Indiz herleitet.100 Punkte wären Aktuell zu wenig, man sollte das am besten gleich Prozentual Rechnen so kann man sich dann das spielen mit den Punkten und die Pfennig Pfuscherrei sparen.

      Die Geschichte mit den UKS Kerzen möchte ich noch mal eben aufgreifen die solle er mir doch mal Zeigen, in seinen Bildchen sind die Positionen immer an bester Stelle genommen und meist war es eben bloss eine Rote oder eine Grüne Kerze nichts da mit Morning Star/Evening Star oder ganz einfach WRBs (Wide Range Bars). Deshalb habe ich im Python Code immer ausgegeben auf "UKS Achten" damit es jeder selber interpretieren kann.
      @Georg, wieviele Trend- und Doppelgaptage hast du denn ermittelt/gehandelt? Die Auflistung, die ich für diese zwei erhalte, ist schon ziemlich ernüchternd.

      Ich richtete mich für Trendtagermittlung nach diesem Text (rot markiert. Auch heißt es ja dort "... stikten Qualifikation...".)



      sowie nach Jürgens Werte für Nikkeis Close-zu-Open-Differenz von 100 Punkten (Wo kommen diese 100 Punkte eigentlich her? Im Python Code stehen dann wieder 130 Punkte). Was verstehst du genau unter Nikkei komfortabel im Plus und Dow stark im Minus? Diese Ungenauigkeit widerspricht irgendwie der vorher genannten "stikten Qualifikation". Für beides habe ich > 100 Punkte genommen sowie Dowgap > |40| Punkte. Aber wie gefragt, was nimmst du?

      BTW woher kommen die 10% im Text? Hast du diese selbst ermittelt?

      EDIT: In Bezug auf "z.B. schließt Dow stark im Minus" (oder im Plus) habe ich YM Stand 22:15 Uhr minus YM Stand 15:30 Uhr des Vortages berechnen lassen.