MQL4 COURSE. By Coders guru -12 Váš první indikátor Část 3

Podobné dokumenty
MQL4 COURSE. By Coders guru Váš první indikátor - část 2

MQL4 COURSE. By Coders guru Váš první indikátor Část 1

MQL4 COURSE. By Coders guru -8- Proměnné

MQL4 COURSE. By Coders guru Váš první Expert Advisor - část 1

MQL4 COURSE. By Coders guru Váš první Expert Advisor - Část 2

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Part 1

MQL4 COURSE. V tomto dodatku je obsažen popis 25 obchodních funkcí jazyka MQL4. Rozhodl jsem se napsat

MQL4 COURSE. By Coders guru -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Část 2

MQL 4 COURSE. By Coders guru -15 Váš první Expert Advisor - Část 3

MQL4 COURSE. By Coders guru (Dodatek 2) Obchodní Funkce

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

VISUAL BASIC. Práce se soubory

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Paměť počítače. alg2 1

METATRADER 4 PRŮVODCE ZAČÁTEČNÍKA

Textové popisky. Typ dat

8 Třídy, objekty, metody, předávání argumentů metod

5 Přehled operátorů, příkazy, přetypování

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Programovací jazyk Pascal

MAXScript výukový kurz

POSTUP NAHRÁNÍ SOFTWAROVÝCH ROZŠÍŘENÍ DO OBCHODNÍ PLATFORMY METATRADER 4 PRO UŽIVATELE MS WINDOWS

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Algoritmizace a programování

C# konzole Podíl dvou čísel, podmínka IF

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

2. lekce Algoritmus, cyklus Miroslav Jílek

Základy PERLu snadno a rychle

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Poslední nenulová číslice faktoriálu

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

10 Algoritmizace Příklad 2 Word 2007/ VBA

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Objektově orientované programování

- jak udělat konstantu long int: L long velka = 78L;

Úvod do programování - Java. Cvičení č.4

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Funkce, intuitivní chápání složitosti

2

Prezentace a vysvětlení programového prostředí NXC

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Instrukce pro zprovoznění Price Action VIP indikátoru

Úvod do programovacích jazyků (Java)

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Zápis programu v jazyce C#

VISUAL BASIC. Přehled témat

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

POZOR!!! INSTALACE POD WINDOWS 200 / XP / VISTA PROBÍHÁ VE DVOU ETAPÁCH A JE NUTNÉ DOKON

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Více o konstruktorech a destruktorech

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Stručný návod k programu Octave

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Konstruktory překladačů

Výčtový typ strana 67

Algoritmy I. Cvičení č.1 ALGI 2015/16

Soubor jako posloupnost bytů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

5. kapitola Spouštění aplikací Visual Basic.Net, spustitelné soubory

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Úvod do programování. Lekce 5

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

MIDAM Simulátor Verze 1.5

Hlavní užitečné funkce Visual LISPu jsou:

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

První kroky s METEL IEC IDE

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Formátové specifikace formátovací řetězce

Algoritmizace a programování

Programy zapsané v jazyku MetaQuotes Language mají čtvero různých vlastností a určení:

Základy programování (IZP)

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

Základy programování (IZP)

Datalogger Teploty a Vlhkosti

2 Datové typy v jazyce C

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Programujeme v softwaru Statistica

Návod na práci s přípravkem a programem uscope na cvičeních

Regulární výrazy. Vzory

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Připravil: David Procházka. Programovací jazyk C++

Algoritmizace a programování

PREZENTACE 1.22 HYPERTEXTOVÉ ODKAZY

Skripty základy VB, vestavěné objekty, příklady

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

MIDAM Verze 1.1. Hlavní okno :

Transkript:

MQL4 COURSE By Coders guru www.forex-tsd.com -12 Váš první indikátor Část 3 Vítejte ve třetí části lekce Váš první indikátor. V předchozí lekci jsme studovali kódy našeho prvního indikátoru řádek po řádku a dostali jsme se k funkci deinit(). Doufám, že jste v minulých lekcích získali jasný obraz o tom, co jsme prováděli. Dnes budeme studovat funkci start() a její obsah. A nakonec zkompilujeme a spustíme náš první indikátor. Jste připraveni? Pojďme tedy rozřezat kód řádek po řádku: Náš kód: //+------------------------------------------------------------------ + // My_First_Indicator.mq4 // Codersguru // http://www.forex-tsd.com //+------------------------------------------------------------------ + #property copyright "Codersguru" #property link "http://www.forex-tsd.com" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //----vyrovnávací paměti double ExtMapBuffer1[];

//+-----------------------------------------------------------------+ // Custom indicator - inicializační funkce //+-----------------------------------------------------------------+ int init() //----indikátory SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); string short_name = "Váš první indikátor běží!"; IndicatorShortName(short_name); //---- return(1); // Custor indicator - deinicializační funkce int deinit() //---- //---- return(0); // Custom indicator opakovací funkce int start() int counted_bars=indicatorcounted(); //----kontrola možných chyb if (counted_bars<0) return(-1); //----naposledy počítaná svíce bude přepočtena if (counted_bars>0) counted_bars--;

