Úterý 19. březen 2024 11:47
reklama
Purple MT4 platforma nova
reklama
Purple MT4 platforma nova
reklama
Fintokei ProTrader
reklama
CapXmaster

5. MQL4 - Předdefinované proměnné

Napsal:   Sekce: MQL4

V této kapitole se trochu ponoříme do jazyka MQL4 a představíme si základní proměnné, pomocí kterých můžeme zjišťovat informace o cenách.

Předchozí díl

Až budete vyvíjet svůj vlastní skript, budete potřebovat „dolovat“ data o aktuální ceně na trhu pro daný měnový pár. Jazyk MQL4 nabízí několik vestavěných proměnných, které vracejí různé informace o dění na trhu.

Ask

V našem testovacím skriptu jsme se již seznámili s touto proměnou a víme, že vrací cenu, za kterou můžeme nakupovat daný měnový pár. Slovo „ask“ v anglickém jazyce znamená „žádat“. Přesto z pohledu obchodu vůči nám se jedná o nabídku, je to cena, kterou nám nabízí trh.

double nabidka = Ask;

 

Bid

Opačná proměnná k proměnné Ask je Bid. Jedná se o cenu, za kterou můžeme prodávat daný měnový pár. Stejně jako u Ask jsme si vysvětlili anglický význam, i zde musím podotknout, že „bid“ je v anglickém jazyce „nabídka“, ale pro obchodování vůči nám to znamená poptávku, jelikož se jedná o cenu, kterou trh poptává.

double poptavka = Bid;

 

Bars

Tato proměnná vrací počet dostupných svíček ve svíčkovém grafu (dovolil jsem si nahradit slovo bar slovem svíčka kvůli lepšímu pochopení významu). MetaTrader vám ukládá data z trhu a uchovává tak historii cen. Bars pak vrací počet těchto záznamů. Čím více, tím lépe pro statistiku. Otázkou je, kolik svíček vlastně pro své výpočty budete potřebovat.

int pocetSvicek = Bars;

 

Digits

Proměnná vrací počet desetinných míst, ze kterých se skládá cena daného měnového páru. Pokud bychom tuto proměnou použili např. u měnového páru EURUSD, kde cena může být např. 1.3032, vrátila by nám proměnná číslo 4.

int pocetMist = Digits;

 

Point

Vrací hodnotu jednoho bodu daného měnového páru. Tato proměnná se hodně používá při nastavování ceny StoppLoss (zastavení ztrát) a TakeProfit (realizování zisku) v metodě pro otevření pokynu případně pro úpravu pokynu.

double hodnotaBodu = Point;

 

Close[]

První proměnná typu pole. Pole je proměnná, která v sobě ukládá více hodnot, kde každá hodnota je identifikována indexem právě v hranatých závorkách. Tato proměnná vrací zavírací hodnotu daného měnového páru a to pro všechny dostupné svíčky v grafu (viz. proměnná Bars). MetaTrader automaticky naplní tuto proměnnou daty ze svíček, které jsou v grafu dostupné. Hodnoty pole se indexují od 0 a první hodnota je vždy aktuální hodnota. Je třeba zmínit, že hodnota je aplikovaná na svíčku grafu a tudíž je hodnota jiná pro jinou periodu, proto Close[] vrací jinou hodnotu pro třicetiminutový graf a jinou pro hodinový graf.

// vrátí aktuální zavírací cenu
double aktualniHodnota = Close[0];

// vrátí předchozí zavírací cenu
double predchoziHodnota = Close[1];

// vrátí zavírací cenu poslední svíčky, která je pro graf dostupná
// jelikož Bars vrací počet svíček, index svíčky musí být o 1 menší 
// než celkový počet, protože se indexuje od 0 a ne od 1
double posledniHodnota = Close[Bars - 1];

 

Open[]

Tato proměnná vrací otevírací cenu pro konkrétní svíčku daného měnového páru. Platí pro ni stejná pravidla jako pro Close[].

double aktualniHodnota = Open[0];

 

High[]

