Jump to content
Tom Next - Daytrading Community

Trading Idee: VarCCI


tlu

Recommended Posts

Hallo!

 

Hier ein einfaches Tradingsystem (keine Ahnung, woher ich das habe). Ich handle damit den DAX long und short über ETFs. Kein System für Daytrader - ein Signal kann auch mal ein paar Wochen gültig sein.

 

Zunächst die Paramoptimize.afl im include Ordner, die vieles einfacher macht:

 

function popt( pname, defaultval, minv, maxv, step )
{
return Optimize( pname, 
Param( pname, defaultval, minv, maxv, step ),
minv, maxv, step );
}

 

Hier der eigentliche Code:

_SECTION_BEGIN("CCI variable");
//in-sample 2 Jahre
//3 Monate

#include<Paramoptimize.afl>

function MeanDev( array, mean, range ) 
{ 
 result = 0; 

  for( i = LastValue( range ); i < BarCount; i++ ) 
  { 
  result[ i ] = 0; 
  // the mean is not 'moving' over the range (outside the loop) 
  tm = mean[ i ]; 
  for( j = 0; j < range[ i ] AND ( i - j ) >= 0 AND ( i - j ) < BarCount; j++ ) 
  { 
	result[ i ] = result[ i ] + abs( array[ i - j ] - tm ); 
  } 
 
result[ i ] = result[ i ]/range[ i ]; 
 } 
  
 return result; 
} 

function VarCCI( array, period ) 
{ 

SMATP = MA(array,period );//1,2 

MD = MeanDev( array, SMATP, period  ); 

CCIx = (Avg - SMATP) / (0.015 * MD); 

return CCIx; 

} 
Const=popt("Konstante",20,30,45,1);
mult=popt("Mult.",4,0.5,5,0.5);

n = const + mult * sin( Cum(1) ); // variable period 

Plot(VarCCI(Avg, n),"VarCCI",colorGreen,styleLine); 
//Plot(1,"",IIf(varcci(Avg,n)>0,colorPaleGreen,colorRose),styleArea|styleOwnScale,0,1,-0.5,100);
//sig=Plot(2,"",IIf(Varcci(Avg,n)>0,colorGreen,colorRed),styleArea|styleOwnScale);



//Plot(CCI(n),"CCI",colorRed,styleLine); 

SetTradeDelays(1,1,1,1);
Buy=Cover=Cross(VarCCI(Avg,n),0);
Sell=Short=Cross(0,VarCCI(Avg,n));
Buy1=Ref(VarCCI(Avg,n)>0,-1);
Sell1=Ref(VarCCI(Avg,n)<0,-1);
Buy1=ExRem(Buy1,Sell1);
Sell1=ExRem(Sell1,Buy1);
StaticVarSet("varccibuysignals", Buy1);
StaticVarSet("varccisellsignals", Sell1);
StaticVarSet("varcci", varcci(Avg,n));



//OptimizerSetEngine("cmae");
_SECTION_END();

 

Die Signale stelle ich im DAX-Chart so dar:

varccibuysig = StaticVarGet("varccibuysignals");
varccisellsig = StaticVarGet("varccisellsignals");
varcci = StaticVarGet("varcci");
PlotShapes(varcciBuysig*shapeUpTriangle,colorGreen,0,L,-25);
PlotShapes(varcciSellsig*shapeDownTriangle,colorRed,0,H,-25);
Varccicolor=IIf(Varcci>0,colorGreen,colorRed);
Plot(2,"",Varccicolor,styleArea|styleOwnScale,0,100,0);

 

Ich verwende keine System ohne eine gründliche Walk-Forward Analyse. Das Bild zeigt die WFA für dieses System vom Februar. Die OOS Equity Kurve (und der Drawdown) sind dunkelgrün, BUy&Hold ist hellblau und die Relative Performance ist giftgrün. Das System hat immerhin fast 18% p.a. gebracht.

 

CCI_variable_mit_CARMDD.png

Edited by tlu
Link to comment
Share on other sites

Moin,

 