int pos=bars-counted_bars; double dhigh, dlow, dresult; Comment("Hi! I'm here on the main chart window!"); //----hlavní kalkulační smyčka while(pos>=0) //---- dhigh = High[pos]; dlow = Low[pos]; dresult = dhigh -dlow; ExtMapBuffer1[pos]= dresult ; pos--; return(0); int start()... return(0); Jak jsem vám již říkal dříve, 90% našeho programovacího života strávíme uvnitř závorek funkce start(). To proto, že se jedná o nejdůležitější zvláštní funkci programu MQL4. Na rozdíl od funkcí init() a deinit, funkce start() nebude vyvolána pouze jednou (klientským terminálem), ale při každé nové cenové nabídce, kterou klientský terminál MetaTrader obdrží. Funkce start() vrací hodnotu celého čísla, jak je tomu u zvláštních funkcí MQL4, kde 0 znamená, že se nevyskytla žádná chyba, v každém jiném případě se chyba vyskytla.

int counted_bars=indicatorcounted(); Zde jsme definovali proměnné counted_bars jako typy integer a přiřadili jsme k nim vratnou hodnotu funkce IndicatorCounted(). int IndicatorCounted() Tato funkce vrací hodnotu typu integer a obsahuje součet svící, který propočítal náš indikátor. Při prvním spuštění vašeho indikátoru bude hodnota 0, protože indikátor zatím žádné svíce v grafu 1 nepropočítával. (Viz. níže uvedené funkce Bars). if (counted_bars<0) return(-1); Součet counted_bars jsme dostali v předchozím řádku kódu funkce IndicatorCounted(). V případě žádného výskytu chyb musí být číslo 0 nebo vyšší. Pokud je hodnota nižší než 0, znamená to, že se vyskytla chyba a funkce start() je zrušena příkazem return. if (counted_bars>0) counted_bars--; Zde kontrolujeme, zda je hodnota counted_bars vyšší než 0. Pokud je tomu tak, snížíme tento počet odečtením hodnoty 1. To proto, že poslední lištu budeme chtít přepočítat. Použijeme operátor pro odpočet (viz. Lesson 4 - Operace & Výrazy) pro snížení hodnoty counted_bars o 1. Poznámka: Výraz counted_bars můžeme zapsat takto: int pos=bars-counted_bars; Zde deklarujeme proměnnou pos k podržení počtu opakování, po které bude naše kalkulační smyčka pracovat. (viz. smyčka while později v této lekci). To probíhá odečtem counted_bars od celkového počtu svící v grafu, čímž dosáhneme celkové hodnoty počtu svící pomocí funkce Bars(). Nyní je pravý čas prodiskutovat funkci Bars() a jejího bratra.

Předdefinované MQL4 proměnné: Ask, Bid, Bars, Close, Open, High, Low, Time a Volume jsou funkce nazývané v MQL4 předdefinované hodnoty. A já vám ukážu, proč jsou vlastně funkcemi. Proměnná znamená místo v paměti a datový typ dle vaší specifikace. Funkce znamená něco udělat a vrátit nějakou hodnotu, např. Bars shromažďuje a vrací počet svíc v grafu. Takže, jedná se o proměnnou? Další příklad, dokazující, že se nejedná o proměnné: Když napíšete a zkompilujete tento řádek kódu: Vyobrazí se vám tato chyba: 'Bars' -unexpected token To proto, že se nejedná o proměnné, nemůžete k nim tedy přiřadit hodnotu. Dalším důkazem je, že další řádek kódu je platným řádkem a nebude generovat chybu v kompilaci: Nemůžete předat parametry proměnné, předány mohou být pouze funkcím. Omlouvám se za protahování, věnujme se tedy jednotlivým funkcím. int Bars Tato funkce, která vrací hodnotu typu celého čísla, uchovává celkový počet svící aktuálního grafu. double Ask Tato funkce (používána funkcemi Expert Advisors) vrací hodnotu typu double a uchovává cenu kupujícího v měnovém páru. double Bid Tato funkce (používaná funkcemi Expert Advisor) vrací hodnotu typu double a uchovává cenu kupujícího v měnovém páru. Poznámka: Např., USD/JPY = 133.27/133.32 levá část je nazývána bid price (což je cena, za kterou obchodník prodává), druhá (pravá část) se nazývá ask (cena, při které obchodník kupuje měnu).

