Zmienne globalne terminala

Zacznę od najważniejszej rzeczy, którą każdy powinien zapamiętać. Zmienne globalne omawiane w tym punkcie są specyficznym rozwiązaniem stosowanym na platformie MetaTrader i przechowywane są w obszarze pamięci terminala klienckiego, dlatego nie należy ich utożsamiać ze zmiennymi globalnymi (opisanymi w poprzednich punktach), stosowanymi w MQL4 jak i w innych językach programowania. Funkcje operujące na zmiennych globalnych terminala zapewniają tworzenie, ustawanie, sprawdzanie i modyfikację zmiennych globalnych terminala. Zmienne globalne są przechowywane w obszarze pamięci terminala przez 1 miesiąc po tym okresie, jeśli nie były używane zostają automatycznie usunięte. Zmienne globalne terminala klienta są dostępne równocześnie z poziomu wszystkich programów MQL4 uruchomionych w terminalu klienta.

GlobalVariableCheck

Funkcja sprawdza czy istnieje zmienna globalna określona podaną nazwą wówczas funkcja zwraca true, w przeciwnym razie false.

Składnia:

bool GlobalVariableCheck( string name )
Parametry
name – nazwa zmiennej globalnej terminala
Wartość zwracana
true – jeśli istnieje
fale – jeśli nie istnieje

Przykład:

// sprawdzenie czy istnieje zmienna globalna
if( !GlobalVariableCheck("global_var_1") )
Print("Zmienna globalna ", global_var_1, "jest dostępna");

GlobalVariableDel

Funkcja usuwa zmienną globalną. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

bool GlobalVariableDel( string name )
Parametry
name – nazwa zmiennej globalnej terminala
Wartość zwracana
true – jeśli prawidłowo usunięto
false – jeśli błąd usunięcia zmiennej globalnej

Przykład:

// usuwamy zmienną globalną "global_var_1"
GlobalVariableDel("global_var_1");

GlobalVariableGet

Funkcja pobiera i zwraca wartość zmiennej globalnej terminala lub zwraca zero (0) jeśli wystąpi błąd. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

double GlobalVariableGet( string name )
Parametry
name – nazwa zmiennej globalnej terminala
Wartość zwracana
wartość zmiennej globalnej lub 0 jeśli błąd

Przykład:

double gv1 = GlobalVariableGet("global_var_1");
//---- sprawdzenie czy nie ma błędu
if( GetLastError() != 0) return(false);
//---- wyświetlenie wartości zmiennej jeśli została prawidłowo odczytana
Print("Zmienna globalna o wartość =", global_var_1);

GlobalVariableName

Funkcja pobiera i zwraca nazwę zmiennej globalnej na podstawie indeksu przekazanego, jako parametr wywołania funkcji. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError().

Składnia:

string GlobalVariableName( int index )
Parametry
index – indeks zmiennej globalnej, przyjmujący wartość od 0 do wartości
maksymalnej ilości zmiennych, którą można pobrać funkcją
GlobalVariablesTotal().
Wartość zwracana
nazwa zmiennej globalnej terminala

Przykład:

// wyświetlenie wszystkich nazw zmiennych globalnych na podstawie indeksu
int var_total = GlobalVariablesTotal();
string name;
for(int i=0;i<var_total;i++)
{
name = GlobalVariableName(i);
Print("Zmienna globalna o indeksie ", i, " nazywa się ", name);
}

GlobalVariableSet

Jeśli zmienna istnieje to funkcja ustawia wartość zmiennej globalnej, a jeśli nie istnieje to tworzy nową zmienną i ustawia jej wartość. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError()

Składnia:

datetime GlobalVariableSet( string name, double value)
Parametry
name – nazwa zmiennej globalnej terminala
value – wartość jaka zostanie przypisana zmiennej globalnej
Wartość zwracana
czas zapisu zmiennej globalnej lub 0 jeśli błąd

Przykład:

//---- ustawienie nowej wartości zmiennej
if( GlobalVariableSet("LiczbaSlupkowWykresu",Bars)==0)
return(false);
//---- inne operacje, jeśli prawidłowo ustawiono zmienną globalną

GlobalVariableSetOnCondition

Funkcja ustawia warunkowo wartość zmiennej globalnej wcześniej sprawdzając czy w tej zmiennej jest określona wartość. Jeśli zmienna globalna nie będzie istniała to zwrócony zostanie błąd ERR_GLOBAL_VARIABLE_NOT_FOUND (4058), a funkcja zwróci wartość false. Jeśli zmienna istnieje i warunek jest spełniony to funkcja zwróci wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Typowe zastosowanie funkcji to sprawdzanie statusu wykonywanych operacji przez niezależne program np. EA i wskaźnik.

Składnia:

GlobalVariableSetOnCondition( string name, double value, double
check_value )
Parametry
name – nazwa zmiennej globalnej terminala
value – wartość, która ma być przypisane do zmiennej
check_value – wartość, która powinna być w zmiennej, aby warunek został
spełniony i przypisana nowa wartość
Wartość zwracana
true – jeśli przypisano nową wartość
false – jeśli błąd przypisania nowej wartości

Przykład:

// przykład semafora (dostęp do zasobów współdzielonych, na przykładzie
jednoczesnego dostępu do pliku)
int init()
{
//---- tworzymy nową zmienną globalną
GlobalVariableSet("DATAFILE_SEM",0);
//...
}
int start()
{
//---- sprawdzamy czy nie następuje zatrzymanie programu
while(!IsStopped())
{
//---- blokada zasobów (semafor=1)
if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true) break;
//---- sprawdzamy błędy, może zmienne nie istnieje?
if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND) return(0);
//---- odczekujemy 0.5 sekundy i powtarzamy sprawdzanie w pętli
Sleep(500);
}
//---- zasoby zablokowane
// ... operacje na zablokowanych zasobach
//---- poniżej zwalniamy zasoby (semafor = 0)
GlobalVariableSet("DATAFILE_SEM",0);
}

GlobalVariableDeleteAll

Funkcja usuwa wszystkie zmienne globalne terminala określone prefiksem (początkowym tekstem) lub dokładnie wszystkie, jeśli nie podano prefiksu.

Składnia:

int GlobalVariablesDeleteAll( string prefix_name=NULL )
Parametry
prefix_name – nazwa prefiksu (tekst początkowy zmiennych globalnych)
Wartość zwracana
ilość usuniętych zmiennych

Przykład:

Print( GlobalVariablesDeleteAll("test_")," usunięto wszystkie zmienno
kreślone początkowym prefiksem test_");

GlobalVariablesTotal

Funkcja zwraca liczbę wszystkich zmiennych globalnych, które są w pamięci terminala.

Składnia:

int GlobalVariablesTotal()
Parametry
brak
Wartość zwracana
ilość aktualnie dostępnych zmiennych globalnych

Przykład:

Print("Ilość zmiennych globalnych terminal to ", GlobalVariablesTotal());

Niniejszy materiał, przygotowany przez DM BOŚ S.A. ma charakter wyłącznie informacyjny, prezentowany jest w celach edukacyjnych i nie stanowi porady prawnej oraz nie jest rekomendacją osobistą w ramach świadczenia usługi doradztwa inwestycyjnego zgodnie z przepisami prawa. DM BOŚ S.A. nie udziela gwarancji dokładności, aktualności, oraz kompletności niniejszych informacji. Zaleca się przeprowadzenie we własnym zakresie niezależnego przeglądu informacji z niniejszego materiału.

1/1