Jump to content
Co nového? Mé kurzy
Články a tutoriály:
Seriály Komoditní Manuál Psychologie obchodování
  • Autoadaptivní obchodní strategie (1/2)

    Existuje mnoho způsobů, jak se věnovat burzovnímu obchodování. Od jednoduchého obchodní systému typu FinWin (nebo Petrova ještě jednodušší podoba FIMS založená na PA a IM), až po různě složité a komplexní obchodní přístupy. V tradingu v žádném případě neplatí, že složitější rovná se lepší. Naopak, velmi často ty nejjednodušší věci fungují stejně dobře, jako ty komplexní a složité. Přesto bych se i těm složitějším čas od času rád věnoval.

    V dnešním článku se pokusím rámcově uvést problematiku autoadaptivních strategií, což je směr, který považuji za jeden z aktuálních moderních přístupů k obchodování. Rychlý vývoj výpočetní techniky samozřejmě doslova vybízí k jejich maximálnímu využití v oblasti tradingu - autoadaptivní strategie je jedna z mnoha možností.

    Co jsou to autoadaptivní strategie

    Nejprve se koukněme na skutečnost, proč se vůbec autoadaptivními strategiemi zabývat. Hlavní myšlenka vychází ze skutečnosti, že se trhy neustále dynamicky mění a vyvíjí a to v mnoha ohledech. Jako základní atribut neustálé změny můžeme vzít například volatilitu. Zažíváme měsíce / dny / hodiny, kdy jsou trhy velmi volatilní (tj. vytvářejí výrazné pohyby) a naopak kdy je volatilita minimální (trhy jsou "mrtvé", tvoří malé pohyby, potenciál vydělat je značně menší). Autoadaptivní strategie se snaží na takové situace reagovat a měnit parametry strategie tak, aby lépe "pasovaly" na aktuální charakter trhu.

    Jako nejjednodušší model autoadaptivní strategie si například můžeme představit určitý jednoduchý algoritmus, který by neustále sledoval aktuální volatilitu a dle toho automaticky měnil hodnoty stop-lossů a profit-targetů. Je jasné, že ve velmi volatilních trzích je třeba náš stop-loss i profit-target zvětšit, v méně volatilních naopak adekvátně zmenšit, případně zvýšit počet kontraktů (abychom stále mohli vydělávat rozumné peníze, i když se trhy hýbou méně, než obvykle). Svým způsobem se za naprosto základní autoadaptivní strategii dá počítat už to, že své stop-lossy a profit-targety (ale i počet obchodovaných kontraktů) budete vypočítávat s pomocí nejjednoduššího indikátoru volatility ATR (Average True Range). Můžeme si například říci, že náš stop-loss bude vždy 20x větší, než aktuální hodnota ATR v momentě vstupu. Pokud budou trhy v období nízké volatility, řekněme s hodnotou ATR na vstupu = 10, pak náš stop-loss bude 200 USD. Pokud se prudce zvýší volatilita na úroveň ATR = 30, náš stop-loss bude rázem 600 USD. Bude tedy docházet k neustálému přizpůsobování stop-lossu aktuálnímu charakteru trhů. Samozřejmě, dojít ke správnému násobku ATR, který budeme používat, je otázkou širšího testování a experimentování - hodnota bude také různá u různých trhů a časových rámců.

    Pokud však opomeneme tento zcela základní (jinak velmi silný a funkční) model autoadaptivní strategie, začneme se dostávat do daleko širší a složitější oblasti.

    Další možnost využití autoadaptivních strategií spočívá totiž v určité optimalizaci v "reálném čase". Řekněme, že například obchodujeme jednoduchý systém, založený na křížení klouzavých průměrů. Pokud jste kdy zkoušeli takový systém testovat, pak víte, že některé období fungují určité periody klouzavých průměrů a jiné období zase zcela odlišné periody. Autoadaptivní strategie se tak snaží v rámci určitého, jasně definovaného časového okamžiku zjišťovat, jaké periody klouzavých průměrů právě fungují v daném trhu - a takové také do trhu nasadit. Autoadaptivní strategie se tedy parametry systému snaží neustále adaptivně přizpůsobovat aktuálnímu charakteru trhu - a tak pokud možno snižovat drawdowny a maximalizovat profit.

    Nejkomplexnější využití autoadaptivních strategií pak probíhá na ještě větší úrovni, kdy se super computery (takové, které mají jen skutečně obří hráči) snaží trhu adaptivně přizpůsobovat rychlými a dynamickými změnami celých strategií. To znamená, že výkonný počítač může sledovat v jeden moment obrovské množství různých obchodních strategií a jednotlivé strategie dynamicky "přepínat" tak, jak se právě mění trh. Samozřejmě, klíčem je mít algoritmus, který reaguje na změny adekvátně a vybírá ty "správné" strategie - a takový rozhodně není jednoduchý nalézt.

    Využití autoadaptivních strategií pak ještě umocňuje existence genetických algoritmů a genetického programování, kdy super výkonné počítače nejenom vybírají adekvátní strategie pro aktuální charakter trhu, ale přímo v reálném čase takové obchodní systémy staví. Ještě nedávno něco podobného znělo jako sci-fi, ale zkuste si představit program typu AdaptradeBuilder nasazený na ultra výkonném počítači a je jasné, že nic podobného není nemožné. I tento program určený běžnému uživateli by dokázal na 5-minutových grafech generovat nové obchodní systémy (včetně OOS testování) v rámci desítek vteřin, pokud by mu bylo "nabídnuto" dostatečné množství výpočetních jader a paměti.

    Jak na autoadaptivní strategie prakticky

    Pokud nejste vyloženě velmi zruční programátoři, nebo alespoň nespolupracujete s někým, kdo takový je, a pokud nejste do podobných "komplikovaností" vyloženě fanatici, pak nejjednodušší způsob, jak přidat do svého mechanického obchodování "autoadaptivní" (ale spíše jen "adaptivní", neboť bude třeba částečně "ruční" práce) složku, je využití WalkForward optimalizace (WFO).

    V podstatě se jedná o velmi jednoduchý přístup, kdy váš systém nasadíte na data, která rozdělíte na určité množství úseků, například 10.

    Každý tento menší úsek pak ještě rozdělíte na in-sample (optimalizační) data a out-of-sample (ověřovací data) a to například tak, že jako IS využijete 80% dat a jako OOS využijete 20% dat. Po té necháte vždy systém optimalizovat na IS datech daného úseku a následně optimalizaci ověříte na OOS datech. Toto provedete celkem 10x (pokud jste veškerá data rozdělili na 10 úseků) a máte tak představu, jak by se daný systém choval, pokud byste prováděli pravidelnou reoptimalizaci. Testováním rozdělení dat na více úseků se pak můžete dopátrat toho, zda je lepší systém reoptimalizovat například každý měsíc, každý kvartál, každý rok, atd.

    Celý proces můžete maximálně zjednodušit například s programem MultiCharts, který již v sobě obsahuje nástroj k WalkForwadr optimalizaci - celý proces je tedy poměrně jednoduchý, intuitivní a rychlý. S pomocí WFO zjistíte, jak často je optimální vaší strategii reoptimalizovat - a pak už si pouze odpočítáváte dny do momentu, kdy provedete novou optimalizaci vašeho mechanického systému, tj. takovou optimalizaci, která bude sedět aktuálním trhům. Tím se stanou v rámci možností běžného uživatele vaše mechanické systémy do značné míry autoadaptivní (resp. adaptivní, neboť změnu parametrů budete muset provést ručně).

    WFO_MultiCharts.jpg

    Ukázka WalkForward optimalizace v programu MultiCharts. Žlutě označený sloupeček ukazuje, jak by daná strategie v minulosti fungovala, pokud bychom jí reoptimalizovali každých 400 úseček.

    Aplikace v diskréčním obchodování

    Jak už jsem naznačil, určitý autoadaptivní přístup se dá velmi dobře aplikovat i v běžném diskréčním obchodování, například s použitím násobku ATR pro stanovení stop-lossů, profit-targetů, nebo množství obchodovaných kontraktů. Ještě jednodušší přístup může být ten, že si zobrazíte ATR pouze na denním grafu a profit-targety i stop-lossy zkusíte ve svém backtestu optimalizovat dle volatility v rámci určitých časových úseků. Můžete si například na denním grafu rozdělit volatilitu do 3 pásem (využít lze i implied volatility) a zkusit si udělat backtest, jaké by byly ideální stop-lossy a profit-targety například pro systém FinWin v době, kdy se volatilita nacházela v každé z třetin. Tím můžete mít lepší vodítka k tomu, jak a kdy zhruba upravovat hodnoty stop-lossů a profit-targetů. Je to sice velmi jednoduchý přístup, ale určitou adaptivní složku v sobě již zahrnuje.

    volatility-autoadoptivni-strategie.jpg

    Rozdělení volatility (Implied Volatility) na denním grafu do několika zón (na obrázku 3 zóny) nám může pomoci v backtestu určit, jaké stop-lossy a profit-targety nejlépe fungují pro různé fáze volatility trhu.

    Závěr

    Práce na autoadaptivních strategiích je určitě věda, přesto i běžný uživatel má šanci vytvořit zajímavé přístupy, pokud má k tomu správné nástroje. Určitě se však jedná o cestu, která je často i finančně náročná - vyžaduje jak kvalitní hardware, tak kvalitní software. Osobně některé mechanické obchodní systémy adoptivně směřované mám, a to tak, že využívám WalkForward optimalizaci k pravidelné reoptimalizaci. K určení přesné doby pravidelné reoptimalizace pak používám další sofistikované nástroje.

    Určitou velmi primitivní "autoadaptivní" složku využívám i v rámci statistických arbitráží - zde ale skutečně velmi jednoduše a čistě diskréčně. Zkrátka a dobře, pokud vidím, že některý z párů v rámci své equity ztrácí "momentum", nahradím takový pár jiným, u něhož právě equity určité momentum vykazuje (i proto nechávám počítač neustále hledat a testovat nové akciové páry).

    Příští týden se budu autoadaptivním strategiím věnovat ještě jednou a to v rozhovoru s Martinem Lembákem, který má sám s autoadaptivními strategiemi řadu zkušeností.

    31.7.2011

    Tomáš Nesnídal


    Mohlo by vás dále zajímat

    Testování robustnosti intradenních systémů pomocí WFO

    Na Finančníkovi jsme se poslední dobou věnovali především swingovým obchodním systémům. Důvod je zřejmý. Na vyšších denních timeframe se snadněji tvoří robustní a dlouhodobě funkční strategie. Jsem přesvědčen, že každý obchodník by měl začít právě zde. Nižší timeframe jsou ale také zajímavé a dokáží přinést do portfolia další rozměr diverzifikace. Navíc i s menšími účty lze obchodovat systémy také ve futures, neboť v intradenních systémech lze používat podstatně menší stop-lossy než ve swingových strategiích. 
    Systematické intradenní strategie s sebou bohužel nesou nezanedbatelná „ale“. Konkrétně:
    Vytvořit skutečně funkční, nepřeoptimalizovanou intradenní strategii je těžší než vytvoření swingové strategie. Hlavně proto, že v intradenních datech je mnohem více šumu a charakter trhů se hodně často mění.
    Intradenní strategie jsou také náchylnější na podcenění reálných nákladů na obchodování – tj. jak komise, tak skluzy v plnění. Řada strategií bude v backtestech vypadat příliš optimisticky.
    A především – v intradenních trzích je potřeba počítat s tím, že strategie mají s jedním nastavením omezenou životnost. Mohou to být možná i roky, ale obecně je nutné počítat s tím, že strategie je potřeba bedlivě sledovat a občas nahradit nebo je přenastavit na aktuální charakter trhů.
    Jedna z hlavních otázek, kterou si bude pokládat jistě každý obchodník je, jak zvolit pro živé obchodování co nejrobustnější nastavení intradenní strategie. Resp. jak se ujistit, aby zvolené nastavení nebylo tzv. přeoptimalizované. „Napasované“ na historické průběhy dat, které se v intradenních trzích ale nemusí již nikdy opakovat.
    Odpověď na tuto otázku vede de facto k jedinému řešení. Pro posuzování výkonnosti a robustnosti strategie musíme používat jen tzv. out of sample data. Data, která jsme nepoužili pro vytváření strategie.
    Například budeme strategii vyvíjet na intradenních datech 1.1.2017 – 1.1.2018 (in sample - IS). Pro posouzení robustnosti pak použijeme data 1.1.2018 – 1.1.2019 (out of sample data - OOS). V OOS budeme chtít vidět, že strategie má do určité míry podobnou charakteristiku jako v IS. Toto je tradiční způsob vytváření strategií. V intradenních trzích ale narazíme na skutečnost, že IS a OOS periody nemohou být příliš dlouhé (protože trhy se často mění), a tak v jednom OOS budeme mít poměrně málo dat na to, abychom mohli na daném vzorku stavět nějaké hlubší závěry.
    Řešením je tzv. Walk forward optimalizace (WFO), kdy máme segmentů IS a OOS v historii více. Sám používám přístup, kdy IS v historii posouvám například po dvou letech, systém optimalizuji na toto období, z IS vyberu nejvhodnějšího kandidáta na obchodování a následně otestuji nastavení na roce IS dat, který následují po OOS:

    Obrázek pochází z manuálu Amibrokeru, který pro WFO sám používám.
    Hlavní výhodou tohoto přístupu je skutečnost, že získáme hned několik OOS segmentů. Tedy mnohem více dat, na kterých můžeme posuzovat robustnost systémů. Realističtěji se můžeme dozvědět, jestli se systém chová na OOS tak, jak bychom očekávali na základě výsledků z IS optimalizace.
    Popsaná technika je velmi základní a najdete ji dnes myslím ve všech programech umožňujících testování obchodních systémů. Již v základní podobě může ale WFO sloužit jako dobrý pomocník. Pro vytváření skutečně robustních systémů je ale potřeba na celém procesu zapracovat. Zde jsou základní principy, které používám:
    1. Klíčové je dobře promyslet výběr „kandidátů“ nastavení z IS periody. V IS probíhá optimalizace, kdy systém zkouší různá nastavení systémů tak, aby vyhovovala danému období. Co ale hledáme? Nejvyšší zisk? Nejmenší drawdown? Kombinace obojího? Něco jiného? To jsou klíčové otázky. Osobně používám vlastní funkci „finscore“, která je složena z vah různých kritérií. Například chci, aby měl systém v IS určitý počet obchodů, určitý max. drawdown, určité zhodnocení. Pokud jsou parametry mimo můj zájem, tak je kandidát penalizován. Mám zájem vybírat nikoliv nejlepší, ale nejrobustnější kandidáty. Doporučuji tedy v IS neoptimalizovat na jeden jednoduchý cíl, jakým může být například zisk.

    2. Potřeba je také promyslet vyhodnocení testů OOS vs. IS. Jaké parametry srovnávat, abychom se co nejvíce ujistili, že výsledky jsou robustní? Nemělo by stačit jen požadovat, aby byl IS ziskový.

    3.    Robustní parametry by měly snést i určitou míru náhody. Tu lze simulovat třeba tak, že v IS malinko změníme data (dodáme do nich šum), případně změníme periody IS/OOS. Drží se výsledky systémů stále v rozumných mezích? Pak je velká šance, že daný systém je skutečně připravený na nasazení live.

    Co se praktické implementace výše popsaného týče. Jak vidíte, potřeba většiny traderů bude nakonec mít WFO proces co nejvíce pod vlastní kontrolou. Což bohužel není úplně možné v každém programu, který WFO poskytuje. Sám jsem zatím nevíce spokojený s Amibrokerem. Kde je jednak možné optimalizovat WFO s pomocí vlastních cílů, vše velmi jednoduše řídit přes OLE (například mnoho kroků spojovat do jednoho kompaktního workflow) a hlavně nechat program pracovat opravdu rychle (v článku Automatizované analytické workflow s naprosto minimálními náklady?  je příklad, který jsem před časem na Finančníkovi publikoval). Pokud Amibroker máte (nebo jej testujete), určitě doporučuji možnosti WFO vyzkoušet. A pokud vytváříte intradenní systematické přístupy, pak testování robustnosti přes WFO by nemělo chybět ve vašem arzenálu používaných nástrojů.
    Účastníkům AlgoLab skupiny připomínám, že téma WFO aktuálně řešíme v současném projektu obchodování intradenních breakoutů volatility. Při dostatečném zapojení všech do práce se možná dostaneme až k OLE automatizaci celého procesu.
     

    Autoadaptivní obchodní strategie (2/2)

    Minulý týden jsem se pokusil vytvořit úvod do velmi zajímavé, byť stále u nás trochu okrajové problematiky autoadaptivních strategií. Dnes se k tématu ještě jednou vrátím pohledem našeho kamaráda Martina Lembáka, který dlouhodobě žije a pracuje v srdci tradingu v Chicagu a o tomto směru má poměrně značný přehled.
    Martin mimo jiné sám vytvořil velmi sofistikovaný autoadaptivní obchodní přístup a v dnešním článku souhlasil rámcově uvést koncept tohoto přístupu, jako inspiraci, co vše je možné s dnešními technologiemi na trhu realizovat.
    Martine, jak bys definoval pojem „autoadaptivní mechanická strategie“? Co je výhodou „autoadaptivní strategie“?
    Zdravím čtenáře Finančníka. Už se zde nedávno psalo o tzv. walk-forward optimalizaci systému, kdy opakovaně, v několika krocích, optimalizujeme data na určitém vzorku dat a následně ověřujeme na tzv. out of sample datech, která systém při optimalizaci „neviděl“.
    Auto-adaptivní strategie pracují na velmi podobném principu s tím, že tento adaptivní proces je již součástí systému. Tak jak přicházejí data, resp. interval dat, tak se systém bez zásahu uživatele sám autoadaptuje pro generaci vstupních či výstupních signálů pro příchozí úsečky a takto se proces neustále v intervalech definovaných developerem systému opakuje.
    Výhodou je, že systém potenciálně dokáže reagovat a přizpůsobovat se měnícím se tržním podmínkám, avšak není zaručeno, že např. definovaný interval developerem je ten úplně správný, apod.
    Žiješ a pracuješ v samotném srdci tradingu – v Chicagu. Jsou autoadaptivní strategie novým směrem v tradingu?
    Musím říci, že trh se výrazně změnil. Já jsem začal s analyzováním, monitoringem a exekucí obchodních systémů různých developerů v r. 2003 a tak do roku 2007 nebylo v podstatě u dobrých systému potřeba strategii měnit, optimalizovat, jakkoliv do ní zasahovat. Systém se jednoduše nechal běžet několik let s minimálními úpravami a stále s velkou pravděpodobností přišly roky, kdy se realizovaly velmi slušné zisky.
    Dnes je situace jiná, změny na trhu se zrychlily, na trhu je více tzv. kvant traderů, kteří pomocí svých algoritmů (AOS) trh mnohdy „skalpují ( high frequency trading), atd. Takže autoadaptivní strategie jsou dnes již nutností, chce-li být mechanický trader úspěšný.
    Jsou auto adaptivní strategie díky náročnosti na technologie a intelektuální zdroje pouze doménou velkých hráčů, nebo pozoruješ, že se touto cestou vydávají stále více i drobní obchodníci zaměření na mechanické strategie? Co konkrétně znamená „autoadaptivní mechanická strategie“ v případě drobných obchodníků?
    Rozhodně tyto techniky už nejsou doménou jen velkých hráčů, ale na trhu jsou již programy typu MultiCharts, které se dají propojit s obchodními platformami jako zdroji dat a aplikovat walk-forward a genetické optimalizace, jež jsou podstatou adaptivních strategií. Tj. např. v praxi řada úspěšných developerů takto jako drobní hráči postupuje a jsou v reálném tradingu úspěšní. I když musím říci, že převážně na trzích, které nejsou pro ty velké tak atraktivní.
    Nedávno si se stal CTA (Commodity Trading Advisor) a založil vlastní fond, který obchoduje trhy právě s pomocí autoadaptivní strategie. Vím, že samotná strategie je tvé „tajné“ know-how, můžeš přesto alespoň prozradit, co je základem takové strategie? Jaké výsledky s takovou strategií sám dosahuješ?
    Ano, něco prozradit ze své strategie mohu, přesto v omezené míře, protože z osobní zkušenosti vím, že si každý trader, ať už menší či větší, si pečlivě hlídá své proprietární strategie.
    Takže, v našem případě se jedná o přístup, kdy sledujeme obrovské množství obchodních systémů, ale pro následující den obchodujeme pouze ten, který byl vybrán speciálním algoritmem a který určil daný systém pro následující den jako „hlavní strategii“. Dalo by se to charakteritzovat jako“ systém umocněný na druhou“.
    Náš každodenní obchodní proces má tyto 3 etapy:
    1) Z celkem asi 1200 strategií vyberme zhruba 70-74 strategií, které splňují určité podmínky – převážně v tom ohledu, že aktuálně na daném charakteru trhu velmi dobře fungují. Onen souboru 1200 strategií, které jsme si naprogramovali již dříve, čítá relativně jednodušší strategie se zabudovanou autoadaptivní složkou, které zahrnují momentum, moving average, volatility breakout, Keltner bands, a další obchodní přístupy, které jsou na trhu velice populární a mají velkou pravděpodobnost, že by na trhu v ten či onen časový interval mohly úspěšně fungovat.
    Jak taková strategie, která projde prvním „sítem“ vypadá, vidíte na následujícím obrázku. Z ukázky je patrné, že daná strategie relativně dobře funguje v aktuálních podmínkách trhu, proto je dobrým kandidátem.

    2) Na takto vybrané strategie aplikujeme náš proprietární algoritmus, který všechny vybrané strategie dále testuje a ohodnocuje. V tomto dalším testování je větší důraz na pravděpodobnost a statistiku, než na matematické vyjádření. Obě fáze jsou velice náročné na čas, takže bez pomoci softwaru ( jakými jsou MS Excel, Matlab, EViews, a další) by bylo prakticky nemožné dosáhnout požadovaných výsledků.
    3) V poslední fázi pak dochází k finálnímu výběru strategie pro příští obchodní seanci a to porovnáním jednotlivých ohodnocení v programu Excel, na základě algoritmu v předchozím bodě.
    Takže, abych to shrnul: náš proces a algoritmus má za úkol najít pro příští obchodní den takový obchod, který má velmi vysokou pravděpodobnost výhry, ale také vysoké potenciální risk-reward-ratio. Tím máme zajištěno, že i v případě nízké úspěšnosti kolem 50% realizujeme dlouhodobě profit – čehož je dosaženo vyšším profit targetem než je stop loss.
    Pro individuální i institucionální investory našeho fondu se tímto naším obchodním programem snažíme dosáhnout maximálního výnosu při minimálním drawdownu, k čemuž dále uplatňujeme striktní pravidla money managementu, tj. stanovených denních a měsíčních tzv. value at risk parametrů. Výhodou celého přístupu je, že klienti, jejichž peníze spravujeme, budou vždy jen v obchodech a trzích s vysokou pravděpodobností úspěšnosti, s pozitivním risk-reward-ratio. Tím zvyšujeme pravděpodobnost, že klientovi vyděláme peníze při minimalizaci rizika/drawdownu.
    Co bys poradil drobným mechanickým obchodníkům, kteří se chtějí vydat podobnou cestou? Jak konkrétně by měli začít?
    Já musím říci, že jsem nesmírně rád, že se dané problematice věnuje na Finančníku zvýšená pozornost, vždyť podle posledních průzkumů je pod správou v tzv. „managed futures“ průmyslu nějakých 238 z 291 mld. USD alokováno do AOS, tj. systematického obchodování. Jak jsem zmínil výše, na trhu jsou programy jako TradeStation, MultiCharts, atd., které dokáží rychle aplikovat walk-forward a genetické optimalizace a při propojení s mnoha datafeed trading platformami výrazně zvýšit „edge“ tradera, tj. potenciálně vytvořit jeho statistickou výhodu na trhu. Toto je určitě směr, jakým se prakticky okamžitě mohou vydat i drobní mechaničtí obchodníci. Walk-forward optimalizace je určitě velmi silný nástroj, se kterým i na domácím počítači můžete vytvořit strategie s mnohem lepší adaptací rychle se měnícím trhům.
    Martine, děkujeme za rozhovor.
    Také děkuji a čtenářům přeji mnoho štěstí a dobré obchody.

    Bezplatné řešení získávání analytických dat (nejen) z TradeStation

    Při práci s analytickými programy také jistě často narážíte na to, že některé výstupy nejde ukládat, či je jejich ruční ukládání časově náročné. Přitom počítače dnes umožňují automatizovat prakticky jakoukoliv činnost. Buď s pomocí specializovaných komerčních programů, anebo zcela zdarma. Takové řešení vám dnes demonstruji krok za krokem na ukázce ukládání historie obchodů z WFO analýzy TradeStation, které nejsou samy o sobě k dalšímu zpracování k dispozici. Článek obsahuje i kompletní kód skriptu ke stažení.
    Využití dále popisovaného principu je velmi široké. V rámci zjednodušení se zaměřím na řešení jediného problému – jak dostat do Excelu historii obchodů z okna TradeStation Walk-Forward Optimizeru pro další zkoumání? Data jsou k dispozici v okně P/L History, ale TradeStation je „jako na potvoru“ ukládá na disk jen v binární podobě. Přitom zejména při různých analytických činnostech se seznam obchodů hodí.
    Samozřejmě – můžeme se přepnout ručně do dané záložky, zkopírovat data do schránky a pak do Excelu. Ale co když chceme data od všech běhů najednou? To už je práce na delší čas. Nebo případně, co když danou činnost chceme dělat zcela automaticky v rámci nějakého dalšího workflow? Nebo, co když potřebujeme podobným způsobem zpracovávat další data, třeba v jiných programech? Pak je čas na nějakou automatizaci.
    Osobně k podobným účelům používám bezplatný programovací jazyk Python, který už jsem na Finančníkovi několikrát zmiňoval.
    S jeho pomocí může stažení dat do Excelu (kde každá záložka bude obsahovat samostatný běh optimalizace) vypadat jako na následujícím videu, kde jsou všechny kroky prováděny samotným skriptem:

    Kód, který jsem si pro daný úkol vytvořil, jsem pro vás veřejně publikoval zde do Gitu: https://github.com/podhajsky/Tradestation-scripts
    Můžete jej použít jako hotové řešení, ale spíše k inspiraci, jak lze podobné problémy řešit. Upozorňuji, že nejsem programátor, ale o to více může být kód inspirující i pro ty, kteří se programováním také profesionálně nezabývají.
    Jakých principů kód využívá?
    Vše se točí kolem modulu pyautogui, který si můžete do Pythonu jednoduše instalovat v Shellu přes pip install pyautogui. Pyautogui pak umí ovládat klávesnici a myš stejně, jako uživatel. A dokonce má základní funkce pro porovnání obsahu obrazovky.
    Při automatizaci podobných principů pak postupuji například následovně:
    Nejprve si jako screenshot uložím nějakou část obrazovky - takto mám třeba uložené ikony pro otevření nového běhu optimalizace.
    Následně v programu zadám příkaz:
    button_loc=pyautogui.locateOnScreen("images/open-WFO-button.png")
    který mi do proměnné button_loc načte pozici dané bitmapy (pokud je okno otevřené a program bitmapu najde). Tímto se program „zkalibruje“ vůči poloze otevřeného okna a následně již není problém jej „nacvičit“ na různé sekvence klikání a mačkání kláves.
    Určitou volbu v menu mohu vyvolat například sekvencí:
    pyautogui.click(button_loc[0]+124, button_loc[1]-19)
    pyautogui.press("down")
    pyautogui.press("down")
    pyautogui.press("enter")
    která zajistí, že program klikne do určitého místa na obrazovce (odvíjející se od pozice referenčního tlačítka zjištěného v předešlém kroku), následně například stiskne na klávesnici 2x šipku dolu a poté „enter“.
    Dalšími sekvencemi (podrobně popsanými v publikovaném kódu) tak není problém například načíst určitou oblast do schránky počítače a odtud data přenést do proměnné. Proměnnou zpracovat a uložit do Excelu.
    V kódu je vidět, že se občas musíme při podobném procesu vypořádat s různými drobnými zádrhely. Například ve formátech čísel. Tradestation například (alespoň na mém počítači) zobrazuje číslice jinak, než je umí načítat Excel. Je to způsobené oddělením tisíců v číslicích pomocí čárky. To ale pro Python není vůbec žádný problém. Řetězec konvertuji na čísla ve správném formátu a uložím do Excelu. V něm pak můžeme vše podrobně analyzovat nebo graficky zpracovávat.
    Kompletní kód skriptu je tedy k dispozici na adrese: https://github.com/podhajsky/Tradestation-scripts
    Upozorňuji, že jeho smyslem je poskytnout inspiraci. Neposkytuji k němu žádnou podporu a nemusí fungovat na všech počítačích (například proto, že budete pracovat s trochu jiným formátem čísel a bude tak třeba nepatrně upravit příslušnou část kódu). Také pochopitelně vyžaduje instalovaný Python (ve verzi 3 a vyšší) a základní znalost spouštění programů. Pokud chcete do základů Pythonu proniknout, existuje na internetu mnoho bezplatných zdrojů, řada z nich i v češtině (například on-line učebnice Učíme se programovat v jazyce Python 3, Učebnice jazyka Python (aneb Létající cirkus) a mnoho dalších).
    P.S.: Jak vidíte, Pythonem lze provádět velmi efektivně ohromné množství analytických činností, které nám traderům usnadňují práci a pomáhají získávat a analyzovat informace. Pythonem lze programovat prakticky cokoliv, sám se zaměřuji zejména na analýzu finančních dat. Jelikož dostávám dotazy, jak konkrétně s Pythonem začít a analyzovat data (například i ve stylu dnešního článku), uvažuji, jestli bychom na toto téma neuspořádali na Finančníkovi kurz. Ten by mohl mít za cíl naučit neprogramátory (jako jsem já) pracovat s Pythonem na základní úrovni využitelnou pro finanční analýzu burzovních dat. Tedy zprostředkovat znalosti, které sám v dnešních trzích s tímto nástrojem používám (a nezabíhal příliš do samotného programování). Prosím napište mi na petr@financnik.cz naprosto nezávazný email, pokud byste měli o podobný kurz zájem.
×
×
  • Vytvořit...