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 s počátkem poslední seance týdne oslabuje

Ilustrativní obrázek

Akciový výhled 21.2.2020

Ilustrativní obrázek

Akciové trhy - denní zpráva 21.2.2020

Ilustrativní obrázek

Pražská burza klesla zpět pod psychologickou metu 1 100 bodů

Ilustrativní obrázek

Pražská burza po otevření posiluje

Ilustrativní obrázek

Akciové trhy - denní zpráva 20.2.2020



Čti více
Ilustrativní obrázek

Frankfurt otevřel oslabený

Ilustrativní obrázek

Asijské indexy převážně oslabují na pozadí obav z rychlého rozšíření koronaviru mimo Čínu

Ilustrativní obrázek

Americké indexy dnes klesly, S&P o 0,38%

Ilustrativní obrázek

Komentář BHS k vývoji cen pohonných hmot a ropy

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.