Programmierung "Frei Schnauze"

      ich hab mal das System mit den Einstellungen über die Daten Dax 30 laufen lassen und die Performance berechnet. - Ernüchternd. Ich brauche einen Trendfilter.

      Hintman hat vorgeschlagen lokale Hochs und lokale Tiefs zu nehmen. Klasse. Wie hieß nochmal der Indikator der das berechnet? :rolleyes: Im Ernst, hat jemand eine Ahnung ob es da was gibt, oder muß man tatsächlich da was ausdenken?

      Noch ein Punkt zum generellen Backtest:
      Konto 10.000 1% Risiko. Dadurch kann es sein daß nicht alle Trades durchgeführt werden können, da kein Geld für den Trade auf dem Konto ist (das wird in der Performnce berücksichtigt). Desweiteren nehme ich als Offset 1 Promille mind 2 Cent.
      Bilder
      • STFB_PRSetting0001.png

        44,43 kB, 523×819, 183 mal angesehen
      • STFB_PRResult0001.png

        5,4 kB, 500×143, 161 mal angesehen
      so, bin ich aus alten sachen was am stricken und habe festgestellt das wir damals einen fehler hatten.
      bei gaps rechneten wir nicht mit dem Open preis sondern mit dem Hoch.

      aber jetzt sollte das hinkommen.

      was ich noch einbauen muss ist der zeit-stopp.
      muss ich aber erst mal schauen ob ich das alleine hin bekomme oder sonst mal um hife fragen.

      was ich jetzt noch nicht weiss ist wie es sich verhält wenn am gleichen tag verkauft werden müsste. aber wird mir sicherlich schnell ein wert über den weg laufen.


      Quellcode

      1. //Grundeinstellungen
      2. PositionSize = -5; // Positionsgroesse = 1000$
      3. //Backtestregeln
      4. SetOption("AllowSameBarExit", False); // Handel inerhalb eines Tages verbieten
      5. SetOption( "initialequity", 100000 ); // Startkapital
      6. SetOption("MaxOpenPositions",100 ); //maximale offene Positionen
      7. SetOption("MinShares",1 ); //minimale Positionsgröße in Shares
      8. SetOption("MinPosValue",150 ); //minimaler Betrag
      9. SetOption("AllowPositionShrinking", True ); //verkleiner der Positionsgroesse erlauben
      10. SetOption("ActivateStopsImmediately",False); //alle Stopps sollen nicht sofort aktiv sein
      11. RoundLotSize=1; //Positionen sollen immer aus ganzzahligen Shares bestehen(1,2,3,x)
      12. Cond3 = C*V ;// money flow >= $50,000,000 for stocks//Long
      13. Volumen = MA(Cond3,10) >= 500000 ;
      14. ATRWert = 10;
      15. //such Bedingungen
      16. groesse = H - L < ATR(ATRWert)* .8 ;
      17. richtunglong = O < C ;
      18. richtungshort = O > C ;
      19. longtiefervortag = H < Ref(H,-1) ;
      20. shorthoehervortag = L > Ref(L, -1) ;
      21. //heute oder gestern muss ein neues hoch/tief gegen trend-richtung sein
      22. neuestief = L < Ref(L,-1) OR Ref(L,-1) < Ref(L,-2); //für Long
      23. neueshoch = H > Ref(H,-1) OR Ref(H,-1) > Ref(H,-2); //für short
      24. //close in dem drittel von handelsrichtung, geändert in obere hälfte
      25. handellong = C > H-((H-L)/2);
      26. handelshort = C < L + ((H-L)/2);
      27. //kein neues hoch-tief
      28. tieflong = LLV(L,2) > LLV(L,15);
      29. hochshort = HHV(H,2) < HHV(H,15);
      30. bedingungenlong = groesse AND richtunglong AND longtiefervortag AND Volumen AND neuestief AND handellong AND tieflong;
      31. bedingungenshort = groesse AND richtungshort AND shorthoehervortag AND Volumen AND neueshoch AND handelshort AND hochshort;
      32. Buy = H > Ref(H,-1)+ .05 AND Ref(bedingungenlong,-1);
      33. Buystop = Ref (H,-1)+ .05;
      34. BuyPrice = Max (Buystop,Open); // kaufpreis
      35. Short = L < Ref(L,-1)- .05 AND Ref(bedingungenshort,-1);
      36. Shortstop = Ref (L,-1)- .05;
      37. ShortPrice = Min (Shortstop, Open);
      38. Sell=0;
      39. Cover=0;
      40. Limit=0;
      41. TP=0;
      42. Lsflag=0;
      43. LimA=Null;
      44. TPa=Null;
      45. ATRWert1=0;
      46. ATRWert2=0;
      47. Preis=0;
      48. for (i=1;i<BarCount;i++)
      49. {
      50. if (Lsflag>0)
      51. {
      52. if (L[i]<Limit)
      53. {
      54. Preis= Min(Limit,O[i]);
      55. SellPrice[i]=Preis;
      56. Sell[i]=1;
      57. Lsflag=0;
      58. }
      59. else if (H[i]>TP)
      60. {
      61. Preis=Max(TP,O[i]);
      62. SellPrice[i]=Preis;
      63. Sell[i]=1;
      64. LSflag=0;
      65. }
      66. }
      67. else if (Lsflag<0)
      68. {
      69. if (H[i]>Limit)
      70. {
      71. Preis= Max(Limit,O[i]);
      72. CoverPrice[i]=Preis;
      73. Cover[i]=1;
      74. Lsflag=0;
      75. }
      76. else if (L[i]>TP)
      77. {
      78. Preis=Min(TP,O[i]);
      79. CoverPrice[i]=Preis;
      80. Cover[i]=1;
      81. LSflag=0;
      82. }
      83. }
      84. else
      85. {
      86. if (Buy[i])
      87. {
      88. ATRWert1=ATR(10)*.6;
      89. ATRWert2=ATR(10)*1.8;
      90. Price=BuyPrice[i];
      91. Limit=Price-ATRWert1[i];
      92. Risk=abs(Price-Limit);
      93. TP=Price+ATRWert2[i];
      94. Lsflag=1;
      95. }
      96. else if (Short[i])
      97. {
      98. ATRWert1=ATR(10)*.6;
      99. ATRWert2=ATR(10)*1.8;
      100. Price=ShortPrice[i];
      101. Limit=Price+ATRWert1[i];
      102. Risk=abs(Price-Limit);
      103. TP=Price-ATRWert2[i];
      104. Lsflag=-1; // wir sind short
      105. }
      106. }
      107. TPa[i]=TP;
      108. Lima[i]=Limit;
      109. if (Lsflag==0)
      110. {
      111. TPa[i]=Null;
      112. Lima[i]=Null;
      113. }
      114. }
      115. //Buy=ExRem(Buy,Sell);
      116. //Short=ExRem(Short,Cover);
      117. Plot(LIMa,"Limit",colorYellow);
      118. Plot(TPa,"TP",colorOrange);
      119. dist = 1.9 * ATR( 10 );
      120. dist2 = 2.9 * ATR( 10 );
      121. for ( i = 0; i < BarCount; i++ )
      122. {
      123. if ( Buy[i] )
      124. PlotText( "Buy\n@" + BuyPrice[ i ], i, L[ i ] - dist[i],colorGreen,colorYellow );
      125. if ( Sell[i] )
      126. PlotText( "Sell\n@" + SellPrice[ i ], i, H[ i ] + dist[i],colorRed, colorYellow );
      127. if ( Cover[i] )
      128. PlotText( "cover\n@" + CoverPrice[ i ], i, L[ i ] - dist[i],colorGreen,colorLightGrey );
      129. if ( Short[i] )
      130. PlotText( "Short\n@" + ShortPrice[ i ], i, H[ i ] + dist[i],colorRed, colorLightGrey );
      131. }
      132. PlotShapes( Buy * shapeUpArrow + Sell * shapeDownArrow, IIf( Buy, colorGreen, colorRed ),0,IIf(Buy,L,H),-30);
      133. PlotShapes( Cover * shapeUpArrow + Short * shapeDownArrow, IIf( Cover,colorGreen, colorRed ),0,IIf(Cover,L,H),-30);
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/

      Perfect Trader schrieb:

      Man feilt sonst zu lange an Tot-Geburten rum, die man sonst schon lange verworfen hätte.

      so sieht das jetzt bei mir aus.

      Quellcode

      1. Cond3 = C*V ;// money flow >= $50,000,000 for stocks//Long
      2. Volumen = MA(Cond3,10) >= 500000 ;
      3. ATRWert = 10;
      4. //such Bedingungen
      5. groesse = H - L < ATR(ATRWert)* .8 ;
      6. richtunglong = O < C ;
      7. richtungshort = O > C ;
      8. longtiefervortag = H < Ref(H,-1) ;
      9. shorthoehervortag = L > Ref(L, -1) ;
      10. //heute oder gestern muss ein neues hoch/tief gegen trend-richtung sein
      11. neuestief = L < Ref(L,-1) OR Ref(L,-1) < Ref(L,-2); //für Long
      12. neueshoch = H > Ref(H,-1) OR Ref(H,-1) > Ref(H,-2); //für short
      13. //close in dem drittel von handelsrichtung, geändert in obere hälfte
      14. handellong = C > H-((H-L)/2);
      15. handelshort = C < L + ((H-L)/2);
      16. //kein neues hoch-tief
      17. tieflong = LLV(L,2) > LLV(L,15);
      18. hochshort = HHV(H,2) < HHV(H,15);
      19. Buy = groesse AND richtunglong AND longtiefervortag AND Volumen AND neuestief AND handellong AND tieflong;
      20. Sell = 0 ;
      21. Short = groesse AND richtungshort AND shorthoehervortag AND Volumen AND neueshoch AND handelshort AND hochshort;
      22. Cover = 0 ;
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/

      Perfect Trader schrieb:

      Mit dem "jein" hast Du das zwei-schneidige Schwert meines Vorschlages schon ganz richtig angesprochen. Einerseits will man den Bezug zum manuellen Vorgehen und die genaue Semantik nicht verlieren, andererseits muß auch ein Test auf Massen-Daten möglich sein.


      im prinzip wäre ja ein test auf massen-daten kein problem.
      man bräuchte ja am anfang nur zu testen wie sich ein kauf nach x-tagen verhält wenn ich jedesmal kaufe wenn der kurs das gestriege hoch durchbricht und danach filtere ich mit jeder unsere bedingungen und schaue ob ich auf ein besseres ergebnis komme. so hätte ich dann schon mal eine übersicht ob der filter überhaupt einen vorteil bring.
      danach könnte ich dann anfangen verschiedene filter gemeinsam zu testen.

      aber bedingt durch meine schwachen programmierkenntnise brauchen selbst die einfachsten sachen ihre zeit.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/

      Perfect Trader schrieb:

      Ehe jetzt Unmengen von Filtern probiert werden und die Resultate manuell angeschaut werden, wäre es Programmier-methodisch einfacher, den Backtest zu vervollständigen und auf die realen Resultate der insgesamt entstehenden Trades zu sehen, um die dann zu klassifizieren und zu sehen, was noch nicht paßt. Denn es könnte ja durchaus der Fall sein, daß der Einstieg nur einen geringen Teil zur Gesamt-Wirkung des Systems liefert.


      jein,

      ich zumindest brauche immer das manuelle anschauen der filter um zu sehen ob sie in etwa das machen was ich will.

      um ein vollständiges backtest system zu haben muss ich mir jetzt erst mal noch alte programme suchen um die ganzen kauf- verkaufsbedingungen da raus zu nehmen damit ich ein relativ realistisches ergebnis bekomme.

      bin ich im moment erst mal am schauen was für regeln relativ leicht zu coden sind und was dabei raus kommt.

      will ich vor den backtest eigentlich mit den filtern so weit runter sein das es am tag nicht mehr als 20-40 signale gibt.

      ist es nachher kein problem bestimmte filter aus zu klammern oder an zu passen.

      geht es mit eh erst mal nur um einen groben vor filter um am tag nicht 1000 werte durch zu schauen sondern nur 100 die wirklich in frage kommen.
      sollte nachher ein backtest programm bei rauskommen mit dem man wirklich was anfangen kann ist es ein abfallprodukt, was jetzt bei mir aber nicht im vordergrund steht.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/

      Hintman schrieb:

      Mir geht es um die Wahrscheinlichkeit eines neuen Swings. Und das ist hier doch wunderbar gegeben bei AIG.


      du sagst aber doch das du ungerne signale handelst wo der close zu weit vom hoch/tief entfernt ist.
      kannst du das vielleicht irgend wie in zahlen fassen?

      wo bei ich weis das es hier einfach mehr auf die harmonie im chartbild ankommt als auf absolute zahlen was halt ein einpacken in feste regeln oder programmcode sehr schwierig macht.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/
      Den Filter "Kerzen-Drittel" könnte man ja bei Kerzen unter einer zu benennenden Größe - eventuell in Beziehung zu Kurs und/oder ATR - nicht zur Anwendung kommen lassen, um eben "Ideal-Signale" nicht auszublenden.
      "Promising pussy in the after-life is the lowest thing I ever heard..." - Bill Maher

      TraderMik schrieb:

      Wenn ich den Filter Close im oberen / unteren Drittel verwende fliegt einiges raus. Auch dieser Wert, den man eigentlich wieder nehmen könnte!?!
      Auch den finde ich sehr schön
      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!
      Mir geht es um die Wahrscheinlichkeit eines neuen Swings. Und das ist hier doch wunderbar gegeben bei AIG.
      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!

      ibelieve schrieb:

      habe mal durchgeschaut.
      die meisten werte habe ich aus TraderMik liste nicht weil sie durch meinen filter mit dem close im drittel der handelsrichtung fallen.

      aber auch wenn ich mir den wert hier anschaue gebe ich dem filter eigentlich recht.
      die kerze schreit nicht gerade nach stärke, meiner meinung nach.

      meinungen da zu???
      Ja Du hast recht die Kerze würde wahrscheinlich durch den manuellen Screen durchfallen.
      Aber wie gesagt der Screnner ist ja noch nicht komplett. Weitere Filter sind denkbar. Ich hab die Liste mal reingestellt um genau diese Diskussion anzuregen. Der Filter Close im oberen Drittel bei Long ist denk ich schon sinnvoll.
      habe mal durchgeschaut.
      die meisten werte habe ich aus TraderMik liste nicht weil sie durch meinen filter mit dem close im drittel der handelsrichtung fallen.

      aber auch wenn ich mir den wert hier anschaue gebe ich dem filter eigentlich recht.
      die kerze schreit nicht gerade nach stärke, meiner meinung nach.

      meinungen da zu???
      Bilder
      • aig.gif

        22,85 kB, 1.046×865, 184 mal angesehen
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/