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 na software pro obchodování [2] - problematika dat

    Pokud s tradingem začínáte, možná vám ani není úplně jasné, jak se mezi sebou mohou lišit stovky nabízených programů nebo platforem. Postupně si řadu hlavních rozdílů představíme, dnes se zaměříme na otázku dat, která je velmi důležitá, spíše kritická.

    Malé upozornění na začátek - celý seriál představuje shrnutí problematiky z mého osobního pohledu. Nabídka software je dnes velmi široká a je tak pochopitelné, že mohu zmínit jen několik produktů, se kterými mám vlastní zkušenost. Navíc zdůrazňuji, že obchoduji pouze komoditní trhy a opce na akcie, tj. nikoliv forex. Seriál je tak psaný pro ty obchodníky, kteří uvažují o obchodování na burzovních trzích. Samozřejmě pokud chce někdo přispět do seriálů srovnáním nebo popisem problematiky na neburzovních trzích jako je forex, pak informace k seriálu rádi připojíme.

    Platforma brokera nebo analytický software?

    Než se pustíme do podrobného popisu rozdílů mezi různými software, na které můžete v případě obchodování na finančních trzích narazit, pojďme si ujasnit dva základní důležité pojmy. Pro své obchodování potřebuje obchodník v zásadě obchodní software (platformu) pro obhospodařování svých obchodních příkazů (zadávání příkazů, sledování aktuálních cen atd.) a poté analytický nástroj, ve kterém si prohlíží cenové grafy, zakresluje nástroje technické analýzy jako různé linky, indikátory atd.

    To jak budou konkrétní nástroje vypadat, zcela závisí na tom, co a jak obchodujete či plánujete obchodovat. Dlouhodobější obchodník brokerskou platformu možná ani nebude potřebovat, protože se svým brokerem bude komunikovat po telefonu a nakonec i pro zakreslování grafů mu možná bude stačit náhražka analytického software v podobě nějaké specializované bezplatné webové stránky. Na druhou stranu intradenní obchodník určitě nebude své příkazy zadávat po telefonu, ale bude vyžadovat co nejefektivnější platformu, která bude v reálném čase propojena s jeho analytickým nástrojem. Ano, dnes jsou nástroje vzájemně propojovány a vznikají klasické softwarové balíky "vše v jednom". Stále je však dobré vnímat, zda-li pracujeme s brokerskou platformou, která je rozšířena o analytické nástoje, nebo analytickým software, který umožňuje napojení na brokerskou platformu. Případně do jaké kategorie software primárně spadá, abychom byli schopni posoudit cenu a výhody/nevýhody konkurenčních řešení atd. Obchodník by měl mít přehled a občas mi trochu trne, když diskutuji s lidmi, kteří se chystají aktivně spravovat své peníze a pořádně ani nevědí, co že si to nainstalovali za software, přes který hodlají své peníze posílat do víru trhů.

    Doufejme, že na konci tohoto seriálu bude mít každý pozornější čtenář v této oblasti jasno a dokáže si zvolit kvalitní nástroj přiměřený svým potřebám s nejlepším poměrem cena/výkon. Než se pustíme do rozdělování nástrojů podle různých funkcí a možností, pojďme se zastavit nad prvním důležitým kritériem, jehož důležitost si málokdo ze začátku uvědomuje. A tím jsou samotná data, se kterými bude v nástroji pracovat.

    Data

    Ano, základní otázky při výběru software by se měly točit kolem dat. A že je to často celá řada otázek. Data - nebo-li informace o vývoji cen daného trhu je to základní, co pro trading potřebujeme. Začínající obchodník vnímá data často jako "samozřejmost", bohužel je posléze často překvapen. Software je dodáván s daty pouze pro některé trhy, data nemají vyhovující kvalitu, rozlišení atd. atd. Pokud takovou věc zjistíte poté, co jste investovali čas s učením se daného programu (který nebývá malý), případně nemalé peníze s jeho zakoupením, je to k vzteku.

    V čem se tedy mohou programy z pohledu dat lišit? Je toho překvapivě hodně:

    Dostupnost jednotlivých trhů. Především pokud je software poskytován jako platforma brokera, jsou nabízené trhy podřízené těm, které lze u brokera obchodovat. Většina společností, zaměřující se na americké trhy, nabízí v zásadě všechny zajímavé americké trhy; kde to skřípe, jsou zahraniční trhy. A řada například zahraničních indexů dnes představuje zajímavou alternativu jak pro daytrading tak pro swingové obchodování. I u takové obrovské a často používané společnosti jako je TradeStation byl německý DAX zaveden poměrně nedávno a předtím uživatelé neměli možnost trh obchodovat…

    Kvalita a přesnost dat (toto si mnoho lidí stále neuvědomuje, ale především u rychlejších timeframe intradenních trhů se pozná, s jak kvalitními daty pracujeme). Méně kvalitní data nejsou přesná, trader absolvuje výpadky ve volatilnějších momentech např. po reportech, grafy má plné špatně vyplněných cen po výpadcích realtime dat atd. Pokud pracujete na vyšších timeframe, nemusí vás kvalita a přesnost dat příliš trápit (řekněme od 5 minut nahoru), protože pokud vysloveně nepracujete se zpožděnými daty, jsou data v takovém timeframe všude hodně podobná (na ještě vyšších timeframech zcela určitě). Nicméně rozhodnete-li se daytradovat na nějakém velmi nízkém TF (např. tickovém, nebo s pomocí range bars) jsou kvalitní data podmínkou. Z mé osobní zkušenosti nabízí kvalitní data pro intradenní obchodování např. eSignal, TradeStation, Genesis Trade Navigator, z různých rozhovorů jsem získal pocit, že kvalitní data nabízí TransAct umožňující zobrazovat data v SierraChart (nemám ale osobní zkušenost). K popisu jednotlivých produktů, jejich slabin a silných stránek se ještě dostaneme později - zde uvádím příklady ověřených velmi kvalitních zdrojů dat (pokud máte tipy na další, určitě je uveďte v diskuzi).
    Jak již řada z vás jistě ví, u některých brokerů se liší kvalita v některých ohledech - třeba InteractiveBrokers nemají přesné údaje o volume a např. volume grafy jsou tak s tímto brokerem nepoužitelné.
    Kvalitu a přesnost dat je tak dobré posuzovat s ohledem na vlastní potřeby. Pokud budu obchodovat pozičně kukuřici, je mi upřímně jedno že InteractiveBrokers poskytuje méně kvalitní volume grafy pro intradenní obchodování akciových indexů atd. Na Finančníkovi jsou již tisíce lidí, kteří mají praktické zkušenosti s různými platformami a daty. Pokud si chcete ověřit kvalitu nějakého řešení, vždy je lepší se dopředu zeptat.

    "Rozlišení" dat. Pracujeme-li s denními daty (tzv. EOD) je otázka "rozlišení" dat zřejmá - data se ukládají v našem počítači jako denní (tj. každý den máme k dispozici jednu informaci o open, close, high a low), ale co když pracujeme s intradenními daty? Málokterý obchodník řeší, v jakém rozlišení skutečně data jeho software od poskytovatele dat přijímá a v jakém je ukládá. Jsou to ticková data nebo např. dvouvteřinová data? Konkrétní potřeba opět záleží na potřebách obchodníka. Pokud ten ale pracuje např. s rychlejšími intradenními grafy či alternativními timeframe, měl by si klást otázku, z jakých dat své grafy vykresluje a jsou-li relevantní.

    Historie dat. Každý software poskytuje jinou historii dat. Obzvláště pokud jsou data kvalitní (a tudíž velmi objemná), bývá download historie omezený. U některých programů se stažená data ukládají na harddisk a uživatel si tak buduje svoji vlastní kolekci historických (např. tickových dat). Jinde má k dispozici obchodník velmi omezenou historii, byť kvalitních dat (např. pouze 14 dnů nebo měsíc). To je pochopitelně naprosto nedostatečné pro backtest, který pak musí provádět na jiném software.
    Pokud s obchodováním začínáte, je historie dat dostupná v programu důležitý faktor. Pokud historie dostupná není - lze historická data získat za rozumný poplatek? Bez dlouhé historie dat nelze provádět backtest a obchodník se tak nemůže hnout z místa. Pro poziční obchodování by měl mít program k dispozici celou EOD historii daného kontraktu, pro intradenní ideálně několik posledních let. Pozor na skutečnost, že některé programy nebyly navrženy pro skladování většího množství dat (zejména ty, které používají jako datové sklady databáze postavené na MS Excel) - např. jinak dobrý Ensign s tímto problémem bojoval velmi dlouho a až nyní snad přišel s verzí, která má jiné databázové jádro a konečně dává svým uživatelům možnost pracovat komfortně s většími datovými bloky.

    Cena dat. Data jsou poskytována za nejrůznější poplatky. Většinou existuje určitá rovnice mezi vyšší cenou, kvalitou a renomovaností výrobce, ale také nemusí. Data se platí jak burze, tak samotnému poskytovateli a v případě intradenních dat poplatky docela naskakují - v každém případě se jedná o desítky dolarů měsíčně, čím více trhů a burz tím jsou poplatky vyšší a není problém platit třeba několik set dolarů měsíčně.
    Proto je dobré zvážit i nabídky, kdy někteří brokeři poskytují určitá data (stále se bavíme o burzovních trzích, nikoliv forexu či dalších neburzovních produktech) zdarma. Asi nejznámějším příkladem je InteractiveBrokers, které zde uvádím záměrně, jelikož o pár odstavců výše je zmiňuji jako příklad zdroje dat, který není extra kvalitní např. pro volume grafy. Ano, ale současně tato firma poskytuje ohromné množství dat (akcie, komodity, opce - EOD i intradenně atd.) zdarma (resp. za malý poplatek pokud obchodník neobchoduje). A určitě není špatné ušetřit měsíčně několik desítek dolarů a napojit svůj analytický software např. na IB, pokud zrovna nepotřebuji ultra kvalitní data pro volume grafy. Celý tento business je částečně o kompromisech - neexistuje dokonalý obchodní systém, ani dokonalý zdroj dat či dokonalý software. Jen je třeba si umět vybrat takové řešení, které je dostatečně kvalitní a současně nestojí moc peněz.

    Shrnutí

    Jak je patrné, ještě jsme se ani nedostali ke skutečným vlastnostem programů, jak je obchodníci většinou vnímají, a už se situace komplikuje. I když upřímně, ani zas tolik ne. Je především důležité si otázky s daty uvědomovat.
    Důležité je dále vědět, zda-li si jako uživatel určitého programu mohu vybrat svůj zdroj dat, nebo jsem závislý na jednom dodavateli. Představuje-li použitý software balík (platformu plus analytický program) přímo od brokera, bude většinou trader závislý na datech z toho jednoho místa (i když u sofistikovaných řešení ne tak docela, třeba TradeStation umožňuje import dat i zobrazování realtime dat od eSignálu - uvádím jako příklad určité flexibility). Jedná-li se však o výrobek "třetí strany" - nějakého samostatné softwarové společnosti, je možné většinou pracovat s různými daty, což poskytuje určitou konkurenční výhodu a klient hlavně není závislý na cenové politice jedné firmy.
    Opravdu si vše dobře promyslet je třeba především v případě investice do nějakého drahého software, kdy si trader kupuje program řekněme v ceně 1000-3000 dolarů a ještě musí brát od stejné společnosti data (další desítky až stovky dolarů měsíčně), protože jiná data nejdou do software importovat. V takovém případě často nezbývá než platit, protože pokud bychom přestali platit za data, pak přijde vniveč i počáteční investice do software a není úplně dobré se do podobné pasti nechat chytit jen tak bezdůvodně…

    20.2.2008

    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

    Adaptrade Builder - jak může vypadat genetické generování obchodních systémů II?

    Před časem jsem na Finančníkovi psal o programu Adaptrade Builder – software pro automatizované generování obchodních systémů formou genetických algoritmů. Tvůrce programu, Michael Bryant, představil nedávno novou verzi software a jelikož jsem se s programem opět podrobně seznamoval, připravil jsem na Finančníka shrnutí aktuálních novinek.
    Stejně jako v minulém článku bych rád nejprve upozornil, že nejsem trader, který by vydělával v trzích s geneticky generovanými algoritmy. Neobchoduji ani pomocí automatizovaných systémů, ale toto téma mě přijde velmi zajímavé a proto mu věnuji občasné volné chvíle.
    Pro rekapitulaci zopakuji základní info z minulého článku. Co je genetické programování? Pokud shrnu informace z veřejných zdrojů (především wiki), tak jde o metodu programování podobnou biologické evoluci. Systém vytváří celou řadu počítačových programů (tzv. jedinců) a průběžně testuje jejich zdatnost (angl. fitness) – tj. schopnost řešit původně zadanou úlohu (v našem případě vydělávat peníze). Čím vyšší zdatnost, tím pochopitelně lépe. Jedince vytváří v různých „kolech“, v terminologii genetického programování populacích. V rámci jednotlivých generací program vybere nejzdatnější jedince („rodiče“) a z těch generuje další jedince metodami jako je křížení nebo mutace. Místo genů se z od rodičů na potomky předávají pravidla obchodního systému a logika konkrétní strategie. U nových jedinců (potomků) program opět zjišťuje zdatnost a celý proces pokračuje stále dále a dále. Zjednodušeně řečeno tak software vyvíjí stále lepší a lepší jedince. Další informace naleznete např. na stránkách wikipedie.
    Výhodou programu pro genetické programování je to, že program hledá sám v trhu nejrůznější kombinace taktik, které vyhodnocuje a testuje na statistickou robustnost. Tedy v principu to, co dělají běžní tradeři akorát to dělá mnohem efektivněji a nutno říci že i robustněji (díky tomu, že hypotézy jsou v programu hned podrobovány různým statistickým testům). Výsledkem je do určité míry optimalizovaný systém pro dané podmínky trhu, ale díky statistickým testům pro aktuální prostředí dostatečně robustní. Důležité je chápat, že trhy se neustále mění a nelze tak ani v nejmenším doufat, že by tímto způsobem našel člověk nějaký trvalý svatý grál. Nicméně trhy mívají ve svých tendencích určitou setrvačnost a dobře postavené, statisticky robustní, mechanické strategie mají tendenci nějakou dobu vykazovat konzistentní výsledky. Ostatně nemusí jít jen o mechanické strategie generované genetickým algoritmem. Ohromné množství mechanických strategií, jejich výsledky jsem v průběhu času zkoumal (např. na stránkách kde je možné si takové systémy pronajmout atd.) mají podobné tendence. Podle obchodovaného timeframe strategie určitou dobu profituje podobným způsobem jako v testech, aby postupně přišlo období stagnace nebo ztrát. Mé testy s programem typu Builder se proto nyní soustředí na testování několika robustních strategií, které nechám fungovat v simulovaném režimu v portfoliu a podle obchodovaného timeframe budu v průběhu času jednotlivé systémy sledovat a v případě poklesu výkonnosti nahrazovat jinými. Bude to jistě zajímavý experiment, byť trochu dlouhodobější. Budou-li výsledky zajímavé, určitě se se závěry opět podělím na serveru.
    V úvodu článku jsem nastínil, že Michael připravil novou verzi programu. Jde sice jen o desetinový update na verzi 1.1, nicméně aktuální verze se od první liší docela zásadními inovacemi. Dá se říci, že v mnoha ohledech program dozrál.
    Začít můžeme u modulu, který se stará o historická data. Ta jsou nyní dostupná přes srozumitelnou tabulku, ve které lze načíst několik souborů dat a nadefinovat, jaké období bude použito pro vytváření samotné strategie (in-sample) a jaké pro následné testování (out-of-sample). Podporovány jsou nově také ticková data a range bary:

    Podstatně rozšířeny byly vstupní a výstupní podmínky, se kterými Builder pracuje. Jednotlivé podmínky lze individuálně zaškrtnout nebo odškrtnout, čímž se ovlivňuje, které taktiky bude Builder pro vytváření algoritmů používat. Přibyly nové indikátory (DI-/DI+, DMI, Accumulation/distribution, Chaiken, momentum, MACD, FastK, FastD), řada výstupních strategií a jak vidíte na screenshotu, lze nastavovat např. výstup EOD nebo maximální počet vstupů za den.

    V záložce Goals se definují cílové parametry vytvářené strategie. Tj. na které parametry by měl program klást důraz a s jakou váhou, nově lze nastavovat pro jednotlivé metriky i cíle. Zde je jen škoda, že software nepočítá s cizími měnami, takže místo dolarů jsou uvedeny Kč.

    Poslední záložka Build Options umožňuje nastavit parametry budování samotných strategií:

    Po základním nastavení funguje Builder již velmi intuitivně. Program postupně buduje genetické algoritmy a výsledky jsou průběžně uveřejňovány v přehledech ve spodní části pracovní plochy. Oproti první verzi programu, kterou jsem měl naposledy k dispozici, jsou výsledky hned zobrazovány v podobě equity křivky a to i včetně out-of sample výsledků.

    Program samozřejmě vytváří pro strategie kód, určený pro programy TradeStation nebo TS 2000i.
    Na Adaptrade Builderu je příjemná možnost stáhnout si program ve čtrnáctidenní trial verzi, která není jakkoliv funkčně omezená. Pokud pracujete s programem TradeStation a dané téma vás zajímá, můžete si tak program vyzkoušet a během 14 dní vygenerovat hned celou řadu strategií. Čas pro generování jedné strategie záleží na mnoha parametrech – výkon počítače, množství dat, nastavení algoritmu- u jednodušších přístupů jsou výsledky na mém notebooku dostupné v rámci několika hodin. Za 14 dnů může tedy program stihnout spoustu práce.
    Trial verzi si můžete stáhnout zde: http://www.adaptrade.com/Builder/Download.htm
    Co se ceny programu týče, tak ta odpovídá tomu, že jde o profesionální řešení v oblasti finanční trhů. Program se prodává za 2495 dolarů. Pokud již s programem máte zkušenosti, nebo vás osloví na základě zkušební verze, můžete však program získat podstatně levněji. Díky tomu, že Michael má velmi dobrý vztah k Finančníkovi, kde spousta traderů používá jeho program Market Systém Analyzer, poskytl pro české tradery hodně speciální slevový kupón CZBDSC10 snižující cenu programu o 1000 dolarů. Kupón je v tuto chvíli platný do konce roku 2010.

    Adaptrade Builder - jak může vypadat genetické generování obchodních systémů?

    Na Finančníkovi jsme se již velmi dlouho nevěnovali popisu žádného nového software pro obchodování. Důvod je velmi prostý – s Tomášem používáme několik málo, zde dobře známých, programů a v podstatě nemáme důvod v této oblasti zkoušet cokoliv nového. Z několika důvodu se však dnes na nový program podíváme – konkrétně software pro genetické generování obchodních systémů - Adaptrade Builder.
    Důvod, proč jsem se programem začal zabývat je jeho autor - Michael R. Bryant. Michael, se kterým jsme mj. dělali rozhovor do naší poslední knihy Kompletní průvodce úspěšného finančníka, je velmi zkušený obchodník, které své znalosti směřuje především do oblasti money-managementu a budování AOS. Michael je autorem programu Market System Analyzer, který v mém tradingu představuje jeden z nejdůležitějších software hned po Excelu. Své zkušenosti Michael občas publikuje ve svém bezplatném newsletteru, který si vždy rád přečtu – obsahuje totiž hodně tipů z oblasti řízení pozic, money-managementu a poslední dobou i velmi neortodoxní myšlenky pro automatické vstupy. Bylo zřejmé, že Michael se postupně ubírá směrem, který je pro mě naprosto neznámý – trading pomocí genetických algoritmů. Výsledkem jeho práce je software Adaptrade Builder, který generuje strategie pro platformu TradeStation. A jelikož TradeStation sám používám, neodolal jsem možnosti program vyzkoušet.
    V tento okamžik bych rád všechny čtenáře upozornil, že dnešní článek je myšlen jako nahození „tématu“, které je možné na Finančníkovi hlouběji diskutovat, ale rozhodně ne popis nového vlastního směru tradingu. S Tomášem jsme diskréční obchodníci a rozhodně ne odborníci přes genetické programování. Jednoduše řečeno – trading nabízí neskutečné množství oblastí, jak k obchodování přistupovat a pokud je příležitost se alespoň trochu ponořit do práce někoho zkušeného, osobně ji vítám. Neznamená to ale, že bych se oboru musel věnovat nějak dále a hlouběji.
    Co je genetické programování? Pokud shrnu informace z veřejných zdrojů (především wiki), tak jde o metodu programování podobnou biologické evoluci. Systém vytváří celou řadu počítačových programů (tzv. jedinců) a průběžně testuje jejich zdatnost (angl. fitness) – tj. schopnost řešit původně zadanou úlohu (v našem případě vydělávat peníze). Čím vyšší zdatnost, tím pochopitelně lépe. Jedince vytváří v různých „kolech“, v terminologii genetického programování populacích. V rámci jednotlivých generací program vybere nejzdatnější jedince („rodiče“) a z těch generuje další jedince metodami jako je křížení nebo mutace. Místo genů se z od rodičů na potomky předávají pravidla obchodního systému a logika konkrétní strategie.
    U nových jedinců (potomků) program opět zjišťuje zdatnost a celý proces pokračuje stále dále a dále. Zjednodušeně řečeno tak software vyvíjí stále lepší a lepší jedince. Další informace naleznete např. na stránkách wikipedie.
    Genetickým programováním se dnes zabývá celá řada traderů a existuje i několik specializovaných programů, Adaptrade Builder patří nyní mezi ně.
    Práce s programem je poměrně velmi jednoduchá. Builder je přizpůsoben spolupráci s programem TradeStation, ze které čerpá data a pro který vytváří strategie. Jako vstup tak stačí do programu načíst historická data v určitém timeframe a nastavit základní vlastnosti generování. Některá nastavení ovlivňují kvalitu (a délku generování) výsledné strategie – mezi ty patří především velikost populace a počet generací. Dále lze v programu přiřadit váhy různým parametrům, které ovlivňují výslednou podobu strategie – lze např. ovlivnit frekvenci obchodů, max. drawdown, celkovou profitabilitu, komplexnost strategie a další.

    Adaptrade Builder staví strategie s použitím několika základních indikátorů pro práci s trendem (simple moving average, exponential moving average), sílou trendu (ADX, rate of change), oscilátorů (SlowD stochastic, RSI), indikátorů volatility (true range, average true range), výběrů podle dnu v týdnu, hodiny a cenových patternů (highest(price, N), Lowest(price, N), Price[N]). Součástí strategií jsou pochopitelně i výstupy – podle dokumentace má ve své první verzi Builder k dispozici pět typů vstupů a šest různých typů výstupů. Těchto několik prvků Adaptrade Builder kombinuje dohromady právě s pomocí algoritmu genetického programování.
    Raději zopakuji, že pro mne samotného bylo zkoumání programu Adaptrade Builder první příležitost s praktickým seznamováním s genetickým programováním. Sám obchoduji cestou diskréčního obchodování a k „automatům“ jsem spíš skeptický, dokud mě jejich výsledky sami nepřesvědčí o opaku. První otázka, kterou jsem si tak ve spojení s Adaptrade Builderem kladl, bylo – do jaké míry může program nalézt obchodovatelná pravidla, aniž by jeho výsledkem nebyl jen nepoužitelný, přeoptimalizovaný kód?
    Na otázku pochopitelně nemám odpověď, ale je zajímavé přemýšlet o tom, že program v podstatě dělá to, co mnoho obchodníků hledající AOS – zkoumá trhy a snaží se najít kombinace, které fungují. Program to však dělá sám (úspora času), bez chyb (bere skutečně všechny signály atd.), bez předsudků (obchodník může vynechat některé nápady proto, že mu přijdou „nepravděpodobné“) a se zapojením statistických metod pro ověření robustnosti, nezávislosti atd. Díky algoritmu genetického programování nejde navíc o to nalézt „jednu rovnici“, která vystihne historický průběh daného podkladového aktiva. Pochopitelně, že výsledkem žádného programu nebude „svatý grál“ – vzorec, který by fungoval na věky a vždy. Nicméně pokud jsou výsledkem výpočtu strategie s určitou statistickou relevancí, je více než pravděpodobné, že jejich použitelnost bude podstatně vyšší, než většina „plně automatizovaných“ řešení, které nacházejí obchodníci po měsících zkoumání trhů.
    Je důležité zdůraznit, že ani proces genetického hledání algoritmů není nějak extrémně snadný. Trader musí proniknout do problematiky a pochopit alespoň v základu jednotlivé prvky, se kterými se algoritmy v programu tvoří a především rozumět tomu, jak testovat robustnost strategií. Navíc výpočet může být časově náročný, zejména pokud se snažíme analyzovat větší historii intradenních dat. Tím chci říci, že prací s podobným programem se úsilí tradera jen posouvá do jiné oblasti – místo práci na „mikroúrovni“ jde spíš o plánování a přípravu portfolia strategií, které mají sami o sobě všechny předpoklady k fungování a vydělávat peníze budou především jako celek.
    Michael přikládá k Builderu několik hotových strategií, na kterých ukazuje, jak zhruba systém nastavit, aby byly výsledky zajímavé a obchodovatelné. Pochopitelně, že součástí každého podobného přístupu je out-of-data testing (tzn. testování finální strategie na datech, které jsme nepoužili k budování strategie). S ukázkami se můžete seznámit na webu výrobce. Já jsem si rád vyzkoušel program v praxi a vytvořil několik velmi jednoduchých algoritmů. Vycházel jsem ze šablon připravených Michaelem a tak samotná příprava Builderu včetně generování dat z TradeStation byla otázkou přibližně 5 minut, generování jednotlivých strategiích byla na mém notebook záležitost maximálně 30ti minut. Do Builderu jsem nahrál vždy jen data do roku 2009, abych si posléze v TradeStation mohl rychle nechat zanalyzovat, jak by si strategie vedla od roku 2009 do dneška – tedy tzv. out of sample testing s daty, které Builder neměl k dispozici při přípravě strategie. Nutno říct, že výsledky nejsou vůbec špatné.
    Zde je například ukázka strategie na denních datech trhu NQ. Započítané jsou komise ve výši 25 USD/obchod. Strategie byla vytvořena s daty do konce roku 2009, zbytek je "out of sample test":


    Na genetickém programování je zajímavé, že při nepatrné změně strategie dostaneme systém se zcela jinou strukturou zisků a ztrát. Zde je další ukázka systému na denním trhu NQ:


    Musím přiznat, že výsledky dosahované při testování programu mě dost zaujaly. V tuto chvíli dokonce uvažuji, že bych si vytvořil zkušební malé automatizované akciové portfolio obchodované s pomocí geneticky vygenerovaných kódů.
    Co se Adaptrade Builder samotného týče, program se velmi intuitivně ovládá a funguje tak, jak je popsáno na stránkách výrobce. Program není levný, aktuálně se prodává za zaváděcí cenu 1995 USD, ale mezi podobnými programy v dané třídě patří k těm nejlevnějším. Nepředpokládám, že by si program měl koupit někdo, kdo s tradingem začíná a doufat, že „genetika“ pro něj bude svatý grál. Tak to určitě nefunguje. Nicméně pokud se zabýváte vývojem AOS, může být tento směr něco, co stojí za prozkoumání. Začít můžete např. studiem Michaelových newsletterů, které obsahují spoustu myšlenek, které později začlenil právě do programu Adaptrade Builder. Pokračovat pak můžete instalací 14ti denní bezplatné demoverze, kterou si můžete nahrát na webu výrobce, a se kterou můžete mj. vygenerovat řadu zajímavých programových kódů pro podrobné studování.

    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
×

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.