Er zeigt mir leider ein paar Fehler an mit denen ich nicht wirklich was anfangen kann.

 

Die Zeile "return CCIx;" wird auch noch Angezeigt.

 

Hm, merkwürdig. Bei mir funktioniert es problemlos. Welche AB Version benutzt du denn?

Link to comment
Share on other sites

Teste ich zurück seit 1995 geht die TQ aber ziemlich runter.

Gibt wohl auch schlechtere Zeiten für das System.

 

Eine kleine Erklärung was das System macht?

Wie ist die Logik da hinter?

 

Es ist letztlich ein CCI, der ein wenig anders berechnet wird und dadurch etwas adaptiv ist.

 

Ich finde dieses System gut, weil

1. es ziemlich simpel ist. Ich bevorzuge einfache Systeme - komplexe System funktionieren nach meiner Erfahrung in der Realität meist nicht gut.

2. es im Walk-Forward Test gut abgeschnitten hat - und das ist für mich der entscheidende Faktor. Im Vergleich zum normalen CCI hat dieser modifizierte CCI dabei besser abgeschnitten.

 

Zum Thema Walk-Forward: Wie schon an anderer Stelle erwähnt, bastel ich gerade an einem Code, um eine aussagefähige Walk-Forward Analyse hinzukriegen. Das Bildchen im ersten Posting stammt von einer älteren Version. Es werden diverse einfache Metrics wie CAR, MaxDD, K-Ratio, UPI, R2 berechnet, die hoffentlich eine vernünftige Beurteilung zulassen. Was freilich fehlt, sind Trade-orientierte Metrics wie z.B. #Trades, Avg Profit/Loss usw. Diese Detailinformationen sind im Prinzip alle in der Datei WalkForward.html im AB Programmverzeichnis enthalten. Sie müssten "nur" irgendwie extrahiert werden, und das geht weit über meine Programmierkenntnisse hinaus. Wenn jemand von euch dazu in der Lage ist, wäre das natürlich superklasse. Ansonsten müssen wir wohl warten, bis TJ das in AB einbaut, was sicherlich irgendwann passieren wird.

Link to comment
Share on other sites

1. es ziemlich simpel ist. Ich bevorzuge einfache Systeme - komplexe System funktionieren nach meiner Erfahrung in der Realität meist nicht gut.

 

Mache ich auch.

 

Aber wenn ich mir mein Bild anschaue glaube ich kaum das ich wenn ich 2003 damit angefangen hätte

bis 2008 durchgehalten hätte um dann meinen Gewinn zu machen.

 

Wenn ich mir die Stecken anschaue wo das System Gewinn gemacht hat,

könnten wir uns so langsam wieder dem Ende nähern.

 

Man muss mal die Zeiten wo es nicht so lief genauer unter die Lupe nehmen, vielleicht findet man ja was.

post-1129-1246454254_thumb.png

Link to comment
Share on other sites

Mache ich auch.

 

Aber wenn ich mir mein Bild anschaue glaube ich kaum das ich wenn ich 2003 damit angefangen hätte

bis 2008 durchgehalten hätte um dann meinen Gewinn zu machen.

 

Wenn ich mir die Stecken anschaue wo das System Gewinn gemacht hat,

könnten wir uns so langsam wieder dem Ende nähern.

 

Man muss mal die Zeiten wo es nicht so lief genauer unter die Lupe nehmen, vielleicht findet man ja was.

 

Mit welchen Einstellungen hast du das getestet? Hast du die Default-Parameter genommen oder vorher optimiert?

 

Auf jeden Fall ist das ein reiner In-sample-Test. In meinem Walk-Forward Test habe ich als In-sample-Periode 2 Jahre genommen und als out-of-sample 3 Monate, d.h. alle 3 Monate wird neu optimiert. Daraus ergibt sich die out-of-sample Equity-Kurve in dem Bild im 1. Posting. Reine in-sample-Tests halte ich für wenig relevant. Ich habe schon zu oft erlebt, dass Handelssysteme ganz tolle in-sample Equity-Kurven hatten, aber im out-of-sample-Test total versagten. Was im out-of-sample Test nicht gut aus sieht, wird daher verworfen, selbst wenn der in-sample-Test sehr gut ist. Ich mache als erstes eine Optimierung über den gesamten Zeitraum, um eine Vorstellung über die zu wählenden Parameter-Bereiche zu bekommen und gehe dann sofort zum Walk-Forward Test. Wobei ich auch hier immer mehrere Kombinationen der IS- und OOS-Perioden teste und auch ggfs. noch die Parameter-Bereiche etwas adjustiere.

