Programmierung "Frei Schnauze"

      paar Thesen und Gedanken bevor es um das Programmieren geht

      Das hier unten ist keine Lehre oder sowas, das sind lediglich einige Gedanken und Notizen, basierend auf denen ich versuche, die Sache besser zu verstehen, um irgendwann ein Modell zu entwickeln, das ich selber verstehen kann. Ich freue mich über Feedbacks.

      EINS: die ganze Sache mit dem Traden ist eine sehr komplexe Sache. Es ist wie ein Sumpf. Je mehr Du versuchst Dich zu retten, desto mehr sinkst Du. Es gibt keine andere Wahl, außer zu versuchen, zuerst mit sehr einfachen (und dementsprechend nicht realen) Modellen zu arbeiten. Das ganze ist zuert stark zu zerlegen.

      ZWEI: ich denke, dass man in der Börse die Zukunft nicht "wissen" kann, weil dieses "Wissen" sich mit den Kuresn weiterentwickelt. Der Informationsinhalt eines Kurses und daraus entstehendes Wissen ist jetzt und hier gültig aber nicht eine Kerze weiter. Eine Kerze nachher, hat sich das Wissen auch um eine Kerze weiterentwickelt. Ein Beispiel wäre mein eigenes Leben. Ich habe vor einem Jahr mit meinem damaligen besten Wissen (und Gewissen) Entscheidungen getroffen. Heute weiß ich mehr (bzw. habe ich mehr Erfahrung) und sehe die Vergangenheit und derern Wahrheit schon anders. Da sich dieses Wissen immer akkumuliert, und falls ich immer mein gesamtes bisheriges Wissen einsetze, werde ich in djedem Moment die bestmögliche Entscheidung in dem Moment treffen. Es gibt aber keine Garantie, das dies morgen weiter gültig ist. Das ist Natur der Sache und kann nicht geändert werden.

      These: Ein System soll im idealen Fall seine sämtlichen noch modifizierbaren Parameter pro entstehende Kerze (erstmal übertrieben) komplett modifizieren und die ganze Welt neu bewerten und sich sofort an sie anpassen.

      These: die Mutter aller Strategien ist (meiner Meinung nach, sowohl historisch gesehen als auch theoretisch gesehen) die BUY-AND-HOLD-Strategie. Short-Strategien sind ein Neben-Effekt der entwickelten Markt-Produkten und lassen sich fast zu 100% aus B&H-Strategien ableiten. Von daher reicht es vollkommen, sich am Anfang nur auf B&H zu konzentrieren. Es geht auch noch darum, mit welcher Auflösung (5-min, 1h, EOD, etc.) man tradet und wie lange man Halten will. Ich werde diese These noch weiter ausbauen.

      Frage: Wie kann man verschiedene Kurse miteinander vergleichen?

      Definition der absoluten maximalen Rendite eines Kurses: Angenommen haben wir einen Wert, dessen Kurs eine Auflösung von delta-t hat. delta-t ist die breite der kleinsten Kerze im Kurs (z.B. eine Kerze=1Tag), mit der wir arbeiten wollen bzw. uns verfügbar ist, und zwar mit folgenden Informationen: Open, Close, High, Low.

      Die absolute maximale Rendite eines Kurses über die Zeit t (z.B 3 Jahre) ist die Summe aller Kerzen mit der Breite delta-t mit voller Länge (das heißt high-low). Volle Länge, weil es theoretisch möglich ist durch Stop und Limit-Order diese beiden Grenzen pro delta-t zu traden.

      Das bedeutet, wenn ich eine Mono-Trade-B&H-Strategie (d.h. eine Strategie, bei der gleichzeitig nur eine Position offen ist, diese Position nur ein Stück Aktie beinhaltet und diese Position mit einer Haltedauer von D gehandelt wird) über einem Kurs trade und auch keine Gebühren bezahle usw. werde ich rein theoretisch im besten Fall die absolute maximale Rendite des Kurses erreichen.

      Auf diese Art und Weise kann ich das innere Potenzial verschiedener Kurse miteinander vergleichen, indem ich über das gleiche Zeitfenster und mit dem gleichen delta-t die innere Energie der Kurse normiere und vergleiche. Dies ist im Endeffekt nichts anders als das, was die Trader Volatilität nennen. Je volatiler ein Kurs ist, desto mehr Potenzial dieser anbietet, gewinnführend getradet zu werden.

      These: je keliner delta-t, desto größer die amR eines Kurses über konstantem Zeitfenster. Deshalb mögen die Daytrader die volatilen Kurse, die sie auf 1min bis 15min Charts gerne traden. Der Kurs bietet einfach mehr Potenzial, nämlich amR an.

      Andererseits, je hoch frequenter das Trade-System, desto höher die Kosten, so damm man immer einen Optimum ermitteln muss. Dies ist aber etwas für später. Ich werde mich am Anfang nur auf brutto-Welt konzentrieren.

      geht weiter....

      servus

      marmooli
      stolz auf seinen ersten Totalverlust! Nun fühlt er sich erwachsen.
      @TraderMik

      Hallo TraderMik, ich schaue fast jeden Tag in dieses Thread rein. Mich stört es überhaupt nicht, wenn es lange Zeit nichts zu diesem Thema läuft, da es mir persönlich eher um die Qualität geht und nicht um die Anzahl der Postings, auf die manche so stoltz scheinen zu sein. Andererseits habe ich keine Eile von heute auf Morgen reich zu werden.

      Mag sein, dass die Verendung dieses und jendes Threads angekündigt wird, aber das denken nur diejenigen, die wie ein Haase ständig beim hin und her springen sind und dabei sich mit langsamen Schildkrötern vergleichen, die auch ihren weg gehen, allerdings naturbedingt viel langsamer. Lass Dich nicht provozieren. Wir spielen nach eigenen Regeln.

      Ich habe lange Zeit nicht weiter an dem Projekt arbeiten können, da ich einfch keine Zeit mehr dafür hatte, aber ab und zu habe ich ein Paar Notizen gesammelt. Inzwischen geht es wieder und seit genau gestern habe ich angefangen mich wieder in das Thema und die alten Notizen einzuarbeiten.

      Selbstverständlich geht es hier weiter. Langsam aber sicher....

      bis bals

      Servus

      marmooli
      stolz auf seinen ersten Totalverlust! Nun fühlt er sich erwachsen.
      Hintman hat in einem anderem Post zum Thema "Programmierung Frei Schnauze" folgendes geschrieben
      Ich habe immer gesagt, dass man diskretionäre Elemente nie 1:1 programmieren kann und mich dort dann auch nicht weiter eingemischt.

      Da möchte ich auch gar nicht widersprechen. Zumindest meine Intention war es nie die Hintman-Strategie 1:1 zu programmieren. Beim Backtesten fallen mit Sicherheit Punkte auf die angepasst einfach mehr Performance und / oder Stabilität bringen, so dass am Ende nie die 100% gleiche Strategie wie vorgenommen herauskommt.

      Aber man hätte vielleicht erreichen können:

      - Entwicklung eines Screeners der eine „gute“ Vorauswahl liefert (die man dann diskretionär auswerten kann)
      - Durch die große Anzahl von Trades die man virtuell durchführen und analysieren kann gewisse Regeln finden die zu „besseren“ Einstiegschancen führen
      - Auf Basis der (wie ich finde) guten Idee der Strategie eine Handelsstrategie finden die man programmieren kann. Und wenn Sie am Ende nicht die 1:1 Hintman-Strategie ist? Was soll‘s Hauptsache sie ist Performant und Stabil!

      LG TraderMik
      Hallo mal wieder,

      PT hat gerade in einem anderen Post die Verendung dieses Threads angemerkt. Ich hoffe doch nicht dass es soweit kommt. Da ergreife ich mal die Gelegenheit (auch wenn es jetzt heißt „Jetzt kommt da mal wieder einer aus der Versenkung“) und versuche die Diskussion mal anzuschieben.

      @marmooli: Wie sieht es bei dir mit deiner Software aus? Bist Du weitergekommen? Gibt es Ergebnisse die du mit uns/mir teilen möchtest?

      @ibelieve: Ich weiß, deine Zeit ist eher begrenzt. Hast Du weitergemacht und den gesuchten Vorteil auch gefunden?

      Was hab ich in der Zwischenzeit gemacht? Ich hab ja immer gesagt, ich bin hier um zu lernen (meine Hoffnung war von euch durch die gemeinsame Arbeit hier…). Ich hab mich in den letzten Wochen immer tiefer mit dem Thema Backtesting und Systemtrading beschäftigt (ohne dass ich sagen kann ich habs komplett verstanden). Was ich aber verinnerlicht habe, ist dass, ich nichts mehr traden möchte, was ich nicht verstehe und was ich nicht SELBST backtesten kann. Die Konsequenz daraus ist, dass ich mein diskretionäres Trading deutlich heruntergefahren habe.

      Damit will ich überhaupt nicht sagen, dass keine erfolgreichen diskretionären Strategien gibt, und noch viel weniger das die Strategie von Hintman nicht erfolgreich ist. Ich glaube vielmehr, dass es in dieser Strategie einen „Mind-Hindman-Indikator“ gibt der von vielen im Forum individuell interpretiert wird (was zu den unterschiedlichsten Ergebnissen in der Performance führt).

      Mein Bestreben ist es Handelsstrategien zur finden (und diese zu Backtesten) die seit 10 – 15 Jahre funktionieren und stabile Performance bringen, um für die unbekannte Zukunft zu wissen, dass die Strategie auch in den unterschiedlichsten Markphasen stabil bleibt. Dazu lerne ich derzeit Grundlagen, backteste verschiedene Ideen und Ansätze und versuche daraus meine Erkenntnisse zu ziehen. Weiter versuche ich die Zusammenhänge einer Strategie zum Markt (Portfolio), zum eingesetzten Risiko- und Money Management, zum Kapital und den vielen anderen Faktoren zu finden und mir zu erklären. Das ist aber noch ein weiter Weg und noch mehr Arbeit.

      Ob das hier mit Hilfe Hil dieses Threads passiert, ist für mich mittlerweile unerheblich. Die Diskussion war aber für mich wieder ein Schritt der mich in meinem Gefühl bestätigt hat. Dafür Danke. Falls es tatsächlich hier weitergeht, will ich mich gerne nach meinen Möglichkeiten einbringen.

      LG TraderMik
      1)

      Es wird gekauft wenn das Gestrige Hoch überboten wird.
      Einfach um zu schauen wie oft ein Wert höher schliesst wenn er seinen Vortageskurs überbietet.

      Quellcode

      1. ATRWert = 10;
      2. ATR10 = ATR( ATRWert );
      3. //kaufregeln
      4. Buy = H > Ref(H,-1);
      5. BuyPrice = Max(Ref(H,-1), O);// Kaufpreis ist das Hoch von Gestern oder bei einem Gap der Open
      6. //Verkauf
      7. Sell = 0;
      8. StopLevel = Param( "N-bars", 5, 1, 100, 0 );
      9. StopLevel = Optimize( "StopLevel", 5, 1, 20, 1 );
      10. ApplyStop( stopTypeNBar, stopModeBars, StopLevel, 0 );
      11. //SellPrice= Open;
      12. //Grundeinstellungen
      13. PositionSize = 100000; // Positionsgroesse = 10000
      14. SetOption( "initialequity", 1000000 ); // Startkapital
      15. //Backtestregeln
      16. SetBacktestMode( backtestRegularRawMulti );//kauf / verkaufe auch weitere Positionen
      17. SetTradeDelays( 0, 1, 0, 1 );
      18. SetOption( "AllowSameBarExit", True ); // Handel inerhalb eines Tages erlauben
      19. SetOption( "MaxOpenPositions", 100 ); //maximale offene Positionen
      20. SetOption( "ActivateStopsImmediately", True ); //alle Stopps sollen sofort aktiv sein
      21. SetOption( "PriceBoundChecking", True );


      Jetzt schaue ich ob die Wahrscheinlichkeit mit irgend einer der Filter die hier verwendet werden höher ist.

      Als erstes,
      das Hoch vor dem Kauftag muss tiefer sein als der Tag davor.
      Es muss also ein Korrektur statt gefunden habe.(wie groß ist jetzt egal)

      Quellcode

      1. ATRWert = 10;
      2. ATR10 = ATR( ATRWert );
      3. //kaufregeln
      4. longtiefervortag = Ref( H, -1 ) < Ref( H, -2 ) ;
      5. Buy = longtiefervortag AND H > Ref( H, -1 );
      6. BuyPrice = Max( Ref( H, -1 ), O );
      7. //Verkauf
      8. Sell = 0;
      9. StopLevel = Param( "N-bars", 5, 1, 100, 0 );
      10. StopLevel = Optimize( "StopLevel", 5, 1, 20, 1 );
      11. ApplyStop( stopTypeNBar, stopModeBars, StopLevel, 0 );
      12. //SellPrice= Open;
      13. //Grundeinstellungen
      14. PositionSize = 100000; // Positionsgroesse = 10000
      15. SetOption( "initialequity", 1000000 ); // Startkapital
      16. //Backtestregeln
      17. SetBacktestMode( backtestRegularRawMulti );//kauf / verkaufe auch weitere Positionen
      18. SetTradeDelays( 0, 1, 0, 1 );
      19. SetOption( "AllowSameBarExit", True ); // Handel inerhalb eines Tages erlauben
      20. SetOption( "MaxOpenPositions", 100 ); //maximale offene Positionen
      21. SetOption( "ActivateStopsImmediately", True ); //alle Stopps sollen sofort aktiv sein
      22. SetOption( "PriceBoundChecking", True );


      dann ob die Grösse des Bars eine Rolle spielt die das Signal gibt

      Quellcode

      1. ATRWert = 10;
      2. ATR10 = ATR( ATRWert );
      3. //kaufregeln
      4. groesse = H - L <ATR10* .8 ;
      5. Buy = groesse AND H > Ref(H,-1);
      6. BuyPrice = Max(Ref(H,-1), O);
      7. //Verkauf
      8. Sell = 0;
      9. StopLevel = Param("N-bars", 5, 1, 100, 0 );
      10. StopLevel = Optimize("StopLevel", 5, 1, 20, 1 );
      11. ApplyStop( stopTypeNBar, stopModeBars, StopLevel,0 );
      12. //SellPrice= Open;
      13. //Grundeinstellungen
      14. PositionSize = 100000; // Positionsgroesse = 10000
      15. SetOption( "initialequity", 1000000 ); // Startkapital
      16. //Backtestregeln
      17. SetBacktestMode( backtestRegularRawMulti );//kauf / verkaufe auch weitere Positionen
      18. SetTradeDelays(0,1,0,1);
      19. SetOption("AllowSameBarExit", True); // Handel inerhalb eines Tages erlauben
      20. SetOption("MaxOpenPositions",100 ); //maximale offene Positionen
      21. SetOption("ActivateStopsImmediately",True); //alle Stopps sollen sofort aktiv sein
      22. SetOption("PriceBoundChecking",True);
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/

      TraderMik schrieb:

      ibelieve schrieb:

      2)
      ja, es wird jedes gültige Signal gekauft. Egal ob schon eine Postiton besteht oder nicht.
      Real kann es ja auch vorkommen das du nicht das erste signal kaufst weil du da andere Werte hast und dann erst das 2 oder 3 handelst.
      da bin ich mir nicht sicher... wenn ich in DAI eine Position eröffnet habe, wird erst wieder eine neue Position in DAI eingegangen, wenn die vorhandene DAI geschlossen wurde. Es wird also immer das erste Signal gehandelt. In meinem Test ist das so eingestellt, daß beliebig viele Positionen (in verschiedenen Aktien) gleichzeitig eingegangen werden können, da ich genügend Geld zur Verfügung stelle. Wenn ich es richtig verstanden habe, darf in diesem Stadium des Test das Konto noch keine Begrenzung darstellen.


      alles richtig was Du sagst.

      was ich meinte ist, wenn Du heute 3 verschiedne Werte zur auswahl hast und dich für Signal 1 entscheidest kannst Du morgen oder übermorgen bei 2 oder 3 halt das 2 oder 3 Signal handeln. Wärst also so gesehen erst das 2 oder 3 signal eingegangen, halt so lange wie neue Signal kommen und der Zeitstop läuft.
      Von daher kannst Du real schon das 2 oder 3 Signal handeln obwohl du noch gar nicht in derPosition bist.

      Ich gehe im Moment davon aus das ich sobald man anfäng wirklich auf Gewinn zu optimieren das raus nimmt und wirklich nur 1 Position halten kann. Aber noch finde ich es so passender. Wo bei ich glaube das es das ergbnis eh nicht viel verändert.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/

      ibelieve schrieb:

      2)
      ja, es wird jedes gültige Signal gekauft. Egal ob schon eine Postiton besteht oder nicht.
      Real kann es ja auch vorkommen das du nicht das erste signal kaufst weil du da andere Werte hast und dann erst das 2 oder 3 handelst.
      da bin ich mir nicht sicher... wenn ich in DAI eine Position eröffnet habe, wird erst wieder eine neue Position in DAI eingegangen, wenn die vorhandene DAI geschlossen wurde. Es wird also immer das erste Signal gehandelt. In meinem Test ist das so eingestellt, daß beliebig viele Positionen (in verschiedenen Aktien) gleichzeitig eingegangen werden können, da ich genügend Geld zur Verfügung stelle. Wenn ich es richtig verstanden habe, darf in diesem Stadium des Test das Konto noch keine Begrenzung darstellen.

      TraderMik schrieb:

      1. Deine Aussage zu Bild 2 "Bild 2 muss der Stab vor dem Kauftag Tiefer als der Tag davor gewesen sein." weis ich nicht ob ich verstanden hab. Meinst Du es muß eine Korrektur vorhanden sein?

      2. Wenn Du einen Test machst wo du nach 5 Tagen aussteigtst, wieso gibt des gleich viele Trades? Werden weitere Positionen eingegangen, wenn schon eine Position offen ist?


      1)
      ja, wenn der heutige Tag niedriger war als der Gestriege wird ein Kaufauftrag über das Hoch gesetzt.
      Man kauft also keine Folge von steigenden Hochs.

      2)
      ja, es wird jedes gültige Signal gekauft. Egal ob schon eine Postiton besteht oder nicht.
      Real kann es ja auch vorkommen das du nicht das erste signal kaufst weil du da andere Werte hast und dann erst das 2 oder 3 handelst.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/
      Ich hab mal mit den beiden Parameter Korrektur (Anzahl der Bars) und Zeit-Ausstieg (Anzahl der Bars) getestet.

      Einstieg nach x Bars Korrektur: 1-6
      Ausstieg nach x Bars: 1-20

      Als Korrekturwert zeigte sich 5 Bars ganz positiv. Beim Ausstieg zeigten höhere Werte zwischen 10 und 20 die besseren Ergebnisse.

      Bild 5.1: Ausstieg nach 10 Bars
      Bild 5.2: Ausstieg nach 15 Bars
      Bild 5.3: Ausstieg nach 20 Bars
      Bilder
      • Bild05.1.png

        31,31 kB, 406×542, 200 mal angesehen
      • Bild05.2.png

        31,18 kB, 404×548, 197 mal angesehen
      • Bild05.3.png

        32,5 kB, 409×546, 194 mal angesehen

      ibelieve schrieb:

      was wenig zeit im Moment.

      Nur mal zum Anfang.

      Testzeitraum
      1.1.2005 bis 31.12.2011

      Werte MAN, MEO, BEI
      Hallo ibelieve,

      anbei mal zum Vergleich die Ergebnisse aus meinem Test. Allerdings hab ich ein paar Punkte aus deiner Ausfstellung nicht verstanden.
      1. Deine Aussage zu Bild 2 "Bild 2 muss der Stab vor dem Kauftag Tiefer als der Tag davor gewesen sein." weis ich nicht ob ich verstanden hab. Meinst Du es muß eine Korrektur vorhanden sein?

      2. Wenn Du einen Test machst wo du nach 5 Tagen aussteigtst, wieso gibt des gleich viele Trades? Werden weitere Positionen eingegangen, wenn schon eine Position offen ist?

      LG
      TraderMik
      Bilder
      • Bild01.2.png

        38,98 kB, 443×232, 203 mal angesehen

      ibelieve schrieb:


      Ob Sie jetzt dann Statistisch Richtig oder Falsch sind ist mir egal.
      .

      .

      Und gerade bei Statistiken lebe ich nach dem Grundsatz,
      "Glaube keiner die du nicht selber gefälscht hast"

      ich verstehe, was Du meinst, obwohl ich persönlich anderer Meinung bin, und weil wir uns in Sachen Trading sowieso auf einem nicht festen Boden bewegen, kann man auch nicht beweisen, wer hier Recht hat und wer nicht :D Das ist sogar ganz gut, dass jeder die Sache aus seinem Blickwinkel betrachtet.

      Ich denke, die Statistische Bewertung der Ergebnisse im Sinne einer mathematisch-stochastisch-statistischen Methode, gar nicht so schlecht wäre, da wir leider nicht mit festen Regeln zu tun haben, sondern eher mit Wahrscheinlichkeiten.

      übrigens hier ein nettes Video für diejenigen, die Lust und Zeit haben:

      youtube.com/watch?v=ed2FWNWwE3I&feature=related

      Servus

      Marmooli
      stolz auf seinen ersten Totalverlust! Nun fühlt er sich erwachsen.

      Jürgen schrieb:

      So wie ich herauslese sucht Du nach Optimierungen, die Deine Trefferquote erhöhen.

      Es ist wie TraderMik schon sagte,
      noch sind wir bei der überlegung ob die Signalfilter einen Vorteil bringen.
      Die Gewinnmaximierung, wenn es den welchen gibt kommt im 2 Schritt.

      Also testen wir im Moment die vorgegebenen Filter ob Sie wirklich einen Vorteil bringen wenn wir Sie nur Mechanisch über die Werte laufen lassen.
      Hier geht es mir einfach darum ob der Hauptsächliche Effekt im Menschlichen Auge (ich nenne es hier immer "Hintman" Efektt ) und den Filtern liegt oder halt die Bedingungen wirklich einen nachweislichen Vorteil bringen.
      Das System wird ja mit mehr oder weniger Erfolg Real gehandelt.
      Da gibt es dann auch Deine Ausstiegsregel die einen Zeitstop von 5 Tagen (oder 6), ein Ziel von 1,8 ATR(10) und einen Stop von 0,6ATR(10) vorsehen.
      Also ein CRV von 3 zu 1, was auch noch bei einer TQ unter 50% gute Ergebnise liefern sollte.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/
      @Jürgen

      Ein Auge ist mir lieber als gar keins :)

      Es ging bei dieser Analyse zunächst darum zu sehen wie die Werte sich auf die einzelnen Einstiegsvarianten verhalten. Dabei war der Einstieg eine StoppBuy Order und der Ausstieg am Close des gleichen Tages. Also ohne weiteres Target bzw. Stopp. Ich hoffe ich hatte da ibelieve richtig verstanden. Wir wollten sehen, ob da ein statistischer Vorteil war.

      LG
      TraderMik
      @ TraderMik

      Ich lese hier nur mit "einem Auge" mit und weiß deshalb nicht wie Du Deinen Ziel und Stop-Kurs programmiert hast.

      Mir ist bei Deinen Auswertungen aufgefallen, dass der "Average Profit" und "Average Loss" bei Deinen Trades (in einem Dax-Wert) ungefähr gleich (+/- 20% Abweichung) sind.

      So wie ich herauslese sucht Du nach Optimierungen, die Deine Trefferquote erhöhen.
      Du solltest aber auch in Betracht ziehem den Ziel- und Stopkurs zu verändern, damit z.B. Deine Gewinntrades das Doppelte eines Verlusttrades einfahren.
      Wenn Du das schaffst und gleichzeitig die Trefferquote noch bei 50% bleibt, hast Du doch ein sehr gutes "System"!

      Wie kommt das eigentlich, dass Deine Gewinner und Verlierer ungefähr gleich sind.
      Ist der Ziel- und Stopkurs gleich weit weg?
      Oder laufen Deine Trades meistens in einen Zeitstop?

      Vielleicht gibt Dir das noch ein paar Anregungen. Vielleicht liege ich mit meinen Beobachtungen und Interpretationen aber auch ganz falsch !?