Automatické obchodování u LYNX: Praktický průvodce

Automatické obchodování láká stále více lidí a jednoznačně přebírá vůdčí úlohu, pokud jde o zobchodované objemy na světových burzách. Stroje nedělají chyby, nemají emoce, soustředí se 24 hodin denně a dokáží reagovat přesně během zlomků vteřin.

Jak ale takový automat sestavit a kde vůbec začít?

Na to se zaměříme v tomto článku.

Ukážeme si:

  • Co je API a jak funguje u LYNX
  • Jaké API propojení jsou dispozici?
    • Externí platformy
    • API wrappery
  • Využití externích platforem
  • Využití API wrapperu
    • Nastavení prostředí pro IBridgePY
    • Nastavení API v platformě LYNX trading
    • Test API spojení
    • První kroky k automatickému obchodování
  • Neumím programovat a chci AOS – co s tím?

Velká část traderů nebo investorů nemá příliš velké zkušenosti s programováním a ani neví, jak vše správně nastavit, aby se mohli začít učit. Infrastruktura kolem burzovního obchodování není úplně triviální a o to složitější je u automatických systémů, které předpokládají poměrně solidní technické znalosti. Prokousat se inženýrskou dokumentací plnou neznámého žargonu může být pro začátečníka velmi frustrující.

V tomto článku si proto ukážeme základní možnosti, jak začít s algoritmickým obchodováním u LYNX.  Vysvětlíme si nutné technikálie a ukážeme vše potřebné proto, abyste byli schopni napojit si platformu TWS na vývojové prostředí, ve kterém můžete algoritmus napsat.

Cílem není podat vyčerpávající možnosti, jak začít s algotradingem. Těch je příliš na obsáhnutí v jednom článku a vždy se budou odvíjet od vašich schopností i preferencí.

Nepůjde nám ani o to naučit vás psát profitabilní tradingové strategie.

Půjde nám tu především o shrnutí možností a ukázku nastavení konkrétního  napojení API s využitím IB BridgePY wrapperu tak, abyste se mohli sami začít učit algoritmy vyvíjet.

Co je rozhraní API a jak funguje u LYNX?

Někteří investoři API koncept znají a dokonce aktivně používají, avšak pro některé je tento pojem španělskou vesnicí. API je zkratka pro „Aplication Programming Interface“, což je česky řečeno rozhraní pro programování aplikací. Díky API rozhraní lze naprogramovat specifické parametry, podle kterých pak systém automaticky odesílá příkazy na burzu, získává data, řídí riziko apod.

LYNX jakožto partner Interactive Brokers nabízí stejné API. To v praxi znamená, že cokoliv je možné zautomatizovat přes IB, je stejně tak možné zautomatizovat přes LYNX.

Interactive Brokers ohledně automatizace neposkytuje ale absolutně žádný servis. Vše je tedy potřeba si nastudovat samostatně z dokumentace, která je zde. Programovat vlastní architekturu API a na ní vytvořit obchodní systém je práce pro zkušeného developera. Rozhodně musíte mít určité technické dovednosti a znalosti alespoň některého jazyka – Java, Python, C#, nebo C ++.

Ne vždy ale musíte jít takovouto cestou a programovat vlastní API architekturu. Využít můžete již hotová řešení. Ukážeme si je dále.

Jaká API propojení jsou k dispozici?

Vzhledem k tomu, že programovat vlastní API může být složité, existuje celá řada tzv. „third party“ řešení, která toto obchází. V zásadě by se dala rozdělit do dvou skupin.

Externí platformy

První skupinou, kterou pro automatické obchodování můžete využít, jsou plnohodnotné obchodní platformy. Ty slouží jako externí modul k obchodní platformě LYNX Trading (TWS) a mají již vytvořené API. Vaším úkolem je jen v nastavení vytvořit vzájemné spojení pomocí nakonfigurování určitých nastavení a portů. Tyto externí platformy pak slouží jako vývojové prostředí, zpravidla nabízí nějaký svůj jazyk, ve kterém algoritmus píšete, nabízí knihovny, v nichž jsou předefinované určité funkce, proměnné, konstanty a další objekty, které můžete pro svůj vývoj použít.

Typickým příkladem je platforma Sierra Chart, ve které pracuji já. Existuje ale i řada dalších – nejznámější příklady jsou NinjaTtrader, Multicharts nebo Tradestation.

Na webu LYNX se věnujeme platformám Sierra Chart a NinjaTrader a k oběma platformám máme návody, jak jejich API nastavit, aby došlo k propojení s LYNX Trading (TWS).

Popis platformy Sierra Chart a návod na nastavení jejích API naleznete zde.

Popis platformy NinjaTrader a návod na nastavení jejích API naleznete zde.

Wrappery