Link to comment
Share on other sites

ist das ein Smooth-CCI? Also ein geglätteter?

 

Der Code für diesen Indikator ist ja - wie schon erwähnt - nicht von mir. Im Vergleich zum normalen CCI ergeben sich gewisse Unterschiede, aber ein Glättung ist m.E. nicht zu beobachten. Wie gesagt, hat er im Walk-Forward Test besser abgeschnitten als der normale CCI, und das war für mich das entscheidende Kriterium.

Link to comment
Share on other sites

Mit welchen Einstellungen hast du das getestet? Hast du die Default-Parameter genommen oder vorher optimiert?

 

Ich habe es so genommen wie es ist.

Ansonsten hast Du viele Sachen in Deinem Text wo ich keine Ahnung von habe.

 

Das einzige was ich jetzt sehe wenn ich mir den Chart anschaue ist,

das es sehr oft Zeiten gibt wo das Programm einfach hin und her schwenkt und das mit dem Nachteil das ich zum Hoch kaufe und zum Tief verkaufe.

 

Wenn ich jetzt davon ausgehe das ich alle 2 Monate die Parameter ändern muss weiss ich jetzt schon das ich immer 1 Monat zu langsam bin.

Link to comment
Share on other sites

Was mir grade auffällt,

 

ist hier nicht ein Fehler?

 

Const=popt("Konstante",20,30,45,1);

 

1) sollte doch der voreingestellte Wert sein

2) min

3) max

4) die Schrittgröße beim Optimizer

 

Liegt die 20 doch Ausserhalb der Auswahl,

oder habe ich jetzt einen Denkfehler?

Link to comment
Share on other sites

ist hier nicht ein Fehler?

 

Du hast recht. Ich hatte die minmax-Werte für die Optimierung angepasst. Kannst ja beliebig ändern und anschließend optimieren.

Edited by ronner
Zitat gekürzt - bitte auf notwendige Länge achten
Link to comment
Share on other sites

Hallo!

 

Hier ein einfaches Tradingsystem (keine Ahnung, woher ich das habe). Ich handle damit den DAX long und short über ETFs. Kein System für Daytrader - ein Signal kann auch mal ein paar Wochen gültig sein.

 

Hmmm,

 

Handelst Du das Ding wirklich Real?

 

Wenn ja seit wann und hast Du eine Auswertung drüber?

 

Ich habe mir jetzt verschiedene Einstellungen angeschaut,

aber es gibt immer wieder Zeiten wo der CCI um die Null Linie schwankt und eine Menge Fehlsignale macht.

 

Kann ich mich nicht wirklich mit anfreunden.

Link to comment
Share on other sites

Hmmm,

 

Ich habe mir jetzt verschiedene Einstellungen angeschaut,

aber es gibt immer wieder Zeiten wo der CCI um die Null Linie schwankt und eine Menge Fehlsignale macht.

 

Kann ich mich nicht wirklich mit anfreunden.

 

Wie erwähnt, sind für mich die out-of-sample Ergebnisse maßgeblich. Du hast einen einfachen Backtest über einen bestimmten Zeitraum gemacht (mit möglicherweise optimierten, aber fixen Parametern). Im Walk-Forward Test wird dagegen alle 3 Monate neu über die letzten 2 Jahre optimiert und die dann neuen Parameter-Werte benutzt (daraus ergibt sich die out-of-sample Equity-Kurve). Das setze ich auch so konsequent in der Praxis um.

 

