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í [1]

    Zejména ze strany začínajících obchodníků se v diskuzním fóru objevují stále nové a nové dotazy na kdejaký software a jeho využitelnost pro různé typy obchodníků. Na Finančníkovi jsme na toto téma napsali několik článků; pojďme si jej nyní trochu ucelit v malém seriálu, jehož cílem je shrnout problematiku především z pohledu začínajícího obchodníka.

    Výroba software je samozřejmě lukrativní business a nabídka dostupných produktů je tak ohromná. Každý výrobce se snaží svému produktu dát image určitého "svatého grálu" a doplňuje jej o nejrůznější funkce, které "nejsou dostupné jinde" a především nováček tak může podlehnout a kupovat věci, které mu budou doslova k ničemu. Proto je dobré přistupovat k této oblasti velmi rozvážně, nekupovat nic s horkou hlavou a hodně si věci rozmýšlet. Navíc skoro každý rozumný výrobce poskytuje demoverzi svého produktu, kterou je dobré si podrobně vyzkoušet.

    Zejména začínající obchodník hledá v software určitou berličku, která mu pomůže překonat své limity a neznalosti. Bohužel tímto směrem trading nefunguje a software je vždy a pouze za každých okolností nástrojem, pomáhající obchodníkovi efektivně využívat jeho vlastní znalosti.

    Než se v příštím díle podíváme na konkrétní software, dovolím si uvést několik myšlenek, které považuji za skutečně zásadní.

    Software není svatý grál

    Úspěch obchodníka netkví v software. Software vám může pomoci pracovat efektivněji, ale nikoliv proměnit ztrátové obchodování v ziskové bez toho, abyste tuto změnu provedli ve svém vlastním přístupu k tradingu. Pokud máte pocit, že se určitou oblast potřebujete naučit a pochopit ji, stačí na to data trhu a úplně jednoduché nástroje jako grafy a excelová tabulka (případně papír). Jinými slovy, pokud vás napadají otázky, jestli daný software využijete a potřebujete (a jakože takových otázek dostáváme spousty), pak jej jednoznačně nepotřebujete, protože jinak byste si na otázku dokázali odpovědět sami.

    Investice musí být přiměřená obchodnímu kapitálu

    Aktivnímu obchodníkovi může dobrý software pomoci v řadě ohledů. Jakmile děláte více analýz, potřebujete sledovat určité portfolio, nějaké speciální indikátory, komplexní strategie, automatizovat sofistikovanější exekuce atd. pak jsou zde softwarová řešení, která jednoznačně pomáhají. Ale i když víte, co by vám mohlo pomoci, vždy je třeba zvážit, zda-li je daná investice přiměřená. Obchodníci mají často "velké oči", sní o ziscích, kterých ale nikdy nedosáhnou a místo obchodních účtů si budují "drahou kosmickou stanici", která absolutně neodpovídá jejich potřebám a obchodním výkonům. Jaký smysl dává utracení např. 3000 dolarů za software, data a 2000 dolarů za nový hardware, aby se potom obchodník snažil hodnotit účet 5000 dolarů? Místo postupného účení se a hodnocení účtu po malých krůčcích stojí takový obchodník před faktickou ztrátou 50% svého celkového kapitálu určeného pro trading (investice + účet) a to ještě s tradingem ani nezačal. Ano, všechny investice do tradingu (sofware, hardware, různá školení atd.) je třeba spojovat s vlastním obchodním kapitálem a sledovat určitou přiměřenost ve vztahu k možnému zhodnocení.

    Selský rozum většinou vyhrává

    Pravda, která se nám s Tomášem již mnohokrát potvrdila je, že v tradingu je úspěšný ten, kdo pochopí podstatu věcí, se kterými pracuje, má tyto věci nasledované a v reálném tradingu dokáže používat základní selský rozum a logiku postavenou na oněch základních fundamentech. A je úplně jedno, jestli obchodujete komodity, akcie, forex nebo opce. Tradeři, kteří používají od začátku high-end sofistikované software často nechápou základy toho, co používají, ale pouze se "nějak" snaží interpretovat výsledky, které ze svých "kosmických lodí" získávají. V takovém případě je nejen velmi jednoduché udělat chybu, ale v zásadě je velmi obtížné dělat cokoliv správně. Pokud nerozumíme základům, musíme je tudíž svým způsobem přehlížet, musíme vesměs následovat něco, co vymyslel již někdo jiný a ztrácíme tak onen "edge" - naši výhodu, která je v tradingu potřeba proto, abychom byli ziskoví obchodníci.
    Pokud si budete pročítat starší knihy o tradingu, velmi často působí úsměvně pasáže o tom, jak si velmi úspěšní obchodníci počítali své jednoduché indikátory ručně, zapisovali si vše do tabulek a pomalu vyhodnocovali. Dnes je přeci možné zapnout i ten nejednodušší software a získat vše okamžitě a bez jakékoliv práce, jakýžto pokrok - nutně musíme vydělávat více peněz a mnohem rychleji. Bohužel takto to nefunguje jak se dnes a denně přesvědčuje spousta obchodníků. Intradenní obchodník samozřejmě nebude chtít počítat svůj indikátor ručně, pochopitelně, že pro určité situace je dnes software podmínkou, ale v tradingu není možné věci přeskakovat a je třeba pochopit základy toho, s čím pracujeme, proč by věci měli fungovat, tak jak jsme se třeba někde dočetli. V tomhle ohledu nabízí dnešní doba vysokou zákeřnost - výrobci software poskytují zájemcům růžové brýle, se kterými je ale velmi těžké na trhu obstát, pokud je neodložíme.
    Řadu začátečníků udivuje, jak jsou zkušení obchodníci schopni rychle počítat různé základní výpočty, odhadnout přibližnou hodnotu indikátoru či jeho chování na základě vývoje ceny, nebo třeba v opcích odvozovat poměrně přesně různé pravděpodobnosti a rozsahy ze základních údajů na obrazovce. Vše bez sofistikovaného software. Toto není výsada "brilantních mozků" je to výsledek dlouhodobé a důsledné práce se základním kamenem tradingu - samotné ceny, pochopení souvislostí a nespoléhání se na automatické výpočty komplexních software.

    Závěrem první části

    V příštím díle článku si vysvětlíme rozdíly mezi analytickými programy a brokerskými platformami, ukážeme si, kde se tyto světy prolínají a jak z toho můžeme jako tradeři těžit. Shrneme si, jaký software používáme pro náš vlastní trading, jaké jsou mezi těmito programy rozdíly a jaký možný rozumný scénář by při výběru software mohl následovat začínající obchodník.
    To nejdůležitější však věřím zaznělo v dnešním článku. Úspěšné obchodní metody vznikají prvotně v zásadě mimo sofistikované programy - stačí pro ně základní grafy a nějaký tabulkový procesor, případně papír a tužka. Pokud s tradingem začínáte a máte pocit, že potřebujete výkonný procesor, deset indikátorů pracujících s nejrůznějšími vyhlazeními a komplikovanými výpočty a tudíž patřičně drahý software, který toto všechno zvládne naprogramovat a zobrazit, pak zkuste přemýšlet nad tím, jestli váš přístup není spíše o neochotě pustit se do trápení vlastního mozku a pamatujte, že v tradingu se neznalost základů neodpouští a zkratky neexistují.

    30.1.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.