Druhou skupinou, kterou lze pro algoritmický trading u LYNX využít, jsou wrappery. Wrappery, jako je například IBridgePY, který si popíšeme dále, jsou v podstatě zdrojové kódy psané v určitém jazyce (typicky v Pythonu, díky jeho jednoduchosti), které obalují již vytvořenou API aplikaci od Interactive Brokers.

API od Interactive Brokers je napsána v C++, což je jazyk poměrně složitý a nepřívětivý, využívaný hlavně pro svou vysokou výkonnost v „mission critical“ systémech. Toto C++ API je ale oficiálně spravováno společností Interactive Brokers, a proto je zde záruka, že funguje spolehlivě.

Vytvořit a používat jen jakýsi obal tohoto C++ IB API v jednodušším, byť pomalejším jazyku jako je Python, pak dává uživateli záruku poměrně jednoduché obsluhy a bezproblémového spojení. Odpadá tedy nutnost implementace vlastní API aplikace, která může být dost nákladná. A protože IBridgePY je postavená na oficiálním C++ API, mohou uživatelé snadno dohledat určité funcionality v oficiální IB dokumentaci.

IBridgePY jako takový se skládá ze dvou hlavních složek. První je zmíněný obal, který napřímo komunikuje s C++ jádrem na serveru Interactive Brokers, druhá je Python knihovna obsahující řadu funkcí podobně jako výše zmíněné platformy a připomíná tak rozhraní Quantopian.

Využití externích platforem

Podívejme se nyní trochu blíže na jednotlivé možnosti, které nabízí první ze zmíněných variant.

Je potřeba vždy pamatovat, že jakákoliv externí platforma slouží v podstatě jako nástavný modul pro platformu LYNX Trading. Pro exekuci pokynů, u kterých chcete, aby šly na burzu, je pak potřeba mít vždy puštěnou jak LYNX Trading platformu, tak konkrétní externí platformu.

V tomto ohledu slouží LYNX Trading jen jako jakýsi „most“ mezi externí exekuční platformou a burzou. LYNX Trading v podstatě pouze přebírá pokyny, které externí platforma pošle.

Externí platformy (NinjaTrader, Sierra Chart apod.) slouží zároveň jako exekuční a zároveň jako vývojové prostředí. Nabízí buď nějaký vlastní editor, ve kterém kód píšete (něco na způsob klasického notepadu), nebo je možné je připojit na plnohodnotné developerské prostředí, kterým je v prostředí Windows kupř. Visual Studio. Díky tomu lze výrazně lépe AOS debugovat, optimalizovat výkonnost kódu apod.

Externí platformy jsou různě vyspělé a nabízí různé možnosti. S ohledem na vývoj automatických systémů je potřeba zohlednit pár věcí. V první řadě bude potřeba ujasnit si, jak jste na tom s programováním.

Jestliže ho příliš neovládáte, je asi vhodnější sáhnout po platformách, které využívají snazší jazyky (tzv. easy language). Ty nejsou tak náročné na zvládnutí a mají poměrně širokou vývojářskou základnu, kde můžete informace dohledat nebo žádat o radu či pomoc. Z našich 4 zmíněných využívá easy language NinjaTrader, Multicharts i Trade Station. Jediná Sierra Chart tedy ne.

Pokud ale máte rádi výzvy a chcete se hned od začátku učit vyvíjet v něčem, co je v burzovním světě standartem a co má dalekosáhlý přesah, pak sáhněte po Sierra Chart, protože ta využívá nativní C++. Vývoj v ní je určitě obtížnější než v easy-language, na druhou stranu je takový kód rychlejší. Zároveň vám nabízí obrovské možnosti díky STL a mnoha externím knihovnám. Pro vývoj se tedy hodí nejlépe, protože vás ničím neomezuje a bez problémů zvládá náročnější věci.

