Breakout první korekce - automatické testování v TradeStation
Dnes navážu na svůj minulý článek „Studujeme intradenní systémy - breakout první korekce“ a prakticky vám ukážu, jak přibližně složité je vytvořit automatický test strategie, jehož výsledky byly v článku uvedeny.
S Tomášem skoro na každém našem kurzu diskutujeme na téma, zda-li obchodní strategie programovat či nikoliv. Odpověď je vždy jednoznačná – pokud člověk s tradingem začíná, měl by se z naší zkušenosti programování čehokoliv vyhnout. Je totiž jen velmi nepatrná šance, že začátečník, který má o burze jen minimální povědomí, naprogramuje něco, co by mělo reálnou šanci „samo“ vydělávat peníze. Obzvláště to platí v oblasti intradenního obchodování. Jediné, co může začínajícího tradera posunout vpřed je studium grafů. A začátečníkům, kteří se snaží dívat na trhy skrz mechanické programování, bohužel navždy unikají ty nejzákladnější principy.
Situace se pochopitelně mění u zkušených obchodníků. Pokud již rozumíte principům obchodování, máte dobře osahané své strategie (nejlépe skrz dlouhodobější živé obchodování), mohou vám různé programové nástroje zvýšit efektivitu nejrůznějšího testování nebo pomoci při nejrůznější automatizaci. Osobně používám programovatelné nástroje pro hledání tendencí nebo problematických období. Jednoduše řečeno jsem si vědom, že nejsem žádný programátor a nejsem schopen naprogramovat veškeré nuance obchodních přístupů, které používám. Většinou si tak vytvořím nějaký jednoduchý kód vystihující z principu určitou myšlenku a mohu chtít mechanicky otestovat její robustnost v čase předtím, než ji začnu jemně testovat ručním backtestem.
Nástrojů, ve kterých lze testovat mechanické principy existuje obrovské množství. Poměrně dost tipů můžete získat ve starším článku „Jaký software pro backtesting a vytváření vlastních obchodních systémů a indikátorů?“. Osobně dnes používám programy TradeStation a Microsoft Excel.
Krátce o TradeStation
TradeStation je brokerská analytická platforma, kombinující skoro vše, co obchodník potřebuje pro technickou analýzu a mechanické programování nejrůznějších algoritmů. Podrobněji viz např. náš seriál „Pracujeme s TradeStation (1)“. Dnes samozřejmě existují i další podobná řešení, já osobně ale upřednostňuji právě TradeStation, kterou ke své spokojenosti používám již velmi dlouho. Mezi hlavní důvody patří snadná práce s daty (v podstatě historická data vůbec neřeším, protože se mi vždy načtou od brokera, byť např. ticková data jsou zde omezená pouze na 6 měsíců), velmi rozsáhlá uživatelská komunita (když potřebuji tak na diskuzním fóru vždy najdu řešení svého problému) a samozřejmě technické možnosti. Jenom pro dokreslení obrázku - platforma je zdarma klientům TradeStation (pokud děláte alespoň skutečné minimum obchodů) nebo se platí cca 100 dolarů měsíčně (plus je třeba vždy platit poplatky burzám za jejich data), komise jsou podobné jako u InteractiveBrokers. TradeStation má pochopitelně také své ALE – vývoj platformy je poměrně dost pomalý a např. až letos do platformy přibyla možnost obchodování rangebars (vteřinové grafy pořád chybí) a pro obchodníky z Evropy je nepříjemné, že prakticky příliš nelze obchodovat evropské trhy.
Podoba kódu pro testování konceptu proražení první korekce
Abyste si dokázali udělat představu o náročnosti programování v TradeStation, přikládám svůj kód pro diskutovanou strategii proražení první korekce. Upozorňuji, že nejsem programátor, ale uživatel. Je tak pravděpodobné, že věci jdou dělat efektivněji nebo jinak. Aby byl kód přehledný, uvádím jej jako obrázek, pokud by měl někdo zájem, napište do diskuze a vložím jej v textové podobě:
Jak vidíte, kód není příliš dlouhý. Nejprve se definují používané proměnné a vstupní hodnoty.
Následná zhruba třetina kódu sleduje, kolik uděláme obchodů za den. V této chvíli obchoduje strategie jediný obchod denně, počítání obchodů se děje přes proměnnou numTradesToday a jakmile má tato proměnná hodnotu 1, další obchody bude software „obchodovat“ až následující den.
Teprve až posledních několik řádků obsahuje kód samotné strategie. Obchodujeme pouze v určité hodiny (zde nastaveno přes proměnné čas 9:33 až 10:00, což je lokální čas obchodování trhu TF, budete-li chtít obchodovat např. trh NQ je třeba nastavit lokální čas o hodinu nižší, neboť TF a NQ se obchodují na jiné burze, v jiném časovém pásmu) a sledujeme, zda-li trh překoná v daném čase první korekci. V takovém případě zkoušíme nastoupit stop příkazem nad high (v případě dlouhé pozice) poslední úsečky.
Výstupy v tomto kódu definované nejsou, protože používám předpřipravené kódy dostupné v TradeStation. Strategie ani neřeší „premarket“, protože v TradeStation můžeme strategii automaticky aplikovat pouze na data v hlavní obchodní hodiny – v našem případě zvolím „ticker“ @TF.D.
Shrnutí
Článkem jsem chtěl ukázat, že pro určité typy situací může být efektivní použít programové prostředky a otestovat si robustnost myšlenky tímto způsobem. Pochopitelně, že vytvoření kódu např. v TradeStation vyžaduje určitou zkušenost, ale můžete mi věřit, že sám ovládám jen minimum příkazů, většinou kód buduji systémem pokus-omyl-diskuze, ale i tak je vytvoření podobného kódu otázka maximálně několika málo hodin práce (a zkušený programátor toto pochopitelně má hotové za pár minut). Zdůrazňuji, že je nutné rozlišovat situace, pro které má mechanické testování smysl dělat, a pro které nikoliv. Pokud však obchodník buduje jednoduché strategie, které plánuje obchodovat čistě mechanicky a tyto lze naprogramovat, tak by se o to myslím mohl pokusit. Jednak proto, že si poté velmi zkrátí čas s hrubým otestováním robustnosti přístupu (aplikováním na roky historie zpět, další trhy atd) a jednak proto, že může kód použít pro zautomatizování exekucí, protože proč nenechat jednoduchou strategii tohoto typu zobchodovat počítač, pokud je vše nadefinováno mechanicky?
Na závěr připomenu, že sám jsem diskréční typ obchodníka a mechanické přístupy testování používám většinou na vyšší timeframe (většinou denní), navíc za účelem sledování různých základních tendencí a pravděpodobností, nikoliv pro budování AOS. V rámci intradenního obchodování neobchoduji přístup, který by bylo možné naprogramovat, ale na druhou stranu se určitě nezdráhám použít nejvhodnější nástroje v případech, které jsou k tomu vhodné.
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.