Jump to content
Co nového? Mé kurzy
  • Jak funguje Trailing Stoploss a postup vytvoření výstupní strategie pro Autotrader

    v tutoriálu si vysvětlíme, jak funguje Trailing stoploss, tedy stoploss, u kterého se hodnota automaticky posunuje, pokud se obchod vyvíjí v náš prospěch.
    Definujeme si jeho princip, a také si v Jupyter Notebooku ukážeme, jak si můžeme hodnotu trailing stoplosu vypočítat pomocí Pythonu.

    Následně si z kódu vytvoříme funkci pro testování výstupní podmínky pro Autotrader.

    Snímek obrazovky 2021-01-01 v 20.25.33.png

    Video naleznete v TechLabu zde.

    1.1.2021

    Bogdan Waclawik

    Bogdan, vystupující ve fóru pod nickem 4fx, poskytl v uzavřených diskuzích Finančníka již mnoho praktických Python skriptů a rad ostatním obchodníkům. Je také autorem skriptů Autotraderu předávaných a vyučovaných v rámci workshopu automatizace. Coby autor Bogdan skripty sám používá pro živé obchodování swingových obchodních strategií.


    Sdílíme, co nám samotným funguje.
    7 výukových lekcí.

    Jak reálně uspět v tradingu?

    Naučte se vydělávat na své sny (naše metody na Finančník.cz)

    Praktický návod, jak v trzích získat šanci vydělávat stovky tisíc až miliony dolarů ročně bez vlastního kapitálu a nutností trávit denně hodiny před počítači (bez práce to ale nepůjde).

    >> Získat kurz zdarma <<

    Další články na toto téma

    Autotrader

    Autotrader odkazuje ve světě tradingu na softwarový systém, který provádí obchody na finančních trzích na základě předem definovaných pravidel a strategií bez nutnosti manuálního zásahu ze strany člověka. Tyto systémy jsou často naprogramovány zkušenými obchodníky nebo kvantitativními analytiky a mohou být napojeny přímo na API (Application Programming Interface) brokera, což je software umožňující dvěma aplikacím komunikovat mezi sebou.
    Autotrader systémy sledují tržní podmínky a v reálném čase rozhodují o nákupu či prodeji finančních nástrojů, jako jsou akcie, dluhopisy, komodity nebo měnové páry. Rozhodování je založeno na zbacktestovaných algoritmech, které mohou zahrnovat technickou analýzu, statistické modely, umělou inteligenci a strojové učení. Tyto algoritmy (na Finančníkovi jim říkáme AOS - automatizované obchodní systémy) jsou navrženy tak, aby identifikovaly výhodné obchodní příležitosti založené na historických datech a předpověděli budoucí pohyby trhu.
    Důležitou vlastností autotraderů je schopnost systematicky reagovat na měnicí se tržní podmínky, což umožňuje realizovat obchody efektivněji, než by to bylo možné pro lidské obchodníky. 
    Na Finančníkovi pracujeme s autotraderem vytvořeným v programovacím jazyce Python. V otevřené podobě (tj. včetně zdrojového kódu) jej sdílíme v rámci skupiny TechLab.

    Jak na první daytrading autotrader [včetně funkční strategie a kódu]

    Obsah článku:
    Co je intradenní obchodování (daytrading)? Kde získat funkční obchodní plán? Co je intradenní breakout otevíracího rozpětí? Pravidla obchodního plánu intradenního breakoutu Jak strategii mechanicky otestovat? Hotový kód mechanické intradenní breakout strategie Automatizovaný daytrading - shrnutí Daytrading může být hodně výdělečný. Zde je konkrétní plán, jak bych začal. A to včetně kódu strategie, kterou je možné pustit do trhu jako autotrader.
    Co je intradenní obchodování (daytrading)?
    Intradenní obchodování je styl tradingu, kdy pozice držíme jen přes den (tj. nikoliv přes noční seanci). Výhodou je, že coby obchodníci můžeme jít spát s čistou hlavou, je možné pracovat s vyšší pákou (brokeři mají pro intradenní držení pozic vesměs jiné požadavky na kapitál než pro pozice držené přes noc) a kapitál na účtu může pracovat s vyšší frekvencí, a tudíž více vydělávat.
    Na druhou stranu je intradenní obchodování velmi náročné. Zejména diskreční, kdy obchodníci velmi často sklouzávají k tomu, že obchodují nikoliv dlouhodobé pravděpodobnosti, ale subjektivní „predikce“ toho, kam se trh vydá. A to nefunguje.
    Intradenní obchodování je těžký boj i z pohledu nákladů. U pozic trvajících hodiny nebo minuty budeme z principu dosahovat průměrně nižších výdělků na jeden obchod, ale komise platíme brokerům stejně jako u kteréhokoliv jiného obchodu. Často se tak může stát, že poplatky spolykají všechny těžce vydělané peníze. Zejména, pokud bude obchodník provádět mnoho ultrarychlých obchodů denně.
    Přesto má intradenní obchodování potenciál. Vidím jej zejména v momentě, kdy strategie automatizujeme a obchodujeme spíše s nižší frekvencí – například jeden intradenní obchod v trhu denně s dobou trvání spíše hodiny, než minuty.
    Osobně intradenně obchoduji jak mean reversion, tak breakout strategii na akciových indexech. Intradenní strategie tvoří menší část mého portfolia, které je dále složené především z mechanických swingových a dlouhodobějších rotačních strategií.
    Nicméně komplexnější portfolia vyžadují přiměřeně vysoký kapitál a pro řadu obchodníků tak může být zajímavé začít s daytradingem, kde jsou požadavky na kapitál nejmenší.  
    Pojďme si proto ukázat možnou cestou, jak konkrétně začít, pokud zatím žádnou AOS strategii ani systém pro autotrading nemáte.
    Kde získat funkční obchodní plán?
    Moje osvědčená cesta je inspirovat se tím, co funguje ostatním. To jde pochopitelně tím lépe, čím více zkušeností člověk má. Při stavbě úplně prvních systémů bych vyšel z těch nejvíce diskutovaných principů, které fungují dlouhodobě. Například na Finančníkovi roky diskutujeme intradenní breakouty v akciových indexech. V případě daytradingu je to určitě dobrý začátek. Na internetu lze najít i funkční obchodní plány. Například v různých akademických studiích, které jsou volně dostupné. Jde o ohromné množství dat, naštěstí ale existují služby, které je procházejí, katalogizují a popisované edge backtestují. Patrně nejlepší je quantpedia.com. Tu se svým týmem připravuje Radovan Vojtko, který v nedávném rozhovoru v newsletteru Quantopian zmínil například studii: Může být day trading skutečně profitabilní? Adresa ke stažení: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4416622
    Ta backtestuje jednoduchý breakout otevírací rozpětí na 5minutovém grafu akciového indexu Nasdaq 100 v letech 2016 až 2023 a došla k závěru, že s použitím páky a intradenního obchodování breakoutů bylo možné ve sledovaném období dosáhnout přibližně 10x vyššího zhodnocení než při držení samotného indexu.
    Breakouty na indexech nevymizí a s podobným principem bych se tak nebál začít v malém obchodovat.
    Pochopitelně je třeba akceptovat, že systémy se široce veřejně diskutovanými pravidly patrně mohou časem degradovat a úplně bych se na ně nespoléhal s většími účty. Ale odněkud je třeba začít a zkušenosti získané živým obchodováním vám budou postupně přinášet inspiraci k tomu, jak plány posouvat dál. Sám například obchoduji intradenní breakout také ve velmi triviální podobě, ale s určitou nuancí, která věřím, že může přinášet dodatečnou obchodní výhodu. Na tu bych ale bez předchozí praxe v trzích patrně nepřišel.
    Co je intradenní breakout otevíracího rozpětí?
    Za otevírací rozpětí se považuje maximální a minimální cena sledovaného intervalu trhu po jeho otevření. V případě zmíněné studie „Může být day trading skutečně profitabilní“ jde o prvních pět minut obchodování. Pokud si zobrazíme trh skrz pětiminutový graf, pak otevírací rozpětí představují High a Low první úsečky.
    V grafu jsem situaci zobrazil šrafovanou linkou:

    Americké akciové indexy otevírají v USA ve stejnou dobu jako akcie. Obchodují se tedy od 8:30 centrálního časového pásma (CT), což většinu roku odpovídá českému času 15:30 (kromě několika málo týdnů, kdy je čas posunut o hodinu díky změně letního a zimního času, která neprobíhá v USA a Evropě stejně).
    Šrafované linky odpovídají High (horní linka) a Low (spodní linka) první pětiminutové úsečky, což je otevírací rozpětí vycházející ze studie (existují i další principy pracující například s delším časem pro výpočet otevíracího rozpětí).
    Pravidla obchodního plánu intradenního breakoutu
    Studie definuje zcela mechanický obchodní plán, který je možné shrnout do následujících kroků:
    Čekáme na uzavření první pětiminutové úsečky. Pokud je první pětiminutová úsečka rostoucí (Close > Open), pak na otevírací ceně druhé úsečky otevíráme long pozici.
    Pokud je první pětiminutová úsečka klesající (Close < Open), pak na otevírací ceně druhé úsečky otevíráme short pozici. Stop-loss strategie umisťuje na úroveň low otevíracího rozpětí (první pětiminutové úsečky) v případě long pozice, resp. na úroveň high otevíracího rozpětí v případě short pozice. Profit target se umisťuje na úroveň 10násobku riskované částky (tj. rozsahu vstup – stop-loss). Strategie vystupuje buď na stop-lossu, profit targetu, nebo na konci obchodního dne. Obchodovaným trhem diskutovaným ve studii je americký index Nasdaq 100. Konkrétně skrz ETF s názvem QQQ, které index následuje. V EU díky regulaci není možné tento ticker na běžných retailových účtech obchodovat, a tak nejbližší rozumnou volbou budou futures mikrokontrakty MNQ. Ty mají hodnotu bodu 2 USD.
    Backtest strategie intradenního breakoutu s využitím trhu QQQ vypadá podle studie následovně:

    Zdroj: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4416622
    Černá linka je výkonnost strategie (long a short dohromady). Červená linka benchmark pro porovnání s držením QQQ (de facto držení indexu). Dobré je, že ve studii jsou zahrnuty i výsledky od začátku roku 2022, kdy trhy začaly klesat a dobře to dokresluje, jaké výhody nám poskytují krátkodobé long/short strategie. Černá equity křivka roste bez ohledu na to, že index samotný převážně klesá.
    Jak strategii mechanicky otestovat?
    Jelikož máme strategii definovanou naprosto mechanicky, byla by hloupost testovat a obchodovat ji ručně. Pochopitelně existuje celá řada způsobů, jak podobné strategie backtestovat a obchodovat plně automatizovaně. Sám například používám python skripty napojené na Interactive Brokers.
    Na začátku je ale určitě dobré začít co nejjednodušeji. Z mé zkušenosti lze podobné systémy velmi snadno obchodovat u TradeStation. Ta integruje vše, co člověk potřebuje. Prostředí pro backtest, data a současně funguje jako autotrader. Perfektní je, že u TradeStation lze přepínat mezi simulovaným a živým obchodováním a v obou prostředích fungují zcela stejné skripty. Začal bych tedy tak, že skript pustím na simulovaný účet, budu jej sledovat, a pokud budu s chováním systému spokojený, přepnu se na živý účet a budu mít svůj první intradenní autotrader.
    Hotový kód mechanické intradenní breakout strategie
    Konkrétní skript není součástí studie. Nicméně převést uvedená pravidla do mechanického kódu EasyLanguage není těžké. Zde je strategie v podobě, kterou stačí jen překopírovat do TradeStation:
    Vars: BuyPrice(0),ShortPrice(0), ShortRiskAmount(0), ShortStopLevel(0),ShortTargegLevel(0),LongStopLevel(0),LongRiskAmount(0),LongTargetLevel(0); If Time = 0835 and C>O and MarketPosition = 0 then begin Buy ("LongOR") next bar market; BuyPrice = Close; LongStopLevel = L; LongRiskAmount = BuyPrice - LongStopLevel; LongTargetLevel = BuyPrice + (10* LongRiskAmount); end; If MarketPosition = 1 then begin Sell ("ORL SL") next bar at LongStopLevel stop; Sell ("ORL PT") next bar at LongTargetLevel limit; end; If Time >= 1500 and MarketPosition > 0 then Sell ("ORL TimeStop") next bar at market; If Time = 0835 and C<O and MarketPosition = 0 then begin Sellshort ("ShortOR") next bar market; ShortPrice = Close; ShortStopLevel = H; ShortRiskAmount = ShortStopLevel - ShortPrice; ShortTargegLevel = ShortPrice - (10* ShortRiskAmount); end; If MarketPosition = -1 then begin Buytocover ("ORS SL") next bar at ShortRiskAmount stop; Buytocover ("ORS PT") next bar at ShortTargegLevel limit; end; If Time >= 1500 and MarketPosition = -1 then Buytocover ("ORS TimeStop") next bar at market; Pokud s TradeStation začínáte, můžete se podívat na dříve publikovaný seriál, který ukazuje, jak s TradeStation pracovat.
    Ale není to složité. Otevřeme graf s příslušným trhem (např. MNQ.D pro denní data mikro futures indexu Nasdaq 100), otevřeme EasyLanguage editor – vložíme skript, aplikujeme jej na graf a můžeme backtest případně rovnou autotraderovat. Ano, výše uvedený skript je v zásadě vše, co potřebujeme proto, aby TradeStation obchodovala intradenní breakout (kód ale publikuji výhradně pro studijní účely, sám bych jej případně spouštěl v simulaci a sledoval, jestli skutečně vše funguje, jak má).
    Automatizovaný daytrading - shrnutí
    Backtest i s použitým kódem vypadá velmi perspektivně – ostatně přesně, jak naznačuje studie. Jediný zásadní rozdíl ve výsledcích je v position sizingu. V našem kódu pro zjednodušení pracujeme s jedním kontraktem, což může být kontraproduktivní. Absolutní výše risku bude hodně záležet na aktuální volatilitě trhu a je výhodnější volatilitu tzv. normalizovat, aby byl absolutní risk stále stejný.
    Na druhou stranu práce s konstantním jediným kontraktem má také výhody. Například tu, že nám stačí velmi malý účet. Například u TradeStation je potřeba pro otevření mikro kontraktu MNQ.D jen cca 460 dolarů. Tedy strategii lze obchodovat s účtem cca 800–1000 dolarů. A to není pro začátek vůbec špatné.
    Plus je třeba nezapomínat na to, že máme mnoho možností, jak strategii posouvat dál. Můžeme zkusit testovat jiné periody breakoutů, další trhy (strategie dobře funguje i na mikro futures indexu S&P 500) a určitě je dobré otestovat zmíněnou normalizaci volatility.
    Líbí se vám toto téma? Prosím sdílejte odkaz článku, který jsme publikovali na náš X (https://twitter.com/financnik) a Facebook (https://www.facebook.com/financnikcz) účet. V případě zájmu mohu pokračovat v rozvinutí myšlenky do dalších testů a třeba i více komplexnějších přístupů.
    Breakout trading a řízení rizik [komodity vs ETF vs CFD]
    V pokračování článku se zaměříme na Breakout trading a řízení rizik [komodity vs ETF vs CFD].

    Automatizace obchodování - jak se zbavit rutiny se zadáváním příkazů

    Řada obchodníků řeší způsob, jak získat při obchodování co nejvíce času a předat práci počítači. Zde je popis našeho řešení, které je poměrně jednoduché a současně solidně modulární.
    Automatizace obchodování v zásadě není složitá. Existuje řada programů, do kterých stačí nadefinovat podmínky obchodního systému a program sám umí příkazy předávat na burzu. Mezi nejznámější patří patrně TradeStation, NinjaTrader, SierraChart a další. Limity nicméně bývají v tom, že jednoduchost mizí v okamžiku, kdy začneme obchodovat portfolia obchodních systémů. Na to nebývají běžné retailové programy stavěné, a pokud je technicky možné funkcionalitu zvládnout, vyžaduje to již dost programování.
    Jak řeším automatizaci portfolio obchodování?
    V případě pomalejších swingových strategií (které neobchoduji intradenně) používám jednoduché Python kódy, které načítají obchodní příkazy z csv souborů. Získávám tak řešení, které není závislé na jediném softwaru, neboť obchodní příkazy mohu generovat řadou nástrojů. Nicméně dnes používám pro generování seznamu příkazů nejčastěji Amibroker.
    Jak konkrétně na podobné řešení?
    Základem řešení je API brokera. Sám používám IB API provozované pod TradeStation Global. API je rozhraní poskytované brokerem, se kterým je možné programově komunikovat. Ovšem řešit vše vlastním kódem není zas tak úplně jednoduché. Naštěstí existují hotové frameworky, se kterými jde práce mnohem snáze. Osobně používám ib_insync pracující v Pythonu, který v obchodování hodně používám. Mimochodem studium Pythonu vnímám zpětně jako jedno z nejlepších rozhodnutí, které jsem udělal. Coby totálního neprogramátora, který si neuměl vytvořit ani makro v Excelu, mě to sice stálo pár měsíců úsilí, ale dnes mi tento jazyk šetří v tradingu čas neuvěřitelně. Vytvořit pomocí ib_insync jednoduchý autotrader je pak skutečně jednoduché. Na triviální odesílání příkazů stačí pár řádků kódu, byť pochopitelně nad pokročilým autotraderem je třeba strávit mnohem více času, neboť patrně budete chtít obchody logovat do databáze atd.
    Schematicky vypadá autotrader takto:

    Python skript spouštím automaticky pomocí plánovače úloh. Ráno před začátkem obchodní seance si skript načte csv soubory s obchodními příkazy (včetně stop-lossů a profit targetů) a zadá je do API brokera. Večer ještě soubor používám pro uzavírání pozic (hodně systémů ukončuje obchodní pozice na close dne).
    Samotné csv soubory lze vytvářet nejrůznějšími cestami (mohu si takto připravovat i ruční příkazy). Dnes nejčastěji používám tzv. dávky v Amibrokeru. Jde o způsob, jak automaticky projet připravené obchodní systémy a například vygenerovat signály do textových souborů.
    Proč si myslím, že může být zajímavé se pustit do algoritmického obchodování touto cestou?
    Podobná automatizace je relativně bezpečná na testování a následné obchodování. Přenos příkazů do IB nemusí probíhat automatizovaně, ale dávky lze spouštět ručně a dohlížet přitom na to, co se reálně na obchodním účtu děje.
     Pro mě samotného byla práce na řešení i způsob, jak se konkrétně učit pracovat s Pythonem a řešit praktické výzvy.
    Dnes pak hlavní benefit vnímám v tom, že není problém mezi csv a autotrader vkládat další vrstvu kódu, která se stará o řízení celého portfolia. Mohu například kontrolovat korelace mezi otevíranými systémy a například některé signály neotevírat. Sám toto dělám opět pomocí Pythonu a kódy opět nemusí být složité.
    Pokud se v programování alespoň minimálně orientujete, tak rozhodně doporučuji ib_insync vyzkoušet (nebo jiný framework).
     
×
×
  • Vytvořit...