Tvorba vlastního AOS (3) – Základy programovacího jazyka MQL4

15:56 | Mar Ve | Diskuze

V dnešním díle si projdeme úplné základy programovacího jazyka MQL4, jež jsou nezbytné k budoucímu programování vlastních obchodních strategií.

Ilustrační obrázek
Foto: Gerd Altmann

Ačkoliv se jedná o tu nudnější pasáž a následné samotné programování obchodních strategií je nesrovnatelně větší zábava, bez teoretických základů se nelze do programování pustit. Článek je tak určen především úplným začátečníkům v oblasti programování. Zkušenější programátoři mohou tuto část pravděpodobně přeskočit.

Každý jazyk má určitá pravidla, podle kterých je potřeba jej psát. Těmto pravidlům se říká syntaxe a jejím dodržováním lze vytvářet správně strukturovaný a funkční kód. Syntaxe jazyka MQL4 je velmi podobná programovacímu jazyku C, pokud s ním tedy máte zkušenost, naučit se programovat obchodní strategie vám nebudete činit velké potíže. Netřeba na cokoliv dále čekat a můžeme se pustit do studia základů programovacího jazyka MQL4.

Komentáře

Začneme jednoduchou, avšak pro orientaci v kódu důležitou věcí, komentáři. Pomocí komentářů můžete do kódu umisťovat libovolné poznámky, které nebudou mít vliv na samotnou funkčnost kódu. V MQL4 lze psát komentáře jednořádkové a víceřádkové. Pro jednořádkové komentáře se používají dvě lomítka, pro víceřádkový komentář se na začátek umístí lomítko s hvězdičkou a na konec hvězdička s lomítkem.

 

// jednořádkový komentář

 

/* víceřádkový komentář,

víceřádkový komentář,

víceřádkový komentář */

Proměnné

Při programování budeme neustále pracovat s proměnnými. Ty lze dělit na vlastní a předdefinované. Vlastní proměnnou je potřeba vytvořit a sdělit o ní informace počítači. Jednoduché zavedení vlastní proměnné může vypadat následovně:

int promenna_1 = 5; 

Takto zavedeme proměnnou s názvem promenna_1 a rovnou jí přiřadíme hodnotu 5. slovo int před názvem proměnné popisuje o jaký datový typ se jedná (o tom více níže).

Předdefinované proměnné není potřeba samostatně deklarovat, v MQL jsou již obsaženy a lze je tedy v kódu rovnou použít. Obvykle obsahují konkrétní data o trhu. Jedná se např. o údaje o ceně, počtu svíček v grafu, otevíracím čase svíček, otevíracích, uzavíracích, maximálních a minimálních hodnotách svíček, objemu apod. Podívejte se na následující krátký skript:

 

//Skript, který zobrazí nabídkovou cenu

 

int start() // speciální funkce start

  {

   Alert("Bid = ",Bid);                        // aktuální nabídková cena

  }

Můžete si ho zkusit zkopírovat do vašeho editoru, zkompilovat tlačítkem v horní nástrojové liště a následně zkusit spustit v samotném obchodním terminálů MT4. Skript lze spustit dvojklikem na jeho název v Navigátoru obchodního terminálu. Zatím není potřeba celému kódu rozumět, důležité je, že je v něm využita předdefinovaná proměnná Bid, která poskytne data o aktuální nabídkové ceně.

Proměnné lze ještě rozdělit na globální a lokální, podle toho, jestli jsou dostupné pro celý program nebo pouze určitou funkci, k tomu se však dostaneme až později.

 

Díl první: Tvorba vlastního AOS (1) – Úvod do problematiky a smysl využití obchodního robota 

Díl druhý: Tvorba vlastního AOS (2) – Seznámení s MetaEditorem

 

Datové typy

Proměnné mohou nabývat různých hodnot. Nejedná se však vždy o číselné hodnoty, v rámci MQL4 existuje několik datových typů.

int  – celá čísla, např. 1, 2, 3,...

double – reálná čísla s desetinným místem. Pozor, oddělovačem je tečka. Např. 42.25.

bool – booleanovské hodnoty True nebo False (pravda/nepravda). Lze zaměnit také za hodnoty 1 (True) a 0 (False).

string – řetězce tvořené znaky ze sady ASCII, tedy textové hodnoty. Psáno s uvozovkami. Např. "Strategie".

color – barva, jež lze zapsat buď přímo slovem jako Red či Blue (pouze u základních barev) nebo jako RGB (míchání červené, zelené, modré), např. C'255,255,0' (žlutá).

datetime – datum a čas vyjádřené ve formátu rok.měsíc.den hodina:minuta:sekunda, např. D‘2017.02.15. 21:00:00

 

Správně zapsané výrazy tak mohou vypadat následovně:

 

