MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Nástroj pro podporu obchodování na Forexu Diplomová práce
Bc. Roman Komůrka
Brno, 2013
Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval(a) samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal(a) nebo z nich čerpal(a), v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Roman Komůrka
Vedoucí práce: Ing. RNDr. Barbora Bühnová, Ph.D.
Poděkování Rád bych poděkoval vedoucí své diplomové práce za ochotu, cenné rady a pomoc v průběhu tvorby a v neposlední řadě také za čas, který mi svým vedením věnovala.
Shrnutí Cílem diplomové práce „Nástroj pro podporu obchodování na Forexu“ je navrhnout a implementovat vlastní automatickou strategii pro obchodování na Forexu. v první části práce seznamuje s Forexem a popisuje technickou a fundamentální analýzu. Druhá část je věnována přehledu některých dostupných řešení a návrhu a implementaci vlastního systému a jeho porovnání s ostatními testovanými roboty.
Klíčová slova Forex, automatická strategie, robot, technická analýza, indikátory, metaquotes language 4, expert advisor
OBSAH 1
Úvod ........................................................................................................................1
2
Forex (Foreign exchange market) ...........................................................................2 2.1
O Forexu ............................................................................................................2
2.2
Měnové páry ......................................................................................................2
2.3
Obchodovací období (trading sessions) .............................................................4
2.4
Důležité pojmy ...................................................................................................5
2.4.1
Svíčka ..........................................................................................................5
2.4.2
Bod (Point) ..................................................................................................5
2.4.3
Rozpětí (Spread) ..........................................................................................6
2.4.4
Obchodovaná jednotka (lot) ........................................................................6
2.4.5
Páka (leverage) a marže (margin) ...............................................................6
2.4.6
Otevřený zisk a ztráta ..................................................................................7
2.4.7
Zůstatek (balance), majetek (equity) a překlopení (rollover) .....................7
2.5
3
2.5.1
Tržní realizace .............................................................................................7
2.5.2
Čekající příkazy ..........................................................................................8
Typy analýz ...........................................................................................................13 3.1
Technická .........................................................................................................13
3.1.1
Indikátory ..................................................................................................13
3.1.2
Support a rezistence ..................................................................................17
3.1.3
Trend .........................................................................................................19
3.1.4
Kanály .......................................................................................................21
3.2 4
Typy příkazů ......................................................................................................7
Fundamentální ..................................................................................................22
Existující řešení .....................................................................................................23 4.1
Důležité faktory ...............................................................................................23
4.1.1
Řízení rizik ................................................................................................23
4.1.2
Řízení kapitálu ..........................................................................................23
4.1.3
Hodnotící faktory ......................................................................................23
4.2
Komerční ..........................................................................................................24
4.3
5
4.3.1
Strategie vytvořená programem Genetic Builder......................................24
4.3.2
EM_VOL ...................................................................................................26
4.3.3
Pippo..........................................................................................................27
Návrh řešení ...........................................................................................................30 5.1
Použité indikátory ............................................................................................30
5.2
Řízení rizik a kapitálu ......................................................................................30
5.2.1
Zastavení ztrát ...........................................................................................30
5.2.2
Zajištění proti ztrátě ..................................................................................32
5.2.3
Postupná záchrana – 1. úroveň ..................................................................32
5.2.4
Postupná záchrana – 2. úroveň ..................................................................33
5.2.5
Postupná záchrana – 3. úroveň ..................................................................34
5.2.6
Ochrana záchranných pozic ......................................................................36
5.3
6
Strategie ...........................................................................................................36
5.3.1
Vstupní body .............................................................................................36
5.3.2
Výstupní body ...........................................................................................38
5.4
Výběr měnových párů ......................................................................................38
5.5
Výběr obchodovacích období ..........................................................................38
Implementace ........................................................................................................39 6.1
Použitá technologie ..........................................................................................39
6.1.1
Tick............................................................................................................40
6.1.2
Struktura běžného Expert Advisoru ..........................................................40
6.1.3
Obchodování .............................................................................................41
6.2
Knihovna LibOrderReliable.............................................................................43
6.3
Architektura práce ............................................................................................43
6.3.1
Systém signálů ..........................................................................................43
6.3.2
Stav pozic ..................................................................................................44
6.4 7
Volně dostupné ................................................................................................24
Rizika z pohledu běhu programu .....................................................................45
Testování ...............................................................................................................47 7.1
Dosažené výsledky...........................................................................................47
7.1.1
EURUSD ...................................................................................................47
7.1.2
GBPUSD ...................................................................................................48
7.1.3
USDCHF ...................................................................................................49
7.1.4
Dlouhodobý test ........................................................................................50
7.2
Rizika ...............................................................................................................52
7.3
Porovnání s ostatními systémy.........................................................................52
7.4
Návrhy na vylepšení ........................................................................................52
8
Závěr ......................................................................................................................54
9
Literatura ...............................................................................................................55
10
Přílohy ...................................................................................................................57
1 ÚVOD Obchodování na burze zná z televize snad každý. v současné době je ale velice jednoduché si najít na internetu vlastního brokera, vytvořit si účet a začít obchodovat na té s měnovými páry – na Forexu. Tato burza nabízí to, co si určitě každý obchodník přeje – dosáhnout finanční (a z určité části časové) nezávislosti. Vidina rychlých výdělků v porovnání s ostatními možnostmi investování, vyšší zhodnocení kapitálu než v bance a příjem nezávislý na práci jsou jedním z hlavních argumentů, proč lidé většinou začnou věnovat Forexu větší pozornost. Jak lze ale peníze rychle vydělat, tak je lze i ztratit. Proto je potřeba věnovat velké množství času učení a přípravě na obchodování, než člověk začne obchodovat s reálnými penězi. Čekání ale celý den u monitoru na perfektní situaci na trhu by ale byl jen další styl práce a nedopřával by dostatečnou svodobu. Ideálním řešením je vytvoření vlastního automatického systému, který bude obchodovat sám na základě předem vytvořené strategie a využije tak naplno potenciál Forexu – vydělávat, aniž by byla nutná přítomnost obchodníka a jeho rozhodnutí. Cílem této práce je navrhnutí právě takového robota. v první části jsou ve stručnosti popsány důležité informace o Forexu a hlavní aspekty technické a fundamentální analýzy, které přináší přehled o tom, jak a kdy vstoupit na trh. v práci je pak definován kompletní seznam pravidel, které dohromady tvoří ucelenou strategii pro obchodování na Forexu. Podle těchto pravidel je implementován robot, který je otestovaný na datech z minulosti a plně funkční. Práce zároveň popisuje některé z dostupných automatických systému, které jsou otestovány a zhodnoceny na základě stanovených faktorů. Přestože cíl práce je navrhnout a implementovat vlastního robota, dá se na ní nahlížet i jako na zdroj informací pro tvorbu vlastní (manuální či automatické) strategie, který popisuje nejen analýzu trhu, ale i správné zásady, které napomáhají k úspěšnému obchodování.
1
2 FOREX (FOREIGN EXCHANGE MARKET) Tato kapitola obsahuje základní informace o Forexu a definice jednotlivých pojmů, které jsou následně v práci používány.
2.1 O Forexu Forex je decetralizovaný trh s měnovými páry. Díky finančním centrům rozmístěných po celém světě je zajištěno nepřetržité fungování 24 hodin denně, 5 dní v týdnu. Forex je uzavřený po dobu víkendů. Forex určuje relativní hodnotu různých měn vůči sobě [1]. S denním objemem okolo 4 biliónů dolarů je Forex největším trhem na světě [2]. Strutura Forexu je zobrazena na obrázku 2.1.
Obrázek 2.1: Struktura Forexu.
2.2 Měnové páry Hlavní měnové páry obsahují americký dolar a jinou hlavní měnu a mají největší zastoupení mezi obchodovanými měnami. Pár
Země
2
EURUSD
Eurozóna / USA
GBPUSD
Velká Británie / USA
USDCHF
USA / Švýcarsko
USDJPY
USA / Japonsko
USDCAD
USA / Kanada
AUDUSD
Australské společenství / USA
NZDUSD
Nový Zéland / USA
Tabulka 2.1: Hlavní měnové páry na Forexu. „Crosses“ jsou jinou kombinací hlavních měn. Rozdíl oproti hlavním měnovým párům je v absenci amerického dolaru. Příklad „cross“ párů obsahující euro: EURGBP, EURCHF, EURCAD. Exotické páry jsou obsahují měnu země se vzrůstající ekonomikou, jejichž obchodovaný objem roste a zároveň existuje vzrůstá zájem na jejich obchodování vůči hlavním měnám [3]. Příklad exotických párů obchodovaných vůči americkému dolaru: USDHKD (USA / Hong Kong), USDSGD (USA / Singapur), USDSEK (USA / Švédsko).
3
Obrázek 2.2: Rozložení obchodovaných měn na Forexu. Převzato z [2].
2.3 Obchodovací období (trading sessions) Obchodovací den na Forexu se dělí na 4 obchodovací období podle hlavních trhů, které jsou v ten moment otevřené. Tato období jsou následující: Sydney, Tokyo, Londýn, New York. Mimo tyto hlavní trhy ještě existují další, které jsou ale méně významné, např. Frankfurt, Chicago, Hong Kong a další.
Obrázek 2.3: Znázornění obchodovacích období. Převzato z [4]. 4
Jak je z obrázku 2.3 patrné, některé z obchodovacích období se navzájem překrývají. Přestože se dělí na čtyři části, objem obchodovaných v jednotlivých obdobích se výrazně liší. Největší podíl má Londýn s 36,7 %, druhý je New York s 17,9 % [4]. Jak je z těch čísel patrné, je velice výhodné obchodovat v dobu, kdy se překrývá období Londýn a New York, jelikož se v ten moment obchoduje více než polovina denního objemu.
2.4 Důležité pojmy 2.4.1 Svíčka Svíčka je grafická reprezentace ceny a je charakterizována šesti hodnotami:
Otevírací cena Zavírací cena Nejvyšší cena Nejnižší cena Objem Čas
Obrázek 2.4: Struktura svíčky. Převzato z [5].
2.4.2 Bod (Point) Jeden bod označuje nejmenší možnou změnu v ceně, kterou může trh vykonat. Například zvýšení ceny páru EURUSD z hodnoty 1,30000 na 1,30001.
5
2.4.3 Rozpětí (Spread) Rozpětí je rozdíl mezi nákupní a prodejní cenou. Rozpětí je přímo úměrné likviditě měny, což znamená, že nejvíce obchodované měnové páry mají nejnižší rozpětí. Páry, jejichž likvidita je nižší, pak mohou mít rozpětí i několikanásobně vyšší.
2.4.4 Obchodovaná jednotka (lot) Standardní jednotkou obchodovanou na Forexu je lot. Obvykle je 1 lot (jedna nákupní či prodejní jednotka) v hodnotě 100 tisíc dané měny. na forexovém trhu existují i jiné typy lotů. Nejčastější z nich jsou minilot a mikrolot, kdy 1 minilot odpovídá 0,1 hodnoty standardního lotu čili 10 tisíc jednotek dané měny. 1 mikrolot je pak 0,01 hodnoty lotu, což odpovídá jednomu tisicí jednotek dané měny.
2.4.5 Páka (leverage) a marže (margin) Obchodování na forexovém trhu se zprostředkovává na základě zálohy – marže. Tato záloha umožňuje využití pákového efektu. Jak bylo zmíněno v 2.4.4., 1 lot odpovídá 100 tisíc dané měny, takže při nákupu 1 lotu USDCHF obchodník nakupuje 100 000 dolarů. při využití pákového efektu ale obchodník nemusí složit celých 100 000 dolarů, ale pouze určitý násobek, který je určen velikostí páky. Zbytek částky je pak na dobu obchodu půjčena od brokera. Za předpokladu, že obchodník složí u svého brokera vklad 1 000 dolarů a má páku 1:100, může obchodovat s částkou až 100 000 dolarů. v případě, že by broker nabízel páku 1:400, tak by obchodník disponoval částkou 400 000 dolarů neboli 4 loty. Následující příklad ilustruje výpočet potřebné marže pro otevření 1 lotu EURUSD za hodnotu 1,31, 2 loty USDCHF za 0,93 a 1 lot NZDJPY za 84. Páka je 1:100. Pro výpočet je dále potřeba znát konverzní hodnotu pro převod do měny, v které je vedený účet u brokera. Uvažujme, že účet je vedený v dolarech a konverze USDJPY je 99. Postup získání minimální marže je následující: 1. Výpočet hodnoty jednoho lotu EURUSD v dolarech 100 000*1,31 = 131 000 dolarů 2. Výpočet hodnoty dvou lotů USDCHF ve francích 200 000*0,93 = 186 000 franků 3. Výpočet hodnoty jednoho lotu NZDJPY v jenech 100 000*84 = 8 400 000 jenů 4. Převedení všech cen do dolarů a. 131 000/1 = 131 000 dolarů
6
b. 186 000/0,93 = 200 000 dolarů c. 8 400 000/99 = 84 849 dolarů 5. Součet hodnot 131 000 + 200 000 + 84 849 = 415 849 dolarů 6. Vydělení součtu pákou 415 849/100 = 4 158,49 dolarů Minimální marže tedy činí 4 158,49 dolarů. Jakýkoliv pohyb trhu o nejmenší možnou jednotku (1 bod) ovšem způsobí, že složená marže už nebude dostatečná a broker uzavře některé (nebo všechny) pozice, na které nestačí marže.
2.4.6 Otevřený zisk a ztráta Vzorec pro výpočet maximální otevřené ztráty je podle poznatků ze sekce 2.4.5 následující: maximální otevřená ztráta = zůstatek na účtu – požadovaná marže Otevřený zisk a ztráta se aktualizují v reálném čase při každé změně hodnoty daného páru.
2.4.7 Zůstatek (balance), majetek (equity) a překlopení (rollover) Zůstatek udává aktuální hodnotu účtu, přičemž se do něj započítávají pouze uzavřené obchody. Majetek se vypočítá jako hodnota zůstatku + otevřený zisk nebo ztráta. S výpočtem majetku velice úzce souvisí překlopení, což je převedení otevřených pozic na konci obchodního dne (většinou 23:59) do dalšího. za převedení pozic platí obchodník drobný poplatek, který je ovšem potřeba připočítat k aktuálnímu otevřenému zisku (nebo ztrátě) daného obchodu.
2.5 Typy příkazů 2.5.1 Tržní realizace Tržní realizace je nejjednodušší a nejrychlejší typ příkazu, který umožňuje obchodníkovi nakoupit nebo prodat za aktuální dostupnout cenu. na obrázku 2.5 je vidět kotace EURUSD 1.29834 / 1.29868. Pokud chce nakoupit EURUSD za aktuální tržní cenu, bude mu prodáno za 1.29868. v případě prodeje od něj bude odkoupeno za 1.29834.
7
V případě, že broker nedodá nebo odmítne dodat cenu, např. z důvodu nepotvrzené ceny nebo velice rychlého pohybu trhu, nelze otevřít pozici v trhu. Tato chyba se nazývá Off quotes [6].
Obrázek 2.5: Zadání tržní realizace.
2.5.2 Čekající příkazy 2.5.2.1 Limitní příkazy Limitní příkazy se používají k otevření čekající pozice za cenu lepší než je aktuální. Pro nákup se jedná o cenu nižší než aktuální, v případě prodeje vyšší.
2.5.2.1.1 Prodat limit (sell limit) Pro použití příkazu Prodat limit obchodník očekává, že trh půjde nejdříve nahoru a potom, například z důvodu silné rezistence, dolů. v tomto případě je výhodné umístit příkaz Prodat limit okolo hodnoty dané rezistence. Pokud se trh dostane na stejnou nebo vyšší cenu, za kterou byl čekající příkaz otevřen, dojde k exekuci do trhu. Tuto situaci ilustruje obrázek 2.6.
8
Obrázek 2.6: Ilustrace příkazu Prodat limit.
2.5.2.1.2 Koupit limit (buy limit) Příkaz Koupit limit funguje na stejném principu jako Prodat limit s tím rozdílem, že obchodník očekává pohyb trhu ve směru dolů a posléze nahoru. Pokud se trh dostane na hodnotu ceny, která je stejná nebo nižší jako cena čekajícího příkazu, dojde k exekuci do trhu. Tato situace je zobrazena na obrázku 2.7.
Obrázek 2.7: Ilustrace příkazu Koupit limit.
9
2.5.2.1.3 Realizovat zisk (take profit) Realizovat zisk je speciální typ limitního příkazu, který je používán pro uzavření již existující a profitabilní pozice, tzn. musí mít hodnotu lepší (vyšší v případě nákupu, nižší v případě prodeje) než je hodnota otevírací ceny dané pozice.
2.5.2.2 Stop příkazy Stop příkazy se používají pro otevření čekajících pozic za cenu horší než aktuální. Přestože potenciální zisk je nižší, tak tento typ příkazu má v určitých případech své opodstatnění, např. v případě překonání supportu nebo rezistence.
2.5.2.2.1 Prodat stop (sell stop) Při použití příkazu Prodat stop obchodník očekává, že trh bude pokračovat směrem dolů, např. při překonání supportu. z důvodu omezení rizik ovšem neotevře pozici okamžitě, ale počká na potvrzení, které poskytne právě ono překonání hodnoty supportu a pokračování dál dolů.
Obrázek 2.8: Ilustrace příkazu Prodat stop.
2.5.2.2.2 Koupit stop (buy stop) Stejným způsobem funguje opačný příkaz – Koupit stop. v tomto případě ovšem obchodník čeká na překonání nějaké rezistence a na základě této hodnoty otevře Koupit stop.
10
Obrázek 2.9: Ilustrace příkazu Koupit stop.
2.5.2.2.3 Zastavení ztrát (stop loss) Zastavení ztrát je speciální typ stop příkazu a používá se pro uzavření již existující otevřené pozice a tudíž nemůže existovat sám o sobě. Jak název napovídá, tento příkaz se používá pro minimalizaci ztrát (nebo ochraně zisku) otevřené pozice. Další výhodu, kterou tento příkaz poskytuje, je možnost přesně vědět, o kolik může obchodník maximálně přijít, pokud otevře pozici a trh půjde opačným směrem. Například při nákupu EURUSD za cenu 1.29841 a nastavení Zastavení ztrát na 1.29700 to znamená, že maximální ztráta by byla 141 bodů. Možnost přesně znát maximální ztrátu dané pozice je klíčová pro tvorbu jakékoliv strategie, jelikož umožňuje vypočítat buď procentuální množství potřebných úspěšných pozic nebo průměrný zisk úspěšných pozic. Za předpokladu, že pozice budou otevírány vždy s fixním počtem lotů a průměrný zisk a ztráta budou velice podobné, např. ztráta z neúspěšné pozice bude 500 bodů a zisk z úspěšné pozice bude 550 bodů, lze jednoduše vypočítat, že již při 48 % úspěšných pozic bude daná strategie dlouhodobě profitabilní. Obdobně lze vypočítat potřebný minimální průměrný zisk úspěšných pozic, aby strategie byla dlouhodobě profitabilní. Pokud je očekávaná úspěšnost 55 % a Zastavení ztrát je u každé pozice nastaveno na 500 bodů, pak při průměrné výhře 410 bodů už bude strategie zisková.
11
Analogicky může být tento příkaz použit k ochraně pozic, které mají otevřený zisk. Uvažujme, že byla nakoupeno EURUSD za cenu 1.29841, trh stoupal výše a současná cena má hodnotu 1.30000. Otevřený zisk tedy činí 159 bodů. v tento moment může obchodník nastavit Zastavení ztrát na hodnotu např. 1.29950 a ochránit tak zisk 109 bodů i v případě, že se směr trhu otočí a cena bude klesat.
12
3 TYPY ANALÝZ Tato kapitola obsahuje základní souhrn informací potřebných k vytvoření uceleného názoru o dané situaci na trhu. z indikátorů tu jsou popsány pouze ty, které byly použity při implementaci.
3.1 Technická 3.1.1 Indikátory 3.1.1.1 Stochastic Stochastic je indikátor patřící do kategorie oscilátorů a porovnává zavírací cenu s rozsahem pohybu trhu za dané období. Vzorec na výpočet hodnoty stochasticu je následující [7]: %K = 100[(C - L)/(H - L)] C = poslední zavírací cena L = nejnižší cena za dané období H = nejvyšší cena za dané období %D = klouzavý průměr z %K o dané periodě
Obrázek 3.1: Ilustrace Stochasticu. Převzato z [7]. Základní použití tohoto indikátoru spočívá v přechodu %K a %D linií v extrémních zónách (vyšší než 80 nebo nižší než 20) a jejich následnému výstupů z dané zóny. Např. pro validní signál pro nákup by musela být %K linie nižší než %D linie, 13
protnout ji v zóně 0 až 20 a obě by vystoupily z této zóny, přičemž %K linie by měla pořád větší hodnotu než %D linie. Signál pro prodej by vypadal přesně naopak. Pokud je Stochastic v extrémních zónách, značí to, že trh může být buď přeprodán (oversold, zóna 0 až 20) nebo překoupen (overbought, zóna 80 až 100) a značí to, že trh už nemusí pokračovat dál v daném směru. Toto je jedno z dalších využití tohoto indikátoru. Jelikož ale Stochastic patří mezi oscilátory a do extrémních zón se dostává z principu fungování velice často, tento typ signálu nemusí být vždy validní. 3.1.1.1.1 Double Stochastic Double Stochastic je uživatelsky upravená verze indikátoru Stochastic. Změna spočívá v aplikování vzorce pro Stochastic na již jednou vypočítané hodnoty. Rozdíl mezi jednotlivými verzemi je vidět na obrázku 3.2.
Obrázek 3.2: Rozdíl mezi indikátory Stochastic a Double Stochastic. Link pro stažení: http://www.forex-tsd.com/attachments/indicators-expert-systemstools/140282d1342533430-stochastic-oscillator-double-stochastic.mq4
14
3.1.1.2 Schaff Trend Cycle Schaff Trend Cycle (STC) je kombinací Stochasticu popsaného v sekci 3.1.1.1 a MACD (Moving Average Convergence/Divergence), což je indikátor zobrazující rozdíl mezi rychlým a pomalým klouzavým průměrem uzavřených cen [8]. Jelikož STC vychází z indikátoru Stochastic a patří do kategorie oscilátorů, tak jednou z jeho nevýhod je neschopnost určit, zda trh bude pokračovat pohybu při dosažení extrémních zón nebo zda dojde k otočení. Přestože trh může urazit vzdálenost několik set až tisíc bodů (podle velikosti časového měřítka), je doporučeno neobchodovat a počkat na opačný signál, pokud je STC v extrémní zóně. Způsob použití STC je stejný jako v případě indikátoru Stochastic s tím rozdílem, že extrémní zóny jsou v úrovních 0 až 25 a 75 až 100. Link pro stažení: http://www.forex-tsd.com/attachments/metatrader-4/3429d1138948085-schaff-trendcycle-schaff-trend-cycle.mq4
3.1.1.3 Heiken-Ashi Technika Heiken-Ashi zahrnuje odlišný způsob zobrazování svíček. Namísto klasických cen (otevírací, zavírací, nevyšší, nejnižší) využívá následujícího vzorce pro výpočet údajů popisujících danou svíčku [9]: zavírací_cena = (otevírací_cena+nejvyšší_cena+nejnižší_cena+zavírací_cena)/4 otevírací_cena = [otevírací_cena(předchozí_svíčka) + zavírací_cena(předchozí_svíčka)]/2 nejvyšší_cena = Max (nejvyšší_cena, otevírací_cena, zavírací_cena) nejnižší_cena = Min (nejnižší_cena, otevírací_cena, zavírací_cena) Tato metoda výpočtu svíček umožňuje lepší identifikaci trendu jak je vidět na obrázku 3.3.
15
Obrázek 3.3: Ilustrace Heiken-Ashi. Vlevo jsou svíčky vypočítané podle Heiken-Ashi, vpravo jsou korespondující standardní svíčky. 3.1.1.3.1 Heiken-Ashi MA T3 Tento indikátor je uživatelsky upravená verze indikátoru Heiken-Ashi. na obrázku 3.4 je vidět rozdíl mezi tímto indikátorem a původním Heiken-Ashi.
Obrázek 3.4: Rozdíl mezi indikátory Heiken-Ashi MA T3 (tyrkysová a oranžová) a původním Heiken Ashi (modrá a červená). Link pro stažení: http://www.forex-tsd.com/attachments/metatrader-4/125374d1314349432-heiken-ashiidea-heiken_ashi-ma-t3-new%5Balert%5D-mtf.mq4
16
3.1.2 Support a rezistence Support a rezistence jsou jedním z hlavních nástrojů používáných při technické analýze. Když trh dosáhne určité hodnoty a není mu dovoleno pokračovat výše, ať už je důvod jakýkoliv, a pokračuje zpátky dolů, tak hodnota úrovně, na které došlo ke zvratu, se stavá rezistencí.
Obrázek 3.5: Ilustrace supportu a rezistence. Převzato z [10]. Hodnota supportu se určuje obdobně akorát s tím rozdílem, že trh jde ve směru dolů, není mu dovoleno pokračovat níže a vrací se zpátky nahoru. Jedním z důležitých poznatků o supportu a rezistenci je fakt, že se nejedná o přesné hodnoty, na kterých se trh může zastavit, ale spíše o oblasti. v případě jednominutového a pětiminutového grafu se jedná o oblasti v řádu jednotek bodů, na měsíčním grafu se už ale rozpětí takových oblastí může pohybovat v tisících bodů. Jak je vidět na obrázku 3.6, jednotlivé svíčky mohou být uzavřeny nad/pod hranicí rezistence/supportu. Jak bylo řečeno výše, v případě rezistencí a supportů se jedná spíše o oblasti a je proto velice těžké určit, zda v případě uzavření za potenciální hranicí se jedná o překonání dané rezistence/supportu nebo zda se trh obrátí nazpátek.
17
Obrázek 3.6: Zobrazení úrovní supportů a rezistencí na čtyřhodinovém grafu EURUSD. Častý případ, kdy cena překoná hranici dané úrovně, ale uzavírací cena svíčky to nepotvrdí, čili daná úroveň nebyla překonána, se nazývá Wash and Rinse. Při určování těchto hranic se lze řídit následujícími pravidly: Pokud trh překonal hranici supportu nebo rezistence, ale daná svíčka ještě není uzavřená, neznamená to, že je daná úroveň překonaná. Vždy je potřeba se řídit až uzavřenou svíčkou. Při otevírání pozic v okolí supportů a rezistencí je dobré počkat na Wash and Rinse, který potvrdí sílu dané úrovně a po otevření pozice nastavit Zastavení ztrát mírně nad/pod nejvyšší/nejnižší hodnotu svíčky, na které proběhl Wash and Rinse. Takto lze velice dobře maximalizovat poměr mezi potenciálním ziskem a ztrátou, jelikož se dá předpokládat, že trh půjde ve směru, ve kterém byl daný obchod otevřen. Navíc bude Zastavení ztrát nastaveno na relativně nízkou hodnotu. Wash and Rinse většinou netrvá dlouho. Pokud trh prorazil hodnotu supportu nebo rezistence a udržel se za ní po 3 a více svíček, tak daná hodnota byla pravděpodobně překonána. Pokud je support nebo rezistence překonán, trh ho může později otestovat a hodnota supportu se stává rezistencí a naopak. Čím více je daná úroveň testována, tím se stává slabší. Čím déle daná úroveň odolává překonání, tím silnější může být pohyb po jejím prolomení. Čím větší časové rozmezí, tím širší oblast supportů a rezistencí.
18
3.1.3 Trend K vykreslení trendu do grafu pro jednodušší vizualizaci se používají Linie trendu, které se chovají jako support a rezistence s tím rozdílem, že jsou většinou šikmé. Existují tři základní typy trendu, které budou popsány v následujících sekcích. Pro Linie trendu platí stejná pravidla jako pro supporty a rezistence a přidávají se k nim následující: Je zapotřebí alespoň dvou bodů na zjištění trendu. Tím se liší od supportů a rezistencí, kde stačí jeden bod. Dlouhodobější trend je silnější než krátkodobý.
3.1.3.1 Trend nahoru Pro trend nahoru je typické postupné zvyšování nejnižších hodnot, kterých svíčky dosahují. Dalším ukazatelem je fakt, že se cena drží nad hranicí Linie trendu a tato linie se chová jako support, tzn. platí pro ní stejná pravidla jako uvedená v sekci 3.1.2.
Obrázek 3.7: Zobrazení Linie trendu nahoru na čtyřhodinovém grafu EURUSD. Na obrázku 3.7 je zřetelně vidět několikanásobné odražení ceny od Linie trendu a pokračování trhu ve směru nahoru. Lze si také všimnout překonání Linie trendu a následujicí pohyb trhu dolu.
19
3.1.3.2 Trend dolů Trend dolu platí stejná pravidla jako pro trend nahoru a vyznačuje se vytvářením postupných nižších nejvyšších hodnot, kterých svíčky dosahují, přičemž se trh udržuje pod hranicí Linie trendu.
Obrázek 3.8: Zobrazení Linie trendu dolů na čtyřhodinovém grafu EURUSD. Na obrázku 3.8 je vidět, jak se Linie trendu dolů chová jako rezistence a nenechá trh překonat svou hodnotu po dobu jednoho měsíce. Pokud by obchodník zadal příkaz Prodat na začátku tohoto trendu dolů, na konci měsíce by měl otevřený zisk 6500 bodů.
3.1.3.3 Trend bokem Trend bokem je specifická situace, kdy trh nejde ani nahoru nebo dolů, ale tzv. konzoliduje. Vizuálně velmi připominá support a rezistenci, ale k jeho vytvoření je zapotřebí dvou bodů, přičemž na vytvoření supportu nebo rezistence je zapotřebí pouze jeden bod.
20
Obrázek 3.9: Zobrazení trendu bokem na čtyřhodinovém grafu EURUSD.
3.1.4 Kanály 3.1.4.1 Kanál nahoru Kanál nahoru je velice podobný trendu nahoru s tím rozdílem, že trh vytváří nové vyšší hodnoty při stejné rychlosti jako nižší. k vytvoření kanálu nahoru je zapotřebí dvou Linií trendu, které musí být na sebe paralelní.
Obrázek 3.10: Zobrazení kanálu nahoru na čtyřhodinovém grafu USDJPY.
21
Jak je vidět na obrázku 3.10, kanál lze velice dobře použít při technické analýze pro otevření a zavření pozice.
3.1.4.2 Kanál dolů Kanál dolů lze vytvořit analogicky jako kanál nahoru, přičemž trh musí vytvářet nové nižší hodnoty při stejné rychlosti.
Obrázek 3.11: Zobrazení kanálu dolů na čtyřhodinovém grafu EURUSD.
3.1.4.3 Kanál bokem Kanál bokem je stejný jako trend bokem popsaný v sekci 3.1.3.3 s důrazem na nutnost paralelních Linií trendu. Pokud tyto linie nejsou paralelní, nejedná se o kanál, ale o trend.
3.2 Fundamentální Fundamentální analýza pomáhá zjišťovat existující ekonomické, politické a sociální faktory, které mají efekt na relativní hodnotu dané měny vůči jiné měně. Jelikož se na Forexu obchodují měnové páry, nestačí sledovat vývoj jedné země, resp. jedné měny, ale vývoj obou měn daného obchodovaného páru. Např. při obchodování páru EURUSD je důležité analyzovat ekonomiky EU a USA, sledovat jejich relativní vývoj, výdej makrodat a další důležité ekonomické události. Pokud se například stane, že americká ekonomika bude mít lepší růst a evropská bude stagnovat, je to signál pro prodej EURUSD – americký dolar bude sílit, jeho relativní hodnota bude stoupat, tudíž hodnota poměrná hodnota EURUSD bude klesat.
22
4 EXISTUJÍCÍ ŘEŠENÍ V této kapitole jsou popsány hlavní faktory, podle kterých jsou následně jednotlivé strategie hodnoceny. Dále jsou zde uvedeny příklady automatických systémů volně dostupných na internetu a jejich hodnocení z hlediska uvedených faktorů.
4.1 Důležité faktory 4.1.1 Řízení rizik Správné řízení účtu je naprosto klíčovým faktorem pro vývoj úspěšné strategie, ať už manuální nebo automatické. Jedním z příkladů je například expozice vůči dané měně. Pokud strategie otevírá pozice na více párech, je velice důležité sledovat, na jakých párech se otevírají. Pokud například otevře pozici Koupit na EURUSD a zároveň na GBPUSD, je dvakrát exponovaná vůči americkému dolaru ve stejném směru. Pokud v takové situaci americký dolar výrazně posílí, obě pozice začnou být ztrátové.
4.1.1.1 Zastavení ztrát Pokud strategie nemá implementováno Zastavení ztrát ať už ve smyslu popsaném v sekci 2.5.2.2.3 nebo přeneseném a ztrátu kontroluje program a pozice zavírá sám, je jen otázkou času, než nastane situace, na kterou taková strategie nemyslí (nebo s ní úmyslně nepočítá) a dojde ke smazání celého kapitálu. Zavírání ztrátových pozic nebo jejich řízení a je tak klíčovým faktorem úspěšné strategie.
4.1.2 Řízení kapitálu Určení správné velikosti nové pozice je nedílnou součástí zodpovědného obchodování. v případě používání Zastavení ztrát by se měla velikost pozice odvíjet od úrovně Zastavení ztrát a ne obráceně, tzn. pokud by obchod skončil neúspěšně, obchodníkova ztráta by byla vždy stejná (např. 1 %), ať by Zastavení ztrát bylo vzdáleno 100 nebo 1000 bodů. Pokud by byla praxe opačná a Zastavení ztrát by se odvíjelo od velikosti pozice, nemusela by nastavená vzdálenost být dostatečná (byla by omezována velikostí pozice) a mohlo by dojít k aktivaci Zastavení ztrát.
4.1.3 Hodnotící faktory Při hodnocení každé z testovaných strategií byly brány v úvahu následující aspekty: Používání Zastavení ztrát 23
Poměr mezi průměrným ziskem a ztrátou Průměrný počet úspěšných pozic Průměrný měsíční zisk Ceklový zisk Počet otevřených obchodů Maximální otevřená a uzavřená ztráta Nejhorší možné scénáře a jaké by bylo chování strategie
Všechny strategie byly zpětně testovány na historických datech od 1. 1. 2013 do 11. 5. 2013 na platformě MT4, broker Axiory. při testech bylo vždy nastaveno modelování všech cenových pohybů, aby bylo zajištěno co nejpřesnějších výsledků. Dále bylo použito základních nastavení každé strategie doporučených autory. Počáteční kapitál byl nastaven na $10 000.
4.2 Komerční Nejdůležitější faktor mluvící proti komerčním systémům je absence zdrojového kódu. za předpokladu, že by někdo nabízel automatickou strategii, která by byla dlouhodobě úspěšná, uživatel dostane pouze zkompilovaný kód. Nelze ovšem odhadnout, jak dlouho (jestli vůbec) bude daná strategie fungovat, jelikož se trh neustále mění a strategie je potřeba přizpůsobovat novým podmínkám. Přestože drtivá většina automatických strategií obsahuje parametry, pomocí kterých určitým způsobem lze řídit chování dané strategie, častokrát pouhá změna parametrů nestačí na vykonání patřičné změny takovým způsobem, aby dostatečně reflektovala novou situaci na trhu. Nemožnost analyzovat a změnit kód programu vede na další úskalí při optimalizaci vstupních hodnot. Program se chová jako černá skříňka a přestože se může chvilkově podařit najít parametry, při kterých daná strategie vykazuje zisk, uživatel ve skutečnosti neví, co přesně se děje a jaké jsou samotné podmínky pro vstup a výstup z trhu. Tato znalost je klíčová při nastavování jakékoliv strategie.
4.3 Volně dostupné 4.3.1 Strategie vytvořená programem Genetic Builder Tato strategie byla poskytována zdarma na webových stránkách Forex Peace Army (www.forexpeacearmy.com) za účelem propagace programu Genetic Builder, který slouží pro jednoduchou tvorbu automatických systému bez nutnosti znalosti programování.
24
4.3.1.1 Výsledek zpětného testování
Obrázek 4.1: Výsledek zpětného testování strategie vytvořené Genetic Builderem. Používání Zastavení ztrát
Ano
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
1,67
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 1,65 Průměrný počet úspěšných pozic
42 %
Průměrný měsíční zisk
0,61 %
Celkový zisk
2,6 %
Počet otevřených obchodů
84
Maximální otevřená a uzavřená ztráta
3,72 % / 0,31 %
Tabulka 4.1: Výsledky zpětného testování strategie vytvořené programem Genetic Builder. Tato strategie dosáhla v testování velice nízkého zisku. Přestože má dobrý poměr mezi průměrným ziskem a ztrátou a tudíž stačí méně než 50 % úspěšných pozic k tomu, aby byla profitabilní, tak rozhodně nesplňuje kritéria, kterých by měla vyvážená strategie dosahovat.
25
Může se zdát, že při maximální otevřené ztrátě pouhých 3,72 % je velice konzervativní, ale při porovnání s absolutním ziskem za celkové období téměř pěti měsíců je evidentní, že tato ztráta dokonce přesahuje dosažený zisk, tzn. v průběhu obchodování strategie riskovala celý svůj zisk a tak spadá do kategorie velice rizikových, přestože její zisky jsou minimální. Strategie dále obsahuje 26 vstupních parametrů, kterými se dá velice výrazně ovlivnit její chování, což znamená vysokou citlivost vůči vstupním datům a nutnost neustálé optimalizace. Tento fakt může být jedním z důvodů, proč byl výsledek zpětného testování průměrný až podprůměrný.
4.3.2 EM_VOL Tato automatická strategie je jednou z nejlépe hodnocených systému na portálu http://www.mql4.com. Jedná se o oficiální webové stránky společnosti MetaQuotes Corp., tvůrce programu MetaTrader 4. Strategie nejdřív určí, zda je trh volatilní pomocí indikátoru ADX a pokud ano, umístí čekající příkazy Prodej stop a Koupit stop ve vzdálenosti rovné hodnotě indikátoru ATR o periodě 14 od nejnižší, resp. nejvyšší hodnoty svíčky. při zvýšeném pohybu trhu se umístěné pozice zaktivují, jinak strategie pokračuje v umísťování čekajících příkazů až do maximálního množství, které lze nastavit. Link pro stažení: http://codebase.mql4.com/download/32367
4.3.2.1 Výsledek zpětného testování
Obrázek 4.2: Výsledek zpětného testování strategie EM_VOL. Používání Zastavení ztrát
Ano
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
0,65
26
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 1,62 Průměrný počet úspěšných pozic
48 %
Průměrný měsíční zisk
1,84 %
Celkový zisk
8,4 %
Počet otevřených obchodů
629
Maximální otevřená a uzavřená ztráta
38,43 % / 1,24 %
Tabulka 4.2: Výsledek zpětného testování strategie EM_VOL. U strategie EM_VOL je na první pohled patrný obrovský rozdíl v hodnotách poměru zisku ku ztrátě vypočítaných z bodů a dolarů. Tento fakt naznačuje, že strategie musí postupně otevírat obchody s vyšším objemem lotů. Takové počínání má negativní dopad na řízení rizik a z hlediska bezpečnosti strategie je velice špatné. Vysokou rizikovost podporuje maximální otevřená ztráta dosažená během zpětného testování, která dosáhla hodnoty 38,43 %. v případě, že by se trh posunul více proti směru otevřených pozic v momentě, kdy bylo dosaženo této ztráty nebo kdyby strategie otevřela další pozici za více lotů, hrozilo by reálné nebezpečí výzvy doplnění marže a smazání celého účtu. Fakt, že maximální otevřená ztráta je čtyřnásobně vyšší než zisk za období téměř pěti měsíců jen potvrzuje špatné řízení rizik a zacházení s kapitálem.
4.3.3 Pippo Pippo je automatická strategie založená na principu Murray Math, který určuje silné hodnoty supportů a rezistencí, čili úrovní, kdy by měl trh změnit svůj směr. Tento systém je založený na myšlence, že trh se trh pohybuje jen v určitém pásmu a při kontaktu s hranicí pásma se otáčí a vrací nazpět. Jednotlive úrovně pásem se po určitém čase přepočítávají, aby odpovídaly aktuální situaci trhu.
27
Pippo může otevřít maximálně čtyři pozice směřující proti trhu, které budou čekat na obrácení, aby mohly být následně zavřeny v profitu. Pozice využívají systém Martingale, čili následně otevřená pozice má dvojnásobný objem než pozice jí předcházející. Program obsahuje dvě řešení pro situaci, kdy se trh neobrátí a všem otevřeným pozicím narůstá ztráta: 1. Otevření protipozice za dvojnásobný počet lotů než je součet aktuálně otevřených pozic. Přestože se toto řešení může na první pohled zdát jako správné, tak ve skutečnosti se nejedná o nic jiného, než o stejnou situaci jako před otevřením protipozice s tím rozdílem, že nyní je otevřeno více lotů na „opačné straně“ a strategie pořád nemá kontrolu nad situací, pouze je více exponovaná a hrozí větší nebezpečí smazání účtu. 2. Uzavření všech ztrátových pozic. Jistější řešení než předchozí, ovšem jak je vidět v tabulce 4.3, tento robot úspěšně získává jen 0,68 % měsíčně, tudíž zavření balíku čtyř ztrátových pozic by se mohlo rovnat několikaměsíčnímu zisku.
Paradoxně nejlepším řešením, mimo manuální intervence obchodníka, je do již otevřených pozic nijak programově nezasahovat a čekat na přirozené otočení trhu a zavření pozic s minimální ztrátou. na obrázku 4.4 lze vidět výsledek zpětného testování se zapnutým systémem protipozice. Strategie byla nucena na konci února 2013 otevřít protipozici ve dvojnásobné velikosti jako byl objem stávajících pozic, trh se ovšem v ten moment otočil a nikdy nedosáhl potřebné ceny na uzavření všech pozic v zisku. Všechny pozice tak byly otevřeny po několik měsíců a jak je vidět z grafu, na konci testování vytvořily ztrátu přibližně 15 %. Tato ztráta by ovšem pravděpodobně narůstala v průběhu následujících měsíců, jelikož trh pořád pokračoval opačným směrem. Tato situace, kdy strategie nepočítá s určitým vývojem trhu, by mohla vyústit ve smazání celého kapitálu.
Obrázek 4.3: Výsledek zpětného testování strategie Pippo.
28
Používání Zastavení ztrát
Volitelné
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
0,79
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 1,7 Průměrný počet úspěšných pozic
58 %
Průměrný měsíční zisk
0,68 %
Celkový zisk
3,04 %
Počet otevřených obchodů
177
Maximální otevřená a uzavřená ztráta
5,72 % / 0,08 %
Tabulka 4.3: Výsledek zpětného testování strategie Pippo. V případě tohoto systému jsou statistiky o průměrném zisku a ztrátě a počtu úspěšných pozic irelevantní, jelikož všechny pozice jsou zavírány zaráz v momentě, kdy systém vykazuje profit. Pozice tedy nejsou zavírány jednotlivě a jejich částečná ztráta není důležitá.
Obrázek 4.4: Výsledek zpětného testování strategie Pippo s aktivovanou protipozicí. Link pro stažení: http://www.forexfactory.com/attachment.php?attachmentid=738836&d=1310345046
29
5 NÁVRH ŘEŠENÍ Tato kapitola shrnuje všechny klíčové body strategie, které byly následně použity při implementaci.
5.1 Použité indikátory V této práci bylo použito následujících indikátorů, které jsou jednotlivě popsány v sekci 3.1.1: Double Stochastic Schaff Trend Cycle Heiken-Ashi MA T3 Jejich konkrétní použití je detailně vysvětleno v sekci 5.3. Mimo těchto indikátorů bylo použito i určení síly trhu pomocí jeho chování k zamezení vstupu do potencionálně špatných obchodů.
5.2 Řízení rizik a kapitálu 5.2.1 Zastavení ztrát Používání Zastavení ztrát s sebou přináší určité riziko s nemožností určit, o kolik se trh posune proti otevřené pozici, pokud vůbec. Tuto situaci ilustruje obrázek 5.1. Jak je na něm vidět, přestože byl vstupní signál správný a trh ve výsledku šel očekávaným směrem, pozice byla uzavřena po aktivaci Zastavení ztrát a skončila ve ztrátě. Situace jako je tato se stávají často a lze jim zamezit jen jediným způsobem – nepoužíváním Zastavení ztrát. Takové chování ovšem může vést ke ztrátě celého kapitálu a je doporučeno pouze zkušeným obchodníkům. Nastavení Zastavení ztrát dál od otevření pozice se sice může zdát jako řešení, ale jak již bylo řečeno, nikdy není možné dopředu odhadnout, o kolik se trh posune. při použití Zastavení ztrát je také potřeba dbát na dostatečně vysoký zisk z úspěšných pozic, aby poměr mezi ziskem a ztrátou byl ideálně alespoň 1,5. s postupným zvyšováním vzdálenosti Zastavení ztrát bude ovšem stále složitější takového stavu dosáhnout. Problém s nastavením hodnoty Zastavení ztrát ilustruje obrázek 5.1. Obchodník očekává směr pohybu trhu dolů a po slabém otestování rezistence, která se na grafu utvořila, se rozhodl otevřít pozici Prodat a nastavit Zastavení ztrát nad hodnotu dané rezistence.
30
Obrázek 5.1: Vstup do pozice a nastavení Zastavení ztrát. Za další tři svíčky ale udělal trh prudký pohyb proti směru otevřené pozice, překonal hodnotu Zastavení ztrát o pár bodu a následně se vrátil zpět. Tato situace je zobrazena na obrázku 5.2.
31
Obrázek 5.2: Pohyb trhu proti směru pozice a aktivace Zastavení ztrát. Jak již bylo zmíněno výše, toto chování velice ztěžuje použití Zastavení ztrát. Obchodník by sice mohl vstoupit do pozice znovu, ale co dělat v případě, že by se daná situace opakovala vícekrát? Nastavení na vyšší hodnotu by mohlo, ale také nemuselo pomoci a jen by zvyšovalo podstupované riziko.
5.2.2 Zajištění proti ztrátě Pro řízení rizik strategie popisovaná v této kapitole nepoužívá Zastavení ztráty z důvodů popsaných výše. Místo toho používá čtyři úrovně zajištění proti riziku a počáteční otevřená pozice není nijak omezována, pokud nedosáhne první úrovně, která odpovídá 1,6 % hodnoty zůstatku, což odpovídá přibližně 600 bodům.
5.2.3 Postupná záchrana – 1. úroveň Na začátku obchodování strategie otevírá pouze jednu pozici. Pokud tato pozice dosáhne zmíněné ztráty 1,6 %, otevře se protipozice o stejném objemu (viz obrázek 5.3), takže způsobená ztráta zůstane zafixována na této hodnotě a nebude dále narůstat.
32
Obrázek 5.3: Zajištění proti ztrátě, 1. úroveň. Při takové situaci strategie čeká na silný signál pro otevření nové, záchranné pozice, která bude mít dvojnásobný objem než předchozí otevřená pozice, např. pokud měla první pozice objem 0,25 lotů (systém otevírá první pozici s objemem 0,25 lotů na $10 000 zůstatku), nově otevřená bude mít objem 0,5 lotů. Nová pozice má za úkol vymazat ztrátu, kterou vytvořila předchozí pozice. Díky dvojnásobnému objemu navíc stačí urazit dvakrát menší vzdálenost. Využívání systému Martingale (otevírání nových pozic s dvojnásobným objemem) je v praxi nefunkční koncept, kdy obchodník po neúspěšném obchodu otevře nový s dvojnásobným objemem. Takové počínání by opakoval, dokud by nenahradil předešlou způsobenou ztrátu. Zásadní požadavek pro fungování systému Martingale je nekonečný kapitál, jelikož nelze garantovat, že nový obchod bude úspěšný a série špatných obchodů se může opakovat do nekonečna. Proto je velice důležité při používání tohoto systému monitorovat vzniklou ztrátu a mít jasně definovaná pravidla pro jeho používání, jinak hrozí reálné riziko přijití o celý majetek. Pokud je nová pozice s dvojnásobným objemem úspěšná, tak se balík všech tří pozic (původní pozice, zajištění proti ztrátám a záchranná) zavře v malém profitu. v případě reálného obchodování může nastat situace, kdy se celý balík zavře v malé ztrátě. To je způsobeno časovým zpožděním, které vzniká při obchodování s reálnými penězi, jelikož při otevírání a uzavírání obchodu se čeká na protistranu (někdo od obchodníka musí nakoupit, co on prodává a naopak).
5.2.4 Postupná záchrana – 2. úroveň V případě, že je záchranná pozice neúspěšná a dosáhne stejné poměrné ztráty jako první pozice (při dvojnásobném počtu lotů tato ztráta odpovídá 3,2 % z hodnoty majetku), strategie automaticky otevře novou pozici k zajištění ztráty záchranné
33
pozice. v tento moment budou otevřeny čtyři pozice o objemech 2 x 0,25 lotů a 2 x 0,5 lotů (viz obrázek 5.4).
Obrázek 5.4: Zajištění proti ztrátě záchranné pozice. V tento moment strategie dosahuje otevřené ztráty 1,6 % z první pozice a 3,2 % z druhé pozice, tudíž 4,8 % celkově. Pokud k takové situaci dojde, tak strategie bude celý proces opakovat ještě jednou a otevře novou, záchrannou pozici o dvojnásobném objemu.
5.2.5 Postupná záchrana – 3. úroveň
Obrázek 5.5: Zobrazení třetí úrovně zajištění proti ztrátě. Pokud bude druhá záchranná pozice neúspěšná, zajistí se proti ztrátě a celková otevřená ztráta se bude rovnat součtu 4,8 % (ztráta před otevřením nové pozice) a 6,4 % (nová pozice má povolenou ztrátu rovnající se dvojnásobku ztráty předchozí dvojice), ve výsledku tedy 11,2 %. Tato situace je vyobrazena na obrázku 5.5. v rámci žízení rizik má strategie v tento okamžik poslední možnost, jak své pozice zachránit. v případě neúspěchu následující pozice se systém zajistí proti další ztrátě a bude čekat na manuální zásah obchodníka. Ten může buď zkusit doobchodovat otevřené pozice, které budou činit ztrátu přibližně 25 %, nebo je může všechny uzavřít a nechat strategii obchodovat od začátku.
34
Obrázek 5.6: Záchrana dvojice s nejvyšším objemem lotů. Jak je ale vidět na obrázku 5.6, poslední záchranná pozice byla úspěšná a dokázala dosáhnout takového zisku, který byl vyšší než ztráta dvojice s nejvyšším objemem lotů – poslední dvojice. při vývoji strategie byly zvažovány dva scénáře: 1. Při záchraně zavírat všechny otevřené pozice. 2. Zachraňovat postupně všechny dvojice v pořadí od dvojice s nejvyšším počtem lotů. Ve výsledné implementaci bylo použito druhé možnosti a to z důvodu minimalizace rizik. při použití prvího scénaře by mohly nastávat situace, kdy by sice záchranná pozice dosáhla dostatečného zisku na zavření dvojice s nejvyšším otevřeným objemem, ale už by nedostačoval na zavření všech pozic. při následném otočení trhu a nutnosti záchrany i této pozice by se celá situace ještě zhoršila a je pravděpodobné, že k záchraně všech pozic by nikdy nedošlo.
Obrázek 5.7: Záchrana další dvojice s nejvyšším objemem lotů. Jak lze vidět na obrázku 5.7, dva dny po předchozí úspěšné záchraně strategie otevřela další pozici, za účelem vytažení předchozí dvojice (2. úroveň zajištění proti ztrátě) ze ztráty. I tato pozice byla úspěšná a zbývá poslední dvojice s otevřenou ztrátou 1,6 %.
35
Obrázek 5.8: Záchrana poslední dvojice. Pár hodin poté byla úspěšně zachráněna i původní dvojice. Celý proces od otevření první pozice trval téměř měsíc, ale strategie se úspěšně ubránila ztrátovým pozicím a všechny balíky pozic byly uzavřeny v profitu.
5.2.6 Ochrana záchranných pozic Pro ochranu záchranných pozic se používá Zastavení ztrát. Zpočátku tato úroveň není nastavena z důvodů uvedených v první části této sekce. v momentě, kdy pozice dosahuje otevřeného zisku a je v profitu více než 300 bodů, nastaví se Zastavení ztrát na hodnotu Otevírací cena + 100 bodů ve směru pozice. Tímto se zajistí, že při náhle změně směru trhu se pozice nestane ztrátovou, ale uzavře se v zisku, přestože nesplnila svůj účel a nezachránila danou dvojici.
5.3 Strategie 5.3.1 Vstupní body Jako vstupní body této strategie slouží kombinace tří indikátorů zmíněných v sekci 5.1. Signál pro nákup jakékoliv nové pozice kromě zajištění proti ztrátě se skládá z následujících pravidel: 1. Indikátor STC a. STC musí být v extrémní zóně 0 až 25 po dobu minimálně dvou svíček. b. STC musí dosáhnout vyšší hodnoty než 25 a svíčka musí být uzavřená. Pokud je tato podmínka splněna, uloží se hodnota o nejvyšší dosažené ceně během této svíčky a pořadové číslo svíčky. c. Signál je platný pouze po dobu 6 svíček. 2. Indikátor Double Stochastic a. %K linie musí být v extrémní zóně 0 až 20. 36
b. %K linie musí překročit %D linii a dosáhnout hodnoty vyšší než 20. 3. Indikátor Heiken Ashi MA T3 a. Indikátor musí ukazovat směr pro nákup. b. Uloží se hodnota o nejvyšší dosažené ceně během této svíčky. 4. Filtr a. Všechny podmínky uvedené v bodech 1 až 3 musí být splněny. b. Cena aktuální svíčky musí být vyšší než maximální hodnoty dosažené svíčkami při vygenerování signálů (viz body 1.b a 3.b). Tato podmínka byla přidána z důvodu ověření síly trhu v daném směru – pokud je trh slabý, tak často už nestačí na překonání svých nejvyšších hodnot a strategie se tak vyhne špatnému signálu. c. Nová pozice nesmí být otevřena v pátek. d. Signál musí být vygenerován v období od 8 do 18 hodin. e. Pokud je rozdíl mezi nejvyšší a nejnižší dosaženou hodnotou předchozí svíčky větší než 600 bodů, nesmí být nová pozice otevřena. f. Pokud již byla otevřena nová pozice v tomto směru, ale byla z jakéhokoliv důvodu zavřena nebo zajištěna proti ztrátě a podmínky se nezměnily (všechny podmínky kromě této jsou splněny), nesmí se otevřít další pozice. Pravidla 1 až 3 pro prodej opačná, podmínka 4 zůstává stejná. Existují tři typy pozic, které mohou být otevřeny: „První pozice“ Tato pozice, jak už název napovídá, je otevírána jako první, čili žádná jiná pozice ještě není otevřená. Všechny podmínky musí být splněny. Zajištění proti ztrátě Pokud ztráta první pozice dosahuje 1,6 % zůstatku, dojde k zajištění proti ztrátě. v případě dalších ztrátových pozic je hodnota zajištění proti ztrátě násobena podle objemu poslední otevřené pozice, např. pokud první pozice byla zajištěna proti ztrátě, tak její otevřená ztráta činí 1,6 %. Záchranná pozice má dvojnásobný objem, tudíž i její maximální ztráta může být dvojnásobná, tzn. 3,2 %. Součet těchto hodnot udává další úroveň zajištění proti ztrátě (4,8 %). Tato pozice se otevírá pouze na základě aktuální otevřené ztráty a žádné jiné podmínky pro ní neplatí. Záchranná pozice
37
Pro otevření záchranné pozice musí být splněny všechny podmínky uvedené výše a zároveň musí být sudý počet již otevřených pozic, tzn. všechny pozice jsou zajištěny proti ztrátě. Tato pozice má dvojnásobný objem.
5.3.2 Výstupní body Pro všechny typy možných pozic existuje velice podobná podmínka pro jejich uzavření a to je velikost otevřeného zisku. Podle této strategie žádná z pozic není uzavírána ve ztrátě. v nejhorším možném případě dochází k otevřené ztrátě 25 %, strategie přestává otevírat nové pozice a rozhodování přebírá obchodník. První pozice je uzavřena, pokud její aktuální otevřený zisk dosáhne 0,2 % hodnoty zůstatku. v případě záchrany dvou pozic musí celý balík oněch tří pozic (záchranná a dvě zachraňované pozice) dosahovat zisku. v případě první úrovně zajištění proti ztrátě se jedná o 0,1 %, u druhé úrovně o 0,2 %, u třetí úrovně o 0,3 %.
5.4 Výběr měnových párů Tato strategie byla primárně testována a vyvíjena na měnovém páru EURUSD, protože se jedná o nejdůležitější forexový měnový pár a dosahuje nejvyšší likvidity. Výsledek testování na tomto páru je uveden v sekci 7.1. Dá se předpokládat, že použitá pravidla budou fungovat i u některých dalších měnových párů, kde ale možná bude potřeba změnit některé z parametrů strategie, jako je např. počáteční hodnota zajištění proti ztrátě, která přímo udává vzdálenost, kterou může pozice ve ztrátě dosáhnout, nebo velikost Zastavení ztrát pro záchrannou pozici. Výsledky testování na jiných měnových párech jsou též uvedeny v sekci 7.1.
5.5 Výběr obchodovacích období Strategie bere v úvahu pouze signály vygenerované v období od 8 do 18 hodin. Další omezení, které pro ni platí, je zákaz obchodování v pátek z důvodu vydávání ekonomických údajů, které často velice výrazně ovlivňují chování trhu a technická analýza, kterou strategie provádí, se stává nespolehlivou.
38
6 IMPLEMENTACE Tato kapitola se věnuje popisu použitých technologií a vlastní implementaci strategie detailně popsané v 5. kapitole. Všechny indikátory, které byly použity při vývoji tohoto automatického systému, byly staženy z internetu z adres uvedených v sekci 3.1.1.
6.1 Použitá technologie Pro programování vlastních strategií je využíváno programovacího jazyka MQL4 (MetaQuotes Language 4), který byl za tímto účelem vyvinut společností MetaQuotes. Syntaxe a příkazy tohoto jazyka jsou velice podobné jazyku C a pro usnadnění tvorby automatických systému obsahuje předdefinované proměnné a funkce, které se týkají obchodování (např. zjištění základních údajů o svíčkách). Na obrázku 6.1 jsou vyznačeny vztahy jednotlivých částí terminálu MT4 pro obchodování na Forexu.
Obrázek 6.1: Schéma propojení terminálu MT4. Převzato z [11].
39
Terminál obsahuje vestavěné nástroje pro potřeby technické analýzy popsané v sekci 3.1 a řízení otevřených, popřípadě čekajících pozic. v prostředí terminálu existují 3 typy programů, které lze vytvořit a využívat pro potřeby obchodování: Indikátor – program mající grafický výstup a svým způsobem popisující chování trhu. Vykoná se při každém příchodu nové informace o ceně, tzv. ticku Strategie (tzv. Expert Advisor) – program umožňující plně automatické obchodování bez zásáhů uživatele, který se vykoná při každém ticku Skript – program sloužící ke spuštění jednorázových operací, který je vždy spuštěn pouze jednou
6.1.1 Tick Tick je událost, při které terminál obdrží novou informaci o ceně daného páru. Intervaly příchodu nového ticku se mohou lišit a může se stát, že terminál neobdrží tick dokonce několik vteřin. Pokud Expert Advisor dokončí svůj běh před příchodem nového ticku, tak se přepne do čekacího stavu a čeká na nový tick. Příchodu ticku nemá na běh Expert Advisoru vliv a program pokračuje v běhu. Nový tick spustí běh programu pouze v případě, že svou činnost již dokončil a je v čekacím stavu.
Obrázek 6.2: Vztah ticku a běhu Expert Advisoru. Převzato z [12].
6.1.2 Struktura běžného Expert Advisoru Každý Expert Advisor se skládá z pěti hlavních bloků: Hlavička – obsahuje deklaraci a inicializaci globálních proměnných Speciální funkce – jsou definovány jako běžné uživatelské funkce s tím rozdílem, že mají rezervované názvy: init(), start() a deinit(). Funkce init() je spuštěna v momentě startu programu, deinit() při terminaci programu a start() při příchodu nového ticku
40
Uživatelsky definované funkce
Obrázek 6.3: Struktura Expert Advisoru. Převzato z [13].
6.1.3 Obchodování Při vykonávání obchodů jsou zúčastněny tři strany – uživatel, Expert Advisor a server. Jejich vzájemný vztah je uveden na obrázku 6.4.
Obrázek 6.4: Vztah zúčastněných stran při obchodování. Převzato z [14].
41
Požadavek na otevření obchodu je vytvořen buď uživatelem přes dialogové okno Pokyn nebo Expert Advisorem. Požadavek je pak zpracován terminálem a odeslán na server, který rozhodne o oprávněnosti požadavku a tuto informaci vrací zpátky terminálu. při této proceduře dochází k postupné sekvenci událostí zobrazených na obrázku 6.5.
Obrázek 6.5: Sekvence událostí při vytváření nového obchodu. Převzato z [14]. V bodě t2 terminál dostává požadavek na nový obchod od Expert Advisoru. v bodě t3 se rozmýšlí o oprávněnosti požadavku a v případě nemožnosti vyplnění vrací kontrolu Expert Advisoru. Pokud je všechno v pořádku, přeposílá požadavek na server [14]. V případě běhu více Expert Advisorů mohou nastat problémy spojené s odesíláním požadavku na otevření nového obchodu. Tato situace je vyobrazena na obrázku 6.6.
Obrázek 6.6: Sekvence událostí při vytváření nového obchodu při běhu více Expert Advisorů. Převzato z [14]. Expert Advisor 1 poslal požadavek na otevření nového obchodu v čase t1. Terminál o tomto požadavku rozhoduje v periodě od t2 do t3. Pokud jiný Expert Advisor pošle požadavek na terminál v tuto dobu, bude zamítnut. Tento fakt je potřeba brát při implementaci Expert Advisoru v úvahu. Tato práce využívá knihovny LibOrderReliable popsané v sekci 6.2 pro zamezení posílání požadavků na terminál, pokud je zaneprázdněn.
42
6.2 Knihovna LibOrderReliable Knihovna LibOrderReliable je licencovaná podle GNU General Public License (GPL). Vzhledem k tomu, že všechny automatické strategie využívají připojení na internet, je velice důležité zajistit, aby chyby zapříčiněné výpadkem připojení nezpůsobily neočekávané problémy při běhu Expert Advisoru. Tato knihovna pomáhá s odesíláním požadavků na server a zjištěním chyb pomocí jejich rozsáhlého zachytávání a tím pádem výrazně zkvalitňuje bezpečnost jakéhokoliv Expert Advisoru po stránce ošetření chyb při práci s manipulací s pozicemi.
6.3 Architektura práce Jednou z nevýhod programovacího jazyka MQL je absence objektového přístupu. Systém popisovaný v této práci proto funguje na základě jednotlivých modulů, které mezi sebou komunikují převážně prostřednictvím globálních proměnných.
Diagram 6.7: Znázornění modulů programu.
6.3.1 Systém signálů Modul Systém signálů analyzuje chování trhu na základě dostupných údajů o ceně prostřednictvím volání indikátorů zmíněných v sekci 6.1. z důvodů zrychlení doby výpočtu jsou data tímto modulem analyzována na začátku každé hodiny. Přestože se může zdát, že systém tak přichází o velké množství dat, není tomu tak. Výpočet a braní v úvahu signálu uprostřed hodinové svíčky, tzn. když se ještě formuje a nekompletní, by mohlo vést na špatné signály, jelikož nejsou k dispozici všechny údaje o dané svíčce. Tyto údaje jsou kompletní až v momentě, kdy se daná svíčka uzavře, tj.
43
na konci hodiny. Strategie tedy o žádná data nepřichází a je velmi výrazně ušetřeno na výpočetní náročnosti. Tento modul se sestává ze tří semaforů, kde každý z nich vydává dílčí signály vycházející z odlišných indikátorů. Detail tohoto modulu je uveden na obrázku 6.8.
Obrázek 6.8: Detail modulu Systému signálů. K tomu, aby celý modul vydal signál na otevření nové pozice, je zapotřebí splnit následující podmínky: 1. Všechny semafory musí vyslat signál 2. Signály ze semaforů 2 a 3 musí být vydány v přibližně stejnou dobu 3. Pokud jsou předchozí dvě podmínky splněny, dochází k dodatečnému filtrování signálů např. z hlediska síly pohybu ceny a dnu, kdy byl signál vydán Pokud jsou všechny podmínky splněny, je vydán signál na otevření nové pozice pomocí knihovny LibOrderReliable popsané v sekci 6.2. V případě velice náhlé a výrazné změně trhu tento modul zakáže obchodování na několik hodin.
6.3.2 Stav pozic Jak bylo zmíněno v sekci 6.3.1, modul Systém signálů analyzuje data jednou za hodinu. Toto neplatí o modulu Stav pozic, jelikož je velmi žádoucí, aby systém velice důkladně hlídal stav všech otevřených obchodů a rychle reagoval při překročení stanovené ztráty. Tento modul proběhne s každým průchodem Expert Advisoru, tzn. téměř při každém ticku a vypočítává aktuální ztrátu nebo zisk dané pozice. Pokud je aktivní záchranná
44
pozice, vypočítává ztrátu jen poslední trojice pozic, čili dvojice zajištěné proti ztrátě a jejich záchranné pozice, jak je popsáno v sekci 5.2. Podle vypočítáné ztráty/zisku reaguje na situaci a otevírá novou pozici kvůli zajištění proti ztrátě nebo zavírá celou trojici v mírném profitu. Z důvodu řízení pozic je potřeba uchovávat si aktuální informace o všech otevřených obchodech. Pro rychlou a jednoduchou manipulaci jsou tyto informace udržovány pomocí dvourozměrného pole, kde ke každému obchodu je vedená informace o objemu, typu obchodu (nákup nebo prodej) a unikátní ID.
6.4 Rizika z pohledu běhu programu Při analýze rizik byla identifikována následující rizika: 1. Pokračování běhu programu i přes neúspěšný pokus o vytvoření pozice. Po odeslání požadavku na otevření nové pozice by si program o ní uložil informace a počítal by s nimi, přestože by nová pozice nebyla vytvořena. Řešení: Ošetření odeslání příkazu pomocí knihovny LibOrderReliable popsané v sekci 6.2 a ukončení běhu programu při zjištění neúspěchu. 2. Náhlé ukončení běhu programu, znovunačtení s již otevřenými pozicemi. Běh programu se z jakéhokoliv důvodu ukončí (např. výpadek proudu), pozice ale zůstanou otevřené a ničím neřízené. Řešení: Pokud Expert Advisor zjistí existenci jím otevřených pozic, které nemá uvedené v dvourozměrném poli, kde uchovává informace o otevřených pozicích, údaje smaže a načte všechny informace o pozicích znovu, aby byl zajištěn správný chod strategie i po restartu programu. 3. Při uzavírání pozice by nedošlo k vyplnění požadavku kvůli zaneprázdnění terminálu (viz 6.1.3), program by ale počítal s uzavřením. Strategie by odeslala požadavek na zavření pozice, který by byl ale odmítnut terminálem, který by byl právě zaneprázdněn. Programovací chybou by se mohlo docílit, že by strategie brala danou pozici za uzavřenou. Řešení: Za použití řídících cyklů čekat na stav, kdy terminál bude schopen přijímat příkazy a poté odeslat žádost na uzavření pozice. 4. Při zavírání jedné nebo více pozicí dojde ke změně na trhu. 45
Vzhledem k principu fungování otevírání a zavírání pozic není instantní, ale chvíli trvá. Nelze tak zaručit, že pozice bude otevřena nebo zavřena opravdu za takovou cenu, za kterou byl požadavek odeslán. v tomto případě neexistuje řešení tohoto problému a a je potřeba s takovou situací počítat. v případě, že by jakákoliv strategie měla nastavena uzavírání pozice v momentě, kdy je v profitu např. 0,01 %, mohlo by se stát, že by strategie vykazovala i ztrátu, pokud by se změnil pohyb trhu při uzavírání pozice.
46
7 TESTOVÁNÍ Jak je uvedeno v sekci 5.4, strategie je primárně určena pro měnový pár EURUSD. v této kapitole jsou popsány i výsledky, kterých strategie dosáhla na jiných měnových párech, na kterých byla testována po úspěšných výsledcích na páru EURUSD. Pokud není explicitně řečeno, testování probíhalo na základním nastavení strategie.
7.1 Dosažené výsledky 7.1.1 EURUSD Strategie dosahuje na páru EURUSD dobrých výsledků, maximálně bylo využito 2. úrovně zajištění proti ztrátě a průměrný měsíční zisk činil 2.12 %. na konci grafu je vidět, že křivka majetku zaznamenala pokles, přestože by k tomu podle návrhu strategie nemělo dojít. Tento jev je způsoben dosažením konce testovacího období, přičemž stále existovaly otevřené pozice. Ty byly z důvodu ukončení testování uzavřeny a proto došlo ke ztrátě. v reálu by tak celkový a průměrný měsíční zisk byl jiný. Jak si lze z obrázku 7.1 všimnout, grafy zůstatku a majetku se liší. To je dáno způsobem jejich výpočtu popsaného v sekci 2.4.7. Zatímco graf zůstatku popisuje jen uzavřené obchody, na grafu majetku jsou zobrazené i aktuální otevřené obchody, což je důvodem odlišnosti těchto dvou grafů. Pokud je graf majetku nižší než zůstatku, znamená to, že v daný moment byla otevřena minimálně jedna pozice, která vykazovala otevřenou ztrátu.
Obrázek 7.1: Výsledek zpětného testování strategie na páru EURUSD. Používání Zastavení ztrát
Volitelné a jen pro záchranné pozice
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
0,17
47
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 0,19 Průměrný počet úspěšných pozic
86 %
Průměrný měsíční zisk
2.12 %
Celkový zisk
10,67 %
Počet otevřených obchodů
80
Maximální otevřená a uzavřená ztráta
9,38 % / 12,54 %
Tabulka 7.1: Výsledek zpětného testování strategie popisované na páru EURUSD.
7.1.2 GBPUSD Výsledek testování na tomto páru byl srovnatelný s testem na EURUSD, strategie se také dokázala dostat ze všech ztrátových pozic a testování zůstalo úspěšné. Stejně jako v případě testování na páru EURUSD bylo dosaženo 2. úrovně zajištění proti ztrátě.
Obrázek 7.2: Výsledek zpětného testování strategie popisované v této práci na páru GBPUSD. Používání Zastavení ztrát
Volitelné a jen pro záchranné pozice
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
0,24
48
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 0,13 Průměrný počet úspěšných pozic
91 %
Průměrný měsíční zisk
2,8 %
Celkový zisk
14,14 %
Počet otevřených obchodů
65
Maximální otevřená a uzavřená ztráta
10,82 % / 21,05 %
Tabulka 7.2: Výsledek zpětného testování strategie na páru GBPUSD.
7.1.3 USDCHF Výsledek testování na tomto měnovém páru byl sice úspěšný, v jeho průběhu ale strategie zaznamenala ke konci problémy. Opět si lze všimnout poklesu křivky na konci testování značící otevřené pozice.
Obrázek 7.3: Výsledek zpětného testování strategie na páru USDCHF. Při změně základního nastavení byl zpětný test úspěšnější. Konkrétní změna byla v úrovni Zastavení ztrát. v základním nastavení dojde při ujetí vzdálenosti 300 bodů v profitu nastavení Zastavení ztrát na hodnotu otevírací cena + 100 bodů. u vyššího nastavení úrovně Zastavení ztrát hrozí nebezpečí, že trh při konzolidaci nebo mírné pauze zaktivuje Zastavení ztrát a dojde k zavření záchranné pozice. Tento problém se dá částečně vyřešit nastavením Zastavení ztrát na nižší hodnotu, např. na 10 bodů. Tato hodnota byla použita při následném testování páru USDCHF a výsledek tohoto
49
testu je vidět na obrázku 7.4. Jak lze vidět, strategie se dostala z problémových pozic dříve.
Obrázek 7.4: Výsledek zpětného testování strategie na páru USDCHF. Používání Zastavení ztrát
Volitelné a jen pro záchranné pozice
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
0,12
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 0,14 Průměrný počet úspěšných pozic
91 %
Průměrný měsíční zisk
2,83 %
Celkový zisk
14,45 %
Počet otevřených obchodů
97
Maximální otevřená a uzavřená ztráta
10,5 % / 6,25 %
Tabulka 7.3: Výsledek zpětného testování strategie na páru USDCHF.
7.1.4 Dlouhodobý test Strategie byla také podrobena dlouhodobému testu (1 rok) na páru EURUSD za účelem zjištění chování za delší období. Jak je z obrázku 7.5 patrné, test byl úspěšný a strategie zvládla zachránit všechny své pozice, přestože několikrát dosáhla
50
3. úrovně zajištění proti ztrátě. Jak si lze ale v tabulkce 7.4 všimnout, maximální otevřená ztráta byla jen 13,93 %, z čehož lze uvozovat, že 3. Záchranné pozice byly vždy velice správné signály a samotná pozice nikdy nešla výrazně do mínusu.
Obrázek 7.5: Výsledek dlouhodobého zpětného testování strategie na páru EURUSD. Používání Zastavení ztrát
Volitelné a jen pro záchranné pozice
Poměr mezi průměrným ziskem a ztrátou v bodech (čím vyšší, tím lepší)
0,17
Poměr mezi průměrným ziskem a ztrátou v dolarech (čím vyšší, tím lepší) 0,19 Průměrný počet úspěšných pozic
87 %
Průměrný měsíční zisk
3,03 %
Celkový zisk
48,4 %
Počet otevřených obchodů
267
Maximální otevřená a uzavřená ztráta
13,93 % / 27,82 %
Tabulka 7.4: Výsledek dlouhodobého zpětného testování strategie na páru EURUSD.
51
7.2 Rizika Tato strategie s sebou přináší dvě hlavní rizika: Nemožnost určit, jestli a kdy strategie dosáhne 4. úrovně zajištění proti ztrátám, čili dosáhne otevřené ztráty přibližně 25 % a přestane otevírat nové pozice. Pokud se tak stane, není možné garantovat, že se totéž nestane při dalším spuštění strategie. Podobná rizika lze ovšem najít u všech typů forexových robotů, např. u standardních strategií, které zavírají své ztrátové pozice okamžitě, také nelze odhadnout, zda série špatných obchodů nebude pokračovat tak dlouho, dokud nedojde ke ztrátě celého zůstatku. Používání úrovní zajištění proti ztrátám poskytuje určitý stupeň řízení. Jelikož lze určit, že může dojít k vydání nového signálu, což trvá minimálně tři hodiny, obchodník může zanalyzovat danou situaci a strategii dočasně vypnout, pokud si bude myslet, že by vygenerovaný signál k otevření nové pozice byl špatný.
7.3 Porovnání s ostatními systémy Jak je vidět z výsledků popsaných v sekcích 4.3 a 7.1, strategie popisovaná v této práci dosahovala nejlepších výsledků. Mechanismy v ní implementované úspěšně zabránily ztrátám, které by jinak vznikaly. Svým zpracováním se jí nejvíce přibližuje strategie Pippo popisovaná v sekci 4.3.3, která ale nemá účinný mechanismus pro řízení ztrátových pozic a nemá jak reagovat na měnící se situaci na trhu, což představuje obrovské riziko.
7.4 Návrhy na vylepšení Při zachování stejného principu fungování strategie, tj. využívání několika úrovní zajištění proti ztrátě a následné zachraňování pozic, zbývá jen jedna další hlavní součást programu, která by mohla být obměněna a tou jsou samotné signály k otevírání nových pozic. Stejně jako většina forexových strategií i tato je závislá na kvalitě signálů. Jakékoliv zlepšení v tomto ohledu by vedlo ke zkvalitnění systému a redukci rizika. Dalším možným vylepšením týkající se signálů by mohlo dynamické vypočítávání parametrů, např. strategie by si z historie obchodů pamatovala, po kolika stovkách bodů došlo k otočení trhu a následné záchraně pozice. Pokud by zjistila, že trh v průměru šel do mínusu 450 bodů a pak došlo ke zvratu, mohla by nastavit první
52
úroveň zajištění proti ztrátě na hodnotu 450 bodů + rezerva. Tento výpočet by určitě ovlivnil celé chování strategie, úrovně zajištění by sice byly na různých hodnotách, ale mohl by vést k celkovému zlepšení funkčnosti.
53
8 ZÁVĚR V dnešní době se stále přibývajícím množstvím brokerů a snižujícími se nároky na obchodování (např. minimální obchodovatelná jednotka, tudíž je potřeba menšího kapitálu) je stále snazší začít obchodovat na Forexu. V této práci byl úspěšně implementován automatický systém, který v průběhu zpětného testování po dobu jednoho roku vykázal každý měsíc průměrný profit 3 %, což potvrzuje správně zvolené zásady pro obchodování. Strategie je založena na netradičním přístupu, přičemž většina obchodovacích systému otevírá a zavírá pozice podle dosažené ztráty (nebo je neuzavírá vůbec) a jejich výnosnost je tak dána počtem úspěšných pozic a poměrem mezi průměrným ziskem a ztrátou. Přístup ukázaný v této práci obchází nutnost těchto minimálních hodnot, které jsou jinak kritické a ukázal se jako dobrý způsob, jak řídit ztrátové pozice. Jelikož se trh neustále vyvíjí, v budoucnu bude pravděpodobně nutná úprava parametrů nebo dokonce úplná obměna signálů pro otevření nových pozic. To je jedním z hlavních návrhů, jak dále pokračovat ve vývoji a údržbě tohoto systému. Strategie by například mohla obsahovat více signálů a dynamicky vybírat nejlepší signál pro novou pozici na základě jejich krátkodobé či dlouhodobé úspěšnosti. Tak by mohlo dojít ke snížení celkové rizikovosti.
54
9 LITERATURA 1. Levinson, Marc. Guide to Financial Markets. London : Profile Books Ltd, 2005. ISBN 1 86197 956 8. 2. Chapter 1, Part IV. FOREX Stats and numbers. Forex Peace Army. [Online] [Citace: 23. 05 2013.] http://www.forexpeacearmy.com/forex-forum/chapter-1/14079chapter-1-part-iv-forex-stats-numbers.html. 3. Chapter 1, Part III. How are currencies traded in the FOREX market? Forex Peace Army. [Online] [Citace: 23. 05 2013.] http://www.forexpeacearmy.com/forexforum/chapter-1/14081-chapter-1-part-iii-how-currencies-traded-forex-market.html. 4. Chapter 4, Part I. Trading sessions. Forex Peace Army. [Online] [Citace: 23. 05 2013.] http://www.forexpeacearmy.com/forex-forum/chapter-4/14477-chapter-4-parti-trading-sessions.html. 5. MQL4 Book. MQL4 - automated Forex trading, custom indicators, strategy tester. [Online] [Citace: 18. 05 2013.] http://book.mql4.com/. 6. Execution errors. MQL4 Reference. http://docs.mql4.com/trading/errors.
[Online]
[Citace:
7. Stochastic Oscillator. Investopedia. [Online] [Citace: http://www.investopedia.com/terms/s/stochasticoscillator.asp.
12.
5
2013.]
15.
5
2013.]
8. Schaff Trend: A Faster And More Accurate Indicator. Investopedia. [Online] [Citace: 15. 5 2013.] http://www.investopedia.com/articles/forex/10/schaff-trendcycle-indicator.asp. 9. Heikin-Ashi: A Better Candlestick. Investopedia. [Online] [Citace: 15. 5 2013.] http://www.investopedia.com/articles/technical/04/092204.asp. 10. Support and Resistance. Forex Peace Army. [Online] [Citace: 12. 5 2013.] http://www.forexpeacearmy.com/forex-forum/chapter-8/15231-chapter-8-part-isupport-resistance.html. 11. Introduction to MQL4 programming. MQL4 - automated Forex trading, custom indicators, strategy tester. [Online] [Citace: 18. 05 2013.] http://book.mql4.com/intro. 12. General Characteristics of Complex Programs. MQL4 - automated Forex trading, custom indicators, strategy tester. [Online] [Citace: 18. 05 2013.] http://book.mql4.com/special/index. 55
13. Program Structure. MQL4 - automated Forex trading, custom indicators, strategy tester. [Online] [Citace: 18. 05 2013.] http://book.mql4.com/programm/structure. 14. Common Ways of Making Trades. MQL4 - automated Forex trading, custom indicators, strategy tester. [Online] [Citace: 18. 05 2013.] http://book.mql4.com/trading/common.
56
10 PŘÍLOHY Nedílnou součástí této diplomové práce je datový nosič se zdrojovými kódy.
57