işlevlerini daha iyi anlamak amacıyla bu makaleyi okudum. Global bir değişken oluşturmak veya değiştirmek ticaret ortamını nasıl etkileyecek?
Global değişkenlerin sayısal değerinin neyi temsil ettiğini açıklayabilir misiniz?
Bir süredir terminalin global değişkenlerini araştırıyor ve anlamaya çalışıyorum, ancak henüz kullanımlarını ve etkilerini anlamadım. Mümkünse bana global bir değişken oluşturmanın yatırım hesabımın bakiyesi üzerinde nasıl olumlu bir sonuç doğurabileceğine dair basit bir örnek verebilir misiniz?
Teşekkür ederim.
Saygılarımla,
Dale.
Yayınlanan makale MQL5 Programlamanın Temelleri - Global Terminal Değişkenleri:
Yazar: Dennis Kirichenko
① Ödev:
MetaQuotes tarafından sağlanan bir döviz ticaret aracı olan MT4 / MT5'te harici txt dosyaları için global değişkenler (genellikle global değişkenler olarak adlandırılır) yazmak ve okumak istiyorum.
Durum:
Bunu aşağıdaki referans sayfasında açıklanan CGlobalVar.mqh ve CGlobalVarList.mqh sınıflarını kullanarak uygulamak istiyorum.
(Özellikle, CGLobalVarList sınıfının Save () / Load () yöntemini kullanarak küresel bir değişkenin yazılmasını / okunmasını gerçekleştirir)
Temel olarak Windows API'sini kullanmayın (HANDLE CeateFile W (), vb.). Д.).
③ İşlem dosyası depolama konumu:
Hedef dosyanın varsayılan konumu bu sınıfın belirtimini izler
/ Dosyalar
veya
FileOpen () işlevine argüman olarak FILE_COMMON belirtildiğinde saklanır
C: \ { User \ User-Name \ AppData \ Roaming \ MetaQuotes \ Terminal \ Common \ Files \ File
Ve bir tanesi.
④ Oluşturulan dosyalar:
Deneysel örnekler olarak iki basit komut dosyası
WriteGlobalParameters.mq4
и
ReadGlobalParameters.mq4.
Tarafından oluşturulmuştur.
açıklamalar
① Eğer amaç sadece global bir değişkeni başka bir terminal ile paylaşmaksa, paylaşımlı bellek kullanma yöntemini vb. düşünebilirsiniz. Ancak, bu sefer sadece harici txt dosyasını kullanan yöntemi düşünün.
② Dışa aktarma tarafında dosya (WriteGlobalParamaeters.mq 4) için, yerleşik MQL fonksiyonları GlobalVariablesTotal (), GlobalVariableName (), GlobalVariableName (), GlobalVariableGet (), GlobalVariableTime () kullanılarak, Save (HANDLE) kullanılmadan WriteFile () fonksiyonu kullanılarak yazılır (↓)
For (int i = GlobalVariablesTotal () - 1; i> = 0; i -) {
string gName = GlobalVariableName (i);
if (this.CheckGlobalVar (gName)) continue;
double gValue = GlobalVariableGet (gName);
datetime gTime = GlobalVariableTime (gName);
WriteFile (hFile, gName, gValue, gTime);
}, Değişkenlerin listesini belirtilen dizindeki bir txt dosyasına yazmak mümkündü.
Ancak, yukarıdaki GlobalVariable fonksiyon grubu durumunda, yazılabilse bile, global okuma ve terminal değişkenleri listesine eklenemez, bu nedenle dışarıda bırakılır.
#### Karşılaşılan sorunlar - Hata mesajı
WriteGlobalParameters.mq 4 Taraf:
2018.05.26 22: 34: 45.283 WriteGlobalParameters EURUSD, M1: uninit reason 0
2018.05.26 22: 34: 45.283 WriteGlobalParameters EURUSD, M1: Dosya kaydetme hatası
2018.05.26 22: 34: 45.282 WriteGlobalParameters EURUSD, M1: İşaretçi oluşturulurken hata oluştu
ReadGlobalParameters.mq 4 Taraf:
2018.05.26 22: 43: 08.397 ReadGlobalParameters EURUSD, M1: belirsiz neden 0
2018.05.26 22: 43: 08.397 ReadGlobalParameters EURUSD, M1: Pointer oluşturma hatası
* Yukarıdaki hata mesajından
İşaretçi spesifikasyonundaki kusurlar ve yetersiz dosya işlemi nedeniyle amaçlanan işlemin başarısız olduğu açıktır,
Aşağıdaki kodda sorunun nerede olduğu bilinmediğinden, bu noktadan bahsetmek istiyorum (belirsiz neden 0'ın yanı sıra)
```MQL4/MQL5.
WriteGlobalParameters.mq4>
//+------------------------------------------------------------------+
//| WriteGlobalParameters.mq4 |
//| Telif Hakkı 2018, MetaQuotes Software Corp. | |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Telif Hakkı 2018, MetaQuotes Software Corp."
#property link"https://www.mql5.com"
#property version "1.00"
#include <Arrays\List.mqh>
#include <CGlobalVar.mqh>
#include <CGlobalVarList.mqh>
//+------------------------------------------------------------------+
//| Senaryo programı başlatma işlevi |
//+------------------------------------------------------------------+
void OnStart(){
//Dosya Adınız
string FileName="Write";
string FileType="txt";
string file=FileName+". "+FileType;
//İşaretçi
CGlobalVarList *list = new CGlobalVarList;
if(liste!=NULL){
Print("Pointer Oluşturma Hatası");
}
//Handle
int hDosya;
hFile=FileOpen(file,FILE_WRITE|FILE_COMMON); //FILE_CSV|FILE_UNICODE
if(hFile>=0){
if(!list.Save(hFile)){
Print("Dosya Kaydetme Hatası");
listeyi sil;
FileClose(hFile);
}
//Kapat
FileClose(hFile);
}
//İşaretçiyi Serbest Bırak
listeyi sil;
}
==========================================================================
ReadGlobalParameters.mq4>
//+------------------------------------------------------------------+
//| ReadGlobalParameters.mq4 |
//| Telif Hakkı 2018, MetaQuotes Software Corp. | |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Telif Hakkı 2018, MetaQuotes Software Corp."
#property link"https://www.mql5.com"
#property version "1.00"
#include <Arrays\List.mqh>
#include <CGlobalVar.mqh>
#include <CGlobalVarList.mqh>
//+------------------------------------------------------------------+
//| Senaryo programı başlatma işlevi |
//+------------------------------------------------------------------+
void OnStart(){
//Dosya Adınız
string FileName="Read";
string FileType="txt";
string file=FileName+". "+FileType;
//İşaretçi
CGlobalVarList *list = new CGlobalVarList;
if(liste!=NULL){
Print("Pointer Oluşturma Hatası");
}
//Handle
int hDosya;
hFile=FileOpen(file,FILE_READ|FILE_COMMON); //FILE_CSV|FILE_UNICODE
if(hFile>=0){
if(!liste.Load(hFile)){
Print("Dosya Yükleme Hatası");
listeyi sil;
FileClose(hFile);
}
//Kapat
FileClose(hFile);
}
//İşaretçiyi Serbest Bırak
listeyi sil;
}
### Denedim
起動 MT 4'ü etkinleştirin ve terminaldeki global değişken listesine rastgele isimler ve sayısal değerler (Coco'da kolayca 0.0 veya 1.0) kaydedin.
(Kayıt sırasında otomatik olarak ayarlandığı için saat ayarlanmamıştır)
================================================== ===============
İlk olarak Write GlobalParameters.mq4 tarafından ---
① WriteGlobalParameters.mq4 ayarı ⓪ ile grafiğe uygulanır.
→ Eğer doğru çalışıyorsa, dosya yukarıda belirtilen dizinde oluşturulur ve global değişken bilgileri girilmelidir.
② Dizini kontrol ederseniz (C: \ User \ User - Name \ AppData \ Roaming \ MetaQuotes \ Terminal \ Common \ Files \),
Belirtilen "Write.txt" oluşturuldu, ancak dosya boyutu 0 kilobayt.
→ Açtığımda tabii ki global değişkenin adı ve değeri girilmemişti.
================================================== ================
Sonraki ReadGlobalParameters.mq 4 tarafında ---
③ 2 ile aynı dizinde rastgele bir isim ve sayısal değere sahip global bir değişkeni okumak için bir "Read.txt" dosyası oluşturdum
(İki tür isim/numara/zaman damgası oluşturduk ve test ettik, bölünmüş (belirtilmemiş) ve bölünmüş sekme (FileOpen'da "\ t" belirtilerek ())))
④ ①'a benzer şekilde, grafiğe ReadGlobalParameters.mq4 uygulasanız bile, yukarıdaki hata mesajı ve terminaldeki global değişkenler listesinin açılması da boştu.
================================================== ================
※ açıklamalar
Önlem olarak, FileOpen () işlevi için varsayılan olarak ayarlanan FILE_CSV, FILE_UNICODE, FILE_BIN ve FILE_ANSI ile aynı deneyi yaptık, ancak sonuç değişmedi.

- www.mql5.com
Artık Global Değişkenler yalnızca çifttir.
CMap nesnesini anahtar: değer çifti gibi öğelerle kullanmak isteyebilirsiniz.
Veya Array veya liste kullanın ..... Veya Global Değişken olarak Array veya liste kullanın.
Veya Global Değişken olarak bir belleğe işaret eden bir işaretçi kullanın .

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale MQL5 Programlama Temelleri: Terminalin Global Değişkenleri yayınlandı:
Bu makale, terminal global değişkenleriyle çalışmayı kolaylaştıran nesneler oluşturmak için MQL5 dilinin nesne yönelimli imkanlarını vurgulamaktadır. Pratik bir örnek olarak, genel değişkenlerin program aşamalarının uygulanması için kontrol noktaları olarak kullanıldığı bir durumu ele alıyorum.
Tam global değişkenler için olan benzer bir test sonucu Şekil 3'te sunulmuştur. Oluşturulmaları çok uzun sürmez.
Bunun nedeni, bu değişkenlerin Profiles klasöründeki diskte bulunan gvariables.dat dosyasına kaydedilmesidir.
Şek.3. Tam global değişkenler oluşturmak için harcanan zaman
Bu kadar çok global değişken yaratmaya gerek olduğunu düşünmüyorum. Bu değerlendirmeyi sırf meraktan yaptım.
Bir sonraki pasajda bir dizi global değişkenle çalışacağız.
Yazar: Denis Kirichenko