Ein Plätzchen für den Backtest - EOD - RSI-SMA LONG ONLY

      Neu

      Habe das letztens im Email-Postfach gehabt und mußte an Dich denken... Ich würde die Sache nicht als Strategie betrachten, sondern als Möglichkeit, einen Hotspot ausfindig zu machen. Mit den Regeln kann man ja schnell einen Scanner aufsetzen.

      Auf irgend einer anderen StockSwingTradingSeite habe ich zum Thema 200er Linie den Vorschlag gelesen, das für ein Signal eine komplette Kerze über (unter) der Linie abgewartet werden sollte. Dann StoppBuy über die Kerze . Warum nicht. Geht ja in einigen Fällen zügig zum letzten HH.

      Dann noch eine Überlegung: Warum das nicht intraday traden. Gibt ja genug Strategien. OpenRangeBreakout wegen meiner, wenn es sich zu einem LongTrendtag entwickel, Trade bis zum nächsten Tag halten usw.

      Die Idee ist ein globales Signal finden und im kleineren TF ein TradingSignal nach Marktechnik, TraderVic-Muster, OpenRangeBreakOut, RossHaken oder was auch immer. Wenn die Sache ein zwei mal scheitert, weg damit, irgend was anderes suchen.
      ich raube, also bin ich....

      Neu

      Ultracash schrieb:

      Fehl-Trades durch ununterbrochene Kauf-Signale:

      Die Schwachstelle der Strategie sind die mehrfach aufeinanderfolgenden Kaufsignale im Abwärtstrend.


      Ich untersuche die letzten Tage, was sich in etwa um den SMA 200 herum so abspielt und da kommt dieser interessante Hinweis von @Mr. Moon um die Ecke :).
      Allerdings wollte ich mich genau auf diesen Pullback verlassen, hehe. Da wird man ja mal wieder ordentlich geerdet.

      Aber, es ist ja ein Denkanstoß...

      ...und mein Bauchgefühl sagt mir:

      Je näher sich das RSI-Signal am SMA 200 befindet um so eher wird auch der SMA 200 erreicht.

      Die Idee:
      Um Fehltrades überhalb des SMA200 zu reduzieren suche ich nach einer guten Regel, die ich von der ATR abhängig machen wollte.
      Einen recht simplen Indikator habe ich mir auch schon programmiert. Er stellt dar wie x-fach ATR der Abstand zwischen dem Close zum SMA200 und EMA200 ist. (Also... (Close - SMA)/ATR)
      Es sieht aktuell so aus, als wäre der 3-fache Abstand eher unkritisch, aber ab dem 2 fachen ATR zieht die SMA200 wie ein Magnet.
      Das ganze stell ich hier natürlich mal roh in den Raum, aber interessant ist es irgendwie.
      Bilder
      • Magnet.JPG

        60,23 kB, 495×541, 13 mal angesehen
      I did it my way (Sid Vicious ... not Sinatra)

      Neu

      Für Denkanstöße könnte es gut sein, aber 200-MA-Systeme sind in der Hoffnung besser als in der Realität, wo sie zig Zusatz-Regeln brauchen, um wenigstens minimal profitabel zu werden. Der TF ist für einen Day-Trader viel zu groß und da die Expectunity mit kürzeren TF massiv steigt, ist das System in genau der vorgestellten Form außer für eine Anregung nicht wirklich zweckmäßig.
      Wer nichts weiß, muss alles glauben.
      Habe mir dazu übrigens auch gerade mal wieder die Kosten in einem meiner Aktien-CFD-Konten angesehen, das schlägt schon heftig zu Buche:

      Swingtrading für Berufstätige
      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!
      @Ultracash

      Hach, da werden Erinnerungen wach, danke fürs teilen schon mal.

      Ich habe mir meine halbe Studienzeit mit solchen Backtests und Optimierungen um die Ohren geschlagen. Krümel hat dir ja schon gewaltiges Feedback gegeben, daher von mir nur kurz:

      Wenn du jetzt noch Kosten pro Halfturn von 1 EUR (Mindestgebühr etwa bei Activtrades, die 0,05% wirst du nie erreichen bei so geringen Stückzahlen) berücksichtigst, und das Ganze sinnvollerweise verdoppelst auf 2 EUR, um auch Slippage zu simulieren, dann hast du noch 9.280 EUR vom Gewinn abzuziehen. Dazu deine geschätzten Rolloverkosten, macht also einen Abzug von 10.280 EUR.

      Damit rutscht das Ganze in den Verlustbereich leider. Die Kosten und Slippage NIE vernachlässigen, sonst gibt es immer herbe Enttäuschungen beim Einsatz im realen Handel.
      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!
      Gleich mal zu Beginn eine Buchempfehlung: Die weltweiten Gesetze des erfolgreichen Tradings: Essentielles Wissen für alle Trader und alle Märkte. Da sind keine "erfolgreichen Tradingstrategien" drin - wer sowas sucht, ist mit dem Buch definitiv falsch, aber der Autor beschreibt wirklich gut die ganzen Basics. Und es ist auf Deutsch - es gibt also keine Ausrede mehr, es nicht zu lesen ;) . Es ist auch das erste Buch, was ich kenne, wo der VBA Code für einen Pleitesimulator enthalten ist.

      @Ultracash
      Zu Deinem System würde ich gern ergänzen: Ich halte es für ungemein wichtig, ein Exit-Szenario zu haben und zwar für die gesamte Strategie. Sei es, um das System temporär abzuschalten bzw. im Demo-Modus weiterlaufen zu lassen. sei es, um es entgültig einzudampfen. Manchmal finden Märkte wieder zu Mustern zurück, in denen es wieder gut läuft, so dass nach einer anfänglichen "Bewährungsphase", wo es wieder im Demo-Modus erfolgreich agiert wieder real gehandelt wird. Aber manchmal leider auch nicht; es also ewig im Demo-Modus mitzuschleppen kann man sich auch nicht leisten, schließlich bindet es auch Kapazitäten (Rechenzeit, Aufmerksamkeit zur Auswertung).

      Ab wann man ein System in den Demo-Modus schickt, kann man meiner Meinung nach nur selbst entscheiden. Ein "Rezept", was immer und für jeden anwendbar ist kann ich da leider nicht anbieten. Letztlich geht es beim Trading ums Überleben, und zwar nicht auf Breakeven, sondern so, dass man monatlich davon seine Lebenskosten bezahlen kann. Ansonsten kann man auch anderswo seinen Lebensunterhalt verdienen und sollte seine kostbare Lebenszeit nicht mit einem so mühseligen Tun verschwenden.

      Von Hobby- und Freizeittradern rede ich an der Stelle nicht - wenn jemand Spaß dran hat, sich einen Kick auf diese Art zu holen, ist das auch ok. Oder wenn jemand gern bastelt und nicht wie früher den Keller mit Modelleisenbahnen vollbaut, sondern gern Tradingsysteme programmiert -nur zu ! Platzsparender als Modelleisenbahnen ist es auf jeden Fall. Allerdings ist dieser Spaß durch die Tätigkeit an sich eigentlich auch schon Belohnung genug. Manchmal ist er sogar eher kontraproduktiv, weil man dann schwerer loslassen kann, auch wenn man besser loslassen sollte (Suchtgefahr).

      Wer von seinem Agieren an Finanzmärkten aber sich selbst und/oder Frau und/oder Kind durchbringen will, sollte da weniger spaßorientiert rangehen, er muss es sogar mMn. Denn an den Märkten geht es im Grund genommen immer ums Überleben. Wenn man diese Ich-gegen-alle-anderen-die-auch-nur-mein-Geld-wollen (und ich will ihres)-Grundeinstellung im Hinterkopf behält, empfinde ich das als sehr hilfreich, wenn man Entscheidungen treffen will wie: Ab wann trade ich das System nicht mehr, mit dem ich ja gewisse Erwartungen aufgrund des Backtests verbinde. Von dem Rest des verbliebenen Kapitals muss man lange genug leben können, um wieder was Neues an den Start zu bringen. Gut, wenn man parallel zu erfolgreich laufenden Systemen schon was entwickelt hat; schlecht, wenn man nur dieses eine jetzt offensichtlich versagende System hat.

      Wann versagt ein System ? Wann vertraut man ihm nicht mehr genug, um es weiterzuhandeln ? Diese Frage muss man sich selbst beantworten, denn Menschen sind da sehr verschieden. Manche sind sehr misstrauisch und schmeißen dann auch schneller etwas hin, manche sind ewig treu, auch wenn es nicht mehr gesund ist (z.B. in ausnutzenden Freundschaften und Beziehungen). Das Konzept des Vertrauens gilt mMn aber auch für die eigenen Arbeitsergebnisse und dessen Einsatz in der Praxis. Wahrscheinlich fährt man mit der Mitte von beiden ganz gut, als Heuristik sollte es ausreichen bis man eine für sich passendere gefunden hat. Beispielsweise kann man damit starten, indem man festlegt, dass der maximale Drawdown das 1,5 bis 2 fache des nach Backtest erwartbaren Wertes nicht überschreiten sollte (immer im Hinterkopf - mit dem restlichen Kapital muss man weiterleben können bis man was Neues hat).

      Bei den Gewinnerwartungen sollte man aber auch ein ähnliches Exit-Kriterium wählen, denn was nutzt einem ein System, was 3 Jahre lang Breakeven läuft, was man aber mit der MaxDD-Regel nicht abschalten kann, weil diese nicht erfüllt ist. Wenn man berücksichtigt, dass man streng genommen jeden Monat einen Betrag X für die Lebenskosten entnehmen muss, entsteht bei einem Nur-Breakeven-System ein zusätzlicher "Drawdown".

      Wenn man weitere Systeme parallel laufen hat - was ich auf lange Zeit sehr empfehlen würde, wofür man aber erstmal lange genug am Makt überleben muss, was ja bekanntermaßen nicht so leicht ist - die monatlich Cash abwerfen, wie z.B. brauchbare Stillhalterstrategien oder ein Dividenden-Portfolio, dann kann man sicher auch gut mit mehr Breakeven-Monaten leben. Aber für den Anfang empfehle ich eher die konservative Variante. Diese aktuelle Strategie, die ich hier und jetzt gerade entwickle, soll mich und vielleicht auch meine Familie durch den Monat bringen. Und zwar nicht nur durch den einen, sondern Monat für Monat. Kann es das überhaupt in der jetzigen Version ? Über die reale Zeit fühlen sich 3,4,5,6 Breakeven-Monate ganz anders an als sie auf einem Performance-Chart aussehen mögen. Kann man das so lange durchhalten ? Vor allem auch mit der Unsicherheit im Nacken, dass man nicht weiß, ob es jemals wieder funktioniert und man völlig umsonst ausgeharrt hat.

      Wenn man in sich selbst mehr "Überlebensdruck" erzeugt, kommt man auch auf viel bessere und stabilere Ideen. Natürlich ist dieser Druck nicht sonderlich angenehm, aber man wird sich vermutlich nie faul und bräsig zurücklehnen und sich und seine Systeme nicht weiterentwickeln. Und vor allem wird man nicht elendig lange untätig dabei zusehen, wie einstmal vielleicht sehr gute Systeme erst alle Gewinne der Vergangenheit auffressen und dann ein brachiales Minus hinterlassen.

      Das muss ich leider bei im Netz veröffentlichten und oft sehr lange "vorgehandelten" Systemen immer wieder beobachten, dass man nicht rechtzeitig die Reißleine zieht. Nicht-adaptive Systeme können per se nicht auf Dauer halten, und selbst die, die sich anpassen können, was programmiertechnisch erheblich mehr Aufwand ist, auch für den Backtest, sind dennoch nicht vor dem Untergang dauerhaft geschützt. Das ist schließlich das Grundkonzept der Evolution: Nicht der Stärkste überlebt, sondern derjenige, der gut genug (!) an die aktuelle Umwelt (also in dem Fall den Markt, die eigenen Vermögensverhältsnisse und die Psyche des Trades) angepasst ist (und sich auch weiterhin anpassen kann). Wenn es nicht mehr "gut genug" ist und es auch nicht schafft, wieder "gut genug" für die veränderte Umgebung zu werden, dann stirbt das System halt. Von daher ist ein Scheitern nur natürlich und nichts, wofür man sich schämen muss. Allerdings vermisse ich bei den Leuten, die zwar mutig genug waren, sich mit ihrem "Vorhandeln" der Öffentlichkeit in den Threads zu stellen (was meist erheblich mehr Druck erzeugt als ich mir freiwillig antun würde), den Mut, rechtzeitig zu sagen: Sorry, ab morgen gibt's hier nichts mehr zu sehen. Gehen Sie bitte weiter.

      Ergebnisse vom Backtest - EOD - RSI SMA LONG ONLY (Zeitraum 10 Jahre / 124 Aktien)

      Es ist soweit!

      Die Auswertungen der Ergebnisse vom Backtest an 124 Aktien sind nun abgeschlossen.
      Es wurde der Zeitraum vom 02.01.2007 bis 09.06.2017 betrachtet. (10 Jahre)
      Die Handelszeiten wurden auf 09.00 bis 17.30 gestellt.

      Folgende Voraussetzungen für das LONG Signal:

      RSI(10) < 29
      CLOSE > 0,975 SMA 200 (Kerze darf etwas unterhalb der SMA 200 sein)

      SL: ATR(10)*1 // Fix 1R=15 Euro

      EXIT
      RSI(10) > 80 oder 3R oder nach 10 Tagen

      Kapital 1500€ / Risiko pro Trade 15€

      Ergebnisse des Gesamtzeitraums (ohne Kosten):

      Anzahl Trades: 2320

      Trefferquote 44%

      Profitfaktor: 1,47

      Gesamtperformance: 613%

      Max. Drawdown: 50%

      Max. Fehltrades am Stück: 58

      Max. Gewinner am Stück: 59

      Die Performance klingt verlockend, aber wenn man tiefer einsteigt zeigen sich einige Tücken.
      Freud und Leid liegen nah beieinander.

      Anzahl Trades am Tag:


      Durchschnittlich liegt die Anzahl der Trades pro Kauftag bei knapp 3.
      Allerdings gibt es Tage, da generiert das System Kaufsignale für bis zu 40 unterschiedliche Aktien!
      Das wirkt sich entsprechend auf die Performance aus, natürlich in beide Richtungen.
      Das System hat gemäß vorgegebener Regeln zugeschlagen, ich würde es im echten Leben jedoch nicht tun.
      Auch das Kapital in Höhe von 1500 Euro hätte für diese Aktion keinesfalls gereicht.
      Hier werde ich noch nachbessern und mich wahrscheinlich auf max. 3-4 Trades pro Tag festlegen.

      Drawdowns:

      Es gab 8 Drawdown-Phasen zwischen 25 und 50%. Die psychische Belastung wäre mir definitiv zu hoch.

      Verluste:

      In der monatlichen Betrachtung wird man feststellen, dass mit dem Börsencrash im August 2011 die größten
      Verluste zu verzeichnen sind. ( ca. -57%, bezogen auf das Startkapital).
      Ein ähnlicher Crash war im August 2015 ( ca. -40%, bezogen auf das Startkapital).
      Auffällig ist, dass im Anschluss gute Gewinne eingefahren werden.

      Fehl-Trades durch ununterbrochene Kauf-Signale:

      Die Schwachstelle der Strategie sind die mehrfach aufeinanderfolgenden Kaufsignale im Abwärtstrend.
      Ist erstmals der SL erreicht und die Kriterien des Long-Signals sind noch erfüllt, wird direkt am Folgetag wieder eingestiegen.
      Diese Schleife wiederholt sich dann einige Tage. Das führt natürlich zu erheblichen Verlusten. Hat man im Worstcase noch eine hohe Anzahl an
      gleichzeitigen Trades am laufen, wird das Konto extrem belastet.

      Auch hier habe ich mir schon etwas überlegt. Hilfreich könnte ein gleitender Durchschnitt im RSI sein.
      Kreuzt der RSI den gleitenden Durchschnitt von unten nach oben, soll das Kaufsignal generiert werden.
      Auch über den Abstand zum SL werde ich nochmal nachdenken, vielleicht ist er mit 1*ATR(10) doch zu eng
      gewählt.

      Trefferquote und Profitfaktor:

      Die Trefferquote liegt im Gesamtzeitraum 2007 bis 2017 im Schnitt bei 44%.

      Betrachten man nur die letzten 3 Jahre liegt der Schnitt bei 51%, in 2017 sogar bei 59%.

      Ähnlich verhält sich der Profitfaktor. Im Gesamtzeitraum liegt dieser bei 1,47.
      Die letzten 3 Jahre im Schnitt bei 2,37 und in 2017 aktuell bei 4,07 (Die Erleichterung nach der Wahl in Frankreich hat dazu erheblich
      beigetragen! Also eher ein Sonderfall!)

      Gaps:

      SL und TP wurden fix gewählt. Das schützt natürlich nicht vor Gaps. Es gab 43 Fälle mit Verlusten
      höher 1,3 R. Dem gegenüber stehen aber auch 18 Gewinner höher 3,3R.

      Verteilung der Gewinn und Verlusttrades:

      Von 1022 Gewinntrades wurden mit der höchsten Anzahl von 318 Trades annähernd die 3R erreicht.
      Gefolgt von 105 Trades mit ca. 1R und 101 Trades mit ca. 1,5R.

      Von 1298 Verlusttrades haben 1118 den SL mit 1R erreicht.

      Kosten:

      Die Berechnungen haben ohne Kosten stattgefunden. Die Haltekosten sind pro Broker unterschiedlich und
      werden sich im Zeitraum von 10 Jahren ändern. Ich müsste aus heutiger Sicht ca. 1000 € für Haltekosten einplanen.

      Fazit:

      Um eine Strategie verbessern zu können benötigt man eine Basis. Diese Basis ist nun geschaffen.
      Einige Änderungen müssen wie oben erwähnt noch vorgenommen werden. Als erstes werde ich die maximale Anzahl der Trades pro Tag festlegen und
      alles darüber hinaus aus der aktuellen Tabelle entfernen.
      Die neuen Ergebnisse werden euch dann selbstverständlich mitgeteilt.

      Ich freue mich über jegliche Anregung, Diskussion aber auch Kritik.

      Im Anhang befindet sich die Auswertung des kpl. Backtest als Datei. (Open Office Calc)
      Bilder
      • Perf_10J_DD.JPG

        107,31 kB, 974×504, 25 mal angesehen
      • Perf_10Jproz.JPG

        69,35 kB, 692×772, 18 mal angesehen
      • Perf_Mon_proz.JPG

        63,02 kB, 1.236×425, 13 mal angesehen
      • ProfJ.JPG

        31,15 kB, 592×286, 13 mal angesehen
      • Trefferq_AnzT.JPG

        56,89 kB, 603×573, 11 mal angesehen
      Dateien
      I did it my way (Sid Vicious ... not Sinatra)

      Kurzer Zwischenstand

      Der Backtest läuft nun an und ist natürlich recht zeitintensiv. Ich bleibe vorerst bei Prorealtime und einer Auswertung im OpenOffice Calc.
      Zeitraum 10 Jahre, allerdings so aufbereitet, das Wunschzeiträume betrachtet werden können und zusätzlich der Drawdown angezeigt wird.
      Sobald der Test abgeschlossen ist wird das Ergebnis inkl. Datei zur Nachvollziehbarkeit hier veröffentlicht.

      Aktueller Status: 35 von 124 Tests durchgeführt.
      I did it my way (Sid Vicious ... not Sinatra)
      Danke für deinen Hinweis @Chaosfreak, ich habe meinen Kopf mal resettet und soeben festgestellt, dass ich doch nichts weiter wollte als einen festen SL und TP.
      Manchmal sieht man den Wald vor lauter Bäumen nicht.
      Die einzige Anhängigkeit zum ATR(10) ist die Berechnung der Anzahl der Aktien.
      Da mein Risiko 15 beträgt, soll der SL auch bei -15 auslösen und der TP bei 45 (ich benötige gar keinen ATR10 vom Kauftag für die weitere Berechnung des SL und TP)
      Ich werde noch ein paar Backtests machen und mir die Trades ansehen.

      hier der entsprechende Code:

      //Risiko festlegen und Anzahl ermitteln
      myRisk = 15
      ANZ = myRisk / (IND3 * 1)

      // Kauforder
      IF BED1 and BED2 THEN
      BUY ANZ SHARES AT MARKET NextBarOpen
      endif

      //Stop und TP

      SET STOP $LOSS myRisk
      SET TARGET $PROFIT myRisk*3.0
      I did it my way (Sid Vicious ... not Sinatra)
      Trag mal noch ein "and not LongOnMarket" bei der IF-Anweisung für die Kauforder ein, dann gehst du sicher das die ganze Bedingung nur ausgeführt wird wenn aktuell keine Position besteht.
      Bei Gaps wird der Trade natürlich zum Open-Kurs abgerechnet. Die Frage wäre noch ob ProRealTime auf Intraday-Daten zurückgreift oder den Trade zum gesetzen Stop abrechnet.

      Kurze Rückmeldung zum Fehler und zur unklaren Berechnung

      Ultracash schrieb:

      Zum Fehler oder Gedankenfehler:
      Wer sich das Beispiel von Adidas (Bild BT04) anschaut wird feststellen, dass der erste Trade vom 27.07.2007 bis 14.08.2007 stattgefunden hat.
      Die Anzahl der Balken ist 12

      der Code:
      if VK1 or Days>BuyDay+10 then
      sell at market

      Was ist hier falsch gelaufen? Oder denke ich falsch?
      Ich würde den Code an dieser Stelle gern umschreiben komme aber nicht auf die programmiertechnische Lösung

      Bedingung: Verkaufe spätestens nach 10 Börsentagen (kein Wochenende mitzählen), der Tag des Einstiegs ist der 1. Tag der mitgezählt werden soll.

      Tag 0 = der Tag an dem das Kaufsignal erkannt wurde
      Tag 1= der darauf folgende Kauftag um 09:00
      Tag 10 = der Verkaufstag mit Börseneröffnung um 09:00




      Das Problem mit den 10 Tagen habe ich wie folgt gelöst:

      // Festlegen der Anzahl an Balken, nach der die Position automatisch geschlossen wird. (8 Balken ergeben 10 Börsentage)

      IF LONGONMARKET AND VK1 OR BARINDEX - TRADEINDEX(1) = 8 THEN
      SELL AT MARKET
      ENDIF

      -------------

      Chaosfreak schrieb:

      Indikatoren werden nach jeder Periode neu berechnet. Du musst dir den Wert also beim Einstieg "merken".


      Danke Chaosfreak, das Merken des ATR10 vom Kauftag ist noch nicht gelöst! Hast du einen Tipp zur Programmierung?
      Bilder
      • 10T.JPG

        81,71 kB, 630×880, 29 mal angesehen
      I did it my way (Sid Vicious ... not Sinatra)

      Prorealtime Code für den Backtest - Fehler und unklare Berechnung!?

      In der Hoffnung, dass sich hier im Forum jemand mit der Programmierung von PR auskennt möchte ich auf einen möglichen Fehler und auf eine unklare Berechnung hinweisen.

      Zum Fehler oder Gedankenfehler:

      Wer sich das Beispiel von Adidas (Bild BT04) anschaut wird feststellen, dass der erste Trade vom 27.07.2007 bis 14.08.2007 stattgefunden hat.
      Die Anzahl der Balken ist 12

      der Code:
      if VK1 or Days>BuyDay+10 then
      sell at market

      Was ist hier falsch gelaufen? Oder denke ich falsch?
      Ich würde den Code an dieser Stelle gern umschreiben komme aber nicht auf die programmiertechnische Lösung

      Bedingung: Verkaufe spätestens nach 10 Börsentagen (kein Wochenende mitzählen), der Tag des Einstiegs ist der 1. Tag der mitgezählt werden soll.

      Tag 0 = der Tag an dem das Kaufsignal erkannt wurde
      Tag 1= der darauf folgende Kauftag um 09:00
      Tag 10 = der Verkaufstag mit Börseneröffnung um 09:00

      Die unklare Berechnung:

      IND3 = AverageTrueRange[10](close)

      SET STOP LOSS IND3 *1
      SET TARGET PROFIT IND3 *3.0

      Für den SL und den TP nutze ich den ATR10 als Vorgabe.
      Ich erwarte bei der Berechnung des SL und TP den ATR10 vom Tag 0 (der Tag an dem das Kaufsignal erkannt wurde)
      Nun stellt sich die Frage ob Prorealtime den ATR10 mit jedem neuen Tag neu berechnet, oder ob ich den Bezug auf Tag 0 mit einem Code festlegen muss.

      Wer kann mir helfen? Parallel schmeiss ich google an und mach mich auf die Suche.
      Bilder
      • BT04.JPG

        133,12 kB, 773×961, 32 mal angesehen
      I did it my way (Sid Vicious ... not Sinatra)

      ProRealTime-Programmierung

      @ Ultracash

      Der Code sieht nicht schlecht aus. Besonders gefällt mir die übersichtliche Aufteilung in die Definition der Indikatoren und Bedingungen vor ihrer Benutzung. Ich selber würde außer ellenlangen Bezeichnern für die Indikatoren und Bedingungen, die allerdings nicht jedermanns Sache sind, kaum etwas anders machen.

      Allerdings ist die Programmiersprache von ProRealTime aus heutiger software-technnologischer Sicht primitv, was bei so kleinen Progrämmchen vielleicht noch eine einfache Handhabung ermöglicht. Bei komplexeren Programmen ist die ausführliche Nutzung von Unterfunktionen erforderlich, die ProRealTime nur rudimentär bietet. Darum ist fast jede andere Software besser zum Backtest geeignet. Welche genau man nimmt, hängt zu großen Teilen auch davon ab, ob einem die mitgelieferte Programmiersprache der Software gefällt bzw. ob man sich mit seinen schon vorhandenen Kenntnissen schnell darin zurechtfindet.

      Der viel gescholtene MetaTrader hat zwar in punkto Hinsicht Backtest durchaus Verbesserungs-Möglichkeiten, ist aber wegen seiner Verbreitung, der Verfügbarkeit von Daten bei vielen Anbietern und der mächtigen Sprache gar nicht so schlecht. Ansonsten findet man für fast jeden Sprach-Geschmack Backtest-Software, mit Verwandschaft zu bzw. reiner Nutzung von Pascal, Java, C, C++, C#, Python, Javascript und sicher noch diversen Sprachen mehr.

      Software, die auf .NET aufsetzt, kann über die sprachunabhängige Common Language Infrastructure auch besonders einfach mit beliebigen anderen Programmiersprachen verbunden werden. In der Java-Welt gibt es zwar auch viele auf deren virtueller Maschine aufsetzende Sprachen, die jeweils für sich gut funktionieren, aber der Fokus liegt bei weitem nicht so stark auf universeller Zusammenarbeit aller Sprachen miteinander wie bei .NET.

      Wer wegen der ihm nicht ausreichenden Möglichkeiten selber eine spezifische Backtest-Software schreiben möchte, wird es vom Aufwand her wahrscheinlich am einfachsten mit Python haben, wo mit dem numpy-Paket für komplexe numerische Aufgaben ein mit der Leichtigkeit von Python einzusetzendes Paket vorfindet, welches durch gute Implementation bei sachgerechter Umsetzung der Aufgaben nahe an die Ausführungsgeschwindigkeit nativen C++-Codes heranreichen kann.

      Vom Aufbau einer größeren Infrastruktur auf der Basis von ProRealTime würde ich eher abraten.
      Wer nichts weiß, muss alles glauben.

      Prorealtime Code für den Backtest

      Anbei stell ich den Code zur Verfügung mit dem der erste Backtest erfolgt ist:

      // Festlegen der Code-Parameter
      DEFPARAM CumulateOrders = False // Kumulieren von Positionen deaktiviert

      // Indikatorenauswahl
      IND1 = RSI[10](close)
      IND2 = Average[200](close)
      IND3 = AverageTrueRange[10](close)

      // Bedingungen zum Einstieg

      BED1 = IND1 < 29
      BED2 = (Dclose(0) > IND2 * 0.975) //Die Kerze ist knapp unter der SMA 200

      //Anzahl ermitteln
      ANZ = 15 / (IND3 * 1)

      // Kauforder
      IF BED1 and BED2 THEN
      BUY ANZ SHARES AT MARKET NextBarOpen
      BuyDay=Days
      endif

      SET STOP LOSS IND3 *1
      SET TARGET PROFIT IND3 *3.0
      // Verkauf

      VK1 = IND1 > 80

      if VK1 or Days>BuyDay+10 then
      sell at market
      endif

      -----------------
      Ich bin mir sicher, dass die Programmierung noch verbessert werden könnte.
      Ich musste mir das vor kurzem erst einmal selbst aneignen. Vorschläge nehme ich gern entgegen.

      woren schrieb:

      Zusätzlich stelle ich hier die Frage, ob die bisherigen Parameter überhaupt durch die Anwendung einer Trainings- bzw. Optimierungs-Methode gewonnen wurden oder einfach nur zur Durchführbarkeit eines Backtests auf sinnvoll erscheinende Vorgabewerte gesetzt wurden.


      Ich habe mit einzelnen Aktien einige Parameter ausprobiert, aber nie einen vollständigen Backtest über 124 Aktien durchgeführt. (124 Aktien aus Deutschland und Frankreich, die mir CMC zur Verfügung stellt)
      Das Sichten der unterschiedlichen Ergebnisse verursachte letzendlich nur ein gewisses Bauchgefühl. Das Bauchgefühl war quasi der Auslöser, diesen großen Test durchzuführen.
      Daher trifft die Aussage "sinnvoll erscheinende Vorgabewerte" eher zu.


      I did it my way (Sid Vicious ... not Sinatra)

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Ultracash“ ()

      Kennzahlen und Zeiträume vs. Daten Prorealtime

      Chaosfreak schrieb:

      Man sollte ein Handelssystem bzw. einen Parametersatz auch nicht hinsichtlich der maximalen Performance optimieren, sondern nach anderen geeigneteren statistischen Kennzahlen (z. B. max. DD, Profit/DD, R2) beurteilen.


      Ich hätte das auch gern aber muss mir dazu eine Lösung überlegen.
      Prorealtime gibt zwar pro Test wertvolle Daten raus, allerdings wäre keine zusammengefasste Aussage über alle 124 Aktien möglich.
      Einige Daten kann ich aber über einen kleinen Umweg in Tabellen kopieren. Die Liste der Orderaufträge und die Liste der geschlossenen Positionen. (Bilder anbei)
      Ob diese Daten ausreichen muss ich noch prüfen.


      woren schrieb:

      Die Einschränkung des längsten Test-Zeitraumes auf die Zeit nach der Jahrtausend-Wende oder noch etwas weniger wird vermutlich ausreichend sein


      Ich werde den längsten Zeitraum auf 10 Jahre festlegen. Sollte das Zusammenfassen von Daten möglich sein, könnte sogar ein kürzerer Zeitraum den man sich anschauen möchte frei gewählt werden.

      Chaosfreak schrieb:

      Es geht schon bei der verwendeten Datenbasis los, die ein Backtesting ad absurdum führen kann, wenn die Qualität nicht ausreicht.


      Da stimme ich dir zu. Kannst du die Datenqualität von Prorealtime beurteilen? Schließlich sind ja alle Daten kostenfrei, das verunsichert mich ein wenig.
      Bilder
      • BT01.JPG

        111,33 kB, 772×962, 35 mal angesehen
      • BT02.JPG

        118,66 kB, 770×958, 27 mal angesehen
      • BT03.JPG

        179 kB, 765×944, 27 mal angesehen
      • BT04.JPG

        133,12 kB, 773×961, 47 mal angesehen
      I did it my way (Sid Vicious ... not Sinatra)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Ultracash“ ()

      Re: Backtest von Futures

      Bei reinen Finanz-Kontrakten sollte der Endlos-Kontrakt für alle Überlegungen reichen.

      Bei Commodities sollte man statt einer wenig kritischen Zusammenrechnung verschiedener Kontrakte sehr genau auf das Underlying achten, denn dort können gerade bei Agrar-Produkten unterschiedliche Kontrakte deutlich unterscheidbare Underlyings in der Realwelt haben, auch wenn sie die gleiche formale Spezifikation des physisch zu liefernden Gutes erfüllen. Aber auch andere Commodity-Underlyings haben produktions- und verbrauchsbedingte saisonale Schwankungen, endliche Lagerzeiten und beziehen sich darum nicht auf gleiche Wirtschaftsgüter.

      Bei Begriff der "Roll-Kosten" sollte eher zurückhaltend aufgefasst werden, da sehr genau zwischen echten Kosten und rein finanz-mathematischen Artefakten unterschieden werden muss.

      Bei reinen Finanz-Kontrakten sollte es kaum echte "Roll-Kosten" geben, weil sie sonst durch Arbitrage mit Kredit und dem Handel des Underlyings einen Free Lunch ermöglichen würden. Die preislichen Unterschiede geben im wesentlichen die unterschiedliche Laufzeit des impliziten Kredites an und zu einem geringem Maß bestimmte eventuell vom Markt eingepreiste Änderungs-Vorwegnahmen in der längeren Laufzeit, weshalb die Kontrakte wegen der längeren Laufzeit und den darin möglichen Preisbewegungen sich also auch nicht ganz genau auf das identische Wirtschaftsgut beziehen. Diese Unterschiede sollten auf geordnet ablaufenden Märkten aber so gering sein, dass ihre Ausnutzung durch Arbitrage nur schwierig ist und sie können daher in der Regel vernachlässigt werden.

      Bei Commodities handelt es sich bei Kontrakten unterschiedlicher Laufzeiten meist um ausreichend deutlich unterschiedliche Wirtschaftsgüter, dass es - salopp gesprochen - eine Ähnlichkeit mit dem Vergleich von Äpfeln und Birnen hat. Daher erscheint eine rein "technische Analyse" einer vermeintlich einheitlich zu betrachtenden Kurs-Kurve nicht unbedingt ausreichend detailliert.

      Da im Wesentlichen jedes ausreichend liquide Instrument zum rein technisch begründeten Spekulieren geeignet ist, wird es bei der Wahl von Commodities in sehr vielen Fällen eher einen Bias des Traders geben, der sich für ihn unmöglich zu beschaffende Informations-Vorsprünge einbildet, und der darum mit einfacher zu handelnden hoch-liquiden Finanz-Futures besser bedient wäre, wo er einer solchen Selbst-Täuschung nicht unterliegt.
      Wer nichts weiß, muss alles glauben.