Breakout první korekce – automatizace v NinjaTraderovi
V diskuzi u minulého článku, který se věnoval automatickému testování breakoutu první korekce v TradeStation, jsem slíbil ukázku, jak stejný postup provést v programu NinjaTrader. Ten je pro testování dostupný zdarma a představuje tak zajímavou alternativu nejen pro začínající obchodníky.
V článku se dnes budeme opět věnovat breakoutu první korekce – viz úvodní informace v článku „Studujeme intradenní systémy - breakout první korekce“. V minulém díle jsme si ukázali, jak můžeme využít pro automatické testování program TradeStation (viz Breakout první korekce - automatické testování v TradeStation, dnes se podíváme na podobný postup v programu NinjaTrader. NinjaTrader je pro podobné účely zcela zdarma, navíc jej lze napojit na data Zenfire, která lze také využít zdarma – o všem naleznete velmi podrobné informace v našem archivu článků.
Co je vůbec účelem dnešního článku? Rád bych poskytl inspiraci všem, kteří mají pocit, že věci jsou složité a „nejdou“, nebo nevědí odkud začít. Sám naprosto neumím v NinjaTrader programovat (používám TradeStation, která má úplně jinou syntaxi) a toto tak není tutoriál o tom, jak se v NinjaTrader naučit programovat. Naopak, pokud by se zde našel někdo, kdo by podobný tutoriál vytvořil, sám se velmi rád přiučím. Dnešní článek je o tom, že je potřeba se věcí nebát, zkoušet se dívat jak problémy vyřešili ostatní a hrát si s daným nástrojem tak dlouho, až se člověk nakonec dostane k cíli.
V NinjaTrader můžete strategie (nebo indikátory) vytvářet dvěma způsoby. Buď přes jednoduchého pomocníka, kde si poskládáte základní podmínky vašeho systému bez jakéhokoliv programování, nebo v klasickém okně pro programování. Pomocníka (Wizard) pro tvorbu kódu spustíte z hlavního menu Tools > New NinjaScript > Strategy.
Zde je například ukázka poskládaných podmínek pro breakout otevíracího rozpětí, kterou uveřejnil v minulé diskuzi trader xanathar:
Osobně si tak při budování strategie nejprve pomohu podobným wizardem, který mi vytvoří základní kód strategie.
Následně si kód otevřu již přes okno s programovacím kódem (Tools > Edit NinjaScript > Strategy) a začnu strategii editovat. Kód vypadá na první pohled v NinjaTrader hodně komplikovaně, ale je to především z toho důvodu že hodně řádků zaberou různé deklarace proměnných. Samotné podmínky jsou po chvíli velmi srozumitelné.
Např. podmínka, že v 15:33 chci do proměnných uložit hodnoty maxima a minima určitého rozpětí (prvních 3 minut) vypadá následovně:
if (ToTime(Time[0])==153300) { RangeH=MAX(High,3)[0]; RangeL=MIN(Low,3)[0]; }
Podmínka, že high poslední úsečky je pak vyšší než high rozpětí by pak vypadalo takto: High[0]>RangeH atd.
Kód celé strategie si můžete stáhnout na této adrese: www.financnik.cz/download/BarBreakout1Input2.cs
Důrazně upozorňuji, že jde o kód pouze ke studijním účelům a inspiraci a nikoliv k ostrému obchodování. Nejsem programátor, takže věci jdou napsat jistě mnohem lépe a čistěji. Kód je samozřejmě možné upravovat a přepsat. Pokud tak učiníte, podělte se prosím v diskuzi s ostatními.
Instalace strategie
Krok 1
Strategii stáhněte a uložte si ji do adresáře, kam NinjaTrader ukládá ostatní adresáře – tj. např. Users/...jmeno.../Documents/NinjaTrader 6.5/bin/Custom/Strategy/
(Pokud nemůžete adresář najít, zkuste ve Windows vyhledat např. soubor @SampleAtmStrategy což je předdefinovaná strategie výrobce. Náš soubor BarBreakout1Input2.cs uložte do stejného adresáře).
Krok 2
Strategii otevřete v NinjaTrader v okně pro práci s kódem: Tools > Edit NinjaScript > Strategy a vyberte BarBreakout1Input2
Krok 3
Strategii je třeba zkompilovat. Klikněte na ikonku Compile:
Jakmile proběhne zkompilování strategie, můžete okno s kódem zavřít.
Krok 4
Nyní můžete začít se strategií pracovat. Na toto téma připravím patrně samostatný tutoriál. V tuto chvíli ve zkratce. Pro testování na historických datech vyberte:
File > New > Strategy Analyzer
Otevře se okno Strategy Analyzer, ve kterém je možné provádět např. automatizované backtesty. Backtest můžete aplikovat na data, která vidíte v levém horním rohu okna (data přidáte do okna klasicky přes instrument manager). Klikněte na některý soubor pravým tlačítkem myši a vyberte z kontextového menu Backtest:
V okně Backtest nastavte parametry podle svých představ. Tj. vyberte strategii (BarBreakout1Input2), trh, timeframe, nezapomeňte nastavit čas pouze denní seance (čas se nastavuje jako lokální, tj. pozor na období, kdy se v různých časových zónách mění letní/zimní čas):
Po kliknutí na OK by měl proběhnout samotný backtest, jehož výsledky vidíte v pravé části Analyzeru:
Toto byl skutečně hodně struční návod, jakým způsobem automatizovaný backtest v NinjaTraderu v principu rozchodit. Mimochodem - stop-loss a profit-target jsou nyní nastaveny v kódu v příslušných proměnných na 32 (PT), resp. 12 (SL) ticků a lze je pochopitelně měnit.
Ještě jednou bych rád zopakoval, že uvedený kód je zde spíše pro inspiraci. Sám budu rád, pokud se najdou zkušení programátoři, kteří naváží na uvedené téma a kód například upraví o další možnosti.
Petr Podhajský
Fulltime obchodník věnující se tradingu více než 20 let. Specializace na systematické strategie obchodované na futures a akciích. Oblíbený styl obchodování: stavba automatizovaných portfolio systémů, které využívá i při správě většího externího kapitálu.