3. MQL4 - Ještě, než začneme kódovat

Napsal Geafer 01.08.2010 08:24 Sekce MQL4

Řízení motorového vozidal je vždy záživnější, než studování předpisů. Stejně tak je to v programování. Samotné kódování není tak nudné, jako čtení referenčních manuálů, ale bez základních znalostí se programovat ani nedá začít. V tomto díle se podíváme trochu do struktury jazyka MQL4.

Předchozí díl

Než se pustíme do našeho prvního skriptu, je třeba si říct něco k jazyku MQL4 a k jeho struktuře. Pokud máte zkušenost s programování, můžete tuto kapitolu přeskočit, jelikož by vás asi nudilo povídání o tom, co je to double a co datetime. Nicméně vás, stejně jako ty, co si tuto kapitolu přečtou, odkážu na referenční dokumentaci jazyka, kde se dozvíte komplexnější informace (informace na adrese http://www.mql4.com). Nebudu tu probírat vše ohledně jazyka MQL4, ale je třeba zmínit základní informace nezbytné pro další pokračování.

Syntaxe jazyka MQL4 je podobná jazyku C, až na několik výjimek. Jedná se o procedurální jazyk, což znamená, že se volají funkce k určitému vykonání nějaké akce. Jako v každém programovacím jazyku, i zde se používají proměnné, které uchovávají během programu data k dalšímu zpracování. Tato data mohou být různého typu a od toho se odvíjí termín datové typy. Pomocí funkcí pak můžete zpracovávat tato data a vytvářet logiku skriptu. K tomu všemu vám pomůže jazyk MQL4 s vestavěnými klíčovými slovy a funkcemi.

 

Datové typy

  •  Celočíselné hodnoty (klíčové slovo int) – tento typ uchovává celá čísla, např. 1234
  •  Čísla s desetinnou čárkou (klíčové slovo double) – čísla s desetinným místem, kde oddělovačem je tečka, např. 1234.56
  •  Booleanovské hodnoty (klíčové slovo bool) – jedná se o hodnoty pravda / nepravda, vyjádřené jako 1 nebo 0, lze místo 1 použít True a místo 0 hodnotu False
  •  Řetězce (klíčové slovo string) – tento typ v sobě ukládá textové hodnoty, např. "Nějaký text"
  •  Datum a čas (klíčové slovo datetime)  - datetime v sobě ukládá hodnotu datumu vyjádřenou v anglickém tvaru rok.měsíc.den hodina:minuta:sekunda, např. D'2001.5.30 20:15:31'
  •  Barva (klíčové slovo color) – reprezentuje hodnotu barvy, kterou lze vyjádřit jako řetězec známé webové barvy (např. Yellow, názvy barev najdete v dokumentaci pod složkou Standard constants / Web colors) nebo konstantou RGB (např. C'15,150,230'), kde jednotlivá čísla představují hodnoty barev červená, zelená, modrá.
  •  Znak (klíčové slovo int) – představuje číselnou hodnotu znaku, např. 'A' = 65

 

Speciální funkce

V jazyku MQL4 můžete vytvářet své vlastní funkce, ale existují předdefinované názvy funkcí, které mají svůj vlastní účel:

  •  Funkce init() – slouží k inicializaci skriptu, např. k inicializaci proměnných, ke spuštění jiných funkcí, které mají za úkol vykonat různé inicializační akce před samotným spuštěním hlavního skriptu
  •  Funkce start() – je základní funkce. Pro EA se volá pokaždé, co se provedla změna ceny na trhu. U indikátorů se tato funkce zavolá po vložení indikátoru do grafu a změny ceny na trhu. U skriptů se vykoná okamžitě po vložení skriptu do grafu.
  •  Funkce deinit() – metoda se vykoná po ukončení programu a slouží k deaktivování použitých objektů, uvolnění prostředků v paměti a jiným deinicializačním akcím.

 

Vlastní proměnné

Jak už jsem se zmínil o datových typech, v editoru můžete používat své vlastní proměnné, do kterých si budete ukládat data, která pak nějakým způsobem zpracujete. Proměnné mohou být globální, tzn., že jsou dostupné kdekoli v kódu nebo privátní, které jsou dostupné pouze v určité části kódu.

Definice proměnné vypadá takto:

int mojeCislo;

kde int určuje datový typ proměnné a mojeCislo je název proměnné. Jazyk MQL4 je tzv. "case-sensitive", což znamená, že veškeré názvy proměnných či funkcí respektují pravidlo velkých a malých písmen. Vysvětlím na příkladu:

int mojeCislo;
int MojeCislo;    // tato proměnná není to samé jako proměnná nad ní

Ve výše uvedeném příkladu vidíme rozdíl v názvech a to ve velikosti prvního písmene. Jedná se o dvě různé proměnné, proto je třeba na toto dávat pozor a správně volit názvy proměnných. V případě záměny takto použitých proměnných by vám kód operoval s jinými daty a to by pochopitelně znehodnotilo význam kódu.

Definici proměnné lze zapsat i s inicializací hodnoty:

int mojeCislo = 3;

 

Vlastní funkce

V kódu si můžete napsat vlastní funkce, které mají za úkol vykonat určitou akci. Je dobré škálovat kód do funkcí a nemít všechnu logiku v jedné funkci. Pokud se nějaká akce vícekrát opakuje, již toto je signál pro umístění této akce zvlášť do funkce. Jednak to zpřehlední a zmenší velikost kódu a hlavně usnadní případné úpravy jednotlivých bloků kódu. Funkce může vykonat kód bez návratové hodnoty nebo může nějakou hodnotu vrátit. Stejně tak lze funkci předat jiné hodnoty ke zpracování v podobě parametrů funkce.

Definice jednoduché funkce bez návratové hodnoty vypadá takto:

void vypisAktualniNabidku()
{
      // zde již pokračuje kód funkce
}

Klíčové slovo void zde říká, že funkce nevrací žádnou hodnotu, je určena pouze k vykonání nějakého kódu.  Kód, který se má uvnitř funkce vykonat je uzavřen do složených závorek { a }.

Definice jednoduché funkce, která má návratovou hodnotu, vypadá takto:

double dejNabidku()
{
      double nabidka = 3.25;
      return(nabidka);
}

Zde klíčové slovo double říká, že hodnota vrací datový typ desetinné číslo. Uvnitř funkce je použitá vlastní proměnná, která nastavuje nějakou hodnotu a na konci funkce je klíčové slovo return, které vrací hodnotu zpět do místa, odkud se funkce zavolala.

Funkce s parametrem pak vypadá takto:

double dejCastNabidky(int pomer)
{
      double nabidka = 3.25;
      double vysledek = nabidka / pomer;
      return(vysledek);
}

Za názvem funkce je v závorkách parametr, který předává funkci hodnotu daného datového typu, kterou pak v kódu nějakým způsobem zpracujeme. Funkce může obsahovat více parametrů oddělené čárkou:

double dejCastNabidky(int pomer, datetime casNabidky, string jmenoZadatele)
{
      
}

Nyní, když víme, jak se definují funkce, si ukážeme, jak se funkce volají:

int start()
{
      double mojeNabidka = dejNabidku(3);
      return(0);
}
double dejNabidku(int pomer)
{
      double nabidka = 3.25;
      double vysledek = nabidka / pomer;
      return(vysledek);
}

První funkce je speciální funkce spouštějící tělo hlavního skriptu. Druhá funkce je již známá z výše uvedeného příkladu. Uvnitř funkce start() pak nastavíme do naší proměnné mojeNabidka hodnotu, kterou získáme z funkce dejNabidku(). Tato funkce přejímá hodnotu v parametru funkce. Na konci je již ukončení funkce start s návratovou hodnotou (nula říká, že funkce start proběhla v pořádku).

 

Globální a privátní proměnné

V odstavci Vlastní proměnné jsem se zmínil o tom, že proměnné mohou být globální nebo privátní. Globální proměnné jsou určeny pro celý kód a mají tak k těmto proměnným přístup ostatní funkce skriptu. Kdežto privátní proměnné jsou určené pouze v rámci jedné funkce a ostatní funkce k takovéto proměnné nemohou přistupovat. Privátní proměnnou jsme si již ukázali ve výše uvedené funkci dejNabidku(), kde proměnná nabidka je přístupná pouze v rámci těla této funkce a funkce start() již tuto proměnnou nezná. Pokud potřebujeme v kódu mít proměnnou s obecnými daty, kterou chceme globálně používat ve více funkcích, musíme proměnnou definovat mimo těla funkcí, nejlépe na začátku celého skriptu. Ukážeme si na příkladu:

double pocetLotu = 0.2;

int start()
{
      double mojeNabidka = dejNabidku(3);
      double loty = pocetLotu;
      return(0);
}

double dejNabidku(int pomer)
{
      double nabidka = 3.25;
      double vysledek = nabidka / pomer;
double loty = pocetLotu;
      return(vysledek);
}

Na začátku kódu jsme definovali proměnnou pocetLotu. Toto je globální proměnná, jelikož stojí mimo těla funkcí a lze tak v kterékoli funkci zpracovávat hodnotu této proměnné.

Jazyk MQL4 nabízí ještě další možnosti zpracování kódu, jako jsou podmínky, cykly, přepínače, ale těmi vás v této fázi nebudu zatěžovat. Ve vlastním zájmu si je můžete prostudovat v dokumentaci ve složce Basics / Operators. Dostaneme se k nim později, až budeme psát své první skripty a já věřím, že je za pochodu pochopíte velice rychle.

 

Sdílej na Google Buzz Delicious pošli na vybrali.sme.sk

 


Diskuse ke článku

Diskuse je přístupná pouze pro registrované uživatele.
Přihlásit se | Nová registrace

Autor Geafer

avatar
Zdeněk Hübner, člen teamu FXstreet.cz
Hodnocení autora:

Kategorie blogu

Kurzy obchodování

Kvě
19

Juniorská škola tradingu - Forex I-II (Praha)

Juniorská škola tradingu - Forex I-II je určený pro začínající tradery. Pokud toho o Forexu zatím moc nevíte ale máte chuť začít něco nového, naučit se úspěšně obchodovat.
Led
1

Profesionálem na Forexu - kurz pro pokročilé tradery

Seminář Profesionálem na Forexu - kurz je určený pro absolventy juniorské školy Forexu a pokročilé FX tradery.  
Sleva: Absolventi semináře Juniorská škola tradingu  mají tento seminář za 3.800,-Kč.
Led
1

Začínáme s FOREXEM - Efektivní seminář online – webinář

Nový exkluzivní online seminář. Získejte kompletní přehled o základech obchodování na Forexu a načerpejte forexové know-how v pohodlí domova. Zahrňte nás dotazy, na něž byste se na live semináři báli zeptat.
Led
1

Praktický workshop technické analýzy + profi obchodní systémy na Forexu

FXstreet.cz představuje nový exkluzivní seminář s hostem - Patrikem Urbanem, který působil jako profesionální trader na Wall Streetu. Praktické použití technické analýzy a metody profesionálních traderů.

Literatura

Kniha FOREX obálka

Jak se stát FOREXOVÝM obchodníkem - Ondřej Hartman

Server FXstreet přichází s jedinečnou novinkou - knihou, která vás naučí, jak vydělávat na největším a nejoblíbenějším finančním trhu světa - Forexu. Obsahuje vůbec nejkomplexnější informace, rady a tipy, které doposud o obchodování na měnových trzích v ČR a SK vyšly.

raghee horner.jpg

Forex tradingem k maximálním ziskům - Raghee Horner

Nejúspěšnější kniha od Raghee Horner v češtině. Kniha představuje vynikající návod pro začínající a středně pokročilé obchodníky a obsahuje velmi konkrétní obchodní techniky, oblíbené cenové patterny, vstupy, výstupy a množství dalších rad, tipů a zkušeností.

krotitele trhu 2.jpg

Krotitelé trhů - Inspirujte se příběhy George Sorose, Warrena Buffetta a Paula Volckera

Krotitelé trhů George Soros a Warren Buffett patří mezi nejlepší investory všech dob. Vy se z jejich příběhů můžete poučit. Podívejte se na dění na finančních trzích pohledem světových osobností.

 

reklama
reklama