Mittwoch, 29. Juni 2011

NinjaTrader Insides - Introduction

Nach einigen Unterhaltungen mit den Lesern des Blogs habe ich mich entschlossen wieder etwas mehr zum Thema Programmierung unter NinjaTrader zu schreiben. Im wesentlichen möchte ich gerne einige für mich und hoffentlich auch für die Leser interessanten Tips und Tricks veröffentlichen, die kaum, bis gar nicht dokumentiert sind. Oft findet man solche Anregungen erst beim Lesen diverser Foren oder durch eigenes "Try & Error" -Vorgehen.

Als generelle Hilfe bei Programmierfragen kann ich das NT-Forum selbst oder das Forum bei BigMike empfehlen. Hier werden sie sicherlich geholfen :-)


Anfangen möchte ich mit einem Tip zum Thema Indikator-Verwendung:
Im Normalfall füge ich einen Indikator zu einer Strategie mit dem folgendem Aufruf innerhalb der Initialize() -Methode hinzu:

Add(SMA(14));

Wenn ich den Indikator nun aber öfter innerhalb meiner Strategie verwende und ich dann noch einen Indikator verwende, der mehr als nur 1-2 Parameter übergeben bekommt, kann dies recht aufwendig und fehleranfällig werden. Besonders, wenn man Parameter ändern möchte, die fest-verdrahtet im Code stehen und nicht über den Property-Dialog parametrisiert sind. 

Abhilfe schafft ein Indikator-Parameter in der Strategie, im Variables-Bereich. In unserem Beispiel wäre folgender Code-Abschnitt hinzuzufügen:

SMA mySMA;

Innerhalb der Initialize()-Methode schreibe ich ...

mySMA = SMA(14);
Add(mySMA):

... alle weiteren Aufrufe dieses Indikators kann ich dann über die Variable gestalten. Als Beispiel, möchte ich den aktuellen Wert des Indikators am letzten abgeschlossenen Bar verwenden:

double currentSMAValue = mySMA[0];


Beste Grüße
DarthTrader

Donnerstag, 2. Juni 2011

Trades - Mai 2011

Der Mai war wieder ein sehr guter Handelsmonat, wie Ihr an den Daten weiter unten erkennen könnt.
Nach einigen Anpassungen und Verbesserungen innerhalb der Strategien, scheinen diese nun stabiler und die Backtests aussagekräftiger. Ein wichtiges Thema im Mai war für mich die korrekte Implementierung des PartialFill-Problems. Sowohl beim Entry als auch beim Exit kann es sein, dass nur teile der gehandelten Kontrakte gefillt werden, diese muss zuverlässig im Code behandelt werden. Da ich bei einigen Strategien einen Unmanaged-Ansatz verfolge, um bspw. OCO-Orders aus einer Range heraus zu handeln, musste auch hier dieses Problem gelöst werden. Nach etlichen Tests im Replay-Modus sieht es nun aber sehr gut aus und die Strategien sollten auch mit 10 oder 20 Kontrakten (sofern ich das mal handeln werde) eine gute Figur abgeben.

DT_OpenGap 
Die Strategie tradete 10 mal im Mai und brachte 60% Gewinner hervor. Einige schwierige Trades im CL konnten durch die Gewinner im NQ nicht kompensiert werden. Es bleibt ein Verlust von  -$699,97. Im Juni wird nur noch der NQ mit dieser Strategie gehandelt werden.

DT_OpenRange
Mit 41 Trades im CL und im FDAX (davon 22 Gewinner) ist diese Strategie weiterhin das Steckenpferd des Portfolios. Ein stattlicher Gewinn von $3,850.44 bleibt am Ende über. Es war mitte des Monats sogar noch mehr Gewinn, allerdings gab es mit der erhöhten Volatilität Ende Mai einige Probleme.

DT_BundPP
8 Trades und davon 7 im Plus, das kann sich sehen lassen. Da der Bund allerdings die großen Bewegungen ausgelassen hat, darf man schon sehr mit dem Ergebnis von $1,888.02 zufrieden sein.

Insgesamt ein sehr angenehmer Handels-Monat ... in der Hoffnung das so weitergeht.

Beste Grüße
DarthTrader