Du solltest dich m.E. wirklich mal mit Walk-Forward Optimierung beschäftigen - siehe http://www.amibroker.com/guide/h_walkforward.html. Ist zwar auf Englisch, aber dennoch gut verständlich. In Amibroker lässt sich das jedenfalls sehr einfach umsetzen. Mache dich aber darauf gefasst, dass das relativ lange dauern kann, je nachdem, über welchen Zeitraum durch die Optimierung laufen lässt (in meinem Fall seit 1.1.1996).

Link to comment
Share on other sites

Kann es sein das man unangemeldet den Thread hier nicht lesen kann?

 

Wo bei es bei einer Verlinkung oder Versendung von Seiten hier immer wieder Probleme gibt.

 

Unserem neuen Mitglied Oldschuren musste ich 5 Adressen senden bis er eine hatte wo mit er bei euch auf die Seite kam.

Vielleicht hat er ja jetzt nach seiner Anmeldung weniger Probleme.

Link to comment
Share on other sites

Kann es sein das man unangemeldet den Thread hier nicht lesen kann?

Doch, den Thread kann man auch als Gast einsehen. Die Anzahl an Klicks/Tag ist allerdings begrenzt und gilt für das komplette Forum, aber sobald man sich anmeldet, ist auch diese Limitierung aufgehoben.

Link to comment
Share on other sites

Wo bei es bei einer Verlinkung oder Versendung von Seiten hier immer wieder Probleme gibt.

 

Hallo ibelieve,

um das von Krümel bereits Gesagte noch zu ergänzen: Ja, es gibt hinsichtlich der Leserechte globale Einschränkungen.

Das ist kein "Problem" im Sinne von Fehler, sondern gewollt.

Eine bestimmte Anzahl an Klicks hat ein Besucher/ Gast frei, danach schlägt ihm die Forensoftware vor, sich zu registrieren.

 

 

Vielleicht hat er ja jetzt nach seiner Anmeldung weniger Probleme.

 

Davon gehe ich aus, ja.

Wenn nicht, nehme ich mich gerne der Angelegenheit an und versuche das schnellst möglich zu klären.

Link to comment
Share on other sites

Davon gehe ich aus, ja.

Wenn nicht, nehme ich mich gerne der Angelegenheit an und versuche das schnellst möglich zu klären.

 

Bekam ich grad von Oldschuren auf einem anderen Board

 

...jetzt wird schon wieder zu ig-market weiter geleitet...

 

Nach dem er mir gestern schrieb das es seit der Anmeldung eigentlich lief.

Link to comment
Share on other sites

Du solltest dich m.E. wirklich mal mit Walk-Forward Optimierung beschäftigen - siehe http://www.amibroker.com/guide/h_walkforward.html. Ist zwar auf Englisch, aber dennoch gut verständlich. In Amibroker lässt sich das jedenfalls sehr einfach umsetzen.

 

@ibelieve: Hast du dich mal damit beschäftigt? Hast du noch Fragen dazu? Sollten wir vielleicht hier einen Thread über Walk-Forward Optimierung eröffnen? Ich würde dann auch meinen Code zur WFA beisteuern. Der ist zwar noch nicht fertig bzw. noch nicht ganz so, wie ich ihn haben will. Aber vielleicht können wir gemeinsam daran basteln, und vielleicht haben auch noch einige andere hier Ideen dazu.

Link to comment
Share on other sites

Tradest du wirklich ohne Stopps?

 

Hatte ganz vergessen zu antworten. Ich habe bis jetzt noch keine Stopp-Strategie gefunden, die die Performance eines Systems nicht ganz erheblich beeinträchtigt hätte (egal ob das nun fixe, Trailing oder Chandelier-Stopps sind). Wenn du eine kennst - bitte schön, ich bin stark daran interessiert. :correct: Ich räume aber ein, dass ich in meinem DAX-Chart eine Stopp-Linie mitziehe, so dass ich im Katastrophenfall doch mal die Reißleine ziehen kann. Das ist aber bislang so gut wie nicht vorgekommen, da der VarCCI recht gute Signale geliefert hat. Aber dennoch ist insofern zugegebenermaßen eine diskretionäre Komponente enthalten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...