High vrací nejvyšší hodnotu konkrétní svíčky měnového páru pro danou periodu.

double aktualniHodnota = High[0];

 

Low[]

Low vrací nejnižší hodnotu svíčky měnového páru pro danou periodu.

double aktualniHodnota = Low[0];

 

Volume[]

Volume vrací hodnotu objemu obchodů na dané svíčce měnového páru pro danou periodu. Přesněji vrací počet změn ceny v daném intervalu. Neříká tedy, kolik obchodníků obchodovalo v dané době, ale kolikrát toto obchodování ovlivnilo cenu.

double aktualniHodnota = Volume[0];

 

Time[]

Poslední z proměnných je Time, která vrací datum a čas svíčky měnového páru pro danou periodu.

datetime casHodnoty = Time[0];

 

Bonus na závěr

Když už víme, jak získat informace z grafu, můžeme si ukázat příklad, který projde všechny dostupné svíčky a vypíše základní údaje o ceně. Jako výstup použijeme funkci Alert(). Kód můžete použít ve vašem existujícím skriptu MyTestScript nebo si kliknutím na New z menu File založte nový skript, kde v průvodci přidáním nového souboru nezapomeňte vybrat položku Script. V případě, že použijete existující skript z předchozí kapitoly, nahradíte pouze obsah funkce start() níže uvedeným kódem. Pro lepší přehled uvádím kód včetně funkce start():

int start()
{
   // zjistíme, kolik svíček máme k dispozici
   int nc = Bars;
 
   // pokud je svíček víc než 30, nastav max. 30
   if(nc > 30)
   {
      nc = 30;
   }
    
   // pro každou svíčku vypiš čas, otevírací a zavírací cenu   
   for(int i = 0; i < nc; i++)
   {
      string casSvicky = TimeToStr(Time[i], TIME_DATE|TIME_MINUTES);
      string oteviraciCena = DoubleToStr(Open[i], Digits);
      string zaviraciCena = DoubleToStr(Close[i], Digits);
      string msg = "Čas svíčky: " + casSvicky;
      msg = msg + ", otevírací cena je " + oteviraciCena;
      msg = msg + ", zavírací cena je " + zaviraciCena;
      Alert(msg);
   }

   return(0);
}

Rozebereme si výše uvedený kód. Jeho úkolem je projít určitý počet dostupných svíček, získat z každé svíčky informaci o ceně a zobrazit složenou zprávu v Alarm dialogu.

Nejprve definujeme proměnou nc, do které si uložíme počet dostupných svíček, které nám MetaTrader může nabídnout.

int nc = Bars;

Dále následuje podmínka if. Až budete vytvářet vlastní EA, určitě se nevyhnete podmínkám. Podmínky řídí tok kódu na základě zadaných kritérií. Obecně lze podmínku vyjádřit asi takto: když něco platí, tak udělej tohle, jinak udělej tohle. Podmínky tedy vyhodnocují booleanovská data, zda je něco pravda nebo není.

Definice podmínky se zapisuje takto:

if(podmínka)
{
      // kód
}
else
{
      // kód
}

Nebo rozšířená upřesňující podmínka

if(podmínka)
{
      // kód
}
else if(jiná podmínka)
{
      // kód
}
else
{     
// kód
}

Podmínky můžete do sebe zanořovat, tzn., že v jednom bloku if nebo else můžete napsat další podmínku.

if(podmínka)
{
      if(jiná podmínka)
{
            // kód
}     
else
{
            // kód
}
}
else
{
      // kód
}

V našem kódu máme podmínku, která říká: pokud počet svíček v proměnné nc je větší jak 30, tak nastav proměnnou nc na 30. Jinak zůstává počet svíček takový, který jsme dostali z proměnné Bars. Tuto podmínku jsem zavedl čistě s limitních důvodů. Proměnná Bars vám může vrátit tisíce záznamů a výpis tolika záznamů do Alarm dialogu by nebyl zrovna nejlepší ukázkou, proto jsem tento počet omezil a zároveň vás seznámil s podmínkami.

