Kullanıcı terminalinin global değişkenleri MQL4 dilinin global isim alanındaki değişkenlerle karıştırılmamalıdır.
Global değişkenler kendilerine yapılan son erişimden 4 hafta süreyle kullanıcı terminalinde tutulur, daha sonra otomatik olarak silinirler. Sağlanan standart işlevlerle global bir değişkene hem bir değer atanabilir hem de bu değişkenlerin değeri sorgulanabilir.
Global değişkenlere kullanıcı terminalinde çalıştırılan tüm MQL4 programlarından eşzamanlı olarak erişilebilir.
GlobalVariableCheck İşlevi
bool GlobalVariableCheck(string name);Bu işlev ile, ismi gönderilen global değişkenin var olup olmadığı sorgulanır. İşleve ismi gönderilen global değişken var ise işlev TRUE değerini, ismi gönderilen global değişken yok ise işlev FALSE değerini döndürür. İşlevin çalışması ile ilgili bir hata oluşmuşsa ayrıntılı hata sorgulaması için GetLastError() işlevi çağrılmalıdır.
Parametreler
name: Sorgulanacak global değişkenin ismiÖrnek Kod
Aşağıdaki kodda eğer g1 isimli bir global değişken varsa bu değişlene 1 değeri atanıyor.if (!GlobalVariableCheck("g1"))
globalVariableSet("g1", 1);
GlobalVariableDel İşlevi
bool GlobalVariableDel(string name);Bu işlev bir global değişkeni siler. İşlev başarılı olursa TRUE değerini aksi halde FALSE değerini döndürür. İşlevin çalışması ile ilgili bir hata oluşmuşsa ayrıntılı hata sorgulaması için GetLastError() işlevi çağrılmalıdır.
Parametreler
name: Sorgulanacak global değişkenin ismi.Örnek Kod
Aşağıdaki örnek kodda ismi gVar olan bir global değişken siliniyor:if (GlobalVariableDel("gVar"))
Alert("gVar isimli global değişken silindi");
else
Alert("gVar isimli global değişken silinemedi");
GlobalVariableGet İşlevi
double GlobalVariableGet(string name);İşlev var olan bir global değişkenin değerini döndürür. Eğer ismi verilen global değişken yok ise işlevin geri dönüş değeri 0’dır. İşlevin çalışması ile ilgili bir hata oluşmuşsa ayrıntılı hata sorgulaması için GetLastError() işlevi çağrılmalıdır.
Parametreler
name: Değeri alınacak global değişkenin ismi.Örnek Kod
Aşağıdaki örnek kodda ismi gVar olan bir global değişkenin değeri double türden d isimli değişkene atanıyor. Eğer işlevin çalışması ile ilgili bir hatanın olup olmadığı GetLastError() işleviyle sınanıyor. Bir hata oluşması durumunda bu hata standart Alert() işleviyle yazdırılıyor.double d =GlobalVariableGet("gVar");
if (GetLastError() != 0)
return (false);
GlobalVariableName İşlevi
string GlobalVariableName(int index);Bu işlev global değişken listesinde indeksi verilen global değişkenin ismini geri döndürür. İşlevin çalışması ile ilgili bir hata oluşmuşsa ayrıntılı hata sorgulaması için GetLastError() işlevi çağrılmalıdır.
Parametreler
index : Global değişkenler listesindeki indeks. İşleve gönderilen indeks değeri 0’dan büyük ya da eşit ve aynı zamanda GlobalVariablesTotal() işlevinin geri dönüş değerinden küçük olmalıdır.Örnek Kod:
Aşağıdaki kodda tüm terminal global değişkenlerinin isimleri yazdırılıyor.int varTotal = GlobalVariablesTotal();
string name;
for(int i = 0; i < varTotal; i++) {
name = GlobalVariableName(i);
Print(i,": Global variable name - ", name);
}
GlobalVariableSet İşlevi
datetime GlobalVariableSet(string name, double value);Bir global değişkene yeni bir değer atar. Eğer işleve ismi gönderilen global değişken yok ise bu isimli yeni bir global değişken yaratılır. İşlev başarılı olursa işlevin geri dönüş değeri global değişkene son erişim zamanıdır. Başarısızlık durumunda işlevin geri dönüş değeri 0’dır. İşlevin çalışması ile ilgili bir hata oluşmuşsa ayrıntılı hata sorgulaması için GetLastError() işlevi çağrılmalıdır.
Parametreler
name: Global değişkenin ismivalue: Global değişkene atanacak değer.
Örnek Kod
GlobalVariableSet("BarsTotal", Bars)
return(false);
GlobalVariableSetOnCondition İşlevi
bool GlobalVariableSetOnCondition(string name, double value, double checkValue);İsmi gönderilen global değişkenin değeri eğer işlevin o anki değeri 3. parametresine gönderilen değere eşit ise bu global değişkene yeni değer olarak 2. parametreye geçilen değeri yerleştirir.
Eğer ismi verilen global değişken yok ise işlevin çalışması sonucunda 4058 nolu hata kodu olan ERR_GLOBAL_VARIABLE_NOT_FOUND üretilir ve işlev FALSE değeri döndürür. İşlevin başarılı olması durumunda geri dönüş değeri TRUE aksi halde geri dönüş değeri FALSE değeridir. İşlevin çalışması ile ilgili bir hata oluşmuşsa ayrıntılı hata sorgulaması için GetLastError() işlevi çağrılmalıdır.
Eğer global değişkenin o anki değeri kontrol değerinden farklı ise işlev FALSE değerine geri döner.
İşlev global değişkene otomatik erişim sağladığından aynı kullanıcı terminalinde birden fazla uzman danışmanın iletişim halinde çalışması durumunda aynı global değişkene eş zamanlı olarak erişimi engellemek amacıyla semafor (kitleme) mekanizması kullanılmalıdır.
Parametreler
name: Global değikenin ismi.value: Yeni değer.
checkValue: Global değişkenin o anki değeriyle karşılaştırılacak değer.
Örnek Kod
int init()
{
//---- Bir terminal global değişkeni oluşturuluyor.
GlobalVariableSet("DATAFILE_SEM",0);
//...
}
int start()
{
//---- Ortak kaynak kitleniyor
while (!IsStopped()) {
//---- kitleme
if(GlobalVariableSetOnCondition("DATAFILE_SEM", 1, 0))
break;
//---- değişken silinebilir mi?
if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND)
return(0);
//---- gecikme sağlanıyor.
Sleep(500);
}
//---- kaynak kitleniyor
// ... bazı işler yapılıyor.
//---- kaynağa ilişkin kilit açılır.
GlobalVariableSet("DATAFILE_SEM", 0);
}
GlobalVariablesDeleteAll İşlevi
int GlobalVariablesDeleteAll(string prefixName = NULL);Bu işlev global değişkenleri siler. Eğer parametresine bir değer geçilmez ise tüm terminal global değişkenleri silinir. İşlevin parametresine bir yazı geçilirse isimleri bu yazıyla başlayan terminal global değişkenleri silinir. İşlevin geri dönüş değeri silinmiş olan terminal global değişkenlerinin sayısıdır.
Parametreler
prefixName: Silinecek global değişkenlerin isimlerinin başlangıcındaki harfler.Örnek Kod
Print("test ismiyle başlayan ", GlobalVariablesDeleteAll("test_"), " değişken silindi");
GlobalVariablesTotal İşlevi
int GlobalVariablesTotal( );Bu işlev tüm global değişkenlerin toplam sayısını geri döndürür.
Örnek Kod
Print(GlobalVariablesTotal()," tane terminal global değişkeni var.");

Yorum Ekle
Başarıyla raporlandı
Teşekkür ederiz. Yorum, yöneticinin incelemesi için işaretlendi.