double Open[] Tato funkce vrací hodnotu typu double, uchovává otevírací cenu referenční svíce, kde otevírací cena je cenou na začátku obchodní periody (rok, měsíc, den, týden, hodina, atd.) Např.: Open[0] vrací otevírací cenu aktuální svíce. double Close[] Tato funkce vrací hodnotu typu double, uchovává uzavírací cenu referenční svíce, kde uzavírací cena je cenou na konci obchodní periody. Např.: Close[0] vrací uzavírací cenu aktuální svíce. double High[] Tato funkce vrací hodnotu typu double nejvyšší ceny referenční svíce, která je nejvyšší z cen hlídaných během obchodní periody. Např.: High [0] vrací nejvyšší cenu aktuální svíce. double Low[] Tato funkce vrací hodnotu typu double nejnižší ceny referenční svíce, která je nejnižší z cen hlídaných během obchodní periody. Např.: Low [0] vrací nejnižší cenu aktuální svíce double Volume[] Tato funkce vrací hodnotu typu double, uchovává celkový průměr měn obchodovaných v rámci určité časové periody, většinou jednoho dne. Např.: Volume [0] vrací průměr aktuální svíce. int Digits Tato funkce vrací hodnotu celého čísla, uchovává počet číslic po decimálním bodu (většinou 4). double Point Tato funkce vrací hodnotu typu double, bodovou hodnotu aktuální svíce (obvykle 0.0001). datetime Time[] Tato funkce vrací hodnotu typu datetime, uchovává otevírací dobu referenční svíce. Např.: Time [0] vrátí hodnotu otevírací doby aktuální svíce. double dhigh,dlow,dresult; Deklarovali jsme tři typy proměnných double, které použijeme později. Všimněte si způsobu, jakým jsme

deklarovali tři z nich na stejném řádku, oddělením čárkami. Comment("Hi! I'm here on the main chart windows!"); Tento řádek kódů se používá ke komentování funkce prostřednictvím vyobrazení textu Hi! I'm here on the mainchart windows! v levé straně hlavního grafu (obr. 1). Jsou zde dvě obdobné funkce: void Comment(... ) Tato funkce přebírá hodnoty, které jí byly poskytnuty (mohou být jakéhokoliv typu) a vyobrazí je v levém horním rohu grafu (obr. 1). void Print (... ) Tato funkce přebírá hodnoty, které jí byly poskytnuty (mohou být jakéhokoliv typu) a vyobrazí je v protokolu Expertu. (obr. 2). void Alert(... ) Tato funkce přebírá hodnoty, které jí byly poskytnuty (mohou být jakéhokoliv typu) a vyobrazí je v dialogovém boxu (obr. 3) Obr. 1 Komentář

Obr. 2-Protokol Expertu Obr. 3 -Upozornění while(pos>=0) dhigh = High[pos]; dlow = Low[pos]; dresult = dhigh-dlow; ExtMapBuffer1[pos]= dresult ; pos--; Nyní je čas ke vstupu do smyčky pro výpočet bodů indikátoru pro vykreslení. Jakákoliv hodnota, kterou jsme přiřadili do pole ExtMapBuffer1[] bude vykreslena v grafu. (protože jsme toto pole přiřadili pro vykreslení použitím funkce vyrovnávací paměti SetIndexBuffer). Před vstupem do smyčky máme k dispozici počet časů, smyčka bude pracovat odpočtem counted_bars z celkového počtu svící v grafu. Počet časů smyčky bude pracovat vyvoláním proměnné Loop variable, v našem případě jde o proměnnou pos. Smyčku variable používáme jako aktuální svíci kalkulace, např. High[pos] vrací vyšší cenu svíce pos. V těle smyčky jsme přiřadili proměnné dhigh, což je hodnota nejvyšší ceny aktuální dostupné smyčky. A k proměnné dlow jsme přiřadili hodnotu nejnižší ceny aktuální dostupné proměnné smyčky. Výsledek odpočtu dlow od dhigh bude přiřazena proměnné dresult. Poté použijeme pro vykreslení řádku indikátoru proměnnou dresult jejím přiřazením k poli vyrovnávací

paměti ExtMapBuffer1[]. Poslední řádek výrazu je sestupný výraz, který sníží proměnnou smyčky pos o 1 pokaždé, když smyčka běží. A když tato proměnná dosáhne hodnoty -1 smyčka bude ukončena. Nakonec můžeme náš indikátor zkompilovat. Stiskněte klávesu F5 nebo volbu Compile z file menu. Tím vygenerujeme prováděcí soubor My_First_indicator.ex4, který můžete nahrát do vašeho terminálového klienta. Pro nahrání vašeho indikátoru klikněte na klávesu F4, čímž klienta terminálu vyvoláte. Poté v okně Navigator vyhledejte My_First_indicator a přiřaďte jej ke grafu (obr. 4). Poznámka: Indikátor toho mnoho neudělá, Odpočty nejvyšších a nejnižších cen nám však poskytnou obraz o vrtkavosti trhu. Obr. 4 Můj první indikátor Doufám, že vás váš první indikátor bavil. Velmi uvítám jakékoliv dotazy a připomínky. S pozdravem Coders Guru 13-11-2005