if(nc > 30)
{
      nc = 30;
}

Další část kódu představuje cyklus, který se bude vykonávat pro určitý počet výskytů. Pro procházení nějakých cyklických dat se používají funkce, které umí cykly zpracovávat. Jednou z nich je operátor for. Jeho definice je:

for(Výraz1; Výraz2; Výraz3)
{
      // tělo cyklu
}

Výraz1 je inicializace cyklu, zde se nachází proměnná, která nám nastaví počítadlo cyklu.

Výraz2 je podmínkový výraz, který nám vyhodnocuje, zda je pravda, že se má cyklus stále vykonávat, nebo již ukončit.

Výraz3 je iterace počítadla. Když bych měl vlastními slovy říct, co přesně definice říká, tak by to bylo asi takto: pro každý cyklus, dokud je to pravda, vykonej něco, co potřebuju.

for(int i = 0; i < nc; i++)

Nejdříve se nastaví hodnota i na 0 a pak při každém opakování se zvýší o 1. Cyklus bude vykonávat kód, dokud hodnota i bude menší jak nc (např. 30).

Dále si pak v kódu ukládáme do pomocných textových proměnných hodnoty, které spojíme do jednoho řetězce a později zobrazíme.

string casSvicky = TimeToStr(Time[i], TIME_DATE|TIME_MINUTES);
string oteviraciCena = DoubleToStr(Open[i], Digits);
string zaviraciCena = DoubleToStr(Close[i], Digits);

Do proměnné casSvicky si uložíme čas svíčky v podobě textu v určitém formátu pomocí funkce TimeToStr().

Funkce TimeToStr() je konverzní funkce a převádí hodnotu datumu do řetězce. Když bychom zobrazili hodnotu pouze použitím Time[i], tak by se nám zobrazila celočíselná hodnota, které rozumí počítač, ale pro nás by tato hodnota byla nic neříkající. Tato funkce má dva parametry, kde v prvním předáváme hodnotu datumu a v druhém říkáme, jak hodnotu chceme zobrazit. Druhý parametr je bitový příznak a je kombinací následujících konstant:

TIME_DATE – zobrazí hodnotu datumu ve formátu „yyyy.mm.dd“, kde yyyy reprezentuje číslo roku, mm číslo měsíce a dd číslo dne.

TIME_MINUTES – zobrazí hodnotu datumu ve formátu „hh:mi“, kde hh je hodina a mi je minuta.

TIME_SECONDS – zobrazí hodnotu datumu ve formátu „hh:mi:ss“ kde ss je sekunda a zbytek je stejný jako u TIME_MINUTES.

Kombinací TIME_DATE|TIME_MINUTES tak získáme datum ve formátu „yyyy.mm.dd hh:mi“. Jednotlivé kombinace se oddělují bitovým operátorem OR, reprezentující znak „|“. Pokud používáte českou klávesnici, napíšete tento znak kombinací kláves <AltGr>+<W> (Pravý Alt + písmeno W). Samozřejmě můžete funkci předat pouze jednu z výše uvedených konstant a nemusíte kombinovat.

Do proměnných oteviraciCena a zaviraciCena si uložíme hodnotu otevírací a zavírací ceny v podobě textu, kde hodnotám upřesním, kolik desetinných míst mají zobrazit a to pomocí funkce DoubleToStr().

Funkce DoubleToStr() převádí číslo typu double na řetězec. V prvním parametru se předává hodnota čísla a v druhém parametru se říká, kolik desetinných míst chceme v čísle zobrazit. Když bychom chtěli zobrazit číslo s 2 desetinnými místy, napsali bychom následující:

string vysledek = DoubleToStr(1.23456, 2);  // vysledek bude „1.23“

Jak jste si všimli, tak v našem příkladu jsme hnedka využili služeb proměnné Digits, která vrací počet desetinných míst pro daný měnový pár.

Jelikož jsme v cyklu a díky proměnné i, která při každém opakování cyklu zvyšuje svou hodnotu, můžeme tak pomocí proměnných Time[], Open[], Close[] číst hodnoty jednotlivých svíček směrem do historie.

