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í
  • Bulls 'n Bears obchodní systém pro Gecko Track'n Trade Pro

    Všem uživatelům programu Gecko Track'n Trade Pro patrně neuniklo, že výrobce, společnost Gecko představila nový zásuvný modul určený pro tento program - obchodní systém Bulls'n Bears. Jelikož dostáváme s Tomášem řadu dotazů jaký je náš názor na tento plugin, připravili jsme o tomto novém rozšíření TnT krátký článek. Dopředu však musíme upozornit, že nejde o podrobnou recenzi a ani v článku nezazní jakýkoliv jednoznačný závěr -s tímto obchodním systémem nemáme zatím žádné praktické zkušenosti a jakékoliv závěry by tak byly přinejmenším předčasné.

    Ale vraťme se na začátek k samotnému programu Gecko Track'n Trade Pro. Pro nové čtenáře Finančníka jenom stručně v krátké rekapitulaci: TnT je zástupcem klasického software pro technické analýzy komodit a opcí. Silnou devizou programu je jeho přehlednost a intuitivnost, která jej předurčuje pro začínající či mírně pokročilé obchodníky, kteří se mohou soustředit na samotné trhy a nikoliv na technické problémy. Program je určen pro komoditní trhy a pracuje s denními daty (tzv. End Of Day), které graficky znázorňuje pomocí denních, týdenních a měsíčních grafů (výrobce nabízí i intradenní verzi pro akciové trhy a forex). TnT je tedy určen pro poziční obchodování (nikoli intradenní) a slouží především pro plánování obchodů pomocí technické analýzy trhů. Výhodou programu je i skutečnost, že se dodává již s více než 25ti letou historií všech hlavních komoditních trhů a je tedy ideálním nástrojem pro trénink vlastních obchodních strategií. TNT je po této stránce dobře navržené - v programu existuje nástroj i pro "krokování" trhů po jednotlivých dnech. Během jednoho odpoledne si tak může i začínající obchodních "den po dnu" projít řadu trhů a v podstatě v reálných podmínkách simulovat, jak by se v dané situaci rozhodoval. Pokud jste o programu dosud neslyšeli, můžete řadu informací načerpat ze seriálu, jehož první díl naleznete na této adrese.

    Klasické nástroje technické analýzy nyní výrobce rozšířil o kompletní obchodní systém nazvaný Bulls 'n Bears. Jde o trendfollowingový obchodní systém, který se svojí vnitřní logikou graficky odlišuje downtrend a uptrend a označuje pásma, kdy jde cena do strany. Výstupy jsou v systému naznačeny pomocí parabolicky umísťovaného stop-lossu.
    Interní logiku obchodního systému výrobce z celkem pochopitelných důvodů nezveřejňuje, jde tedy o určitý "black box", jehož výstup je kreslen do grafů TnT.

    Graficky lze systém nastavit několika způsoby. Informace o stavu trendu je možné zobrazovat buď grafickými symboly mimo cenové bary, nebo změnou barvy cenového grafu tak, jak je zobrazeno na našich screenshotech.

    V pojetí výrobce představuje základní vstupní signál:

    • žlutý bar následovaný dvěmi červenými bary pro vstup do short pozice
    • žlubý bar následovaný dvěmi zelenými bary pro vstup do dlouhé pozice
    Umístění stop-lossu je znázorněno modrými tečkami parabolického indikátoru (podrobnější info o podobné indikátoru Parabolic SAR můžete najít v našem článku Začínáme obchodovat V: PSAR - Parabolic SAR.

    Postřehy Finančníka

    Jak jsem již naznačil v úvodu článku, se systémem nemáme zatím žádnou praktickou zkušenost a tak není možné hodnotit jeho výsledky. Ty navíc budou velmi závislé od toho, jak konkrétně bude systém obchodník aplikovat do trhů. Na přiložených screenshotech nicméně vidíte, že systém poměrně slušně identifikuje hlavní trendy trhů a při použití dalšího potvrzujícího nástroje (např. průlom trendové linky, nějaký jednoduchý indikátor), používaného do směru trendu, zcela jistě může fungovat jako konkrétní obchodní systém.

    Co se výstupů týče, tak použití parabolického indikátorů vytváří zejména po vstupu do pozice podle našeho názoru v komoditních trzích již hodně velký stop-loss a pro řadu obchodníků tak bude zajímavější postavit stop-loss ze začátku blíže - např. do fixní vzdálenosti podle volatility trhu nebo nad S/R úroveň.

    Obrovskou výhodou systému je jednoznačně jeho jednoduchá interpretace. Pomocí barev "semaforu" jak říká jednotlivým barvám výrobce, může i začínající obchodník snadno identifikovat hlavní trend a obchodovat čistě do směru trendu, což výrazně zvyšuje šance na dlouhodobější profity.

    Na sobotním brněnském setkání mi některý z přítomných obchodníků uváděl první pozitivní zkušenosti se systémem a slíbil, že zkusí vkládat poznatky postupně do našeho diskuzního fóra, takže věřím, že se o průběžných zkušenostech se systémem postupně dozvíme více.

    Pokud s tradingem začínáte a ještě jste Gecko TnT nezkoušeli, tak jednoznačně doporučujeme si software stáhnout a vše otestovat - první měsíc budete mít zdarma k dispozici nejen samotný program, ale i tento obchodní systém, který může řadě nováčkům výrazně pomoci s identifikací trendu a formováním konkrétního obchodního systému. Systém Bulls'n Bears funguje v TnT samozřejmě i na historických grafech, takže je možné jej testovat opravdu neomezeně. Jako tip znovu připojuji radu pokusit se systém doplnit např. o vstupy z některého indikátoru nebo o průlomy trendových linek či S/R úrovní do směru trendu zobrazeného systémem. Program si můžete v bezplatné 30ti denní zkušební verzi stáhnout zde.

    7.6.2006

    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.