Jump to content
Co nového? Mé kurzy
Články a tutoriály:
Hledat v
  • Více možností...
Najít obsah, který ...
Hledat výsledky v ...
Seriály Komoditní Manuál Psychologie obchodování
  • Jaký software pro backtesting a vytváření vlastních obchodních systémů a indikátorů?

    Při vytváření vlastních obchodních strategií víceméně každý obchodník dříve či později narazí na skutečnost, že by si rád práci zautomatizoval a svůj systém měl k dispozici v nějakém programu sloužící k zobrazování grafů. Některým obchodníkům stačí, že svůj systém budou mít graficky zobrazený v grafu ceny sledovaného kontraktu, jiní své systémy zevrubně testují na historických datech, aby získali představu, jak se systém může chovat - jaké je dlouhodobé RRR (risk-reward-ratio), expectancy, jaký lze se systémem očekávat drawdown. Tyto informace jsou pro dlouhodobé úspěšné podnikání v komodnitních trzích důležité a tak není divu, že existuje mnoho nástrojů, které vytváření vlastních systémů podporují a nabízejí k tomu celou řadu funkcí včetně možnosti automatizovaného testování vytvořených systémů na historických datech.

    Zde mi dovolte malou odbočku - "keep it simple" je v komoditním obchodování důležité heslo. Pro obchodování není třeba znalost programování a pro začátek obchodování stačí základní patterny, divergence, práce s klouzavými průměry atd. Nicméně jakmile si obchodník zažije základy, odžije si své první měsíce a roky v tomto businessu, začne hledat systémy, které by například více profitovaly atd. A v této fázi přichází potřeba programů popisovaných v tomto článku. Pokud s komoditami začínáte a popisovaná řešení vám přijdou složitá, je to absolutně v pořádku. Vše je třeba zažívat postupně a pro začátek doporučujeme studovat základy obchodních strategií a vše si testovat v jednoduchých a intuitivních programech typu Gecko TnT (který třeba já osobně používám pro běžnou technickou analýzu dnes a denně).
    Nutno totiž upozornit, že software umožňující vytváření vlastních systémů a jejich backtestování, bývá hodně komplexní, jeho programování není triviální a používání vyžaduje určitou zkušenost - jak se samotnými programy, tak trhy. Jsou samozřejmě nástroje snazší na pochopení a na druhé straně nástroje komplexnější, vyžadující znalosti některého programového jazyka, ale obecně neočekávejte, že libovolný program spustíte a za 10 minut budete vytvářet své vlastní strategie :) Naopak - připravte se na dlouhou cestu, vyžadující trpělivost, většinou znalost angličtiny a trochu toho technického myšlení.

    A jaký software použít? Toť samozřejmě otázka, která byla ještě před pár lety snadno zodpověditelná, neboť existovalo pouze několik velmi drahých programů. Dnes je však situace velmi odlišná a jak uvidíte v tomto přehledu, cena programu již dnes nutně není překážkou. Tento článek je rozdělen do dvou dílů, protože programů je dnes opravdu hodně. Nejde o recenze (!) ani nějaké konkrétní doporučení. Sám používám pro účely vytváření obchodních strategií a backtesting tradiční TradeStation (bude popsána v dalším díle) a do přehledu jsem zařadil programy, které jsem zkoušel, nebo které mají dobré reference v různých internetových diskuzích. Rozhodně ve všech neumím programovat - to avizuji dopředu, abych předešel dotazům v diskuzním fóru :) Do přehledu byly zařazeny programy umožňující práci s futures (programy zaměřené pouze na forex a akcie zde zmiňovány nejsou). Pokud máte s vytvářením obchodních systémů v některém z programů praktické zkušenosti, podělte se prosím ve speciálním vláknu diskuzního fóra.

    Pořadí, v jakém jsou programy uváděny je čistě náhodné a neudává žádné preference. Ještě jednou zdůrazňuji, že toto je první díl článku, v druhém naleznete další důležité programy včetně těch "hlavních" na trhu jako je TradeStation, MetaStock, eSignal atd.

    Ensign Windows

    web: http://www.ensignsoftware.com

    Specifické řešení, které osloví zejména technicky a programátorsky zdatné obchodníky. Ti si v nejrůznějších diskuzích pochvalují, že s Ensignem lze vytvořit totéž co v drahých programových balících, avšak za zlomek ceny - celé řešení je k dispozici za 40 USD měsíčně. Řešení je zajímavé i díky možnosti přímého propojení na platformu Interactive Brokers, přes kterou může získávat jak intradenní data, tak exekuovat obchodní příkazy. Software je doslova našlapán funkcemi a indikátory (viz přehled) a jeho flexibilita je podržena programovacím jazykem ESPL, pomocí kterého je možné vytvářet vlastní studie, obchodní systémy a samozřejmě je testovat na historických datech. Patrně největší nevýhodou pro běžné uživatele je skutečnost, že vše se tvoří v nefalšovaném programovacím jazyku typu Delphi, takže znalost programování je skutečně nezbytná. Pokud je na druhou stranu programování vašim koníčkem nebo profesí, mohl by vás Ensign zaujmout. Nenechte se však odradit spartanským vzhledem webu i samotného programu - prostě zde se na marketing nehledí a všechen důraz je kladen na funkčnost. Zcela upřímně - na první pohled vypadá program dost zvláštně, ale v tomto případě stojí za to věnovat mu trochu času. Demoverze je k dispozici na adrese http://www.ensignsoftware.com/ftp/setup.exe (cca 3MB soubor).

    Neoticker 4

    web: http://www.tickquest.com/

    Neoticker je další z poměrně oblíbených platforem určených jak pro intradenní obchodování (real-time verze), tak pro poziční obchodování (EOD verze). Právě EOD verze je svojí cenou v řádech desítek dolarů hodně oblíbená mezi uživateli, kteří přecházejí z jiných platforem (Realtime verze je výrazně dražší - resp. na úrovni podobných programů, prodává se za 1297 dolarů). Realtime verzi lze napojit na většinu oblíbených zdrojů dat i on-line platforem (včetně Interactive Brokers, MB Trading, eSignal a další). EOD data je možné do systému uploadovat z bezplatných zdrojů.
    Zmiňovaný Neoticker EOD obsahuje celou řadu nástrojů pro vytváření, testování a analýzu obchodních systémů. Pro vytváření systémů lze přitom použít jak jednoduché rozhraní, tak hned tři standardní programovací jazyky VBScript, Javascript a Delphi Script.
    Neoticker EOD se podle informací výrobce v tuto chvíli s nástupem nové čtvrté verze systému připravuje, k vyzkoušení je na webu výrobce nicméně demo "Realtime" verze. Najdete ho na adrese http://www.tickquest.com/NeoTicker/downloaddemo.html

    Tradecision

    web: http://www.tradecision.com/

    Relativně neznámý nový produkt, který je však na první pohled vyvíjen jako moderní nástroj určený pro obchodníky, kteří nechtějí zůstat u stále zastaralejších "tradičních" řešení. Tradecision obsahuje zajímavě vyváženou nabídku nástrojů pro technickou analýzu grafů, vytváření vlastních obchodních systémů a indikátorů, backtesting, optimalizaci a money-management. Obchodní systémy mohou být vytvářeny na základě dodávaných nebo vlastních indikátorů, k dispozici jsou sofistikované nástroje pro simulaci vytvořených systémů. Specialitou programu je vytváření obchodních systémů s použitím modelů neuronových sítí.

    Obsažené nástroje jsou velmi promyšlené - příkladem může být oblast Money managementu - nastavení v oblasti řízení pozic (position sizing) je jinak spíše doménou drahých specializovaných programů, zde je možné je okamžitě spolu s podrobným nastavením stop-lossů (skládajících se například z několika podmínek) zabudovat ihned do testovaných systémů. Vše je přitom relativně snadno pochopitelné a ovladatelné.
    Také tento produkt lze napojit na řadu on-line platforem, mj. eSignal a Interactive Brokers, přes které může získávat intradenní data a zároveň zadávat příkazy k exekuci. Výhodou tohoto systému je možnost automaticky aktualizovat EOD data zdarma prostřednictvím Yahoo Finance. Program je dodáván ve třech verzích v cenové relaci od 698 do 1598 dolarů.

    Visual Chart 4.0

    web: http://www.visualchart.com/

    Systém, který na první pohled zaujme tím, že je poměrně hodně sofistikovaný a přitom pro EOD data zcela zdarma (realtime verze pak za pár desítek dolarů měsíčně podle burzy). Software můžete začít okamžitě používat po stažení z adresy http://www.visualchart.com/enxx/download/software/software.asp?seleccion=1 Pro EOD je v systému k dispozici navíc i základní historie dat a není tak problém zkusit vytvářet vlastní obchodní systémy. To je v programu možné dvěma cestami - tzv. visuálním designerem nebo klasicky přes skriptovací jazyk Visual Basic. Zejména myšlenka visuálního designeru je zajímavá. Celý obchodní systém pak vypadá nějak takto:

    Ale neradujte se - jak bylo avízované hned v úvodu, podobné programy nejsou jednoduché a naučit se je ovládat vyžaduje opravdu hodně času a dobrou znalost angličtiny.
    Kromě programovacího rozhraní program samozřejmě opět obsahuje řadu základních nástrojů pro technickou analýzu. Nicméně vzhledem k nulové ceně programu pro EOD data si vše může každý vyzkoušet sám.

    ProRealTime.com

    web: http://www.prorealtime.com/en/

    Aby nebylo programů umožňujících vytvářet systémy na EOD datech zdarma málo, můžete se podívat také na webovovu java aplikaci ProRealTime.com. Ta nabízí běžné nástroje pro zobrazování grafů a technickou analýzu a navíc obsahuje i poměrně pokročilý modul pro vytváření vlastních indikátorů a obchodních systémů. Navíc systém obsahuje i historická data (u většiny komodit však pouze za posledních několik let), takže je možné vytvářené systémy ihned testovat. Základní informace o backtestovacím modulu naleznete na stránce http://www.prorealtime.com/en/

    Další programy jako je TradeStation, MetaStock, eSignal, Amibroker, Trade Navigator budou zmíněny v příštím díle. Své postřehy k tomuto tématu prosím směřujte do speciálního vlákna diskuzního fóra.

    23.8.2005

    Petr Podhajský

    Fulltime obchodník věnující se tradingu více než 15 let. Specializace na systematické strategie obchodované na futures a akciích. Oblíbený styl obchodování - intradenní s využitím orderflow. Poslední roky pak stavba automatizovaných portfolio systémů.


    Mohlo by vás dále zajímat

    GSB – automatizovaná cesta pro zkoumání trhů a vytváření obchodních systémů

    Dnešní trhy vyžadují zejména na nižších timeframe průběžné zkoumání širších souvislostí toho, co v nich funguje a co už nikoliv. Což je dost práce, kterou je dobré maximálně zefektivňovat použitím různých nástrojů. Těch existuje celá řada, ale ne všechny stojí za námahu. Jednou z výjimek, která mě poslední dobou oslovila, je program GSB.
    Co je horší – snažit se slepě obchodovat systémy vytvořené tvrdým dataminingem, nebo mysl zabetonovat používáním starých přístupů? Těžko říci, ale z mé zkušenosti nepovede ani jedna z uvedených cest k dlouhodobým profitům.
    Agresivní dolování dat (datamining), kdy trader neustále prochází stejná historická data, až nalezne systém s parametry, které hledá, vede k obchodování přeoptimalizovaných systémů, které na nových datech nevydělávají. Používání starých a obecně známých přístupů sice může vést k systémům založených na smysluplných a ověřených principech, ovšem ani ty s velkou pravděpodobností nebudou zejména na nižších timeframe dnes již vydělávat. Jednoduše proto, že popisovaná tržní neefektivita z trhů vymizela tím, jak ji v průběhu času obchodovalo velké množství traderů.
    Je potřeba jít určitou střední cestou. Vycházet z ověřitelných a vysvětlitelných myšlenek a na nich se nebát stavět nové a inovované obchodní přístupy.
    Sám rád ve svém obchodování vycházím z „idea first“ přístupu, kdy systémy stavím na pro mě srozumitelné a odůvodnitelné hypotéze, proč by profitabilita daného přístupu měla v trzích vydržet. Současně si ale rád pomáhám automatizovaným prohledáváním ideálního kontextu, ve kterém základní myšlenka dnes funguje nejlépe (viz workflow Fcontext diskutované v AOS kurzu). Podobný přístup mi pomáhá objevit souvislosti, které není možné v rozumném čase otestovat ručně.
    Proto mě velmi potěšilo, že jsem objevil program Genetic System Builder (GSB), jehož autor, trader Peter Zwag, vyvíjí software, který se v řadě ohledech zaměřuje v trzích na řešení podobných problémů, které jsou i pro mě důležité.
    Řekne-li se genetická stavba obchodních systémů, patrně vás, stejně jako mě, napadne tradiční software pro „datamining“. Dnes existuje spousta programů umožňujících procházet historická data a, zjednodušeně řečeno na nich automatizovaně testovat různé kombinace indikátorů a cenových patternů za cílem získat obchodní systém. Jak jsem předeslal, jsem vůči podobným cestám poměrně skeptický. Bohužel často podobné softwary najdou to, co chce obchodník najít. Tedy systém s hezkými historickými výsledky včetně krásných ověření na OOS datech, která se prostě vyberou z tisíců a tisíců možných systémů, které systém vygeneruje.
    Proč se mi pak líbí GSB? Protože přes svůj název není program zaměřen jen na genetické vytváření systémů. Jeho silnou stránkou je analytické zkoumání širšího kontextu toho, co v trhu funguje a co nikoliv. A teprve do tohoto kontextu pak můžeme více či méně automatizovaně vytvořit obchodní systém. Tato filosofie hodně resonuje s tím, co při vývoji systémů sám vnímám za důležité a celkově je na programu vidět, že jej tvoří zkušený trader vycházející z vlastní praxe systematického obchodování (výsledky Petera jsou mj. ověřené například v časopise Futures Truth, kde sledují a porovnávají automaticky obchodované systematické strategie).
    Popsat konkrétní funkcionalitu GSB není úplně jednoduché, protože program toho umí opravdu hodně. A co především – je neustále rozšiřován (opravdu velmi aktivně). Je na něm skutečně znát, že je autorem využíván pro vlastní trading a analýzy trhu. Podrobnější představu o způsobu využití programu můžeme získat z těchto anglických videí (do fóra je nezbytná bezplatná registrace), program je pak možné vyzkoušet ve 14denní plně funkční demoverzi, kterou naleznete zde.
    Co tedy umí GSB ve zkratce?
    Jako kterýkoliv program na automatizované vytváření obchodních systémů umí GSB vzít jako vstup například 30minutová data trhu e-mini S&P 500 (ES) a zkoušet na jejich historii vytvořit obchodní systém složený z různých indikátorů a jejich parametrů. Co se mi líbí na GSB je skutečnost, že už tato část je dotažena nad rámec toho, co se nabízí jinde. Je možné pracovat s pokročilými fitness funkcemi ovlivňujícími výsledek vytvářených systémů, systémy automaticky verifikovat na vybraných dalších trzích a timeframe a následně je verifikovat pomocí WFO. Dále lze automaticky vytvářet systémy s využitím více trhů či timeframe, vybírat použité indikátory, aplikovat různé stop-lossy, výstupy atd.
    Řadu zmíněných funkcí nabízí i jiné podobné programy, byť si myslím, že GSB hezky integruje podstatné funkce, které v této oblasti trader potřebuje.
    V čem GSB z mého pohledu exceluje, je rychlost a výkon. A to je v této oblasti prakticky to nejdůležitější.
    Samotný GSB pracuje svižně. Můžeme jej spouštět jako klasickou desktopovou aplikaci, kde pochopitelně výkon nejvíce záleží na parametrech samotného použitého hardwaru. A ten je vždy omezený, i když zvolíme výkonnější hardware. Jako opravdu dobrý a promyšlený krok tak hodnotím skutečnost, že GSB umí pracovat coby cloudové řešení. V tomto případě nastavujeme testované analýzy v tzv. Managerech, které následně spouští Workery – instance zpracovávající výpočty. Ty mohou být na stejném počítači, na jiných našich počítačích nebo v cloudu – na cizích počítačích.
    Jako cloud přitom mohou sloužit i počítače ostatních uživatelů GSB (lze nastavit, jestli se do cloudu chceme zapojit či nikoliv). Toto provedení mi přijde jako opravdu dobré. Většinou se podobné programy instalují na servery, které běží nonstop (sám si řešení pronajímám, viz popis zde). Spotřeba elektřiny i odpisy hardwaru jsou v takovém případě započteny do ceny nájmu a je úplně jedno, jestli servery běží naprázdno nebo jsou plně vytíženy. V době, kdy doběhnou testy, tak dává naprostý smysl sdílet výkon s ostatními. Jakmile pak sám potřebuji skokový výkon a jsou volné servery ostatních, získávám násobně vyšší výkon, který by mne stál v pronájmu vlastních serverů opravdu hodně peněz. Samozřejmě sdílený výkon se liší v čase a nejvíce závisí na tom, jestli své servery využívá tvůrce programu Peter. Nicméně vesměs získávám s GSB běžně dvoj až trojnásobek výpočetního výkonu, než který mi poskytují vlastní servery. Což je u podobného řešení nezanedbatelná výhoda. V každém případě Peter slibuje, že uživatel vždy získá alespoň jednoho cloudového workera zdarma, což už samo o sobě může pomoci pohnout s výpočty.

    Ukázka prostředí GSB. Vpravo je vidět, že výpočet probíhá na celkem 30 workerech. Přitom jen 5 jich běží na mém vlastním hardwaru. Ostatní jsem v daném okamžiku využil bezplatně, což samozřejmě výrazně zvyšuje efektivitu celého výpočetního procesu.
    Dobré je, že Peter poskytuje k celému řešení bezplatně samostatný software Resource Manager umožňující výkon řídit – můžeme si například nastavit prioritu, se kterou se budou spouštět vlastní workery (a ostatní budou zastaveny). Sdílení výkonu pak probíhá naprosto automaticky.

    V Resource Manager mám nadefinované dvě skupiny – první jsou mí vlastní workeři. Ti mají přednost a běží v momentě, kdy s programem pracuji. V druhém řádku jsou potenciální workeři z cloudu, kteří se spustí v okamžiku, kdy server není vytížen.
    Právě zmíněná cloudová funkcionalita posouvá GSB k možnostem, které jsem jinde nenašel (v dané cenové kategorii). Vysoký dostupný výkon mi coby traderovi poskytuje analytické možnosti zmíněné na začátku článku.
    Efektivně dovoluje zjišťovat, co na daném trhu funguje a co ne. Tak, že vygenerujeme statisticky relevantní počet, například několik desítek tisíc systémů a vyhodnocujeme různé celkové degradace systémů v out of sample datech. Nezaměřujeme se na jeden systém, ale na statistický vzorek. Můžeme například snadno porovnat OOS degradaci 10 000 vytvořených systémů z ověřování na jiném trhu a bez tohoto ověřování. Snadno tak zjistíme, jestli daný prvek ověřování skutečně celkově pomáhá na daném timeframe vytvářet robustnější systémy či to byla jen záležitost u několika málo systémů.
    Jistě, spousta uvedeného lze provádět v jiných softwarech. Ostatně sám jsem některé podobné principy testoval v Amibrokeru s pomocí OLE automatizace. Ale právě s využitím cloudového výkonu je toto opravdu práce na jiné úrovni.
    I díky tomu, že program umožňuje některé chytré analýzy, které jsem zatím v jiných programech neviděl.
    Především způsob definování in-sample a out of sample dat, pomocí kterých je možné sledovat degradaci systému v rámci učení (in-sample data) a testování (out of sample data). Tradičně se dělí data trhu například v poměru 60 % IS a 40 % OOS (nebo podobně, podle osobní preference). Jenže to s sebou nese problém, že daná testovaná období trhu se mohou velmi lišit svým charakterem. Proto se mi velmi líbí myšlenka používat jako OOS data každý druhý den či každý druhý měsíc a podobně. Systémy pak učíme na celém období dat (kdy software vidí například každou druhou úsečku) a testujeme na druhé části úseček. Do vývoje systému pak zahrnujeme všechny zásadní fáze trhu a vyhodnocení na OOS bude mít více vypovídající hodnotu. V GSB lze toto přitom nastavovat velmi flexibilně.

    Silnou stránku GSB vnímám v jeho komplexnosti, která je využitelná v praxi právě i díky cloudovému výkonu. V řadě programů lze provádět například walk forward testování (wf) a GSB není výjimkou. Ale kdo někdy wf prováděl, jistě může potvrdit, že tyto testy vyžadují hodně výkonu a tedy času, pokud vše probíhá na jednom počítači. V GSB lze i walk forward provádět pomocí workerů (tedy v cloudu) a reálně lze propočítat vyšší stovky wf na intradenních systémech za den. Na cloudu lze nechat i automatické ověřování systémů na jiných trzích/timeframe a následně jen ve statistikách sledovat, jak si systém vedl na zvolených trzích/timeframe určených pro validaci. Výsledkem je pak podobný přehled, kde můžeme na jednom místě vidět, jak stabilní jsou výsledky. Lze sledovat stabilitu výsledku na ověřovaných jiných trzích a timeframe, ale i stabilitu výsledků z pohledu použitých parametrů. V tomto ohledu se mi moc líbí Peterův parametr stability umožňující vybírat ty systémy, jejichž parametry se v průběhu času nemění (a existuje tak vyšší šance, že v live tradingu bude systém robustnější).
    Generované systémy lze z GSB rovnou přenášet v hotovém kódu do TradeStation.
    GSB toho skutečně umí hodně, byť je to pochopitelně opět jen software – nástroj, jehož výsledky budou do velké míry záležet na jeho použití. Určitě nejde o software typu „zapni“ a po x minutách získáš systémy připravené k živému obchodování. Naopak. Jde o nástroj poskytující různé analýzy, nad kterými je třeba přemýšlet a trávit čas. A teprve následně výsledek práce použít k vytvoření obchodovaného modelu. Který by ale měl mít vyšší šance na robustní výkonnost v živých trzích.
    V každém případě doporučuji shlédnout Peterova videa popisující metodologii s jakou trhy testuje.  A případně prozkoumat zkušební verzi programu. Už i to může přinést do vašeho vývoje strategií nové podněty a zajímavé inspirace. Té nabízí GSB dost. A byť software stojí 1 500 dolarů, jde z mého pohledu o smysluplné řešení v této silně konkurenční oblasti.

    Propojení Excelu a IB - načítání historických dat

    V minulém článku jsme si vysvětlili, jak funguje základní komunikace mezi aplikací MS Excel a obchodní platformou TWS od Interactive Brokers za pomocí DDE rozhraní. Také jsme si vytvořili ukázkový Excel obsahující jednoduchý VBA kód, který umí načítat real-time data z TWS. V dnešním článku si předvedeme, jak z TWS načítat data historická.
    Ještě než začneme, rád bych upozornil na jednu věc - pokud chcete historická data z TWS smysluplně využívat, budete potřebovat u IB reálný účet. Demo verze je omezená na jeden týden historických dat a i tak mi připadlo, že data byla vymyšlená. Takže demo účet je dobrý tak na otestování, že věci opravdu fungují, ale to je tak všechno. Pokud máte reálný účet u IB, můžete si samozřejmě zažádat o „papírový“ účet a na tom si všechno testovat. Celkový limit na historická data v TWS je 1 rok. Pokud potřebujete data starší, budete se muset podívat po jiném zdroji dat.
    Základní stavební kámen nám opět poskytne vzorový XLS od Interactive Brokers, ve kterém mají načítání historických dat také implementováno. Opět si to ale zjednodušíme, jak jen to je možné. Pro začátek si vytvoříme jednoduchý Excel, který umí načítat historická data pro jeden akciový titul. Na tom by měl být velice dobře pochopitelný princip, jak to celé vlastně funguje. A pak si vytvoříme Excel druhý, který umí pro dané akciové tituly načíst historická i real-time data.
    Vytvoření požadavku na historická data
    Minule jsme si ukázali, že načtení real-time dat z TWS do Excelu je záležitostí dvou kroků. V prvním kroku si vytvoříme tzv. control link a v druhém kroku si vytvoříme již odkaz přímo na konkrétní data, která nás zajímají. K načtení dat historických budeme potřebovat kroky tři. V prvním kroku si opět vytvoříme control link, v druhém kroku si počkáme na to, až TWS data připraví (chvilku to trvá) a načteme si je, a konečně ve třetím kroku si historická data vypíšeme do Excelu.
    Jako první věc tedy musíme vyřešit, jak vlastně má vypadat control link. Tady opět přichází na řadu vzorový XLS od IB, konkrétně list „Historical Data“:

    klikněte pro celý obrázek Když vyplníme nějaký titul a zmáčkneme tlačítko „Request Historical Data“, tak se vytvoří nový list a historická data se vloží do něj. Pokud se přepneme zpět a označíme si control link (sloupec „Ctrl“), tak v řádku formule opět vidíme, jak má control link vypadat (viz obrázek). Ještě než si jednotlivé části vysvětlíme podrobněji, chtěl bych poukázat na to, že control link pro historická data vrací i určité hodnoty (na rozdíl od control linku pro real-time data, který má vždy hodnotu 0) - viz hodnota „FINISHED“ na obrázku. Tyto hodnoty reflektují status, ve kterém se právě TWS při zpracovávání požadavku na historická data nachází. Po odeslání požadavku se status nastaví na „PROCESSING“ – TWS připravuje požadovaná historická data. Jakmile jsou data připravena, status se změní na „RECEIVED“ - TWS platforma obdržela data z IB serveru. A jakmile si data pomocí DDE požadavku načteme a TWS nám je tímto předá, status se změní na „FINISHED“ - operace dokončena. Tyto hodnoty jsou pro nás důležité, protože jakmile se změní status na „RECEIVED“, je to signál, abychom si historická data vyzvedli.
    Vraťme se teď k samotnému control linku a jeho obsahu. První část je víceméně stejná jako u control linku na real-time data. Také tam musí být jméno účtu, ke kterému se připojujeme (DDE server), unikátní ID, „req“ definující, že po serveru něco požadujeme a základní popis finančního nástroje, jehož historická data požadujeme. Hlavní rozdíl je zde v druhé hodnotě (DDE topic), která obsahuje „hist“ místo „tik“ (hodnota „hist“ říká TWS, že chceme pracovat s částí aplikace zaměřenou na historická data). Potom je tam druhá část, kde jsou všechny ty hodnoty oddělené slovy „singleSpace“ a „singleColon“ a tato část je specifická pro požadavky na historická data. Hesla „singleSpace“ a „singleColon“ znamenají přesně to, co znamenají v angličtině - tedy jedna mezera a jedna dvojtečka. DDE příkaz nesmí obsahovat mezery a dvojtečky a toto je způsob, jak mezery a dvojtečky v příkazu použít (TWS těmto slovům rozumí a překládá si je na mezery a dvojtečky). Dále budu používat „přeložené“ hodnoty, ať je to trochu čitelnější.
    První hodnota je v našem případě „20100428 08:00:00 GMT“ a udává datum a čas, od kterého chceme jít do historie (většinou je to dnešní datum, protože chceme co nejbližší historii). Dále tam máme „5 D“ - tím definujeme, jak hluboko chceme jít do historie. 5 D v našem případě znamená 5 dní, „30 S“ by bylo 30 sekund, „3 W“ by byly 3 týdny atd. Dále je v linku hodnota definující časovou velikost úsečky (timeframe), v našem případě je to „11“ a to znamená, že chceme denní data. Např. 3-minutový graf má hodnotu 16, 5ti minutový má hodnotu 7 a hodinový má hodnotu 10. Další hodnota specifikuje, jaká chceme data - většinou chceme „Trades“, neboli Last hodnoty (hodnoty posledních spárovaných obchodů). Můžeme si ale nechat vygenerovat i například Bid nebo Ask data. Pak tam máme hodnotu „RTH Only“ (RTH jako Regular Trading Hours) a zde můžeme zadat 0 pro všechna data nebo 1 pro data pouze z regulérních obchodních hodin. A poslední hodnota definuje, v jakém formátu má TWS vracet datum a čas u jednotlivých úseček. Hodnota 1 znamená formát čitelný pro lidi, hodnota 0 je užitečná pro programátory (počet sekund od 1. ledna 1970).
    Všechny tyto hodnoty jsou velice dobře vysvětleny v dokumentu „DdeForExcelApiGettingStarted.pdf“, který by měl být součástí archívu, ve kterém si stáhnete vzorové XLS od IB. Takže pokud umíte aspoň trochu anglicky, podívejte se tam na kapitolu 16.
    Jakmile control link vytvoříme a vložíme jej do jakékoliv buňky v Excelu, dáváme TWS příkaz, aby nám poskylo požadovaná historická data.
    Načítání historických dat do Excelu
    Nyní víme, jak dát TWS příkaz, aby nám poskytlo historická data a také víme, že historická data budou připravena, jakmile se změní hodnota control linku na „RECEIVED“. Poslední věc, kterou potřebujeme vědět, je, že TWS nám historická data vrátí v podobě dvourozměrného pole, což si můžeme představit jako jeden list v Excelu - každá buňka (neboli hodnota pole) má svou unikátní adresu, která se skládá ze dvou hodnot (pořadí v první dimenzi a pořadí v druhé dimenzi - první dimenzi si můžeme představit třeba jako řádky, druhou jako sloupce). Protože je to datová struktura, která sama o sobě zabere minimálně několik buňek, nemůžeme použít stejný postup jako u real-time dat, kdy do určité buňky vložíme DDE příkaz a ten nám pak do té samé buňky vrátí požadovanou hodnotu. Budeme si muset pole načíst přímo pomocí DDE příkazů v programu a pak jednotlivé hodnoty pole vypsat do Excelu.
    Nyní už víme všechno, co potřebujeme, abychom si mohli naprogramovat jednoduchý XLS, který nám načte historická data pro jeden titul. Program bude mít 3 vstupní parametry - uživatelské jméno TWS, jméno akciového symbolu a hloubku historie dat. Budeme předpokládat, že historii chceme ode dneška a budeme chtít denní timeframe. V jedné části programu si vytvoříme control link a v druhé části budeme monitorovat jeho hodnotu a jakmile se změní na „RECEIVED“, načteme si data z TWS a vypíšeme si je do Excelu.
    XLS bude vypadat takto:

    Do nového modulu ve VBA si vložíme funkci, která se spustí po stisknutí tlačítka a vytvoří control link. Také si tam vytvoříme pomocnou funkci, kterou budeme z control linku extrahovat ID, to budeme potřebovat později:

    klikněte pro celý obrázek A k listu, do kterého vkládáme control link (v mém případě první list - Sheet1) si vložíme obsluhu události, která bude sledovat změnu v buňkách na základě výpočtu formule a pokud se naše buňka změní na „RECEIVED“, načteme a zobrazíme historická data:

    klikněte pro celý obrázek Nyní už si pouze přiřadíme makro „PripravaControlLinku“ k našemu tlačítku, vyplníme uživatelské jméno, akciový symbol a hloubku historie, a po stisknutí tlačítka nám program načte do Excelu požadovaná historická data. TWS samozřejmě musí běžet pod uživatelským jménem, pod kterým se z Excelu připojujeme.
    Tento Excel si můžete stáhnout zde.
    Načítání historických a real-time dat pro více akciových párů
    Právě jsme si ukázali, jak vytvořit jednoduchý Excel, který nám načte historická data z TWS. Nyní si nové poznatky spojíme s tím, co jsme se naučili minule. Vytvoříme si Excel nový, který nám načte jak historická, tak i real-time data pro symboly, které uvedeme v Excelu. Opět budeme pro jednoduchost pracovat s akciovými tituly. V každém řádku bude v prvním sloupci uvedený jeden akciový titul, pro který si stáhneme historická data na základě zadané hloubky historie a na konec řádku přidáme i real-time hodnotu. Excel bude vypadat takto:

    Program se bude opět skládat ze dvou částí. První část bude makro přiřazené k tlačítku. Toto makro nám v cyklu projede všechny řádky, kde je uvedený symbol a vytvoří control linky pro historická (Ctrl1) a real-time (Ctrl2) data. Druhá část programu bude opět obsluha události Worksheet_Calculate(), která bude monitorovat všechny control linky pro historická data a pokud se hodnota změní na „RECEIVED“, tak historická data načte, zobrazí historické Close ceny do jednotlivých sloupců a na konec ještě přidá odkaz na real-time data. První část programu si opět vložíme do nového Modulu:

    klikněte pro celý obrázek Na screenshotu není úplně zobrazena funkce „Pause“, ale je to naprosto stejná funkce, kterou jsme použili v minulém článku při načítání real-time dat. Opět ji používáme z důvodu, abychom dali TWS trochu prostoru mezi zpracováváním jednotlivých příkazů. Druhá část kódu musí být opět přiřazena k listu, ve kterém chceme control linky monitorovat. V mém případě je to opět „Sheet1“:

    klikněte pro celý obrázek Nyní si pouze přiřadíme makro „PripravaControlLinku“ k našemu tlačítku, vyplníme uživatelské jméno, hloubku historie a akciové tituly, a po stisknutí tlačítka nám program do řádků načte požadovaná historická data a doplní je o real-time Last cenu.
    Tento Excel si můžete stáhnout zde.
    Závěrem
    Ani můj dnešní článek neměl za cíl naprogramovat 100% robustní „blbuvzdorný“ program, který má ošetřeny všechny věci, které uživatel může udělat špatně. Cílem bylo poskytnout vysvětlení a co nejjednodušší praktickou ukázku toho, jak to vlastně celé funguje pod pokličkou. Dnešní kód už je trošku komplikovanější než ten minulý, ale opět jsem ho pořádně okomentoval, takže by neměl být problém ho pochopit. Hodně štěstí při experimentování!
    Autor: Petr alias gizmo

    Jak na software pro obchodování – souhrn a přehled návodů

    V rámci Finančníka jsme publikovali již ohromné množství tipů, návodů a videotutoriálů na téma, jak si vybrat a jak používat software pro obchodování. Aby byly informace dobře dostupné, připravili jsme pro vás v rámci našeho volného seriálu o software malý rozcestník a přehled.
    Univerzální software pro všechny typy obchodníků
    Než se podíváme na specializované nástroje, pojďme se na chvíli zastavit u programu, který je z našeho pohledu nejdůležitější pro jakýkoliv trading – je jím tabulkový procesor. Na platformě Windows jde nejčastěji program Microsoft Excel nebo bezplatnou alternativu OpenOffice Calc.
    Mám-li být zcela upřímný, Excel je jediný nástroj, bez kterého si trading nedokážu vůbec představit. Tabulkový procesor lze dnes využít k řešení ohromnému množství úkolů. Mj. existují různé pluginy, které umožňují v Excelu zobrazovat grafy trhů, aplikovat na ně indikátory, nechávat si vypočítávat nejrůznější simulace atd. Většina traderů však bude Excel používat k jednodušším činnostem – k analýzám svých obchodů, ať již z backtestů, papertradingu či reálného obchodování. V praxi tak mám například vytvořený pro všechny své obchody (ať již spreadové, opční či intradenní) excelové deníky, ve kterých si zapisuji úplně každý obchod, který jsem zkoumal na historických grafech (backtest) nebo obchodoval v reálném čase. K obchodu si zapisuji řadu dalších údajů (jako alternativní výstupy, obchody se snažím různě kategorizovat), čímž získávám nesmírně důležitou databázi, jejíž průběžná analýza mě pomáhá k lepším výsledkům.
    Excelu se zatím na Finančníkovi věnujeme spíše v rámci jeho celkové aplikace. Přehlédnout byste neměli tato témata:
    Využití Excelu pro trading
    Aktuální data trhů v obchodním deníku v MS Excelu
    Novinky v denících pro backtestování a vyhodnocování parametrů obchodních systémů
    Diskuze: EXCEL - rady a tipy
    Software pro poziční obchodování
    Nároky na software v oblasti pozičního a spreadového obchodování se budou výrazně lišit obchodník od obchodníka a budou vycházet z nástrojů, které pro své strategie každý používá.
    Je dobré si uvědomit, že poziční obchodování je zde již od vzniku burz. Žádné počítače dříve nebyly k dispozici, a přesto existovala spousta úspěšných obchodníků. Dnes je již opravdu zbytečně obchodovat bez počítače s ručně zakreslovanými grafy, ale především v začátcích je dobrá maximální zdrženlivost, co se nákupů software týče. Sami brzy poznáte, že pozičně obchodovat lze i se zcela bezplatnými řešeními.
    Abyste se dokázali od začátku v oblasti co nejrychleji zorientovat, připravili jsme pro vás tipy na několik různých řešení. Rozdíly mezi nástroji si tak popíšeme prakticky na konkrétních příkladech, které sami využíváme. Nicméně výčet programů samozřejmě není konečný, existuje tisíce dalších software, které se nabízejí k prodeji.
    Brokerské platformy
    Skutečně pryč jsou doby, kdy dobré analytické programy poskytovaly pouze specializované softwarové společnosti a aplikace brokerů byly dobré tak maximálně pro zadávání obchodních příkazů. Řada brokerských domů pochopila potřeby svých zákazníků a postupně jim připravila řešení, která jsou často minimálně srovnatelná s klasickým analytickými programy. Programy poskytují brokerské společnosti často zdarma a včetně dat, která bývají pro neklienty zpožděná o 15 minut, což však pro testování strategií pozičního obchodování není vůbec podstatné.
    Programů je v této kategorii opravdu velká spousta, finální výběr tak bude záležet na každém obchodníkovi. S Tomášem sami používáme v této kategorii software ThinkorSwim, který je k dispozici všem na internetu zcela zdarma. Program byl dřív určen především pro obchodování opcí, nicméně je neustále vyvíjen a dnes jej lze bez problémů používat jako bezplatnou analytickou platformu (což je důvod proč zde program zmiňujeme – je na každém, jakého brokera si následně zvolí, předmětem tohoto textu není žádné konkrétní doporučení či hodnocení brokerských služeb). Obchodník zde má k dispozici data jak akciových, tak komoditních i forexových trhů, komfort práce s platformou je přitom již opravdu vysoký. Samozřejmostí je nastavení libovolných indikátorů (např. šablony FinWinu), používání více grafů současně, používání nástrojů technické analýzy atd.

    Bezplatnou platformu ThinkorSwim jde dnes použít i coby samostatný analytický nástroj. Na obrázku zobrazen trh komoditního kontraktu kukuřice se šablonou obchodního systému FinWin. Na horním grafu je zobrazen denní graf, na spodním týdenní.
    Linky:
    Platformě ThinkorSwim se na Finančníkovi věnujeme především z pohledu opčního obchodování, protože práce s grafy je v programu velmi intuitivní:
    Seriál o platformě Think or Swim
    Analytické platformy
    Rozdíly mezi programy poskytovanými brokery a „nezávislými“ analytickými programy se stírají čím dál více. Většina dříve samostatných programů se postupně strategicky „napojila“ na brokery a svým způsobem dnes často slouží současně jako jejich obchodní platformy (a jsou i tak nabízeny). Jediným poznávacím znamením tak patrně zůstává skutečnost, že jde o programy, za které musí trader samostatně platit. Proč platit, když jsme si výše ukázali, že velmi dobrá a kompletní řešení jsou již od brokerů často zdarma? Protože specializovaný software může nabídnout řadu funkcí, které u brokerské platformy stále nejsou samozřejmostí.
    Z analytických software bych doporučil vyzkoušet program NinjaTrader, na kterém se můžete seznámit s tím, jak podobné programy fungují. Pokud přes program nebudeme přímo obchodovat (tj. nebudete potřebovat přímé propojení s brokerem pro odesílání příkazů na burzu), je tento program ve zcela plnohodnotné verzi k dispozici zdarma. Současně nabízí všechny potřebné nástroje k tomu, abyste mohli v klidu analyzovat historické i současné grafy například prostřednictvím systému FinWin. Jako ideální řešení se program jeví pro poziční obchodování akcií. NinjaTrader lze napojit na bezplatný zdroj dat od Yahoo, odkud lze čerpat jak aktuální, tak historická data. Trader tak získává zcela bezplatné a přitom vyspělé řešení pro backtest svých strategií a analýzu aktuálních trhů. V případě dat z komoditních trhů je třeba napojit pro získávání dat program na některého podporovaného brokera nebo si data zaplatit.
    Linky:
    Velmi podrobný seriál s řadou videotutoriálů pro ovládání programu NinjaTrader.
    Důvodem pro používání specializovaných analytických programů může být také jejich zaměření na užší segment obchodních taktik. Do této kategorie spadá i spreadové obchodování. Zobrazovat spready umí řada programů, ostatně vždyť graf spreadu není nic jiného, než rozdíl cen dvou trhů nebo dvou kontraktních měsíců. Nicméně komfortní práce se spready je skutečně doménou buď specializovaných programů, nebo i těch univerzálnějších, ale spadající do dražší cenové hladiny. Sami pro práci se spready používáme program Gecko Track’n Trade Futures. Program by se dal označit spíše za jednodušší a intuitivnější, ale pro práci se spready má více funkcí, než programy pokročilé.
    Linky:
    Seriál o programu Gecko TnT
    Poziční obchodník může samozřejmě sáhnout i po dražších a sofistikovaných řešení. Mezi dvě patrně nejpoužívanější řešení patří programy TradeStation a GenesisTrade Navigator. Tyto programy pak lze pochopitelně používat pro všechny typy analýz. Sám jsem spokojeným uživatelem platformy TradeStation, nicméně jde již o dost komplexní a dražší software.
    Linky:
    Seriál pracujeme s TradeStation
    Software pro intradenní obchodování
    Intradenní obchodník potřebuje pro úspěšné obchodování především software, který je intuitivní, stabilní, nabízí potřebné funkce a timeframy, disponuje intradenními daty a v ideálním případě lze propojit s používaným brokerem (aby se přímo z něj daly rychle zadávat obchodní příkazy). Tato kritéria opět splňuje celá řada sofware a výběr hodně záleží na preferencí každého tradera.
    Pochopitelně, že lze používat stejné programy, které jsme si představili v předcházející sekci pozičního obchodování (kromě Gecko T’n T, které je určeno výhradně pro poziční obchodování). A samozřejmě, pokud se stanete tradery, kteří budou aplikovat různé obchodní styly, budete jistě chtít používat jeden software pro všechny své analýzy, tudíž sáhnete po univerzálnějším řešení.
    Pokud však zůstaneme u začínajících traderů a měli bychom vám představit řešení, se kterými je možné začít kvalitně a současně co nejlevněji objevovat svět intradenního obchodování, pak jsou naše tipy následující:
    Program, který v této kategorii stojí za pozornost, je bez diskuze opět NinjaTrader, a to především z důvodu, že pro backtestování či papertrading jde o řešení zcela bezplatné a přitom velmi kvalitní. Sám tento program používám pro reálné obchodování v napojení na InteractiveBrokers (v případě živého obchodování je třeba program již platit). Do programu lze získávat i velmi kvalitní data od zen-fire.com (viz níže), která jsou v rámci zkušební verze zdarma. S kompletem si tak lze intradenní obchodování osahat bez jakýchkoliv investic do dat či software a vyzkoušet, co člověku vyhovuje a co vlastně hledá.
    Linky:
    Velmi podrobný seriál s řadou videotutoriálů pro ovládání programu NinjaTrader.
    TIP: Videotutoriál - zprovoznění živých a historických dat v programu krok za krokem
    Dalším velmi oblíbeným programem intradenních obchodníků je program SierraChart. Jde opět o program nabízející vše, co si intradenní obchodník může přát. Obchodník si může nechat data vykreslovat v libovolném timeframe, může používat více grafů najednou, program disponuje obrovskou škálou indikátorů, které si může obchodník i sám upravovat.
    Na rozdíl od NinjaTrader není tento program zdarma – je třeba si jej pronajímat, ale cena je velmi lidová. Konkurenční výhodou programu je jeho výraznější technologická vyspělost a nižší nároky na výkon počítače. Dalším plusem programu může být, že si obchodník může koupit levná data přímo od výrobce programu – za jeden poplatek tak získává „kompletní produkt“. Data však lze do programu samozřejmě získávat také od komerčních poskytovatelů dat, nebo od brokerů.
    Linky:
    Velký seriál s videotutoriálu věnovaný programu SierraChart
    Sierra a data: Sierra Chart – realtime data a playback
    Software pro opce
    V případě opčního obchodování je situace v oblasti software výrazně jiná než při obchodování komodit nebo akcií. Opční obchodníci pracují více s čísly než s grafy - část z nich navíc nepotřebujeme v podstatě žádný software, jiní potřebují pro své analýzy spíše opční risk grafy vyhodnocující nejrůznější pravděpodobnosti. Nabídka software pro obchodování opcí je tak velmi roztříštěná – na jedné straně jsou k dispozici různé aplikace postavené na Excelu (a řadu z nich je možné si stáhnout zdarma), na druhé straně je dnes patrně hlavní opční software OptionVue, který však dost usnul na vavřínech a jeho poměr cena/výkon je při srovnání s ostatními řešení skutečně hodně nevyvážený.
    Řešení, které je dnes pro opční obchodníky patrně nejatraktivnější, je již zmíněná platforma ThinkorSwim. Výrobce postupně integroval do programu funkce, které byly dřív k dispozici právě jen v nejdražších programech a dnes tak tento bezplatný program nabízí vše, co opční obchodník potřebuje – od dat opcí, přes risk grafy, pravděpodobnostní analýzy, grafy až po backtestování opcí. ThinkorSwim je pochopitelně nabízen především pro klienty této brokerské společnosti, nicméně i bez založení účtu je možné program používat ve zcela neomezené verzi (pouze data jsou o 15 minut zpožděná, což v případě opcí nevadí často ani pro živé obchodování). Mnoho obchodníků tak používá program ThinkorSwim jako bezplatnou analytickou platformu bez ohledu na to, u jakého brokera poté obchody provádějí.
    Linky:
    Seriál o platformě Think or Swim
    Opce - seriál obchodování opcí, ve kterém se pravidelně věnujeme také platformě Think or Swim
    Speciální software
    Kromě analytických programů se pro trading mohou hodit některé specializované programy. Sami v této kategorii používáme program Market System Analyzer, spadající do oblasti money managementu. Program nám pomáhá analyzovat výsledky našich backtestů či reálných záznamů, simulujeme v něm position sizing a obecně zkoumáme parametry a robustnost našich obchodních systémů. Program určitě doporučujeme k vyzkoušení.
    Linky:
    Seriál o programu Market System Analyzer
×

Důležitá informace

Na tomto webu zpracováváme cookies potřebné pro jeho fungování a analytiku, v případě udělení souhlasu také cookies pro účely cílení reklamy.