Další část kódu v cyklu již skládá výslednou zprávu, která se má zobrazit. Spojování řetězce se v jazyku MQL4 provádí znakem „+“. Výsledný text se nám uloží do proměnné msg.

string msg = "Čas svíčky: " + casSvicky;
msg = msg + ", otevírací cena je " + oteviraciCena;
msg = msg + ", zavírací cena je " + zaviraciCena;

Finále cyklu je završeno výpisem do Alarm dialogu pomocí funkce Alert().

Alert(msg);

Nyní, když zkompilujete kód (nebudete mít žádné chyby v okně Errors) a spustíte skript v platformě přetažením do grafu, výpíše se vám 30 zpráv, kde bude zobrazena informace o cenách v daném čase.

Zobrazit obrázek

Hodnocení článku:
Sdílení článku: 
   

Čtěte více

  • 4 rady pri investovaní a tradingu
    Všetci sme zvyknutí si myslieť, že rozhodnutia, ktoré sme spravili sú správne. Dokonca aj v situácii, keď nevieme čo robíme si myslíme, že nám akási vyššia sila radí, kam ďalej. Pri investovaní či tradingu však dôvera v túto silu z pravidla nebýva dobrou voľbou.
  • 4 rady pro udržování psychické rovnováhy během tradingu
    Odolnost psychické stránky každého obchodníka je testována trhy při každé obchodní seanci. Většina traderů má špatné zkušenosti s obchodování při rozkolísaných emocích. Skutečností bohužel je, že mnoha obchodníků, kteří se tradingu věnují třeba i roky, se dosud nedokázalo s tímto vnitřním nepřítelem efektivně vypořádat. Pokud se mezi takovéto obchodníky řadíte, možná právě vám dnešní příspěvek může pomoci nastartovat cestu za konzistentními zisky.
  • 4 základné scenáre pre ekonomiku do konca tohto roka
    Ahojte, traderi. Dnes sa povenujem ani nie tak analýze, ako skôr mojej úvahe a celkovému názoru. Každý má na túto situáciu iný pohľad a ja tu priložím ten môj s tým, čo by sa v najbližšom čase mohlo stať.
  • 5 důvodů, proč obchodovat ropu
    Obchodování ropy má několik nesporných výhod, jejichž kombinace z ní činí velmi vhodný instrument také pro začínající obchodníky. Dnes si uvedeme 5 z nich.
  • 5 faktorů, které není dobré v tradingu podceňovat
    Pojďme si připomenout základní faktory, které mohou zlepšit trading nejednomu nadšenci do finančních trhů.
  • 5 fundamentov ktoré je potrebné poznať
    V rýchlo sa pohybujúcom svete menových trhov, kde prichádzajú obrovské pohyby nečakane je extrémne dôležité pre nováčikov sa naučiť o rôznych ekonomických indikátoroch a forexových udalostiach ktoré formujú trh. Ak naozaj obchodník vie na aké data pozerať, čo znamenajú a ako ich zobchodovať či vyhnúť sa im môže zvýšiť ziskovosť obchodníkov a môže nastaviť cestu k dlhodobému úspechu.
  • 5 chyb, které dělá ztrátový obchodník
    V tomto článku si připomeneme největší chyby, které dělají ztrátoví obchodníci.
  • 5 chýb prečo na burze strácate
    Ahojte traderi trh sa moc nepohol a preto si dnes nedáme technickú analýzu, ale pozrieme sa trochu do psychológie.
  • 5 koníčků, které vám mohou pomoci v tradingu
    V jednom z minulých článků jsme si řekli, že život není jen o vysedávání u obrazovek, a že byste si měli k tradingu najít hobby, u kterého si psychicky odpočinete. Již od útlého věku má většina z nás své vlastní koníčky. Také se nejspíš shodneme na tom, že každý by si měl své koníčky zvolit podle toho, co ho samotného baví a naplňuje.
  • 5 mentálních chyb, které obchodníkům pravidelně škodí
    Říká se, že tradeři až z 90 % bojují se svou psychikou v boji za dosažením konzistentně ziskového obchodování. Možná to znáte i u sebe. Pod vlivem rozkolísaných emocí jste obchodovali, když jste neměli a tento pocit vás navíc následně trápil a ovlivnil i vaše další obchody. V dnešním článku si představíme pár triků, jak udržet svou psychiku na uzdě.
  • 5 Najlepších AI nástrojov na obchodovanie a investovanie
    Nástroje umelej inteligencie (AI) môžu pomôcť obchodníkom či investorom robiť lepšie rozhodnutia na finančných trhoch, či už ide o forex, krypto, alebo akcie. Poďme sa pozrieť na 5 AI nástrojov, ktoré môžete začať ihneď používať pre lepšie výsledky.
  • 5 nejčastějších chyb začínajících obchodníků
    Nikdy nebylo snadné začínat s něčím novým. Ať už jde o nové zaměstnání, založení vlastní firmy nebo učení se nějakého sportu. Pocit nejistoty z nového a neznámého prostředí vás muže přimět dělat chyby. U obchodování na forexu je to stejné. Zde je pět nejčastějších chyb začínajících obchodníků.
  • 5 nejsilnějších emocí tradera
    Psychologie obchodování je nedílnou součástí každého z nás. Trhy jsou jakýmsi živým organismem, u kterého se snažíme racionálním přístupem zanalyzovat jeho vývoj, což vytváří rozpor mezi očekáváním a konečným výsledkem.
  • 5 postupností pred otvorením obchodu
    …nasledujúcim článkom nadviažem na predchádzajúci – „Konzistentný zisk za 20 dní“. Témou bude bezprostredné obdobie pred otvorením pozície. Postupne v doplňujúcich článkoch, vrátane stratégie, pripojím všetky relevantné témy. Podotknem, že stratégia, alebo jej časť bude zmienená v každom, či už v priamej alebo nepriamej forme. Vnímam stratégiu ako niečo, čo začína už len myšlienkou na obchod a až analýzou realizovaného končí.
  • 5 rozdielov v tradingu kryptomien a akcii
    V dnešnom blogu Vám vysvetlím zásadných 5 rozdielov pri tradingu a akciach. Každé má svoje pro a proti, no jeden trh je regulovaný a druhý nie je a tam začínajú všetky problémy aj príležitosti. Veľa začiatočníkov verí, že kupovanie kryptomeny cez krypto burzu je ako kupovať akcie cez brokera, no pravda je inde.
  • 5 rozdielov v tradingu kryptomien a forexu
    Dnes vám opíšem 5 zásadných rozdielov pri tradingu krypto trhu a forexových mien. Každá je v niečom lepšia a v niečom horšia a idem na tie rozdiely poukázať. Aj keď je tu kryptosvet iba necelých 10 rokov a forex niekoľkonásobne viac, tak popularita týchto trhov je celkom podobná.
  • 5 situací, kdy opustit svou obchodní strategii
    Obchodování na finančních trzích je často vnímáno jako kombinace vědy a umění. Klíčovým prvkem úspěšného obchodování je obchodní strategie, která nám poskytuje systematický rámec pro naše rozhodování. Strategie definuje pravidla pro vstup, výstup, řízení pozice, a v neposlední řadě také riziko a money management. Bez pevné strategie jsme vystaveni riziku náhodného obchodování, což může vést k významným ztrátám. Nicméně, ne vždy je snadné rozhodnout se, kdy je čas opustit svou stávající obchodní strategii. V tomto článku se budeme zabývat pěti situacemi, kdy přestat s realizací své stávající strategie a hledat novou cestu.
  • 5 věcí, které by měl obsahovat checklist tradera
    Jsou oblasti a profese, kde je bezpečnost a eliminace chyby lidského faktoru absolutní prioritou. Ať už jde například o jadernou elektrárnu, nebo pilotování letadla. Jasnou součástí fungování jsou v těchto oblastech tzv. checklisty, neboli kontrolní seznamy.
  • 5 velkých mýtů o obchodování forexu
    Pokud jste ve světě obchodování forexu nováček a hledáte informace, jak vůbec začít, vězte, že v tomto odvětví platí, že je propleteno spoustou balastu a zkreslených informací. Po čas celé své tradingové kariéry se budete neustále zdokonalovat a nejspíš vyhledávat nové informace a rady na internetu.
  • 5 výhod brokera XTB
    Společnost X-Trade Brokers (zkratka XTB) působí na trhu již více než 15 let. Během tohoto období společnost dynamicky rostla a dnes se řadí mezi přední online brokery na světě.
  •  


    Diskuse ke článku

    Diskuse je přístupná pouze pro registrované uživatele.
    Přihlásit se | Nová registrace
