Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Yayınlayan:
- MetaQuotes
- Görüntülemeler:
- 623
- Derecelendirme:
- Yayınlandı:
- 2022.03.21 09:39
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Gerçek yazar
Microsoft Corporation. Kaynak kodu .Net Framework 4.6.1'den alınmıştır.
Not: Kütüphane, MetaTrader 4 yapı 1384 ve üzerinde çalışır.
Arşivi terminal_veri_klasörü klasörüne çıkarın.
Kütüphanenin kodları şu klasörde bulunur: terminal_veri_klasörü\MQL4\Include\RegularExpressions\
Test komut dosyaları örnekleriyse şu klasörde bulunur: terminal_veri_klasörü\MQL4\Scripts\RegularExpressionsExamples\
.Net Framework 4.6.1'ten RegularExpressions kütüphanesinin port edilmesi aşağıda gösterilmiştir.
Kütüphaneyle çalışmak için, \MQL4\Include\RegularExpressions\ klasöründeki Regex.mqh dosyasını kodunuza eklemeniz gerekir.
Kütüphaneyle birlikte, aynı zamanda test senaryoları olarak da hizmet eden birkaç açıklayıcı örnek de sağlanmıştır. Tüm örnekler Microsoft Corporation'ın resmi web sitesinden alınmıştır ve C#'daki düzenli ifadelerden temel farklarını ve MQL4'teki kullanım özelliklerini açıkça gösterirler.
RegularExpressions'ın MQL4'e port edilen kütüphane paketleri hakkında daha detaylı bilgiler aşağıdadır:
Paketler | Açıklama |
---|---|
CharUnicodeInfo.mqh | Tüm karakterler (Latin olmayan karakterler dahil) için Unicode kategorilerini tanımlamak adına arşivlenmiş txt dosyası. |
RegexCapture.mqh | Tek bir başarılı alt ifade yakalamasının sonuçlarını temsil eder. |
RegexCaptureCollection.mqh | Tek bir yakalama grubu tarafından yapılan yakalamaların kümesini temsil eder. |
RegexGroup.mqh | Tek bir yakalama grubundan sonuçları temsil eder. |
RegexGroupCollections.mqh | Grup nesnelerinin kümesini temsil eder. |
RegexMatch.mqh | Tek bir düzenli ifade eşleşmesinden elde edilen sonuçları temsil eder. |
RegexMatchCollection.mqh | Düzenli ifade kalıbını girdi dizgesine yinelemeli olarak uygulayarak bulunan başarılı eşleşmelerin kümesini temsil eder. |
Regex.mqh | Bir değişmez düzenli ifadeyi temsil eder. |
RegexOptions.mqh | Düzenli ifade seçeneklerini ayarlamak için kullanılacak numaralandırılmış değerleri sağlar. |
RegexOptions.mqh dosyasındaki düzenli ifade parametreleri:
Parametre | Açıklama |
---|---|
None | Hiçbir seçeneğin ayarlanmadığını belirtir. |
IgnoreCase | Büyük/küçük harfe duyarsız eşleşmeyi belirtir. |
Multiline | Çok satırlı modu belirtir. |
ExplicitCapture | Adsız grupları yakalamamayı belirtir; yalnızca kabul edilebilir yakalamaların format olarak açıkça adlandırılmış veya numaralandırılmış gruplar olduğunu belirtir (?<ad> alt ifade). |
Singleline | Tek satır modunu belirtir. |
IgnorePatternWhitespace | Kalıptan çıkmayan boşlukları kaldırır ve # ile işaretlenmiş yorumları dahil eder. |
RightToLeft | Aramanın soldan sağa yerine sağdan sola olacağını belirtir. |
Debug | Programın hata ayıklama modunda çalıştığını belirtir. |
ECMAScript | İfade için ECMAScript uyumlu davranışı etkinleştirir. Bu değer yalnızca IgnoreCase ve Multiline değerleriyle birlikte kullanılabilir. |
MQL4'e port edilmiş RegularExpressions ile çalışmanın özellikleri:
- .Net versiyonunda olduğu gibi, bu kütüphane düzenli ifadelerin saklanmasını (statik önbellek) uygular. Örtülü olarak oluşturulan tüm düzenli ifadeler (Regex sınıfının örnekleri) bu depoya yazılır. Bu yaklaşım, kalıbı mevcut olanlardan herhangi biriyle eşleşirse düzenli ifadeyi yeniden oluşturma ihtiyacını ortadan kaldırdığı için komut dosyalarının çalışmasını hızlandırır. Depolamanın varsayılan boyutu 15'tir. Regex::CacheSize() metodu, uyumlu düzenli ifadelerin geçerli statik önbelleğindeki maksimum girdi sayısını geri döndürür veya ayarlar.
- MQL4'te düzenli ifadelerle çalışmanın ikinci özelliği, doğrudan ilkinden sonra gelir. Ve yukarıdaki depolamanın temizlenmesi gerektiği gerçeğine dayanır. Bunu yapmak için, Regex::ClearCache() statik fonksiyonunun çağrılması gerekir. Bu fonksiyonun yalnızca düzenli ifadelerle çalışma tamamlandıktan sonra çağrılması önerilir, aksi takdirde gerekli işaretçileri silme riski vardır.
- .Net'in aksine, MQL4 foreach döngüsünü uygulamaz ve bu nedenle numaralandırma yönetimi farklı olacaktır. Örnek:
//--- C#'ta kod Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b", RegexOptions.IgnoreCase); string text = "The the quick brown fox fox jumped over the lazy dog dog."; MatchCollection matches = rx.Matches(text); foreach (Match match in matches) { //--- yönet } //--- MQL4'te kod Regex *rx = new Regex("\\b(?<word>\\w+)\\s+(\\k<word>)\\b", RegexOptions::IgnoreCase); string text = "The the quick brown fox fox jumped over the lazy dog dog."; MatchCollection *matches = rx.Matches(text); IEnumerator<Match*> *en = matches.GetEnumerator(); while(en.MoveNext()) { Match *match = en.Current(); //--- yönet } delete rx; delete matches; delete en; Regex::ClearCache();
- Yukarıdaki örnekten de görülebileceği gibi, C# söz dizimi, içindeki tüm biçimlendirme işaretlerini yok saymak için '@' karakterini dizgelerin önüne koymaya izin verir. MQL4'te bu yaklaşım sağlanmamıştır, bu nedenle düzenli ifade kalıbındaki tüm kontrol karakterleri açıkça tanımlanmalıdır.
MQL4'e port edilmiş RegularExpressions ve özellikleri hakkında daha fazla bilgi edinmek için sağlanan Tests.mqh Uzman Danışmanını kullanın. Kütüphanenin tüm ana işlevselliklerini kapsayan çok sayıda düzenli ifade kullanımına ilişkin örnekler yer alır.
Tr
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/16566

Bulanık modeller geliştirmek için olan FuzzyNet kütüphanesi C# ile yazılmıştır. MQL4'e port edilirken, kütüphaneye Mamdani türü sistemler için 8 üyelik fonksiyonu ve 4 durulaştırma metodu eklenmiştir.

Google Finance'ten dünya endekslerinin fiyatlarını alma örneği.

Simple Slope Oscillator Normalized with symbol overlay for MT4

Chaikin Oscillator with smoothing option.