Operátory II

V předchozím díle jsme si ukázali základní operátory, bez kterých se neobejde téměř žádný program. Šlo o podmínkový operátor if-else a dva cyklické operátory while a for. V tomto díle se zaměříme na zbývající, můžeme říci méně důležité operátory a uděláme první úvod do funkcí.

Operátory break a continue

Operátory break a continue se používají výhradně uvnitř cyklických operátorů. Lze je tedy použít pouze ve spojení se složenými operátory while, for a switch. Oba operátory patří mezi jednoduché, stačí tedy jen napsat jejich název a za něj umístit středník.

Break má za úkol „násilně“ ukončit činnost cyklického operátoru. Využije se například v případě, že je za nějaké podmínky vhodné cyklický operátor ukončit dříve, než se podmínka jeho činnosti stane neplatná. Například v této části kódu je exekuce operátoru for ukončena v případě, že je v historii pozic nalezena pozice, která odpovídá zadaným kritériím. Bez operátoru break by cyklus pokračoval v procházení seznamu historických pozic až do konce, což ale není potřeba. Takto se činnost operátoru ukončí ihned po nalezení hledané pozice, což je mnohem efektivnější.

break

Operátor continue pro změnu ukončuje pouze exekuci jedné iterace cyklu. Použijeme ho v případě, kdy chceme za nějaké podmínky vypustit exekuci zbývající části cyklu a přejít rovnou k další iteraci. Můžeme opět uvést část kódu, kde se tento operátor vyskytuje.

continue

Tento řádek říká, že pokud je pátek a zároveň více než 23 hodin nebo sobota nebo neděle a zároveň méně než 22 hodin, tak program napíše do horní levé části grafu „Neobchoduje se, neaktualizuje se“ a ukončí iteraci cyklu a přejde na další iteraci. Tento řádek by měl smysl například ve speciální funkci OnTimer(), která se vykonává periodicky. Pokud by byly splněny podmínky, tedy pokud by čas byl mimo obchodní hodiny, nemělo by smysl v iteraci pokračovat a přešlo by se k další. Takto by program šetřil mnoho zdrojů do doby, než by se obchodovat začalo.

Operátor return

Return je zcela zásadní jednoduchý operátor u funkcí. Většina funkcí vrací určitou hodnotu. Kterou hodnotu má funkce vrátit určuje právě operátor return. Ukázku uvidíme hned v následujícím odstavci a především pak v následujícím díle.

Operátor switch

Operátor switch má za úkol zjednodušit práci tam, kde by rozhodovací mechanismus vyžadoval příliš velké množství podmínkových operátorů. V hlavičce napíšeme proměnnou, jejíž hodnota ovlivní další činnost operátoru. Následně rozepíšeme, co má program udělat v případech, že bude hodnota proměnné rovna nějaká hodnotě.

switchTento příklad operátoru switch, který je součástí uživatelské funkce, má za úkol rozhodnout, jakou hodnotu funkce vrátí v závislosti na hodnotě proměnné „typ“. Z praktického hlediska se jedná o operátor, který pojmenuje typ pozice. Typy pozice jsou totiž v MQL zakódovány indexy od 0 do 7. Který typ pozice index označuje, je vidět v našem příkladu. Switch funguje tak, že zjistí hodnotu proměnné „typ“ a poté vyhledá tuto hodnotu za výrazem „case“. Když ji najde, vykoná sadu operátorů za dvojtečkou ve stejném řádku (v tomto případě vrátí název typu pozice). Pokud ji nenajde, vezme sadu operátorů za výrazem „default“. Každý řádek je ukončen operátorem break, protože je jasné, že jakmile switch našel požadovaný řádek, není třeba hledat dál.