Úvod do automatických obchodních systémů v MetaTraderu

Co je to automatický obchodní systém? Co je to MetaQuotes Language a k čemu se používá? Jaké pojmy musím znát, abych se orientoval v těchto materiálech a mohl zkoušet psát první programy? Jak je to s verzemi MQL a MetaTraderu a kompatibilitou programů?

Automatické obchodní systémy

Pokud se zajímáte o obchodování, jistě jste už narazili na pojem „automatický obchodní systém“, zkráceně AOS. Díky těmto systémům mají obchodníci mnohem širší možnosti obchodování. AOS může běžet nepřetržitě ve dne v noci a neunaví se. Stejně tak může obchodovat desítky trhů naráz, nemá emoce a dělá pouze to, co má dovoleno. Nikdy se nesplete, neudělá nic navíc, žádný obchod nevynechá. Tyto vlastnosti nemusejí být vždy jen výhodou, ale jelikož čtete tyto řádky, zřejmě jste se pro AOS již rozhodli.

Automatický obchodní systém představuje algoritmus napsaný v určitém programovacím jazyce, který má za úkol za předepsaných podmínek otevírat, uzavírat a řídit obchodní pozice nebo případně provádět i jiné úkoly. Není to nic jiného než desítky, stovky nebo i tisíce řádků textu v kódové řeči, které si obchodní platforma přeloží do své řeči a na jejich základě dělá to, co kód říká. Dobrá zpráva je, že máme-li k dispozici platformu, můžeme takovéto systémy obvykle bez dalších instalací a poplatků tvořit a testovat i my. Jsou potřeba jen znalosti programovacího jazyka. Každá obchodní platforma má obvykle svůj vlastní, šitý na míru. My se v této sérii budeme zabývat programovacím jazykem nejpopulárnějšího obchodního softwaru MetaTrader 4. Jazyk se nazývá MetaQuotes Language, zkráceně MQL.

MetaQuotes Language

MQL je programovací jazyk z dílny společnosti MetaQuotes, která je zároveň provozovatelem rozšířené obchodní platformy MetaTrader určené k obchodování CFD derivátů. Modul pro tvorbu a úpravy automatických obchodních systémů, ale také indikátorů a dalších programů určených pro běh v MetaTraderu, je dodáván přímo s platformou a nazývá se MetaEditor. Pokud tedy máte stažený a nainstalovaný MetaTrader, automaticky máte i MetaEditor. Platí to pro verzi 4 i 5. MetaEditor můžete z platformy spustit v nabídce Nástroje – Editor jazyka MetaQuotes anebo přímo z této ikony v horním panelu nástrojů:

Metaeditor

O jednotlivých součástech MetaEditoru si řekneme v dalším díle.

Základní pojmy

Z programátorského hlediska je MQL jazykem odvozeným od jazyka C++. Znalost C++ je tedy výhodou, ale rozhodně není problém se naučit programovat v MQL bez jakýchkoli předchozích programátorských zkušeností. Nyní shrneme některé důležité základní pojmy, se kterými se budete dále setkávat a které jsou podstatné pro porozumění.

Exekuce = provedení algoritmu (programu) terminálem MetaTrader. Při exekuci terminál postupně „čte“ kód programu a podle toho koná příslušné akce v terminálu MetaTraderu.

Kontrola = ta část programu, která se právě exekuuje. Jinými slovy ta část kódu, kterou terminál aktuálně čte a provádí.

Tick = nová příchozí cena. Většina programů se exekuuje právě při každém novém ticku.

Komentář = část programu, která se neexekuuje. V kódu se jedná o tu část řádku, která začíná dvěma lomítky za sebou. MetaEditor nám tyto části pro přehlednost obarví šedě a při exekuci je přeskakuje. Chceme-li okomentovat více řádků, začátek komentáře označíme jako /* a konec jako */. Možná se to nezdá, ale popisování částí kódu je kriticky důležité, aby se v kódu vyznal nejen kdokoli jiný, ale i autor sám.

Komentář v rámci kódu

Komentář v rámci kódu

Terminál = klasické uživatelské rozhraní MetaTraderu, ve kterém programy spouštíme a který je schopen exekuovat kódy napsané v jazyce MQL.

Kompilace = kompilace je poslední fází tvorby programu. Kompilátor v rámci MetaEditoru při této akci zkontroluje kód, zda v něm nejsou chyby, a potom připraví program k provozu v terminálu. Jsou-li v kódu chyby, kompilátor je vypíše a programátor je nucen je opravit.

MQL vs. Metatrader 4 a 5

Nyní krátce něco k rozdílům mezi verzemi MT4 a MT5 a vztahu k MQL. Platformy MetaTrader 4 a MetaTrader 5 jako takové se liší v mnohém, u příslušných programovacích jazyků to však platí jen částečně. Původně měla každá verze svůj vlastní MetaEditor i jazyk (jazyky vycházely ze stejného základu, jen MQL5 byl vývojově dál). Vedle sebe tak existovaly vzájemně nekompatibilní MQL4 a MQL5. Jelikož ale popularita novějšího MT5 na úkor MT4 stále nestoupala, nedělo se tak ani u verzí MQL. Programátoři však chtěli programovat programy, které byly možné jen v MQL5, také do MT4. Tvůrci jazyků tak přistoupili k takzvanému „velkému sjednocení“, které přišlo spolu se sestavením MetaTraderu č. 600. MQL4 doznalo velké aktualizace směrem k MQL5, stejně tak i příslušný MetaEditor, který je již naprosto stejný v obou verzích. Programy napsané v MQL5 však budou v MQL4 fungovat jen za určitých podmínek, neboť spoustu prvků bylo v MT4 z důvodu kompatibility se staršími programy zachováno. Proto zde pro jistotu ujasním, že tato série se zabývá výhradně jazykem MQL4, který má však k MQL5 již velice blízko.

Série bude psána jazykem spíše laickým, aby se základy MQL mohl naučit opravdu každý.