Až budete vytvářet svůj obchodní systém, nepochybně budete vycházet z vašeho scénáře. Ať už se bude jednat o jakékoli matematické výpočty, určitě váš scénář bude využívat služeb některých již existujících indikátorů, které používáte při rozhodování pro otevření pokynu. Jsou to pro vás signály, které vám říkají, že teď je vhodná chvíle vstoupit do trhu a „tradovat“.
Použití indikátorů v EA je běžené, už z důvodu ulehčení práce při výpočtech a hlavně z důvodu psychologie. Většina obchodníků, stejně jako vy, používá indikátory k rozhodování, je na nich závislá. Proto nejpoužívanější indikátory mohou být vhodnou volbou pro váš systém.
V tomto díle si představíme funkce některých ze základních indikátorů, který MQL4 nabízí. Pouze podotýkám, že výběr je namátkový a pořadí, v jakém je uvedu, není spojeno s oblíbeností nebo kvalitou.
iWPR() – William’s Percent Range (%R)
Oscilátor Larryho Williamse zvýrazňující překoupené / přeprodané oblasti cen v netrendovém trhu. Jeho rozsah je 0% až -100%, kde 0% až -20% zobrazuje překoupený trh, -80% až -100% zobrazuje přeprodaný trh.
Definice funkce iWPR() je následující:
double iWPR(string symbol, int timeframe, int period, int shift)
- Parametr symbol je identifikátor měnového páru. Pokud si vzpomínáte, identifikátor měnového páru získáme z funkce Symbol().
- Parametr timeframe určuje periodu grafu (minutový, hodinový, denní, atd.). Jazyk MQL4 obsahuje konstanty těchto period:
o PERIOD_M1 = minutový graf
o PERIOD_M15 = 15 minutový graf
o PERIOD_M30 = 30 minutový graf
o PERIOD_H1 = hodinový graf
o PERIOD_H4 = 4 hodinový graf
o PERIOD_D1 = denní graf
o PERIOD_W1 = týdenní graf
o PERIOD_MN1 = měsíční graf
o 0 = perioda použitá v aktuálním grafu
- Parametr period je hodnota Williamsu. Defaultně je nastavena na 40.
- Parametr shift je index svíčky grafu. Pokud si vzpomínáte na proměnnou Bars, která vrací počet dostupných svíček, tak zde lze v tomto parametru říct, jakou hodnotu %R chceme získat pro danou svíčku. 0 je aktuální svíčka, 1 je předchozí, atd. až do Bars – 1.
Př.: Chceme získat hodnotu %R(40) aktuálního měnového páru na hodinovém grafu a to pro 3 svíčku zpětně.
double hodnota = iWPR(Symbol(), PERIOD_H1, 40, 3);
iStochastic() – Stochastic oscilátor
Tento oscilátor zobrazuje stejně jako %R překoupený / přeprodaný trh a určuje, kde by trend mohl skončit. Jeho rozsah je o 0% do 100%. Je možné si na něm zvolit hranice, které blíže signalizují překoupenost a přeprodanost. Oscilátor se skládá ze dvou linií, a proto je třeba ve funkci specifikovat, pro jakou linii chceme vrátit hodnotu.
Definice funkce je:
double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod,
int slowing, int method, int price_field, int mode, int shift)
- Parametr symbol je identifikátor měnového páru
- Parametr timeframe je identifikace periody grafu – viz iWPR()
- Parametr %Kperiod je hodnota aktivnější křivky
- Parametr %Dperiod je hodnota pomalejší křivky
- Parametr slowing je hodnota pro zpomalení
- Parametr method je typ použité metody, která může být z následujících konstant
o MODE_SMA – jednoduchý klouzavý průměr
o MODE_EMA – exponenciální klouzavý průměr
o MODE_SMMA – vyhlazený klouzavý průměr
o MODE_LWMA – vážený klouzavý průměr
- Parametr price_field je hodnota pro určení ceny, která se má pro výpočet použít
o 0 – Low / High (nejnižší / nejvyšší)
o 1 – Close / Close (zavírací)
- Parametr mode je hodnota, která určuje, z jaké linie chceme vrátit hodnotu
o MODE_MAIN – hlavní linie
o MODE_SIGNAL – signální linie
- Parametr shift je index svíčky dané periody grafu – viz iWPR().
Př.: Chceme získat aktuální hodnotu hlavní linie a hodnotu signální linie pro Stochastic(5, 3, 3). Metoda výpočtu bude pro uzavírací cenu s použitím jednoduchého klouzavého průměru a to pro třiceti minutový graf.
double mainValue = iStochastic(Symbol(), PERIOD_M30, 5, 3, 3, MODE_SMA, 1, MODE_MAIN, 0);
double signalValue = iStochastic(Symbol(), PERIOD_M30, 5, 3, 3, MODE_SMA, 1, MODE_SIGNAL, 0);
iMA
Klouzavý průměr je indikátor určující trendovost trhu na základě průměrných hodnot cen za dané období. Pro výpočet se mohou používat ceny uzavírací, otevírací, nejvyšší, nejnižší.
Definice funkce je následující:
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
- Parametr symbol je indikátor měnového páru
- Parametr timeframe je identifikace periody grafu – viz. iWPR
- Parametr period je hodnota období použita pro výpočet
- Parametr ma_shift je posunutí linie vůči grafu. Line indikátoru se může posunout směrem dopředu nebo dozadu, aniž by se měnil tvar křivky vůči výpočtu
- Parametr ma_method je typ metody použité pro výpočet – viz. iStochastic a parametr method
- Parametr applied_price je typ ceny, která se má použít pro výpočet. Jedná se o jednu z následujících konstant:
o PRICE_CLOSE – Uzavírací cena
o PRICE_OPEN – Otevírací cena
o PRICE_HIGH – Nejvyšší cena
o PRICE_LOW – Nejnižší cena
o PRICE_MEDIAN – Median cena (high + low) / 2
o PRICE_TYPICAL – Typická cena (high + low + close) / 3
o PRICE_WEIGHTED – Cena váženého průměru (high + low + close + close) / 4
- Parametr shift je index svíčky
Př.: Potřebujeme zjistit hodnotu exponenciálního klouzavého průměru zavírací ceny na 5 minutovém grafu a to pro aktuální svíčku. Období použité pro výpočet bude vycházet ze 13 svíček.
double hodnota = iMA(Symbol(), PERIOD_M5, 13, 0, MODE_EMA, PRICE_CLOSE, 0)
iMACD
Indikátor určující vztah mezi dvěma klouzavými průměry a cenami v trendovém trhu. Zobrazuje křížení a znázorňuje, mezi obchodníky tolika vyhledávanou, divergenci.
Definice funkce je následující:
double hodnota = iMACD(string symbol, int timeframe, int fast_ema_period,
int slow_ema_period, int signal_period, int applied_price, int mode, int shift)
- Parametr symbol je identifikátor měnového páru
- Parametr timeframe je identifikace periody grafu
- Parametr fast_ema_period je počet období pro výpočet rychlého klouzavého průměru
- Parametr slow_ema_period je počet období pro výpočet pomalého klouzavého průměru
- Parametr signal_period je počet období pro výpočet signálního klouzavého průměru
- Parametr applied_price je typ ceny, která se má použít pro výpočet – viz. iMA() parametr applied_price
- Parametr mode je hodnota, která určuje, jaká linie se má počítat – viz. iStochastic() parametr mode
- Parametr shift je index svíčky
Př.: Chceme získat aktuální hodnotu zavírací ceny MACD(5, 35, 6) pro signální a hlavní linii a to pro graf M15
double signalLine = iMACD(Symbol(), PERIOD_M15, 5, 35, 6, PRICE_CLOSE, MODE_SIGNAL, 0);
double mainLine = iMACD(Symbol(), PERIOD_M15, 5, 35, 6, PRICE_CLOSE, MODE_MAIN, 0);
Závěr
Jazyk MQL4 nabízí funkce pro všechny indikátory, které jsou součástí MetaTraderu a je pouze na vás, které používáte nejčastěji a které případně použijete ve vašem systému pro výpočet signálů pro vstup do trhu či výstup z trhu.
Jako ukázku použití výše zmíněných indikátorů jsem vytvořil jednoduchý indikátor, který vyjadřuje hodnotu mezi Stochastic oscilátorem a oscilátorem %R (William’s Percent Range). Indikátor zobrazuje dvě barvy v histogramu, zelená trend nahoru, červená trend dolů. K tomu jsou zde dvě úrovně 75 a -75, kdy při zpětném překročení horní hranice (zelený histogram) můžeme zahájit Short, ale potvrzený je při překročení 0 a stejně tak i při zpětném překročení spodní hranice (červený histogram) můžeme zahájit Long a potvrzený je při překročení 0. Indikátor je silnější na M5 grafu. To jestli je indikátor vůbec dobrý, posoudíte již sami, indikátor je pouze jako bonus pro tuto kapitolu a pro některé zájemce jako ukázka pro vytvoření vlastního indikátoru. Podrobnější popis je v kódu indikátoru.
Indikátor si můžete stáhnout zde. Soubor nakopírujte do ložky, kde máte nainstalovaný MetaTrader (většinou c:\Program Files\Název Traderu) do jeho vnitřní složky experts\indicators. Spusťte platformu a v kategorii Vlastní ukazatele byste měli vidět indikátor s názvem StoW. Stačí přetáhnout do grafu a případně nastavit v záložce Vložit parametry své vlastní hodnoty.