Sem vložte zadání Vaší práce.
České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství
Bakalářská práce
Automatizace obchodování na finančních trzích Jan Mráz
Vedoucí práce: Ing. Pavel Šedek
12. května 2014
Poděkování Zde bych rád vyjádřil poděkování Ing. Pavlu Šedkovi za vedení této bakalářské práce, zejména za ochotu a volnost, kterou mi poskytl při vypracovávání tématu. Dále bych rád poděkoval své rodině, která mě po celou dobu studia podporovala.
Prohlášení Prohlašuji, že jsem předloženou práci vypracoval(a) samostatně a že jsem uvedl(a) veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů, zejména skutečnost, že České vysoké učení technické v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle § 60 odst. 1 autorského zákona.
V Praze dne 12. května 2014
.....................
České vysoké učení technické v Praze Fakulta informačních technologií c 2014 Jan Mráz. Všechna práva vyhrazena.
Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora.
Odkaz na tuto práci Mráz, Jan. Automatizace obchodování na finančních trzích. Bakalářská práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2014.
Abstract The aim of this bachelor thesis is to introduce algorithmic trading on financial markets. This thesis defines basic terms, definitions and concepts used in the largest financial market - FOREX. The most important content of this thesis is design, implementation and testing followed up by evaluation of automated trading system based on price information directly acquired from the market. Keywords FOREX, algorithmic trading, ATS, automated trading system, MetaTrader, MQL
Abstrakt Cílem této práce je přiblížit oblast automatizace obchodování na finančních trzích. Práce definuje základní pojmy a principy, na kterých funguje největší finanční trh - FOREX. Hlavní náplní této práce je návrh, implementace, testování a následné vyhodnocení automatického obchodního systému založeného na cenových informacích přicházejících přímo z trhu. Klíčová slova FOREX, automatizace obchodování, AOS, automatický obchodní systém, MetaTrader, MQL
ix
Obsah Úvod
1
1 Základní pojmy obchodování na 1.1 FOREX . . . . . . . . . . . . . 1.2 Historie měnových trhů . . . . 1.3 Účastníci trhu . . . . . . . . . . 1.4 Typy kontraktů . . . . . . . . . 1.5 Důležité pojmy . . . . . . . . .
finančních . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
trzích . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3 3 3 6 6 7
2 Možnosti analýzy trhu 13 2.1 Fundamentální analýza . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Technická analýza . . . . . . . . . . . . . . . . . . . . . . . . . 14 3 AOS - Návrh a realizace 23 3.1 Obchodní systémy . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Návrh AOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3 Realizace AOS . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 Vyhodnocení AOS 33 4.1 Testování na historických datech . . . . . . . . . . . . . . . . . 33 4.2 Srovnání výsledků testování . . . . . . . . . . . . . . . . . . . . 35 4.3 Ekonomické zhodnocení . . . . . . . . . . . . . . . . . . . . . . 38 Závěr
43
Literatura
45
A Seznam použitých zkratek
49
B Obsah přiloženého CD
51
xi
Seznam obrázků 1.1 1.2 1.3
Průměrný denní obrat na FOREXu [1] . . . . . . . . . . . . . . . . Podíl jednotlivých kontraktů [1] . . . . . . . . . . . . . . . . . . . . Podíl jednotlivých měn [1] . . . . . . . . . . . . . . . . . . . . . . .
2.1 2.2 2.3 2.4 2.5 2.6
Obchodní časy [17] . . . . . . . . . . . . . . . . . . . . . . . Příklad čárkového grafu na měnovém páru EUR/USD 4H . . Příklad sloupcového grafu na měnovém páru EUR/USD 4H . Příklad svíčkového grafu na měnovém páru EUR/USD 4H . . Příklad klesajícího trendu na měnovém páru EUR/USD 4H . Příklad hladin supportu a resistence na grafu GBP/USD 1H
. . . . . .
14 15 16 16 17 17
3.1
Vývojový diagram AOS . . . . . . . . . . . . . . . . . . . . . . . .
30
4.1 4.2 4.3 4.4
Výsledný graf bez optimalizace . . . . . Optimalizace podle obchodního rozpětí Výsledný graf s použitím optimalizace . Délka držení pozic v závislosti na zisku
34 35 35 40
xiii
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . .
4 8 9
Seznam tabulek 3.1 3.2 3.3
Výhody a nevýhody AOS . . . . . . . . . . . . . . . . . . . . . . . Základní charakteristiky AOS . . . . . . . . . . . . . . . . . . . . . Vstupní parametry . . . . . . . . . . . . . . . . . . . . . . . . . . .
24 26 29
4.1 4.2 4.3
Nastavení parametrů . . . . . . . . . . . . . . . . . . . . . . . . . . Výsledky strategií . . . . . . . . . . . . . . . . . . . . . . . . . . . Výsledky strategií . . . . . . . . . . . . . . . . . . . . . . . . . . .
34 37 39
xv
Úvod Informační technologie v posledních několika desetiletích dosáhly obrovského rozmachu. Postupně pronikaly do všech oblastí, kde výrazně měnily fungování těchto oblastí. Ani finanční trhy nebyly výjimkou. Příchod informačních technologií na půdu finančních trhů zůsobil, že se výrazně zrychlilo a zefektivnilo obchodování pomocí nejmodernějších prostředků techniky — počítačů a internetu. I dříve používali obchodníci různé strategie jak obchodovat a vydělat více peněz. S příchodem vyspělejší techniky došlo k možnosti tyto strategie algoritmizovat a tím dosáhnout určité míry automatizace při obchodování na finančních trzích. Jedním z důvodů bylo odstranění lidské psychiky na obchodování a obrovské zrychlení při obchodování podle zvolené strategie. Cílem této práce je přiblížit automatizaci obchodování na finančních trzích, konkrétně na FOREXu - měnový trh, který představuje největší finanční trh na světě. Toto téma jsem si vybral z mého předchozího zájmu o FOREX a možnost zalgoritmizovat obchodní strategii. Práce v první kapitole nejprve seznamuje čtenáře s FOREXem, popisuje historii měnových trhů, dále přibližuje strukturu trhu podle účastníků, se kterými se můžeme setkat a typem kontraktů, které lze uzavřít. V poslední části první kapitoly jsou vysvětleny pojmy, které jsou nezbytné pro základní pochopení fungování trhu. Druhá kapitola navazuje možnostmi, kterými se dá analyzovat trh. První část obsahuje fundamentální analýzu, která se zabývá vnějšími vlivy, které na trh působí. Druhá část popisuje technickou analýzu, která se opírá o minulý pohyb ceny. V další kapitole práce seznámí čtenáře s různými typy obchodních systému, jejich výhody a nevýhody. Následuje návrh a realizace automatického obchodního systému pro intradenní obchodování, který je založen pouze na cenových informacích přicházejících z trhu. Impelemntace proběhne prostřednictvím softwaru MetaTrader 5 a jazyka MQL5. Poslední kapitola se zabývá testováním tohoto obchodního systému na historických datech. Dále přibližuje výsledky testování a zaměřuje se na ekonomické zhodnocení s ohledem na transakční poplatky. 1
Kapitola
Základní pojmy obchodování na finančních trzích V této kapitole se nejdříve seznámíme s finančním trhem FOREX a historií měnových trhů. Poté si představíme účastníky, kteří působí na trhu. Dále si uvedeme typy kontraktů, které je možné obchodovat a nakonec vysvětlíme vybrané základní pojmy, se kterými se můžeme setkat na finačních trzích.
1.1
FOREX
Znamená zkratku pro International Interbank Foreign Exchange [10, s. 17]. Tedy mezinárodní devizový trh, kde obchodujeme s měnami. Představuje největší a nejlikvidnější finanční trh na světě [5]. Denní obrat na FOREXu dosahuje několika bilionů amerických dolarů. V dubnu 2013 to bylo 5,3 bilionů amerických dolarů, což je oproti dubnu 2010 nárůst o 35% (obrázek 1.1). Forex je decentralizovaný trh, tzn. obchodování neprobíhá na jednom místě. V tom se liší od burzy, která má konkrétní místo pro obchodání komodit či akcií. Trh je otevřen 24 hodin denně 5 dní v týdnu. Na Forexu se obchoduje pomocí nejmodernějších prostředků techniky — počítačů a internetu přes makléře, banky a obchodníky po celém světě.
1.2
Historie měnových trhů
Historie měnových trhů je velice stará a neobsahuje pouze kapitoly, které se týkají peněz v podobě, ve které je známe dnes.
1.2.1
Naturální směna
V době před naším letopočtem, kdy neexistovaly peníze, obchody na trhu se prováděly pomocí barterových obchodů neboli naturální směně. Princip 3
1
1. Základní pojmy obchodování na finančních trzích
Obrázek 1.1: Průměrný denní obrat na FOREXu [1]
spočíval ve směně jednoho druhu zboží nebo služby za jiný druh. Postupem času došlo k vyčlenění určitého druhu zboží přímo k platbě na tzv. komoditní peníze, tj. zboží, které je všeobecně přijímáno jako platidlo [21]. Sem patřilo například obilí, kožešiny nebo dobytek. Avšak hlavní pozici zaujaly drahé kovy, především pak zlato a stříbro. To byl zásadní krok ke vzniku bimetalickému systému.
1.2.2
Bimetalický systém
V tomto systému, jak jsme již zmínili, sehrálo hlavní roli zlato a stříbro. S nadsázkou bychom mohli říci, že tyto dva kovy byly k použití jako platidla přímo předurčeny. Byly lehce dělitelné, dělením neztrácely svoji hodnotu, daly se slévat do větších celků, jsou stálé a v malém kousku najdeme velkou kupní sílu. Kupní síla zde představuje množství služeb a zboží, které můžeme získat za danou jednotku. Poměr zlata vůči stříbru byl dán volným trhem, postupem času však přednost dostávalo zlato a tak vznikl tzv. Zlatý standard. 4
1.2. Historie měnových trhů
1.2.3
Zlatý standard
Tento systém vznikal postupně během 19. století, kdy jednotlivé země postupně přecházely od placení zlatem ve fyzické podobě k vydávání papírových certifikátů, což nebylo nic jiného než bankovky, které udávaly jejich směnitelnost za zlato. Tímto docházelo ke shromažďování rezerv fyzického zlata v centrálních bankách jednotlivých zemí a k definic poměru svých měn k určitému množství zlata. Tento systém vydržel do první světové války. Po první světové válce se země vrátily ke zlatému standardu, ale po velké hospodářské krizi na přelomu dvacátých a třicátých let 20. století postupně od zlatého standardu upouštějí.
1.2.4
Bretton Woods
Druhá světová válka byla ve znamení omezení mezinárodního obchodu a posilování pozice USA jako světové velmoci. V červenci roku 1944 se konala mezinárodní měnová a finanční konference v americkém městě Bretton Woods (New Hampshire, USA). Konference se zúčastnilo 44 států, včetně tehdejšího Československa. Cílem bylo připravit předpoklady pro stabilní rozvoj mezinárodní měnové spolupráce po skončení druhé světové války. Výsledkem bylo zafixování jedné trojské unce zlata vůči americkému dolaru v hodnotě 35 USD za jednu trojskou unci. Ostatní země upevnily své měny na americký dolar. Důsledkem byl vznik soustavy pevných měnových kurzů, kdy země byly povinny udržovat pohyb svých kursů v rozpětí 1% od parity (kupní síly) [14, s. 595]. Konference také umožnila vznik Mezinárodního měnového fondu (MMF) a Mezinárodní banky pro obnovu a rozvoj (IBRD), nazývanou též Světovou bankou (WB) [6, s. 448].
1.2.5
Vznik volných měnových kursů
Brettonwoodský systém ve své původní podobě fungoval od konce druhé světové války do počátku sedmdesátých let 20. století. V poválečném uspořádání mezinárodního měnového systému sehrál pozitivní úlohu, ale postupem času se ukázalo jeho největší slabina, kterou byla vazba pouze na jednu národní měnu, tedy americký dolar. Problémy, kterým musela čelit americká ekonomika, se zákonitě musely odrazit v mezinárodním měnovém systému. Na přelomu 60. a 70. let byla inflace v USA kolem 6%, poté vyšplhala až na 10% [22], čímž důvěra vůči dolaru klesala. Naopak podhodnocenou měnou proti dolaru se stala západoněmecká marka. Pod vlivem dalšího oslabování amerického hospodářství zastavil prezident USA Richard Nixon 15. srpna 1971 směnitelnost dolaru na zlato. A v prosinci téhož roku na základě Smithonianské dohody došlo ke přijetí plovoucích kurzů [14, s. 598]. Toto rozhodnutí znamenalo ukončení období zlatého standardu a kolaps brettonwoodského systému. Postupně tedy vznikal trh volných měnových kurzů, který byl základem pro Forex. 5
1. Základní pojmy obchodování na finančních trzích
1.3
Účastníci trhu
Na finančních trzích se můžeme potkat s několika typy subjektů. Můžeme je rozdělit do těchto skupin [5]:
1.3.1
Banky
Tuto kategorii, která dominuje celému trhu, obsahují velké komerční banky, které jednak provádějí obchody pro svoje klienty a zároveň sami spekulují na pohyb trhu.
1.3.2
Centrální banky
Národní banky jednotlivých států vstupují na trh za účelem ovlivňování kurzu své měny. Dosahují toho pomocí nástrojů měnové politiky, kdy se snaží stimulovat, respektive utlumovat národní ekonomiku, s jejíž stavem je úzce spjata hodnota měny dané země.
1.3.3
Ostatní
Do této kategorii řadíme finanční a nefinanční subjekty. Mezi ty první patří rúzné finanční instituce, menší banky a investiční společnosti. Do druhé skupiny řadíme obchodující jednotlivce, kteří spekulují na vývoj kurzu měn.
1.3.4
Broker
Také se můžeme setkat s označením makléř. Úkolem brokera je zprostředkovávat obchody mezi jednotlivými účastníky trhu. Musí najít ke kupci prodávajícího a opačně.
1.4
Typy kontraktů
Na měnových trzích se můžeme setkat s několika typy kontraktů, které se dají uzavřít a každý má svoje parametry. Můžeme je rozdělit do několika kategorií [23]. Swapové a spotové kontrakty zabírají zhruba 80% z celkového denního objemu (obrázek 1.2). Charakteristiky jednotlivých operací jsou rozebrány níže.
1.4.1
Spot
Představuje směnu jedné měny za jinou měnu za aktuální kurz. Jde o kontrakt, u kterého nastává vypořádání do dvou pracovních dnů. 6
1.5. Důležité pojmy
1.4.2
Forward
Forwardový kontrakt zahrnuje výměnu dvou měn v budoucnosti (více než dva pracovní dny) za cenu sjednanou v přítomnosti. Obecně se forwardová transakce chápe jako smluvní dohoda mezi dvěma stranami nakoupit nebo prodat určitý produkt v určitý čas v budoucnosti za určitou cenu stanovenou v současnosti. Je tedy opakem spotové transakce.
1.4.3
Swap
Také označovaný jako FX swap. Jedná se o směnu kapitálu jedné měny do druhé měny. V případě, že první směna proběhne ihned, tak se jedná o swap složený ze spotové operace a forwardové operace. Pokud se první směna neuskuteční ihned, mluvíme o swapu složeném ze dvou forwardových operací s různou dobou splatnosti.
1.4.4
Currency Swap
Měnový swap je podobný FX swapu. Na počátku si swapový partneři vymění kapitál v různých měnách a během doby splatnosti si směnují úrokové platby. Na konci splatnosti dochází ke zpětné směně kapitálu ve stejném kurzu jako na začátku.
1.4.5
Currency option
Měnové opce se řadí mezi tzv. podmíněné termínové obchody [7]. Hlavním rozdílem oproti nepodmíněným obchodům, kam patří forward, je ten, že jedna strana je povinna na požádání sjednaný obchod splnit, zatímco druhá strana může žádat plnění obchodu nebo odstoupení. Opce nám tedy dává možnost, nikoliv povinnost, směnit cizí měnu k předem dohodnutému datu a kurzu.
1.4.6
FX futures
Je to typ forwardového kontraktu, který představuje pevnou dohodu mezi dvěma stranami o směně standartizovaného množství dané měny ke standartizovanému datu v budoucnosti za předem sjednanou cenu.
1.5
Důležité pojmy
V této podkapitole proběhne seznámení se základní pojmy, které je potřeba znát pro orientaci na finančních trzích. 7
1. Základní pojmy obchodování na finančních trzích
Obrázek 1.2: Podíl jednotlivých kontraktů [1]
1.5.1
Měna
Základním stavebním kamenem FOREXu jsou měny. Každá měna má svojí zkratku, která je tvořena třemi písmeny. První dvě identifikují název země a třetí označuje název měny. Měny na FOREXu můžeme rozdělit na tři skupiny. První skupina obsahuje nejvíce obchodované měny, také často označovány jako The Majors [3]. Tyto měny mají nejvyšší likviditu, což znamená množství peněz, které lze v daném okamžiku prodat či koupit. Mezi hlavní měny patří americký dolar, euro, japoský jen, libra šterlinků a švýcarský frank. Občas mezi nimi najdeme i novozélandský dolar, australský dolar a kanadský dolar, ale zde je nezařazujeme (obrázek 1.3) Součet jednotlivých podílů není 100% ale 200%, protože se měny vždycky obchodují v měnových párech, které jsou vysvětleny níže. Druhou skupinu označujeme jako vedlejší měny. Jsou také volně dostupné na trhu, ale nedosahují takové likvidity. Patří sem například zmíněný novozélandský dolar a koruny severských zemí. Poslední skupinou jsou exotické měny, se kterými se obchoduje výrazně méně a tedy mají nízkou likviditu. Řadíme sem například singapurský dolar, polský zlotý a také českou korunu.
1.5.2
Měnové páry
Jak jsme již zmíinili, měny se vyskytují v párech, což znamená směnu jednu měny za druhou. Zde existují dvě skupiny. První skupina obsahuje americký dolar. V této skupině je americký dolar na prvním místě kromě několik vý8
1.5. Důležité pojmy
Obrázek 1.3: Podíl jednotlivých měn [1]
jimek. Jsou to páry s librou šterlinků, australským dolarem a eurem. Zápis párů vypadá takto EUR/USD, USD/JPY nebo USD/CHF. Druhá skupina jsou tzv. křížové měny [8]. Jsou to páry, kde se nevyskytuje americký dolar. Například EUR/JPY. Zde si musíme položit otázku, zdali je výhodné směňovat tyto páry, neboť mají nízkou likviditu a tedy by nebylo výhodnější dané dvě měny směnit přes americký dolar. Jako příklad uvedeme křížový měnový pár EUR/JPY. Tento pár má podíl na denním obratu 2,8%, zatímco EUR/USD společně s USD/JPY mají dohromady 42,4% [1].
1.5.3
Bod
Zde se můžeme setkat i s označením pip. Představuje nejmenší obchodovatelnou hodnotu v dané měně. Zde neexistuje jednoznačná definice kolik by to mělo přesně být, hodnotu si určuje broker. U některých brokerů to je jedna desetitisícina, tedy 0,0001. U jiných je to jedna statisícina, tedy 0,00001. V této práci bude bod představovat druhou možnost, tedy v zápise bude 5 desetinných míst. Dále jinou hodnotu najdeme u měnových párů s japonským jenem, kde hodnota bodu se rovná jedné setině, tedy 0,01. Například pokud nakoupíme měnový pár EUR/SUD v kurzu 1,35912 a následně jej prodáme v kurzu 1,36722, náš zisk činí prostý rozdíl mezi cenami, tedy 1,36720-1,35910 = 810 bodů. 9
1. Základní pojmy obchodování na finančních trzích
1.5.4
Bid /Ask
Důležité je si uvědomit, že pokud se díváme na FOREX ze strany spekulantů, tak nakupujeme za cenu ask a prodáváme za cenu bid. Bid je vždycky na levé straně a je nižší. Například na měnovém páru EUR/USD je kurz 1,35894/1,35914. To znamená, že pokud chceme prodat základního měnu (EUR) platí pro nás první cena, respektive za 1 EUR dostaneme 1,36894 USD. Pro nákup platí druhá cena, tedy abychom mohli nakoupit 1 EUR potřebujeme 1,35914 USD.
1.5.5
Spread
Spread udává rozdíl mezi cenou bid a ask. Z pohledu obchodníka zaplacená částka za otevření kontraktu. Velikost spreadu je přímo úměrná likviditě. Čím vyšší likvidita, tím nižší spread. Nejnižší spread můžeme najít u nejvíce obchodovaných měn. Je to nejčastější typ transakčního poplatku. Například u měnového páru EUR/USD s kurzem 1,35897/1,35917 je hodnota spreadu 20 bodů.
1.5.6
Rollover
Neboli převedení. Představuje úrok za pozici, která je otevřená přes noc. Konec pracovního dne je v 21:59 (Londýnského času GMT). Každá měna má určitou výši úrokových sazeb a právě z rozdílu těchto sazeb se nám buď přičte nebo odečte určitá částka z účtu. Pokud nakupujeme měnu, která má vyšší úrokovou sazbu než měna, kterou prodáváme, částka se nám připíše na účet. V opačném případě se nám částka z účtu odepíše. Rollover nepředstavuje transakční poplatek, ale také může ovlivňovat naše obchody.
1.5.7
Lot
Lot je standartní jednotka objemu, se kterou se dá obchodovat. U měnových párů má jeden lot velikost 100 000 jednotek hlavní měny. U většiny brokerů můžeme obchodovat i s menšími objemy, tzv. miniloty, což je 0,1 velikost lotu a u některých i tzv. mikroloty, které představují 0,01 lotu.
1.5.8
Dlouhá pozice / krátká pozice
Při vstupu do pozice můžeme obvykle použít dva typy obchodů. V případě očekávání posílení měnového páru EUR/USD, zadáme příkaz BUY, tedy spekulujeme na vzestup ceny. Mnohem častěji, nejen v anglické literatuře, se dlouhá pozice označuje jako tzv. long. Oproti tomu při oslabení EUR/USD zadáme příkaz SELL, kdy spekulujeme na pokles ceny. Zde se setkáme s označením tzv. short pozice. 10
1.5. Důležité pojmy
1.5.9
Take profit / stop loss
Tyto dva termíny se již váží k otevřenému kontraktu. Take profit vyjadřuje hranici, při které obchod uzavřeme se ziskem. Dalo by se řící, že to je náš odhad, kam by cena mohla vystoupat při nákupu, popřípadě klesnout při prodeji. Je to pro nás užitečné, pokud nechceme sedět celou dobu u počítače a hlídat aktuální cenu. Stop loss je pravým opakem. Je to hranice, při které je náš obchod automaticky uzavřen, abychom zamezili dalším ztrátám, pokud se cena vyvíjí opačným směrem, než jsme předpokládali. Pokud je takeprofit užitečný, tak stoploss je nezbytně nutný.
1.5.10
Trailing Stop
Trailing stop se také váže k otevřenému kontraktu. Oproti stoplossu a takeprofitu, které představují statické hranice, trailing stop je inteligentní pokyn, který se dynamicky pohybuje podle trhu. Je to posuvný stoploss, který nám dokáže fixovat zisky. Jinými slovy, pokud máme otevřenou long pozici, trailing stop se pohybuje pouze ve směru long pozice. U short pozice je to tedy přesně naopak. S posuvným stop lossem souvisí i tzv. bod zlomu [27]. Obecná definice označuje tento bod jako místo, kde se negeneruje ztráta ani zisk. V našem případě to znamená posunutí hranice stop lossu na otevírací cenu. V anglickém jazyce se označuje jako break even point (B/E).
11
Kapitola
Možnosti analýzy trhu V této kapitole se seznáme s tím, jaké jsou možnosti při analyzování trhu, s čímž souvisí odhadování budoucího pohybu ceny, které se dá rozdělit na dva způsoby [10, s. 37]. Při sledování minulých pohybů cen používáme technickou analýzu. Pokud sledujeme vnější vlivy, používáme fundamentální analýzu, kterou popíšeme jako první.
2.1
Fundamentální analýza
Jak jsme již výše zmínili, tento typ analýzy se zaměřuje na vnější vlivy, které mohou s danými finančními instrumenty pohybovat. Patří sem ekonomické, sociální a politické ukazatele daných zemí, jejichž měnu chystáme obchodovat. V podstatě hledáme informace a údaje, které by mohly naznačovat posílení či oslabení dané měny. Fudamentální analýza je vhodná pro delší časový rámec.
2.1.1
Časové zóny
Na FOREXu se dá obchodovat 24 hodin denně právě kvůli časovým pásmům. Česká republika se nachází v časovém pásmu, díky kterému obchody začínají v neděli večer a končí v pátek večer (obrázek 2.1). Obchodovat se začíná v Sydney, poté následuje Tokyo, Londýn a nakonec New York, což jsou nedůležitější obchodní centra. Z toho také vyplývá, že největší volatilita bude na překrývajících se zónách. Volatilita zde představuje kolísavost kurzu daného instrumentu. Čím větší, tím větší rozpětí, ve kterém kurz kolísá. Pro obchodování nejvýznamějších párů je důležité překrývání Londýna a New Yorku, které nastává odpoledne našeho času.
2.1.2
Fiskální a monetární politika
Fiskální politika zahrnuje aktivní zasahování státu do hospodářství formou daní. Respektive stát vybírá daně a pak je přerozděluje, díky čemu ovliv13
2
2. Možnosti analýzy trhu
Obrázek 2.1: Obchodní časy [17]
ňuje určité oblasti hospodářství a tím i ekonomiku. Oproti tomu monetární (měnová) politika se zaměřuje na přístup k hospodářství pomocí měnových nástrojů centrální banky. Příkladem mohou být devizové intervence, které provedla Česká národní banka v listopadu roku 2013 za účelem oslabení české koruny [11].
2.1.3
Úrokové sazby
Jsou také nástrojem měnové politiky. Sazby udávají hodnotu úroků, za které si můžou komerční banky uložit přebytečnou likviditu u národní banky. Zvýšením se předpokládá vyšší zájem o měnu, protože pro banky je výhodnější držet právě tuto měnu a tedy přijímat vyšší úroky z uložených peněz. Snížením se očekává přesný opak.
2.1.4
HDP
Hrubý domácí produkt představuje klíčový ukazatel hospodářství daného státu a měří výkonnost ekonomiky. Představuje hodnotu všeho, co bylo v zemi za dané období vyrobeno, obvykle za rok [4].
2.1.5
Ekonomický kalendář
Existují další ukazatele podle kterých se dá odhadovat budouci vývoj kurzu. Například důležitým ukazatelem jsou zprávy o stavu zaměstnanosti. Samozřejmě by nebylo v lidskách silách všechny tyto informace shánět po jedné, proto existují webové agregátory, kde najdeme tzv. ekonomický kalendář, na kterém můžeme sledovat tyto události [9]. Jednotlivé hodnoty ukazatelů poskytují například statistické úřady jednotlivých zemí.
2.2
Technická analýza
Technická analýza se soustředí na minulý pohyb ceny, což tedy znamená, že historická data jsou používána k predikci budoucí ceny. Základní předpoklad
14
2.2. Technická analýza je ten, že všechny dostupné informace už jsou reflektovány v ceně dané měny. V praktické části bude automatický obchodní systém fungovat právě na základě této analýzy. Níže jsou popsány základní prvky, o které se opírá technická analýza.
2.2.1
Typy cen
Grafy byly zkonstruovány pro zobrazení ceny v závislosti na čase. Na grafu se mohou zobrazovat čtyři základní typy cen: • Open – otevírací cena, hodnota na začátku dané časové periody (například minuta, hodina, den, týden atd.) • Close – zavírací cena, hodnota na konci dané periody • High – nejvyšší cena, maximální hodnota během daného časového úseku • Low – nejnižší cena, minimální hodnota během daného časového úseku
2.2.2
Typy grafů
Můžeme se setkat se třemi typy grafů. Každý obchodník může používat jiný, podle toho, který mu jak vyhovuje nebo podle typu informace, které hledá. 2.2.2.1
Čárkový graf
Je to nejzákladnější typ grafu. Spojuje jednotlivé ceny během určitého časového úseku. I když s jeho pomocí si můžeme zobrazit různé ceny, nejčastěji se využívá k zobrazení zavíracích cen, které jsou považovány za nejdůležitjší. Nevýhodu můžeme vidět v tom, že z grafu nevyčteme chování trhu od jedné ke druhé zavírací ceně, proto se mnohem častěji používají následující dva typy.
Obrázek 2.2: Příklad čárkového grafu na měnovém páru EUR/USD 4H
15
2. Možnosti analýzy trhu 2.2.2.2
Sloupcový graf
Na tomto grafu už je informací více. Můžeme vidět, na které ceně daný měnový pár otvíral, jaká byla maximální, respektive minimální cena a kde nakonec uzavřel.
Obrázek 2.3: Příklad sloupcového grafu na měnovém páru EUR/USD 4H
2.2.2.3
Svíčkový graf
Tento graf má stejnou vypovídající hodnotu jako sloupcový graf, ale pro mnoho lidí je více přehlednější. Jednotlivá svíčka znamená daný časový úsek a jsou na ní vyznačeny všechny důležité ceny. Navíc se pomocí toho grafu hledají různé obrazce neboli patterny, podle kterých je možno vstupovat do obchodů.
Obrázek 2.4: Příklad svíčkového grafu na měnovém páru EUR/USD 4H
2.2.3
Trend
Trend vyjadřuje směr, kterým se trh pohybuje. Pokud pozorujeme posloupnost, která je tvořena rostoucími vrcholy a dny, respektive každý další vrchol
16
2.2. Technická analýza je vyšší než předchozí vrchol a každé další dno je vyšší než předchozí dno, mluvíme o rostoucím neboli býčím trendu. Opačný trend je klesající neboli medvědí. Při tomto trendu pozorujeme klesající vrcholy a dna. Každý další vrchol je nižší než předchozí vrchol a každé další dno je nižší než předchozí dno.
Obrázek 2.5: Příklad klesajícího trendu na měnovém páru EUR/USD 4H
2.2.4
Úrovně supportu a resistence
Jak z názvu vypovídá, jedná se o určité oblasti na grafu, kde se cena setkává s podporou nebo odporem. Důležité je si uvědomit, že sice do grafu je zakreslujeme jako čáry, ale ve skutečnosti jsou to oblasti. Support (neboli podpora) představuje místo, kde se cena odrazila při pádu zpět nahoru. U rezistence (neboli odporu) platí pravý opak. Místo, které cena nedokázala překonat a znamenalo obrat ve vývoji trhu. Samozřejmě, čím víc se cena daného místa dotkla, tím je tato hladina významnější. Také je velice důležité vědět, že hladina supportu se při proražení směrem dolů může stát resistencí a hladina resistence se proražením směrem nahoru může stát supportem.
Obrázek 2.6: Příklad hladin supportu a resistence na grafu GBP/USD 1H
17
2. Možnosti analýzy trhu
2.2.5
Indikátory technické analýzy
Indikátory jsou důležitou součástí nástrojů technické analýzy. Ve své podstatě se jedná o výsledek matematického výpočtu založeného především na ceně daného podkladového aktiva. Také platí, že technické indikátory jsou univerzální napříč finančními trhy. Nesetkáme se s nimi tedy jenom na FOREXu, ale například i na burze. Různé zdroje udávají různé rozdělení technických indikátorů do několika skupin. Zde použijeme rozdělení na trendové indikátory, oscilátory a ostatní, které budou obsahovat i predikující indikátory [10, s. 84]. V jiných zdrojích se můžeme setkat s dalšími skupinami jako jsou například indikátory sledující objem obchodů nebo sentiment indikátory [25, s. 495]. Další skutečností, která nepřispívá k jednoznačnému rozdělení indikátorů do přesných podskupin je ta, že určité indikátory vyznačují jak vlastnosti trendových indikátorů, tak oscilátorů. Takovým typem technického indikátoru je MACD, který je popsán níže. Pokud u některého indikátoru bude u jeho výpočtu použita cena, bude se jednat o jednu z následujících cen, se kterými se můžeme setkat. Jedná se o čtyři základní a následně další tři, které vznikly jejich kombinací [19]. • Open - otevírací cena za danou periodu • Close - zavírací cena za danou periodu • High - nejvyšší cena za danou periodu • Low - nejnižší cena za danou periodu • Median - medián ceny za danou periodu pm = (high + low)/2 • Typical - typická cena za danou periodu pt = (high + low + close)/3 • Weighted - vážená cena za danou periodu pw = (high + low + close + open)/4 2.2.5.1
Trendové indikátory
Také se můžeme setkat s označením tzv. trend–following metody, tedy metody, které následují trend [25, s. 495]. Hlavním cílem je identifikace trendu a jeho změny. Zmíněná vlastnost způsobuje, že tyto indikátory jsou schopny poznat změnu směru trendu, nicméně vždy však s určitým zpožděním poté, co ke změně již došlo, což může vést k eliminaci potenciálních zisků. 18
2.2. Technická analýza Klouzavý průměr (Moving Average) Nejzákladnějším typem trendových indikátorů jsou klouzavé průměry (MA). Klouzavý průměr vyhlazuje průběh ceny daného instrumentu, který zobrazí jako křivku a podle vlastností dané křivky nám lépe pomáhá odhalit trend. Nazývají se klouzavými, neboť hodnoty jsou průběžně přepočítávány v souvislosti s příchodem nových dat z trhu. Pokud máme určitou konečnou množinu dat (v případě finančních trhů reprezentovanou cenami daného podkladového aktiva), tak nová hodnota MA se vypočítá po operaci, při které z určité podmnožiny dat odebereme nejstarší hodnotu a přidáme nejnovější hodnotu. Máme několik typů klouzavých průměrů, které se liší především tím, jaké váhy příkladají jednotlivých hodnotám. Jednoduchý klouzavý průměr (Simple MA) Nejjednodušším, nejznámějším a méně citlivým druhem klouzavého průměru je jednoduchý klouzavý průměr. Hodnotu vypočítáme následujícím vzorcem: SM A(n) =
X p0 + p1 + · · · + pn−1 1 n−1 = pi , n n i=0
kde n . . . délka periody SMA pi . . . cena za daný časový rámec Jedná se pouze o aritmetický průměr jednotlivých kurzů během dané časové periody. Můžeme vidět, že tento klouzavý průměr přiřazuje všem hodnotám stejnou váhu. Nerozlišuje mezi mladšími a staršími kurzy, přestože význam obou kurzů ve vztahu k aktuální situaci na trhu je rozdílný. Vážený klouzavý průměr (Weighted MA) Jedním z typů klouzavých průměrů, které přiřazují různé váhy jednotlivým hodnotám je vážený klouzavý průměr. Matematicky se jedná o vážený aritmetický průměr kurzových hodnot za pevně stanovené období. Výpočet je velice podobný jednoduchému klouzavému průměru, rozdíl spočívá v přenásobení každé kurzového hodnoty různou vahou. Nejnovější hodnota má většinou váhu rovnou délce periody, oproti tomu nejstarší hodnota má váhu 1. Váha se pro jednotlivé kurzové hodnoty zmenšuje o 1, tedy lineárně. Výpočet uvádíme zde: n × p0 + (n − 1) × p1 + · · · + pn−1 SM A(n) = = n + (n − 1) + · · · + 1
Pn−1
i=0 (n − i) × pi , Pn−1 i=0 (i + 1)
Exponenciální klouzavý průměr (Exponential MA) Tento klouzavý průměr přiřazuje také jednotlivým kurzovým hodnotám různé 19
2. Možnosti analýzy trhu váhy. Ovšem narozdl od váženého klouzavého průměru, zde váhy klesají exponenciálně. Existují dva způsoby výpočtu. První spočívá v počítání se všemi svíčkami, které máme k dispozici. Druhý způsob se používá, pokud je svíček mnoho a výpočet by byl značně složitý. Například u minutového rámce, kde je například 60krát více svíček než na hodinovém rámci za stejný časový úsek. Při výpočtu se setkáme s parametrem α, který se vypočítá 2/(n + 1), kde n je délka periody. Pro vypočítání EMA za pevně danou periodu můžeme použít tento vzorec: p0 + p1 × α + p2 × α2 + · · · + pn−1 × (α)n−1 EM A(n) = = 1 + α + α2 + · · · + (α)n−1 Pn−1
=
i=0
pi × α i )
Pn−1 i α i=0
V případě neomezené periody můžeme použít tento vzorec, který využívá známou předchozí hodnotu EMA [26]: EM Acurr = p × α + EM Aprev × (1 − α) kde EM Aprev . . . hodnota předchozí EMA p . . . cena za současný časový rámec MACD MACD zkracuje Moving Average Convergence/Divergence. Je sice založen na třech exponenciálních kouzavých průměrech (EMA), ale výsledná hodnota se pohybuje kolem nuly, takže se může řadit i mezi oscilátory, které jsou popsány níže. Výpočet hodnoty MACD je uveden zde: M ACD = EM A1 − EM A2 Signální křivka = EM A3 Histogram = M ACD − Signální křivka Výchozí a nejčastější nastavení exponenciálních klouzavých průměrů je 12 - 26 - 9 [20, s. 123]. Tedy první dvě hodnoty délky periody EMA jsou použity na výpočet MACD, třetí hodnota je použita na výpočet signální křivky a počítá se z hodnot MACD. MACD se může použít na vyhledávání divergencí mezi hodnotou histogramu MACD a cenou podkladového aktiva. Pokud budeme například hledat medvědí divergenci, tak na grafu ceny bude nový vrchol, který je vyšší než předchozí, ale na histogramu budeme pozorovat vrchol, který bude nižší než předchozí, tedy vznikla neshoda mezi grafem ceny a histogramem MACD a to může znamenat obrat směru trendu. 2.2.5.2
Oscilátory
Oscilátory jsou také důležitou součástí nástrojů technické analýzy. Tento typ indikátorů dostal svůj název proto, že jejich hodnoty oscilují v určitém pásmu 20
2.2. Technická analýza a podle toho, kde se v tomto pásmu nacházejí, analyzujeme trh. Ideální tvar oscilátoru je sinusoida, které se pohybuje mezi svými extrémy. I oscilátory jsou vhodnější na trendující trhy. Relative Strength Index (RSI) Index relativní síly se používá k měření výkonnosti trhu v porovnání s jeho vlastní minulostí, nikoliv v porovnání s jinými instrumenty. Vzorec pro výpočet je následující [25, s. 506]: RSI = 100 −
100 1 + RS
kde RS. . . podíl průměrných kladných a záporných změn v kurzu během stanovené časové periody Volba délky periody není pevně daná, ale oproti tomu hodnoty RSI ano — pohybují se v pevně daném rozmezí 0–100. Signály, která dává RSI mohou být 70/30, kdy se sleduje překoupenost nebo přeprodanost trhu. Pokud RSI je nad hodnotou 70 znamená to, že trh je překoupený a lze očekávat změnu směru trendu z býčího na medvědí. Analogicky to platí pro klesnutí pod 30, kde se mluví o přeprodaném trhu a lze očekávat změnu trednu z medvědího na býčí. Obdobně se dají použít hranice 80/20 nebo 75/25. Commodity Channel Index (CCI) Neboli index komoditního kanálu. Tento index vynalezl Donald Lambert v 80. letech 20. století. CCI měří vztah ke klouzavému průměru, respektive dává do souvislosti vztah mezi současnou cenou a průměrnou cenou v minulosti. Výpočet uvádíme zde [24]: pt − SM A(n) k×σ kde
CCI =
pt . . . typická cena SM A(n). . . jednoduchý klouzavý průměr z typických cen za daný počet period σ. . . střední odchylka k. . . konstanta s hodnotou 0.015 Hodnotu konstanty k stanovil Lambert z toho důvodu, aby přibližně 70-80% hodnot CCI bylo mezi -100 a 100 při nastavení periody 20. Z toho plyne, že by se zbylých 20-30% hodnot mělo pohybovat mimo tyto hranice a dávat obchodní signály. Pokud zvolíme menší periodu bude hodnota CCI kolísat více a tedy procentuální zastoupení hodnot mezi -100 a 100 bude menší. Naopak pokud zvolíme delší periodu, procentuální zastoupení hodnot v daném rozpětí 21
2. Možnosti analýzy trhu bude větší. A zde platí úměra — čím kratší zvolíme periodu, tím více hodnot bude pod hranicí -100, respektive nad 100 a tím více bude signálů, správných i falešných, pro otevření pozice. Hranice -100 a 100 fungují na stejném principu jako hranice u RSI, sledujeme tedy přeprodanost a překoupenost daného instrumentu. Rozdíl oproti RSI spočívá, že CCI nemá pevně dané rozmezí, ve kterém se pohybuje. Další využití CCI spočívá v nakupu pokud CCI vzrostlo, respektive v prodeji pokud CCI kleslo. Stochastic Stochastik je typ oscilátoru, který měří, v které části daného rozpětí uzavřel kurz. Předpokládá se, že při rostoucím trendu se budou zavírací ceny pohybovat u horní hranice daného rozpětí, zatímco u klesajících je tomu naopak. Následující vzorec nám udává výpočet oscilátoru Stochastik [25, s. 509]: pc − pmin × 100 pmax − pmin %D = SM A(n) z %K
%K =
kde pc . . . poslední zavírací cena pmax . . . maximální cena za danou časovou periodu pmin . . . minimální cena za danou časovou periodu n. . . délka časové periody Jak vidíme, oscilátor Stochastik je charakterizován dvěma křivkami. První je %K, která představuje relaci mezi poslední zavírací cenou a cenovým rozpětím. Hodnoty této křivky oscilují mezi 0% až 100%. Hodnota 0% znamená, že zavírací cena je rovna minimální ceně za danou časovou periodu, což znamená, že se právě utvořilo nové minimum za daný časový úsek. Analogicky při hodnotě 100% se vytvořilo nové maximum. Stochastik tedy nesleduje samotnou cenu, ale spíše měří rychlost a sílu trhu. Druhá křivka %D je vytvořená jednoduchým klouzavým průměrem z křivky %L. Stochastik má různé interpretace. Jako signál se dá považovat překřížení daných křivek nebo překoupené/přeprodané oblasti, které se nacházejí nad 80%, respektive pod 20%. Také si musíme uvědomit, že délka časové periody, ze které se bere cenové rozpětí pro křivku %K, a délka časové periody, která je potřeba pro výpočet klouzavého průměru křivky %D, mohou být navzájem různé. Tedy výsledná podoba hodnoty indikátoru Stochastik záleží na volbě délky period a také na typu klouzavému průměru.
22
Kapitola
AOS - Návrh a realizace V této kapitole začneme seznámením se s druhy obchodních systémů a rozdíly mezi nimi, respektive čím se vyznačují. V další části provedeme návrh obchodního systému, který v poslední části této kapitoly realizujeme.
3.1
Obchodní systémy
Obchodní systém (OS) je naprostým základem obchodování na finančních trzích. Tento termín budeme chápat jako množinu pravidel, která nám definují, kdy vstoupit a vystoupit z obchodů. Rozdělit můžeme obchodní systémy podle míry automizace daných obchodních systémů [15].
3.1.1
Diskreční OS
V tomto typu obchodního systému je míra automatizace nulová. Také můžeme použít označení ruční obchodní systém. Kontrola pravidel pro vstup do pozice, stanovení take profitu, stop lossu, velikost pozice a následná úprava otevřené pozice se dělá manuálně. Samozřejmě zde existují pravidla, podle kterých se obchodník řídí, ale všechna tyto pravidla kontroluje obchodník sám. Nicméně není nic jednoduššího než tyto pravidla v určité chvíli porušit, proto v tomto typu systému hraje velkou roli psychika a důvěra obchodníka v daný obchodní systém.
3.1.2
Mechanické OS
Mechanické obchodní systémy už mají jistý stupeň automizace. Dalo by se říci, že se nacházejí na půli cesty mezi diskrečními a automatickými obchodními systémy. Automizace spočívá v kontrole daných pravidel vstupů do obchodu. Když jsou splněna pravidla pro vstup do pozice, které jsou automaticky kontrolována, tak je obchodníkovi poslán signál, ale konečné rozhodnutí o vstupu 23
3
3. AOS - Návrh a realizace do pozice opět spočívá na straně člověka. Signál může být například ve formě e-mailového upozornění.
3.1.3
Automatické OS
Tento typ obchodního systému se bude v další části této práce navrhovat a implementovat. Vyznačuje se nejvyšší mírou automizace prováděných operací. Obchody provádí nezávisle na našem rozhodnutí, nicméně podle předem definovaných pravidel. Stejně jako ostatní obchodní systémy, tak i tento typ má své výhody a nevýhody (tabulka 3.1), které si dále rozebereme. 3.1.3.1
Výhody a nevýhody AOS Tabulka 3.1: Výhody a nevýhody AOS Výhody
Nevýhody
Minimalizace emocí Historické testování Zachování disciplíny Zrychlení operací Diverzifikace obchodování
Nároky na stabilitu prostředí Dynamika trhu Chyby v kódu
Výhody Minimalizace emocí První věc, která každého napadne při porovnání obchodního systému, který má manuálně na starost člověk, a automatického obchodního systému, který má na starost robot, je ta, že robot nemá emoce. Neexistuje strach ze ztráty ani chtíč po vyšších ziscích, který by mohl eventuálně vést ke ztrátě místo k zisku. Historické testování Další z důležitých výhod je automatické testování na historických datech. Činnost, která by v případě ručního obchodního systému zabrala hodiny, je pomocí automatického obchodního systému vykonána v okamžiku. Uchování disciplíny Tento bod částečně souvisí s odstraněním emocí. Jedná se o disciplínu ve smyslu toho, že pokud by člověk, který obchoduje manuální systém, utrpěl několik ztrát po sobě, tak další obchodní příležitosti by mohl vynechat ze strachu o další ztráty. Přitom se může jednat o ziskový obchod. 24
3.2. Návrh AOS Urychlení Vyhledávání obchodní příležitosti, kontrola pravidel pro vstup, otevírání pozice, výpočet stoplossu a takeprofitu, určení velikosti pozice a zadání trailingstopu. Tyto činnosti, které musí člověk manuálně určit a zadat, zaberou určitý čas, který je s pomocí automatického obchodního systému zkrácen na minimum. Respektive robot tyto činnosti vypočítá a zadá téměř okamžitě. Diverzifikace obchodování Dostatečně robustní automatický OS dokáže sledovat na FOREXu mnoho měnových párů a analyzovat je současně, čímž je maximalizována efektivita, která by v případě manuálního OS byla o poznání menší. Nevýhody Stabilita prostředí Automatické systémy kladou vyšší nároky na určitou stabilitu prostředí, ve kterém ho provozujeme. I když je možnost nechat pracovat automatický OS, tak stále bychom ho měli monitorovat. Pro počítač je potřeba zajistit například záložní zdroj energie a stabilní připojení k internetu. Dynamika trhu Robot umí pouze to, co jsme mu naprogramovali. Má tedy omezenou inteligenci a vzhledem k velké dynamice trhu, kdy se trh neustále mění a vyvíjí je potřeba každý automatický OS dále rozvíjet a upravovat. Také sem můžeme zařadit nepředvídatelné chování trhu, na které nemusí být daný AOS připraven a může nám tím způsobit velké ztráty. Chyby v kódu Také se může stát, že robot bude špatně naprogramovaný a hrozí riziko chyby v kódu, které může zapříčinit v ostrém provozu velké ztráty.
3.2
Návrh AOS
Před samotnou implementací musíme určit základní charakteristiky, na kterých bude systém založen a definovat pravidla podle kterých bude vstupovat, vystupovat a modifikovat pozice. A také jak na sebe jednotlivé činnosti budou navazovat (obrázek 3.1).
3.2.1
Základní parametry AOS
Než se pustíme do definice pravidel pro operace s pozicemi, musíme si určit základní parametry, které bude splňovat náš automatický OS (tabulka 3.2). 25
3. AOS - Návrh a realizace • Systém bude pracovat na měnovém páru EUR/USD. Tento pár byl vybrán z toho důvodu, že je nejvíce obchodovaný, s čímž souvisí největší volatilita a tedy nejnižší spread • Časový rámec bude M30, který by mohl představovat dostatek obchodních příležitostí a narozdíl od menších časových rámců méně falešných signálů • Periodu klouzavého průměra zvolíme 30, což představuje vývoj ceny za posledních 15 hodin, nižší perioda by znamenalo více falešných signálů, vyšší číslo by znamenalo menší odezvu na změnu ceny • Perioda CCI se rovná 20, což znamená, že CCI bude o více citlivější na změnu ceny než MA Tabulka 3.2: Základní charakteristiky AOS
3.2.2
Měnový pár
Časový rámec
Perioda MA
Perioda CCI
EUR/USD
M30
30
20
Vstup do obchodu
Do obchodu bude systém vstupovat podle následujích pravidel: 1. Systém kontroluje vstupy do pozic pouze při otevírací ceně svíčky. V případě periody M30 je to tedy jednou za 30 minut. 2. Systém otevře long pozici pokud cena překříží MA zdola nahoru a zároveň CCI je větší než nula. Jinými slovy otevírací cena předcházející svíčky musí být menší než hodnota MA a otevírací cena současné svíčky musí být větší než hodnota MA. 3. Otevření short pozice sytém provede ve chvíli, kdy cena překříží MA zhora dolů a zároveň hodnota CCI je menší než nula. Zde platí, že otevírací cena přecházející svíčky musí být větší než hodnota MA a otevírací cena současné svíčky musí být menší než hodnota MA
3.2.3
Modifikace pozice
Pokud systém nalezne otevřenou pozici, tak nebude otevírat další, ale pouze pouze se pokusí upravit stávající. Systém bude provádět dvě různé úpravy, které se budou týkat Stop Lossu a přímo souviset s Trailing Stopem: 1. Pokud současná cena je vzdálená od otevírací ceny více než je hodnota Trailing Stopu, poté se přesune Stop Loss z výchozí hodnoty na otevírací cenu. To znamenená, že v případě nepříznivého vývoje ceny, uzavřeme 26
3.2. Návrh AOS obchod beze ztráty a zisku. Toto představuje posun na stop lossu na B/E hranici. 2. Pokud systém zjistí, že posunutí na otevírací cenu už proběhlo, provádí funkci Trailing Stopu. Tedy v případě, že se obchod pohybuje správným směrem, tak se stejným směrem pohybuje i Stop Loss, který se nechází ve vzdálenosti jaká je hodnota Trailing Stopu a tím pádem již fixuje dosažené zisky.
3.2.4
Výstup z obchodu
Otevřená pozice se může uzavřít pouze dvěmi způsoby: • Aktivuje se takeprofit. V tomto případě je pozice uzavřená se ziskem, který byl zadán při otevírání pokynu • Aktivuje se stop loss. V tomto případě můžeme realizovat jak ztrátový tak ziskový obchod. V případě ziskového obchodu jsme se posouvali dříve pomocí trailing stopu, takže systém nám fixoval zisky. Pokud realizujeme ztrátu, znamená to, že od počátku se vyvíjel trh opačným směrem než jsme předpokládali.
3.2.5
Výstup do souboru
Pro následné vyhodnocení AOS je potřeba sledovat dva údaje — celkovou výši spreadu, který představuje transakční poplatek a rolloveru. Celková výše spreadu by šla vypočítat prostým pronásobením počtu obchodů a výškou spreadu. Ovšem výše spreadu není v čase konstantní, tedy se musí průběžne počítat z otevřených pozic. Rollover se počítá pouze z pozic držených přes noc, tedy se to bude týkat jen některých pozic. Celkovou výši rolloveru zjistíme poté z procházení historie obchodů. Obě informace se budou zapisovat do souboru s výstupním formátem .csv, který bude dále obsahovat cenu a spread pro každou otevíranou pozici.
3.2.6
Nefunkční požadavky na AOS
Nejdříve je nutné stanovit jakou obchodní platformu, programovací jazyk a prostředí budeme používat. 3.2.6.1
Výběr platformy
Pro obchodování na FOREXu je nejvíce využívanou platformou MetaTrader. Tento klientský terminál byl vyvinut společností MetaQuotes Software Corps. Při volbě zde máme na výběr ze dvou možností: • MetaTrader 4 (dále jen MT4) 27
3. AOS - Návrh a realizace • MetaTrader 5 (dále jen MT5) Zvolíme MT5 před MT4. MT4 je starší platforma, která se těší vysoké oblibě a poskytuje ji drtivá většina brokerů. Nicméně budoucnost patří MT5, která byla uvedena na trh v polovině roku 2010 [18]. Poskytována je menším počtem brokerů, ale postupně, jak budou lidé přecházet z MT4 na MT5, ji bude nabízet více brokerů. Přechod je pomalejší z toho důvodu, že není zpětná kompatibilita mezi MT5 a MT4. Avšak nejdůležitějšími důvody pro upřednostnění MT5 je pokročilejší testování obchodních strategií a hlavně programovací jazyk MQL5. 3.2.6.2
Výběr jazyka a prostředí
MT5 obsahuje vlastní IDE, které poskytuje nástroje pro vývoj automatických obchodních systémů, které jsou v tomto prostředí označovány jako Expert Advisors (EA). MQL5 je objektově orientovaný jazyk postavený na konceptech programovacího jazyka C++.
3.2.7
Optimalizace
Nejdůležitější vlastností AOS je pomocí množiny pravidel určit co nejvíce vhodných okamžiků pro vstup do obchodu. V našem případě se jedná o filtrování podle hodnoty MA, CCI a také obchodování pouze na otevírací ceně dané svíčky. Dalším způsobem bude zvolení obchodního rozpětí. Výběrem dvou hodin definujeme časy, ve kterých bude možno provádět vstupy do obchodů. Zde se hodí použít optimalizaci, která má výhodu v tom, že automaticky zkusí všechny možné kombinace daných parametrů a zobrazí nejvhodnější nastavení. MetaTrader nabízí rozsáhlé možnosti optimalizace. Umožňuje nám optimalizaci přes různé parametry. Od délek klouzavých průměrů přes parametry jiných technických idnikátorů až po různé hodnoty take profitu v kombinaci se stop lossem. Vzhledem k tomu, že měnový pár je EUR/USD a tedy největší volatilita je během dne, tak předpokládáme, že výsledkem optimalizace bude stanovení obchodního rozpětí během dne, nikoliv v noci.
3.3
Realizace AOS
Tato část kapitoly obsahuje samotnou realizaci automatického obchodního systému. Základem každého EA jsou tři funkce, které jsou nezbytné pro každý automatický OS, který je napsán v jazyce MQL5. Jedná se o tyto tři funkce: • OnInit - ihned poté, co MetaTrader5 načte EA, se spustí tato funkce, která inicializuje základní nastavení daného EA 28
3.3. Realizace AOS • OnTick - představuje funkci, která se zavolá pokaždé, pokud dojde ke změně ceny. V této funkci probíhají veškéré výpočty pro vstup a modifikaci otevřené pozice • OnDeinit - tato funkce se zavolá v případě ukončení běhu naší obchodní strategie Dále soubor obsahuje jednu třídu CTrading, která byla napsána pro potřeby AOS, který byl navrhnut v předešlé části kapitoly. Třída obsahuje metody, které mají za úkol ověřit správné nastavení vstupních parametrů, inicializaci hodnot indikátorů, správu otevřených pozic a kontrolu množiny pravidel pro vstup do obchodu.
3.3.1
Vstupní parametry
MetaTrader5 umožňuje při zapínání obchodních robotů zadat vstupní parametry, které jdou navolit přímo z MT5. Je to užitečné pokud při testování potřebuje nastavit parametrizaci obchodních pozic nebo různé nastavení technických indikátorů. Tento obchodní systém budu umožňovat volbu 9 vstupních parametrů (tabulka 3.3). První čtyři souvisejí s parametrizací otevíraní nové pozice, další dva určují délku period pro technické indikátory pro kontrolu splněných pravidel pro vstup do pozice. Poslední tři se týkají optimalizace, která je ve výchozím nastavení vypnutá, tedy určení hodin, během kterých se může obchodovat. Tabulka 3.3: Vstupní parametry Název parametru InputLots InputTakeProfit InputTrailingStop InputStopLoss InputMAPeriod InputCCIPeriod InputTradeHours InputStartHour InputEndHour
3.3.2
Výchozí hodnota
Význam
1 1 000 150 250
Velikost Velikost Velikost Velikost
30 20 false 0 0
pozice TP (v bodech) posuvného stop lossu SL
Délka periody MA Délka periody CCI Povolení obchodních hodin Rozpětí povolených obchodních hodin
Inicializace
Jak jsme již zmínili, nejprve se volá funkce OnInit. V této funkci si třída volá svojí vlastní metodu OnInit, která zajišťuje uložení vstupních parametrů do třídních proměných. Dále vytváří soubor data.csv pro evidenci transakčních poplatků. Poté jsou volány dvě funkce — InitCheckParameters a 29
3. AOS - Návrh a realizace
Start AOS
Inicializace
Modifikace pozice
Ano
Otevřená pozice?
Ne
Nová svíčka?
Ano Ne Splněné podmínky pro SHORT pozici?
Ne
Splněné podmínky pro BUY pozici?
Ne Ano
Ano Otevření pozice
Obrázek 3.1: Vývojový diagram AOS
30
3.3. Realizace AOS InitIndicators. První slouží k validaci vstupních parametrů a druhá slouží k inicializaci technických indikátorů (MA a CCI). Obě tyto funkce mají návratovou hodnotu typu bool. Pro pokračování běhu EA je potřeba od obou funkcí návratová hodnota true.
3.3.3
Změna ceny
Při každé změně ceny se volá funkce OnTick. I v tomto případě si třída volá svojí vlastní metodu OnTick. Nejprve se překopírují aktuální hodnoty indikátorů a informace o měnovém páru ze serveru do bufferů. Poté tyto hodnoty z bufferů uložíme do třídních proměnných, které jsou pak používány během kontroly pravidel pro vstup do obchodu. Následně se volá funkce SelectPos, která vrací hodnotu true v případě, že je otevřená nějaká pozice. V opačném případě vrací false. 3.3.3.1
Existující otevřená pozice
Pokud existuje otevřená pozice, zavolá se funkce TrailingStop, která zajišťuje posunutí hranice stop lossu na otevírací cenu dané pozice, tedy bod zvratu, a dynamický pohyb hranice stop lossu, tedy klasický princip trailing stopu. Funkce si nejprve určí, jestli se jedná o pozici typu BUY nebo SELL. Popíšeme si pozici typu BUY, v případě typu SELL to bude analogicky opačně. V případě posunutí hranice na otevírací cenu musí platit, že otevírací cena musí být větší než současný stop loss, tato podmínka také určuje, jestli se má provádět kontrola pro posunutí ceny na vstupní cenu nebo dynamický stop loss, a současná cena musí být větší než součet otevírací ceny a velikosti trailing stopu. Pokud tyto podmínky platí, dojde na posunutí stop lossu na hranici otevírací ceny, tedy na B/E. Jestli otevírací cena je menší nebo rovna současnému stop lossu, znamená to, že posun na bod zvratu už proběhl a kontrolují se podmínky pro posun stop lossu. Zde musí platit, že současná cena je větší než součet současného stop lossu a trailing stopu. Pokud platí, vypočítá se nová hodnota stop lossu tak, že se od současné ceny odečte hodnota traling stopu. Poté se pomocí funkce OrderSend odešle na server požadavek o úpravu dané pozice na nový stop loss. 3.3.3.2
Žádná otevřená pozice
V situaci, kdy není otevřená pozice, se kontroluje množina definovaných pravidel pro vstup do obchodu. Nejprve se zjišťuje, jestli je povolené filtrovat obchody podle rozpětí hodin. To určíme na základě vstupního parametru InputTradeHours. V případě hodnoty true se volá funkce CanTradeHours, ve které se vyhodnocuje, jestli jsme v rozpětí hodin zadaných v podobě vstupních parametrů. V případě, že obchodní hodiny jsou vypnuté, se pokračuje v běhu funkce OnTick. Pokud je obchodní rozpětí povolené, ale nejsme v daném rozpětí, běh funkce OnTick se ukončí. Dále se volá funkce IsNewBar, která 31
3. AOS - Návrh a realizace ma za úkol kontrolovat, jestli právě proběhlo otevření nové svíčky. V případě nové svíčky běh funkce pokračuje, v opačném případě se běh funkce ukončí. Následně se volá funkce CheckForLong, respektive CheckForShort, která má za úkol ověřit pravidla pro otevření dlouhé pozice, respektive krátké pozice. V obou funkcích probíhá kontrola pravidel pro otevření pozice, jak bylo popsáno v návrhu. Také se zde zapisuje průběžne výše spreadu do souboru .csv. Pokud se splní pravidla, která se týkaji MA a CCI, vypočítá se výše stop lossu a take profitu a poté se zavolá funkce OpenPosition, které se předají tyto parametry a informace, jestli se jedná o dlouho nebo krátkou pozici. V této funkci se provede uložení parametrů obchodu do struktury MqlTradeRequest, která je společně se strukturou MqlTradeResult předána funkci OrderSend, která pošle požadavek na server o otevření pozice.
3.3.4
Deinicializace
Při deinicializaci AOS se volá funkce OnDeinit. Také zde si třída volá svoji vlastní funkci OnDeinit, která zajišťuje zápis do souboru, který uchovává informace o transakčních poplatcích. Nejdříve pomocí funkce HistorySelect stanovíme časové rozpětí, ze kterého budeme při výpočtu vycházet. Začátek zde představuje spuštění systému a konec čas, při kterém dochází k deinicializaci systému. Musíme si uvědomit, že počet obchodů je dvojnásobný oproti počtu pozice. Je to z toho důvodu, že vstup do obchodu představuje nákup, respektive prodej dané měny, a výstup představuje operaci opačnou. Z toho plyne že pro každou pozici musíme mít dva obchody — jeden při vstupu a jeden při výstupu. Pro počítání rolloveru pro nás bude zajímavý výstup z obchodu, neboť až při něm víme jestli byl rollover a v jaké výši. Následně celkovou výši spreadu a rolloveru zapíšeme do souboru data.csv.
3.3.5
Optimalizace
Požadavky na nastavení optimalizace nás přenášejí do MetaTraderu 5, kde je potřeba nastavit testování strategie pro optimalizaci. Z pohledu realizace na úrovni zdrojového kódu, je potřeba tří vstupních parametrů — InputTradeHours, InputStartHour, InputEndHour a funkce CanTradeHours, která určuje na základě vstupních parametrů, zda-li je možno obchodovat či nikoliv. Proces optimalizace podrobněji popíšeme v následující kapitole, která se bude týkat testování v programu MetaTrader 5.
32
Kapitola
Vyhodnocení AOS 4.1
Testování na historických datech
V této kapitole si popíšeme testování na historických datech a poté statistické zhodnocení výsledků našeho AOS z pohledu ziskovosti a transakčních poplatků. Testování probíhalo na měnovém páru EUR/USD v období od 1.1.2012 do 31.12.2012, kde historická data byla použita ze serveru společnosti Alpari. Časový rámec byl M30 se základním kapitálem 10 000 USD. Nejprve si ukážeme AOS bez optimalizace. Poté provedeme optimalizaci a následně si zhodnotíme systém podle nastavení nejlepšího výsledku při optimalizaci.
4.1.1
Bez optimalizace
Pomocí testování na historických datech zjistíme, že strategie na daném časovém rozpětí je zisková (obrázek 4.1). Počáteční kapitál byl zhodnocen na 19 24,20 USD. Osa x představuje obchody v čase, osa y představuje zůstatek kapitálu. Z pohledu na graf můžeme říci, že strategie byla úspěšnější v první polovině měřeného období, tedy v roce 2012, kdy se zůstatek na účtu dostal ke hranici 20 000 USD. Nicmémě druhá polovina měřeného období, tedy rok 2013, nepřinesla žádné zhodnocení základního kapitálu. Další informace o výsledcích strategie rozebereme při srovnání se strategií po optimalizaci.
4.1.2
Optimalizace
Nastavení pro optimalizaci provedeme přímo v MetaTraderu 5. V základním nastavení povolíme optimalizaci a provedeme nastavení vstupních parametrů (tabulka 4.1). Počet průchodů bude dán počtem různých kombinací vstupních a výstupních hodin — 24 × 24 = 576 průchodů. Optimalizovat se dá podle maximálního konečného zůstatku nebo v kombinaci s nějakým dalším ukazatelem, který charakterizuje výsledky testování. Tato optimalizace bude 33
4
4. Vyhodnocení AOS
Obrázek 4.1: Výsledný graf bez optimalizace
přes kombinaci konečné výše kapitálu a ukazatel zisku, který vyjadřuje poměr hrubého zisku a hrubé ztráty. Tabulka 4.1: Nastavení parametrů Název parametru
Počáteční hodnota
Krok
Konečná hodnota
Počet kroků
InputStartHour InputEndHour
0 0
1 1
23 23
24 24
MetaTrader 5 provede testování podle zadaných parametrů a vyhodnotí jejich nejvhodnější nastavení. Vzorec, který používá pro výpočet hodnot jednotlivých průchodů je uveden zde: P růchodi =
hrubý ziski konečný zůstateki × hrubá ztrátai
!
kde i. . . jednotlivé výsledky pro různé kombinace vstupních parametrů Výsledky pro jednotlivé průchody nám pak zobrazí MetaTarder5 (obrázek 4.2). Na ose x leží jednotlivé hodiny pro začátek obchodování (parametr InputStartHour), na ose y leží hodiny pro konec obchodování (parametr InputEndHour). Aby výsledný graf byl co nejvíce přehledný, jednotlivé výsledky jsou zaznamenávány různými barvami. Od bílé přes zelenou až po černou. Čím tmavší, tím lepší výsledek. Můžeme tedy vidět, že nejtmavší odstín má políčko pro obchodování mezi pátou až šestou hodinou ranní. Jinak celkově nastavení pro začátek obchodování kolem páté hodiny ranní a koncem v odpoledních hodinách dává nejlepší výsledky. Předpoklad toho, že výsledek optimalizace by měl ležet v hodinách během dne, nikoliv v noci, byl správný. Přisuzujeme to tomu, že největší pohyby ceny jsou během dopoledne až odpoledne, a v ranních hodinách se vyskytují příležitosti pro vstup do obchodu, podle kterých se dařilo odhadnout kam se bude trh v nsáledujících hodinách pohybovat. 34
4.2. Srovnání výsledků testování
Obrázek 4.2: Optimalizace podle obchodního rozpětí
4.1.3
Použití výstupů optimalizace
Pokud použijeme nejlepší nastavení podle výsledků optimalizace, zjistíme, že strategie je také zisková (obrázek 4.3). Počáteční kapitál byl zhodnocen na 15 243 USD. Pouhým pohledem na graf můžeme říci, že křivka zůstatku majetku je více podobná přímce než výsledek bez použití obchodního rozpětí.
Obrázek 4.3: Výsledný graf s použitím optimalizace
4.2
Srovnání výsledků testování
Při vyhodnocení ze statistického pohledu nás bude zajímat několik následujících ukazatelů, které jsou výstupem testování na MetaTraderu 5. Hrubý zisk Součet všech ziskových obchodů. Hrubá ztráta Součet všech ztrátových obchodů. Čistý zisk Rozdíl mezi hrubým ziskem a hrubou ztrátou. Ukazatel zisku Podíl mezi hrubým ziskem a hrubou ztrátou.
35
4. Vyhodnocení AOS Průměrný výnos Podíl mezi čistý ziskem a počtem obchodů. Může představovat i předpokládaný zisk na každou další otevíranou pozici. Absolutní pokles Rozdíl mezi počátečním kapitálem a nejměnším zůstatkem na účtu během testování. Maximální pokles Největší z rozdílů mezi lokálním maximem a následujícím lokálním minimem zůstatku na účtu během testování. Při srovnávání jednotlivých výsledků strategií by byla chybou se zaměřit pouze na jeden typ ukazatele, protože to může být velmi zavádějící. Pouze srovnáním několika ukazatelů dostaneme komplexní přehled o dané strategii. V našem případě probíhala optimalizace podle maximálního konečného zůstatku a ukazatele zisku.
4.2.1
Celkový zisk
Pokud se podíváme na výsledky (tabulka 4.2) z pohledu konečné výše zůstatku, čístého zisku a hrubého zisku, tak hodnoty jednotlivých ukazatelů jsou vyšší u strategii bez optimalizace než u strategie se stanovením obchodního rozpětí. Nicméně toto srovnání je velmi zavádějící, protože zanedbává množství uskutečněných transakcí. Strategie s obchodním rozpětím má počet obchodů v řádu desítek, oproti tomu strategie bez optimalizace v řádu stovek.
4.2.2
Průměrný výnos a ziskovost
Jestli chceme porovnávat strategie, které mají rozdílný počet transakcí, musíme použít jiné ukazatele, které zohledňují různý počet transakcí. Takovým typem ukazatele je ukazatel zisku, který ukazuje poměr mezi hrubým ziskem a ztrátou. Ukazatel nabývá hodnoty větší než 0. Pokud strategie má ukazatel ziskovosti menší než 1, znamená to, že ztráty převažují nad zisky a dále bychom se touto strategií neměli zabývat. Z výše zmíněného plyne, že čím větší je hodnota tohoto poměru, tím efektivnější je naše strategie. V porovnání vychází jednoznačně lépe strategie s obchodním rozpětím, která má tento ukazatel na hodnotě téměř tři. Dalším takovým ukazatelem, pomocí kterého můžeme poměřovat dvě strategie s různým počtem transakcí, je průměrný výnos. Vyjadřuje poměr mezi čistým ziskem a celkovým počtem obchodů. Pokud by byl průměrný výnos na pozici záporný, strategii by byla ztrátová. Tedy je jasné, že opět budeme hledat vyšší hodnotu. Průměrný výnos na pozici je v případě strategie s obchodním rozpětím zhruba desetkrát vyšší než u strategie bez optimalizace. 36
4.2. Srovnání výsledků testování
4.2.3
Poklesy
Hodnocení z pohledu výše zmíněných ukazatelů nám leccos řekne o ziskovosti, respektive ztrátovosti dané strategie, ale neřekne nám nic o tom, jak zisky, respektive ztráty probíhají. Velice důležitým ukazatelem jsou poklesy. Jedním z nich je absolutní pokles, který vyjadřuje o kolik maximálně klesl účet oproti počátečnímu kapitálu. V tomto ukazateli je na tom lépe strategie bez optimalizace. Druhým je maximální pokles, který se dá považovat za jeden z nejdůležitějších ukazatelů. Představuje, jak velkým poklesem kapitálu strategie historicky prošla. Tento ukazatel je tak důležitý, protože ukazuje nejvyšší propad kapitálu a tím dává odpověď na to, kolik bychom potřebovali kapitálu, kdybychom začali tuto strategii obchodovat před začátkem tohoto propadu, tedy v nejhorší možnou chvíli. Je zřejmé, že hodnota tohoto ukazatele by měla být co nejnižší. Strategie s obchodním rozpětím má maximální pokles 540 USD, což je zrhuba 5% z počátečního kapitálu. Strategie bez optimalizace má maximální pokles téměř 5000 USD, což představuje téměř 50% z počátečního kapitálu.
4.2.4
Procento ziskových obchodů
Dalším ukazatelem je procentuální zastoupení ziskových, respektive ztrátových obchodů z celkového počtu obchodů. Pomocí optimalizace a následného stanovení obchodního rozpětí se podařil zvýšit podíl ziskových obchodů ze zhruba 63% na necelých 76%. Zde bychom se také měli snažit tento ukazatel maximalizovat. Tabulka 4.2: Výsledky strategií Ukazatel Konečný zůstatek (USD) Čistý zisk (USD) Hrubý zisk (USD) Hrubá ztráta (USD) Ukazatel zisku Průměrný výnos (USD) Absolutní pokles (USD) Maximální pokles (USD) Korelační koeficient Počet transakcí Ziskové obchody (% celkem) Ztrátové obchody (% celkem)
Bez optimalizace
Obchodní rozpětí (5-6)
19 243.20 9243.20 81 404.40 72 161.20 1.13 12.37 390.90 4819.10 0.67
15 243 5243 7874 2631 2.99 127.88 540 540 0.97
747 469 278
41 31 10 37
4. Vyhodnocení AOS
4.2.5
Korelační koeficient
Zajímavým ukazatelem, který nám MetaTrader 5 poskytne ve výsledcích je korelační koeficient, který udává míru podobnosti mezi křivkou vývoje zůstatku na účtu a přímkou, která byla získána pomocí lineární regrese. Lineární regrese se použije, pokud je potřeba soubor bodů v grafu aproximovat přímkou. V našem případě soubor bodů v grafu je definován na ose x jako jednotlivé obchody a na ose y výše zůstatku kapitálu. Pomocí metody nejmenších čtverců se vypočítá tato přímka a právě podobnost této přímky a křivky výše zůstatku kapitálu, která vznikne spojením jednotlivých bodů, určuje korelační koeficient [2]. Čím více je křivka podobná přímce, tím více se hodnota tohoto koeficientu blíží hodnotě 1. Naopak čím více se blíží k hodnotě 0, tím více je obchodování nekonzistentní. U strategii s obchodním rozpětím je hodnota 0,96 a strategie bez optimalizace je hodnota 0,67. Pohledem na křivku zůstatku u strategie s obchodním rozpětím je vidět, že je mnohem více podobná přímce (obrázek 4.3) než strategie bez optimalizace (obrázek 4.1).
SX,Y SX × SY n 1+n 1 X (i − = )(xi − x ¯) n − 1 i=1 2
r= SX,Y
v u u SX = t
n 1 X (xi − x ¯)2 n − 1 i=1
v u u SY = t
n 1 X 1+n 2 (i − ) n − 1 i=1 2
kde n. . . celkový počet obchodů x ¯. . . průměr z jednotlivých zůstatků xi . . . zůstatky na účtu pro daný obchod
4.3
Ekonomické zhodnocení
Dalším způsobem nahlížení na AOS je z pohledu transakčních poplatků. Jak jsme již dříve zmínili, transakční poplatek zde představuje spread. Další pohled může poskytnout i rollover, který se počítá pro pozice držené přes noc. Jiný pohled může být naříklad pomocí tradičních ekonomických ukazatelů jako je návratnost investice (ROI), čistá současná hodnota (NPV) nebo vnitřní výnosové procento (IRR). 38
4.3. Ekonomické zhodnocení
4.3.1
Transakční poplatky
Představují poplatky, které platíme brokerovi za zprostředkování obchodu. V této práci jsme se zaměřili na transakční poplatek ve formě spreadu.( tabulka 4.3).
Tabulka 4.3: Výsledky strategií Ukazatel Celkový spread (USD) Celkový rollover (USD)
4.3.1.1
Bez optimalizace
Obchodní rozpětí (5-6)
9371 −59.8
514 0
Spread
Spread je poplatek za otevření každé pozice. Z toho plyne, že celková výše spreadu je přímo úměrná celkovému počtu obchodů. Celková výše spreadu u strategie bez optimalizace dosáhla na částku 9 371 USD. Oproti tomu u strategie s obchodním rozpětím je celková výše spreadu pouze 514 USD. Jak tedy vidíme, důležitou roli z hlediska ziskovosti dané strategie hraje celkový počet obchodů. V případě první strategie dosahuje celkový spread více jak 90% ze základního kapitálu.
4.3.2
Rollover
Rollover představuje částku, která je založena na rozdílné výši úrokových sazeb daného měnového páru. A pouze se týká pozic, které držíme pozici přes noc. Je tedy zřejmé, že se nemusí týkat každé pozice, jako tomu je v případě spreadu. Celkové výše rolloveru u strategie bez optimalizace je -59,8 USD. Částka je záporná, protože jsme zmiňovali, že rollover nám může být na účet připsán nebo odepsán v závislosti na rozdílu úrokových sazeb daných měn. U druhé strategie je celková výše rolloveru nulová. Je to z toho důvodu, že otevíráme obchody pouze v ranních hodinách a žádnou pozici během testování jsme nedrželi více jak 16 hodin (obrázek 4.4). Na ose y je délka držení pozice v hodinách a na ose x je výše zisku nebo ztráty. První strategie otevírá pozice během celého dne, nejen ráno. Je tedy rozumné předpokládat, že rollover bude pravděpodobně vyšší. 39
4. Vyhodnocení AOS
Obrázek 4.4: Délka držení pozic v závislosti na zisku
4.3.3
Ekonomické ukazatele
Pro vyhodnocení daných strategií můžeme použít také ekonomické ukazatele, které hodnotí efektivnost jendotlivých investic a jestli se vyplatí. Tyto ukazatele jsou univerzální a můžeme je tak použít i na hodnocení našich strategií.
4.3.3.1
ROI
Návratnosti investice (ROI) vyjadřuje čistý zisk nebo čistou ztrátu vůči počáteční investici a obyčejně se vyjadřuje v procentech [13].
ROI(%) =
celkový zisk − investovaný kapitál × 100 investovaný kapitál
ROI pro strategii bez optimalizace vychází téměř 93%, pro strategii s obchodním rozpětím je necelých 53%. Je tedy patrné, že ROI pracuje pouze s konečným ziskem a počáteční investicí a tedy nijak nezohledňuje počet obchodů. Navíc tato hodnota ROI platí pro časové období, oproti kterému jsme testovali dané strategie.
4.3.3.2
NPV
Čistá současná hodnota (NPV) se používá pro zjištění celkové současné hodnoty. Její předností je to, že respektuje časovou hodnotu peněžních toků pomocí diskontování [12]. Čistá současná hodnota pro projekty, které se vyplatí, by měla vycházet jako kladné číslo. 40
4.3. Ekonomické zhodnocení
t X
NPV =
i=0
CFt (1 + r)t
kde CFt . . . peněžní toky v jednotlivých letech t. . . doba životnosti r. . . diskontová míra
Dobu životnosti našeho systému bereme z pohledu doby historického testování, tedy dva roky. Diskontovou míru jsme stanovili ve výši 0,1. Peněžní toky pro strategii s obchodním rozpětím představují nejprve investovaný kapitál (-10 000 USD), poté čistý zisk po prvním roce (2 170 USD) a poté na konci představuje čístý zisk za druhý rok společně s investovaným kapitálem (13 073 USD). Hodnota NPV je tedy 2 777 USD. NPV pro strategii bez optimalizace je 6 565 USD. Stejně jako u ROI, i zde vychází lépe strategie bez optimalizace. Je to opět dáno tím, že se pracuje pouze se zisky za dané období a počáteční investicí. 4.3.3.3
IRR
Vnitřní výnosové procento (IRR) udává relativní výnos projektu během doby životnosti. Pojí se s NPV a udává, pro jakou hodnotu diskontové míry je NPV rovno nule [16]. 0=
t X i=0
CFt (1 + IRR)t
kde CFt . . . peněžní toky v jednotlivých letech t. . . doba životnosti IRR. . . vnitřní výnosové procento
Parametry zde použijeme stejné jako v případě NPV. Vnitřní výnosové procento pro strategii s obchodním rozpětím je 25,7%. Pro strategii bez optimalizace je IRR 54,4%. Zde platí, čím větší IRR, tím lepší. Výsledek je opět dán tím, že se porovnávají jednotlivé zisky a investovaný kapitál a nezohledňuje se počet obchodů a úspěšnost obchodů.
41
Závěr Cílem práce bylo přiblížit automatizaci obchodování na finančních trzích. Díky této práci jsem si prohloubil svoje předchozí znalosti o měnovém trhu FOREX. Oblast automatických obchodních systémů byla pro mě nová, ale o to více lákavá a zajímavá. Tato problematika v sobě spojuje tři obory — informatiku, matematiku a ekonomii. Práce je napsána tak, aby následující kapitoly navazovaly na předchozí, co se týče určitých pojmů a principů. V první kapitole jsou vysvětleny pojmy, které se používají dále v práci. V další kapitole jsou popsány indikátory, které jsou použity pro návrh daného automatického obchodního systému. Během implementace, jsem se lépe seznámil s obchodní platformou MetaTrader 5 a díky předchozímu studiu pro mě bylo pochopení jazyka MQL5 určitě lehčí vzhledem k tomu, že výrazně čerpá z objektového C++. Výsledkem práce bylo otestování navrženého a realizovaného obchodního systému — systém vykazoval zisk a tedy v tomto ohledu jsem spokojen. Nicméně možnosti, na kterých lze postavit obchodní systém, jsou obrovské a je možnost systém dále upravovat. Určitá úprava byla také v práci nastíněna formou optimalizace pomocí rozpětí hodin, kdy se bude moci obchodovat. Požadavkem bylo také obchodní systém posoudit z pohledu transakčních poplatků. Zde se ukázalo, že tyto poplatky mohou mít velký vliv na obchodní systém. Bylo by však chybou předpokládat, že člověk vyprodukuje automatický obchodní systém, nechá ho běžet a více se o něj nemusí starat. FOREX je vysoce nestacionární trh, který se v čase mění. Je tedy potřeba neustále daný obchodní systém vyvíjet a aktualizovat podle trhu. Zde si myslím, že možná budoucnost patří umělým inteligencím, které se dokáží učit a vyvíjet s trhem.
43
Literatura [1]
Bank for International Settlement: The BIS Triennial Central Bank Survey of foreign exchange and derivatives market activity in 2013. [online][cit. 2014-01-27]. Dostupné z:
[2]
Blažek, R.; Kotecký, R.; Hrabáková, J.; aj.: Pravděpodobnost a statistika: Lineární regrese. ČVUT, 2014, [online][cit. 2014-10-05]. Dostupné z:
[3]
Brill, F.: Currency Trading and Forex 100 Success Secrets - 100 Most Asked Questions on Becoming a Successful Currency Trader. Emereo Pty Limited, 2008, ISBN 9781921573194, [online][cit. 2011-04-11]. Dostupné z:
[4]
Český statistický úřad: Hrubý domácí produkt (HDP) - Metodika. [online][cit. 2014-02-10]. Dostupné z:
[5]
Cross, S.; Federal Reserve Bank of New York: All about the Foreign Exchange Market in the United States. Federal Reserve Bank of New York, 1998, ISBN 123456789123, [online][cit. 2011-02-28]. Dostupné z:
[6]
Durčáková, J.; Mandel, M.: Meziárodní finance. Management Press, 2007, ISBN 8072611706.
[7]
Dvořák, P.; Vysoká škola ekonomická v Praze, Fakulta financí a účetnictví: Deriváty. Oeconomica, 2008, ISBN 9788024514352.
[8]
Forex.com: Forex Quotes. [online][cit. 2014-01-15]. Dostupné z: 45
Literatura [9] Forex Factory. [online][cit. 2014-01-25]. Dostupné z: www.forexfactory.com/>
[10] Hartman, O.: Jak se stát forexov`ym obchodníkem: naučte se vydělávat na měnov`ych trzích. FXstreet, 2009, ISBN 9788090441804. [11] iDNES.cz: Česká národní banka chce oslabit korunu. Intervence spouští po 11 letech. [online][cit. 2014-02-01]. Dostupné z: [12] Investopedia: Net Present Value - NPV. [online][cit. 2011-05-06]. Dostupné z: [13] Investopedia: Return On Investment - ROI. [online][cit. 201104-28]. Dostupné z: [14] Jílek, J.: Peníze a měnová politika. Edice Finanční trhy a instituce, Grada, 2004, ISBN 9788024707693. [15] KurzyCZ: Velký seriál o FOREXU – Obchodní systémy na forexu. [online][cit. 2014-05-10]. Dostupné z: [16] Management mania: Vnitřní výnosové procento (IRR - Internal Rate of Return). [online][cit. 2011-05-06]. Dostupné z: [17] Forex market hours. When to trade and when not to. [online][cit. 201401-27]. Dostupné z: [18] About MetaQuotes Software Corp. [online][cit. 2014-04-09]. Dostupné z: [19] MQL5 Automated Trading Language Documentation: Price Constants. [online][cit. 2014-03-30]. Dostupné z: [20] Murphy, J.: The Visual Investor: How to Spot Market Trends. Wiley Trading, Wiley, 2009, ISBN 9780470486689, [online][cit. 2011-03-28]. Dostupné z: [21] Naylor, J.; Research and Education Association: The Essentials of Money & Banking. sv. 1, Research and Education Association, 1989, ISBN 9780878916917, [online][cit. 2011-02-20]. Dostupné z: 46
Literatura [22] Rate Inflation: Historical Inflation Rates for United States of America (1965 to 1975). [online][cit. 2014-04-02]. Dostupné z: [23] Shamah, S.: A Foreign Exchange Primer. Wiley Trading, Wiley, 2011, ISBN 9781119994893, [online][cit. 2011-02-11]. Dostupné z: [24] StockCharts.com - ChartSchool: Commodity Channel Index (CCI). [online][cit. 2014-04-03]. Dostupné z: [25] Veselá, J.: Investování na kapitálov`ych trzích. Wolters Kluwer Česká republika, 2011, ISBN 9788073576479. [26] Yioryalis, G.: Technical Analysis for Beginners. Lightning Source Incorporated, 2005, ISBN 9781589613157, [online][cit. 2011-04-18]. Dostupné z: [27] Žůrková, H.: Plánovánía kontrola - klíč k úspěchu. Finance (Grada), Grada, 2007, ISBN 9788024718446, [online][cit. 2011-03-15]. Dostupné z:
47
Příloha
Seznam použitých zkratek FOREX Foreign Exchange Market USD US Dollar EUR Euro B/E Break even point HDP Hrubý domácí produkt MA Moving Average MACD Moving Average Convergence/Divergence RSI Relative Strength Index CCI Commodity Channel Index AOS Automatický obchodní systém EA Expert Advisor MT5 MetaTrader 5 IDE Integrated Development Environment MQL MetaQuotes Language ROI Return On Investment NPV Net Present Value IRR Internal Rate of Return
49
A
Příloha
Obsah přiloženého CD
readme.txt...................................stručný popis obsahu CD src impl...................................zdrojové kódy implementace run....................................program pro spuštění v MT5 test .................. kompletní výsledky testování ve formátu html thesis ...................... zdrojová forma práce ve formátu LATEX text ....................................................... text práce thesis.pdf ............................. text práce ve formátu PDF 51
B