Multichart

  • Vestavěné ukazatele a strategie.
  • Automatická exekuce příkazů.
  • Back-testing
  • Skripty jsou napsány v EasyLanguage (C#).

NinjaTrader

  • 1000 interních aplikací a add-onů speciálně navržené pro NinjaTrader
  • Automatická exekuce příkazů.
  • Back-testing strategie
  • Skripty jsou napsány v EasyLanguage (C#).

TradeStation

  • RadarScreen vám umožňuje analyzovat akcie v reálném čase na základě více než 180 technických a fundamentálních ukazatelů.
  • Automatická exekuce příkazů.
  • Back-testing strategie
  • Skripty jsou napsány v EasyLanguage (C#).

Sierra Chart

  • Nekonečně mnoho nastavení
  • Automatická exekuce příkazů.
  • Back-testing strategie
  • Skripty jsou napsány v ACSIL (C++).

Využití IBigdePY wrapperu

Princip wrapperu obalující C++ API od Interactive Brokers jsme si ukázali výše, nyní se podívejme, jak ho nastavit a napojit na LYNX Trading. Budeme používat wrapper IBridgePY. Díky API wraperru v podstatě obcházíme nutnost programovat vlastní API a zároveň obcházíme nutnost pořizovat externí platformy.

IBidgePY můžete přímo napojit na TWS a vyvíjet v nějakém Python editoru.

Obecně je tato možnost považována za nejshůdnější variantu pro všechny, kteří mají účet u LYNX a chtějí s automatickým obchodováním začít. Dále si ukážeme, jak toto prostředí nastavit a napojit na LYNX Trading platformu nebo na IB Gateway.

Nastavení vývojového prostředí pro IBridgePY

Vzhledem k tomu, že IbridgePy je napsaný v jazyce Python, bude potřeba zajistit, aby na vašem PC bylo prostředí, které umí Python kód přeložit. Nejprve tedy – jestliže ho v PC ještě nemáte – naistalujeme Python (resp. jeho konkrétní distribuci zvanou Anaconda). Na stránce této stránce Anaconda3-5.0.1-Windows-x86_64.exe stáhněte instalační balíček. Nainstalujte ji. Její součástí je Editor zvaný jako Spyder, který otevřete když najedete ve Windows na Start >> Všechny programy >>Spyder. Případaně do vyhledávacího pole napište „spyder“ a Windows vám ho vyhledá.

Máte-li nainstalovaný Python stáhněte si ze stránek http://ibridgepy.com/ příslušný balíček. Musíte vybrat takový balíček, který sedí na váš operační systém  a na verzi Pythonu, kterou máte. Jestliže jste na OS Windows 64 bit a stáhli jste Python verzi 3, budete chtít stáhnout IBridgePy_python3_64bit. Stáhne se vám zip soubor, který musíte rozbalit do nějaké vámi zvolené složky. Vytvořte si tedy třeba na ploše složku IBridgePY a přetáhněte do ní vše, co se nachází ve složce zip, kterou jste právě stáhli. Struktura složky je asi takováto

 

 

 

 

 

 

 

Otevřete si Spyder editor a jděte na Tools >> PYTHONPATH manager

V nabídnutém okně zvolte Add path a vyberte složku, do které jste právě přesunuly obsah staženého zip soubouru IBridgePY

Klikněte na Close

Nastavení API v platformě LYNX tading

Nyní je potřeba nastavit API spojení v platformě LYNX Trading. Otevřete si ji a klikněte na Edit >> Global configuration, najdětě kartu API, a klikněte na Settings. Otevře se vám menu ve kterém potřebujete povolit ActiveX a Socket Clients a nastavit Socket port na 7496. Nastavení byste měli stejné jako je na obrázku.

Test API spojení mezi LYNX Trading a IBridgePY

V tuto chvíli je potřeba otestovat, že funguje spojení mezi platformou LYNX Trading a vývojovým prostředím, ve kterém budete psát skripty.

Otevřte si složku IBridgePY a v ní uvidíte složku Strategies. V ní jsou obsažené testovací zdrojové kódy. Zároveň to bude tato složka, do které budete ukládat všechny své nově napsané zdrojové soubory. Každý z nich musí mít vždy koncovku .py. Zároveň je tam důležitý soubor RUN_ME.py, který budete používat, když chcete konkrétní skript spustit.

Otevřete si editor Spider a do něj ze složky Strategies přetáhněte tento RUN_ME.py soubor. V tomto souboru musíte přepsat dvě věci.

Zaprvé, je potřeba přiradit správné číslo vašeho účtu pro spojení s API u LYNX Trading.

Zadruhé je to jméno python skriptu, který budete chtít spustit, který musí být ve složce Strategies.

V tomto příkladu vybereme jeden z připravených souborů s názvem „example_show_real_time_prices.py“, který v podstatě jen získává aktuální ceny dvou měnových párů. Přepište tedy tyto dvě proměnné a spusťte Spyder kliknutím na F5. Měli byste po spuštění vidět zhruba následující.

Tímto máme důkaz, že spojení je vytvořené a stabilní.

První kroky k automatickému obchodování

Nyní tedy máme vše potřebné nastavené k tomu, abychom mohli s algoritmickým tradingem začít. Jde v podstatě jen o to, napsat nějaké python skripty a spustit je pomocí RUN_ME.py. Když mluvím o „skriptech“ mám na mysli „zdrojové soubory“. Jsou to v podstatě textové soubory, které mají koncovku .py, a proto je počítač dokáže interpretovat jednat podle toho, co je v nich napsáno. Příklady takových souborů máte ve složkách IBridgePY.

Právě tyto python skripty jsou to, co tvoří AOS. V nich budou napsané instrukce, které říkají počítači, co má kdy a jak dělat. Takové instrukce napíšete přímo ve Spyder editoru a uložíte po konkrétním jménem do složky Strategies. Pracovat s tímto editorem můžete podobně jako pracujete s MS Wordem s tím rozdílem, že soubory neukládáte s koncovkou .doc, ale s koncovkou .py.

Bohužel na tomto místě není prostor pouštět se do vysvětlování základů programovacího jazyka a učit se blíž pracovat v prostředí Pythonu. Je pochopitelné, že k tomu, abyste nějaký skript napsali, musíte mít alespoň základní povědomí o tom, jak funguje Python. Jinými slovy musíte vědět, jaká je jeho syntaxe, jak pracovat s proměnnými, s objekty, s podmínkami, s cykly apod. Není to ale nic těžkého a každý kdo chce, se to naučí. Na internetu existuje spousta návodů, knih, kurzů a dalších materiálů, které lze často zcela zdarma využít.

Python je obecně považovaný za nejjednodušší programovací jazyk a naučit se jeho základy zvládne opravdu každý.

Neumím programovat a chci AOS

Typický požadavek. Neumím programovat, ale chci AOS, co bude vydělávat.

Co s tím?

Určitě narazíte na internetu na nabídky kurzů, které tvrdí, že nemusíte umět programovat a můžete postavit profitabilní automat. To je asi stejné, jako když vám bude někdo tvrdit, že nemusíte umět řídit auto, abyste vyhrávali závody v rally.

Je pravda, že nemusíte být profesionální programátor, ale číst, psát a rozumět kódu do určité míry umět musíte. Jestliže to neumíte, budete se to muset naučit. Trader a programátor v jedné osobě je poměrně výjimečná kombinace. Můžete se jí stát.

Na tomto místě bych chtěl zdůraznit důležitou věc. To že něco neumíte, neznamená, že to tak navždy musí zůstat. Naopak. Neustálé učení se novým věcem k tradingu (a k životu obecně) patří a máte-li chuť začít vyvíjet a testovat algoritmy pro burzu, naučit se nějaký základní skriptovací jazyk (např. Python), ve kterém je budete psát, není nepřekonatelnou překážkou.

Nikdy není pozdě, začít se učit. Ať už je vám 20, 30, 40 nebo 50 let, nenechte se odradit prvotním nezdarem nebo zdánlivou složitostí. Vydržte a uvidíte výsledek. Je to činnost, která vás bude rozvíjet a posouvat dál nejen v tradingu.

Samozřejmě, že když nemáte čas a ani se nechcete nic učit, můžete si najmout externího programátora nebo celý tým, předat instrukce a on vám skripty vytvoří. Nevýhoda toho je, že s každou maličkostí pak budete muset znovu a znovu někoho shánět, aby vám upravil třeba jen jednu malou drobnost. Vždy je lepší umět to udělat sám, přesně tak, jak vy chcete.

Je potřeba taky říct, že vývoj AOS nevypadá tak, že za pár dní někdo něco napíše, napojí to na platformu a jde na pláž. Celý proces je náročný a je potřeba ošetřit řadu věcí. Mezi ně patří správa, údržba a rozvoj kódu a jesliže to nebudete umět, budete muset vždy spoléhat na druhé, což je problematické.

Máte-li tedy alespoň trochu času a odhodlání, pak doporučuji se to učit. Na začátek nemusíte umět nic extra, stačí opravdu základní věci. Přidávat na obtížnosti můžete časem. Čím víc konrétní jazyk budete znát, tím samozřejmě lépe pro vás. Nakonec ale jazyk jako takový je jen nástroj, který vám umožní zapsat vaši myšlenku do instrukcí, které provede počítač.

Tu myšlenku ale musíte mít. To je na celém vývoji AOS to klíčové.

Lukáš Koťátko

Lukáš Koťátko

Na finančních trzích se aktivně pohybuje od roku 2013. Obchoduje intradenní futures na americké akciové indexy.

Kontaktovat jej můžete e-mailem na l.kotatko@lynxbroker.cz.

Začněte využívat mnoha výhod LYNX

LYNX má mnoho výhod pro každého – přesvědčte se o tom v informačním balíčku.

Information package image
Informační balíček je zasílán zdarma a obsahuje:
  • Brožuru s podrobnými informacemi
  • Formulář k otevření účtu
  • Přehled tarifů
  • Navíc zdarma investiční e-book 11 super strategií největších investičních guru
Contact icon Zavolejte nám zdarma
800 877 877
Contact icon Napište nám na
info@lynxbroker.cz
Contact icon Spojte se s námi na
CHAT
Contact icon Pište nám na WhatsApp
735 00 08 05