Globální proměnné terminálu

V jednom z článků základní série jsme proměnné rozdělili na lokální a globální podle toho, ve které části programu jsou deklarovány. Proměnná deklarovaná uvnitř funkce platí pouze pro tuto funkci, kdežto proměnná, která je deklarována v hlavičce programu mimo těla všech funkcí, platí pro všechny jeho funkce. Příkladem může být třeba hlavička programu MACD Sample, který máme všichni ve svých Metatraderech:

Proměnné počínaje TakeProfit a konče MATrendPeriod jsou globálními proměnnými. Modifikátor input a jejich červená barva potom udávají, že jsou editovatelné uživatelem strategie.

Ve zmíněném článku bylo ale také naznačeno, že existuje ještě jiný typ globální proměnné, a to globální proměnná terminálu. Takovou proměnnou mohou používat nejen všechny funkce jednoho programu, ale rovněž všechny ostatní programy konkrétní platformy Metatrader, a to i po jejím ukončení. Dalo by se tak říct, že jde o ještě globálnější proměnnou. Jde o velice užitečnou věc, v tomto článku se s ní proto naučíme pracovat.

S globálními proměnnými terminálu se pracuje odlišně než s klasickými proměnnými. Je pro ně vyhrazena celá sada funkcí, která zajišťuje vše od deklarace přes inicializaci a vyvolání hodnoty až po případné vymazání. Název každé funkce pro práci s těmito proměnnými začíná řetězcem GlobalVariable…(), kde místo teček je činnost, kterou chceme s proměnnou provést.

Poněkud odlišně od klasických proměnných funguje deklarace a inicializace. Ta zde probíhá vždy naráz. Proměnnou deklarujeme i inicializujeme (vytvoříme a vložíme do ní hodnotu) funkcí GlobalVariableSet(), jejímž prvním parametrem je název proměnné a druhým hodnota, kterou ji chceme přidělit. Pokud proměnná s takovým názvem neexistuje, vytvoří se a dostane danou hodnotu, pokud existuje, pouze se změní její hodnota. Funkce tedy proměnné může deklarovat, inicializovat i měnit jejich hodnotu.

Další důležitou funkcí pro práci s tímto druhem proměnných je GlobalVariableGet(). Jediným parametrem je název proměnné. Funkce vrátí hodnotu uloženou v proměnné. Jedině touto funkcí můžeme s hodnotou proměnné pracovat.

Tyto dvě funkce vám teoreticky na práci s globálními proměnnými terminálu stačí, ale jazyk MQL jich nabízí ještě několik. Všechny popíšeme v následující tabulce:

Název funkce Akce
GlobalVariableCheck Ověří existenci proměnné s daným název
GlobalVariableTime Vrátí čas posledního přístupu na proměnnou s daným názvem
GlobalVariableDel Smaže proměnnou
GlobalVariableGet Vrátí hodnotu proměnné
GlobalVariableName Vrátí název proměnné podle jejího pořadového čísla v seznamu proměnných
GlobalVariableSet Nastaví proměnné novou hodnotu
GlobalVariablesFlush Uloží hodnoty všech proměnných na disk
GlobalVariableTemp Nastaví proměnné novou hodnotu, která existuje jen v aktuálním spuštění terminálu
GlobalVariableSetOnCondition Nastaví proměnné novou hodnotu na základě podmínky
GlobalVariablesDeleteAll Smaže všechny globální proměnné s danou předponou v jejich názvu
GlobalVariablesTotal Vrátí počet všech globálních proměnných

Jejich bližší popis a výčet parametrů najdete v angličtině na této stránce.

Jak bylo uvedeno, globální proměnná si ponechává svou hodnotu i po uzavření platformy. Přesto se ale její hodnota neuchovává věčně. Konkrétní proměnná se vymaže, pokud se po dobu 4 týdnů její hodnota nezmění, ani se nevyvolá pomocí GlobalVariableGet().