Forex - doporučené články:

Co je FOREX?
Základní informace o finančním trhu FOREX. Forex je obchodování s cizími měnami (forex trading) a je zároveň největším a také nejlikvidnějším finančním trhem na světě.
Forex pro začátečníky
Forex je celosvětová burzovní síť, v jejímž rámci se obchoduje se všemi světovými měnami, včetně české koruny. Na forexu obchodují banky, fondy, pojišťovny, brokeři a podobné instituce, ale také jednotlivci, je otevřený všem.
1. část - Co to vlastně forex je?
FOREX = International Interbank FOReign EXchange. Mezinárodní devizový trh - jednoduše obchodování s cizími měnami - obchodování se směnnými kurzy.
VIP zóna - Forex Asistent
Nabízíme vám jedinečnou příležitost stát se součástí týmu elitních obchodníků FXstreet.cz. Ve spolupráci s předními úspěšnými obchodníky jsme pro vás připravili unikátní VIP skupinu (speciální uzavřená sekce na webu), až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní VIP indikátory, doposud úspěšně používané pouze k soukromým účelům. Nyní se vám otevírá možnost stát se součástí této VIP skupiny, díky které získáte jedinečné know-how pro obchodování na forexu, výjimečné VIP indikátory, a tím také náskok před drtivou většinou ostatních účastníků trhu.
Forex brokeři - jak správně vybrat
V podstatě každého, kdo by chtěl obchodovat forex, čeká jednou rozhodování o tom, s jakým brokerem (přeloženo jako makléř/broker nebo zprostředkovatel) by chtěl mít co do činění a svěřil mu své finance určené k obchodování. Velmi rád bych vám přiblížil problematiku výběru brokera, rozdíl mezi jednotlivými typy brokerů a v neposlední řadě uvedu několik příkladů nejznámějších z nich.
Forex robot (AOS): Automatický obchodní systém
Snem některých obchodníků je obchodovat bez nutnosti jakéhokoliv zásahu do obchodu. Je to pouhá fikce nebo reálná záležitost? Kolik z nás věří, že "roboti" mohou profitabilně obchodovat? Na jakých principech fungují?
Forex volatilita
Forex volatilita, co je volatilita? Velmi užitečným nástrojem je ukazatel volatility na forexu. Grafy v této sekci ukazují volatilitu vybraného měnových párů v průběhu aktuální obchodní seance.
Forex zůstává největším trhem na světě
V dnešním článku se podíváme na nejnovější statistiky globálního obchodování na forexu. Banka pro mezinárodní vyrovnání plateb (BIS) totiž před pár týdny zveřejnila svůj pravidelný tříletý přehled, ve kterém detailně analyzuje vývoj na měnovém trhu. BIS je označována jako "centrální banka centrálních bank". Je nejstarší mezinárodní finanční organizací a hraje klíčovou roli při spolupráci centrálních bank a dalších institucí z finančního sektoru. Dnešní vzdělávací článek sice nebude zcela zaměřen na praktické informace z pohledu běžného tradera, ale i přesto přinese zajímavé a důležité poznatky.

Nejnovější články:


Naposledy čtené:

reklama
Purple MT4 platforma nova