Python
Trading, ať už je to na akciovém, komoditním nebo měnovém trhu, vyžaduje stále sofistikovanější nástroje a postupy, aby trader mohl konkurovat a zůstat o krok napřed před trhem. Jeden z nástrojů, který získal značnou oblibu v oboru tradingu, je programovací jazyk Python.
Python je programovací jazyk, který je známý svou čitelností a pružností, což z něj činí ideální volbu pro rychlé prototypování a vývoj komplexních algoritmů.
Profesionální trader může využívat Python k analýze dat, backtestingu obchodních strategií nebo dokonce k automatizaci svých obchodů. Díky široké škále knihoven, jako jsou Pandas pro manipulaci s daty, NumPy pro výpočty nebo QuantConnect pro backtesting a obchod, může trader snadno a rychle vytvářet nástroje a aplikace přizpůsobené jeho specifickým potřebám.
Python rovněž umožňuje snadné propojení s různými datovými zdroji, od tradičních databází po real-time streamingové služby. Toto umožňuje traderovi mít vždy aktuální informace a rychle reagovat na měnící se tržní podmínky.
Navíc, díky komunitě vývojářů, která za Pythonem stojí, je zde obrovské množství dostupných zdrojů, tutoriálů a knihoven, což umožňuje traderům neustále se zdokonalovat a rozšiřovat své schopnosti v oblasti programování a analýzy dat.
Na Finančníkovi vytváříme v Pythonu všechny skripty, které nám slouží k analýze dat a obchodování. Aplikace Trading Room je vytvořena v Pythonu a také náš autotrader. Jak se naučit skriptovat v Pythonu od nulových znalostí (sami nejsme programátoři) vyučujeme průběžně v TechLabu.
Oficiální stránka Pythonu: https://www.python.org/
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.
Startujeme minikurz: Základy zvládnutí Pythonu – od nuly k práci s daty
V rámci TechLabu startujeme od 12.5.2021 bezplatný minikurz, jehož cílem je naučit základy manipulace s daty s použitím Pythonu. Tedy činnost, kterou coby tradeři využijete prakticky každý den. Kurz bude trvat nejméně pět týdnů, ve kterých budou informace nejprve vysvětleny v rámci výuky a následně procvičovány pomocí zadaných domácích úkolů.
Skriptovací jazyk Python je v dnešním světě obchodování jeden z nejpoužívanějších nástrojů. Existuje pro něj proto mnoho bezplatných hotových modulů, které můžeme coby tradeři využívat pro naše vlastní potřeby.
Sám Python používám na každodenní bázi. Například pro datové analýzy hledající obchodovatelný edge, stahování informací z webů, portfolio analýzy obchodních výsledků, nejrůznější zpracovaní dat nebo třeba autotrading – jak swingových systémů, tak intradenních (celé obchodování systému Finwin 2021 je realizováno pomocí Python skriptu).
Python není složitý jazyk, ale jak už to tak bývá, každý start do něčeho nového vyžaduje nemalé úsilí pro překonání prvotních bariér.
Sám jsem s Pythonem před několika lety začínal jako úplný neprogramátor. Byl jsem v situaci, kdy jsem nebyl schopen vytvářet ani makra v Excelu, natož pracovat s pokročilejším programovacím jazykem. Nicméně u svých zahraničních přátel-traderů jsem viděl, jak silným nástrojem Python je a rozhodl jsem se, že s Pythonem také budu pracovat. A zpětně jsem až překvapený, že cesta nebyla zas tak těžká. Co se mi při osvojování Pythonu osvědčilo, bylo průběžně pracovat na praktických úkolech, kterými jsem současně řešil své potřeby v rámci tradingu. Postupně jsem se tak dostával přes základy práce s daty až k tomu, že dnes intradenně obchoduji pomocí vlastnoručně vytvořeného autotraderu. A stejnou cestu doporučuji každému neprogramátorovi, který chce Python zvládnout.
Pokud vás také láká zvládnutí mocného nástroje pro zefektivnění jakékoliv činnosti nejen v tradingu, máme pro vás skvělou zprávu. V rámci uzavřené skupiny TechLab připravujeme na Finančníkovi sérii minikurzů, kde budeme postupně vyučovat vše, co nám přijde důležité.
Minikurzy budou pro účastníky TechLabu bezplatné. Archiv minikurzů bude v TechLabu k dispozici trvale, ale pouze při jejich uvedení bude součástí minikurzu mentorovaná podpora. Lektor kurzu, kterým je v případě prvního Python kurzu Bogdan Waclawik (autor Autotraderu, se kterým řada obchodníků na Finančníkovi obchoduje a dlouholetý swingový obchodník), bude každý týden vyhlašovat úkoly k probíranému tématu a poskytovat podporu k jejich splnění.
Minikurz je stavěn tak, aby nebyl extrémně časově náročný. Každý týden získáte jednu až dvě přednahrané video lekce a měla by vám stačit přibližně hodina jak na zvládnutí výuky, tak i domácího úkolu. Pokud si nebudete vědět rady, nebo budete mít jakékoliv dotazy, můžete vše diskutovat s lektorem a ostatními účastníky, kteří budou řešit stejné problémy. Tuto možnost budete mít jen při uvedení kurzu, který začne 12.5.2021, doporučujeme tak spuštění kurzu nezmeškat a zapojit se do výuky tak, jak bude pořádána.
Pro účast v tomto prvním minikurzu není potřeba žádná znalost Pythonu. Právě pro neprogramátory a začátečníky je kurz určen. Součástí minikurzu bude i přípravná lekce zaměřená na nezbytnou instalaci prostředí. Od ostatních kurzů výuky Pythonu na internetu se tento liší především tím, že je připravován tradery pro tradery. Lektor není profesionální programátor, ale obchodník. V kurzu je tak preferována jednoduchost, srozumitelnost a především praktičnost z pohledu využití probíraných informací v obchodování. Python tedy nebude probírán tradičně „funkce za funkcí“, ale výuka je zaměřena jen na některá, z našeho pohledu nejdůležitější témata, která vám dovolí nově nabrané zkušenosti co nejdříve používat v praxi.
Výuka kurzu bude zaměřena na následující témata:
Úvod do Pandas
Načítáme data
Pracujeme s výběry dat
Matematické operace mezi sloupci
Indexování, práce s datem
Integrované matematické funkce
Seskupování a třídění
Spojování dataframe
Smyčky
Základní grafy
V rámci domácích úkolů budete pracovat s daty obchodního deníku, a řešit tak zcela praktické úkoly týkající se obchodování.
Pro zapojení do minikurzu se stačí přihlásit do skupiny TechLab.
TechLab je uzavřená skupina zaměřená na řešení technikálií okolo systematického obchodování. Naleznete v ní několik set obchodníků, kteří řeší podobné výzvy a společně se posouvají vpřed. Součástí skupiny jsou i zkušení lektoři, od kterých můžete získat odpovědi na vaše technické otázky a kteří publikují průběžné týdenní dávky inspirace v podobě tutoriálů, k jejichž archivu získáte členstvím přístup. Kromě toho vzniká v TechLabu knihovna důležitých nástrojů systematických obchodníků. Všichni účastníci mají k dispozici například nástroj pro stahování Yahoo dat do Amibrokeru, včetně stahování aktuálních definic složení indexů, a trvalý přístup ke skenerům swingového workshopu.
Nově budou součástí TechLabu také technické minikurzy.
Začneme zmíněným minikurzem Základy zvládnutí Pythonu – od nuly k práci s daty. Ten startuje 12.5.2021.
V plánu jsou další minikurzy. Mezi plánovaná témata patří:
Nezbytná statistika pro tradery
Procvičujeme Python – jednoduchý autotrader
Základy AFL Amibrokeru
Poznáváme Custom backtester Amibrokeru
Propojujeme Amibroker s Pythonem
K veškerému zmíněnému obsahu získáte přístup v rámci předplatného TechLabu. To činí 1 000 Kč/měsíc za první tři měsíce a následně 500 Kč/měsíc (placeno vždy na 3 měsíce + DPH).
Přihlásit se do skupiny můžete zde: https://www.financnik.cz/exe/akademie/kurzy/techlab.html
Pokud o účasti uvažujete, tak rozhodně doporučujeme zapojit se nyní a rovnou 12.5.2021 začít účastí v minikurzu Základy zvládnutí Pythonu s mentorovanou podporou.