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.
Petr Podhajský
Fulltime obchodník věnující se tradingu více než 20 let. Specializace na systematické strategie obchodované na futures a akciích. Oblíbený styl obchodování: stavba automatizovaných portfolio systémů, které využívá i při správě většího externího kapitálu.