int objem = 3;                                    // proměnná jménem objem, typu integer, s hodnotou 3

double Max_cena = 2450.25;         // proměnná jménem Max_cena, typu double, s hodnotou 2450.25

bool Trend = False;                           //  proměnná jménem Trend, typu bool, s hodnotou False (nepravda, případně 0)

string kontrola  = "OK";                    // proměnná jménem kontrola, typu string, s hodnotou OK

color A = Black;                                  // proměnná jménem A, typu color, s hodnotou Black (černá)

datetime cas1 = D‘2015.11.25. 07:00:00; // proměnná jménem cas1, typu datetime, s hodnotou 25. listopadu 2015, 7 hodin ráno

Operace

Při programování budeme často také využívat různé operace. Nejčastěji se bude jednat o běžné aritmetické operace: +, -, *, /, dále ++, jež slouží k přičtení jedničky k proměnné a --, což jedničku od proměnné zase odečte. Mimo aritmetické jsou často využívány také porovnávací operace jako: > (větší), < (menší), >= (větší nebo rovno), <= (menší nebo rovno), == (rovno), != (nerovno). Pro přehled všech operací navštivte přímo web komunity MQL4.

Operátory

Důležitou složkou každého programovacího jazyka jsou operátory. Jedná se o výrazy, které dle určitého předpisu pracují s daty. Operátorů jsou různé druhy, od přiřazovacích jako = (např. A = 7, kde = přiřadí proměnné A hodnotu 7), přes cyklické, které opakují určitou úlohu, až po podmínkové, které vykonají určitou akci až na základě dodržení / nedodržení stanovené podmínky. Přehled všech operátorů a jejich vysvětlení by zabralo příliš mnoho času, proto si je v případě potřeby vysvětlíme až později a nyní se podíváme pouze na podmínkový operátor If–else, který je jedním z nejdůležitějších a nejčastěji využívaných. Prohlédněte si následující skript:

 

//Směr poslední svíčky

 

int start() // speciální funkce start

  {

   if(Close[0]>Close[1]) // porovná uzavírací cenu poslední svíčky s uzavírací cenou předchozí svíčky

     {

      Alert("Trh roste");                           // pokud je podmínka splněna a cena u poslední svíčky je vyšší, vypíše Trh roste

     }

   else

     {

      Alert("Trh klesá");                           // v opačném případe vypíše Trh klesá

     }

 

  }

Tento jednoduchý skript porovnává uzavírací cenu posledních dvou svíček. Říká vlastně: jestli (if) je uzavírací cena poslední svíčky v grafu (Close[0]) větší, než uzavírací cena předposlední svíčky (Close[1]), tak vypiš upozornění „Trh roste“, pokud však ne (else), tak vypiš upozornění „Trh klesá“. Skript si opět můžete zkusit pustit v MT4 a uvidíte, jak porovnává uzavírací ceny posledních dvou svíček v grafu.

Na podobném principu pak funguje i tvoření samotných obchodních strategií. Obvykle si obchodník určí jistá kritéria pro vstup do pozice, která program ověří  a pokud jsou splněna, tak je proveden nákup/prodej. 

V příštím díle se podíváme na strukturu programu a stanovíme si konkrétní zadání obchodní strategie, kterou následně naprogramujeme.

  

Zdroj:Mar Ve
Líbil se vám článek?
+0 / -0
Odeslat článek e-mailem
Diskuze
Vstoupit do diskuze
V diskuzi zatím není žádný komentář. Buďte první, kdo bude komentovat.


Související články
Ilustrativní obrázek

Pražská burza zakončila týden s přírůstkem, tahounem se stal Avast (+3,5%)

Ilustrativní obrázek

Google plánuje investice do evropských datových center

Ilustrativní obrázek

Airbnb chce vstoupit na burzu někdy v průběhu příštího roku

Ilustrativní obrázek

Pražská burza otevírá na kladné nule

Ilustrativní obrázek

Akciový výhled 20.9.2019



Čti více
Ilustrativní obrázek

Export švýcarského zlata do Velké Británie v srpnu dosáhl nového maxima

Ilustrativní obrázek

Dnes proběhne převážení indexů PX a CECE

Ilustrativní obrázek

Klidná seance pro asijské akcie, indické si připsaly 5 % po daňové reformě

Ilustrativní obrázek

Akcie na Wall Street zavřely smíšeně

Ilustrativní obrázek

Pražskou burzu vytáhla do plusu Erste Bank

Ilustrativní obrázek

Frankfurtská burze otevírá na zelené nule

Portál W4T.CZ používá cookies s cílem zajistit co možná nejlepší zážitek při návštěvě těchto webových stránek. Dalším užíváním těchto webových stránek vyjadřujete souhlas s umístěním souborů cookies na vašem počítači / zařízení. Více informací naleznete zde.