Ticaret robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Facebook üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Kütüphaneler

Düzenli İfadelerle Çalışmak İçin MQL4'te RegularExpressions - MetaTrader 4 için kütüphane

Yayınlayan:
MetaQuotes
Görüntülemeler:
372
Derecelendirme:
(30)
Yayınlandı:
2022.03.21 09:39
\MQL4\Experts\RegExpressions Demo\
Tests.mq4 (139.5 KB) görüntüle
\MQL4\Include\Internal\
Array.mqh (22.36 KB) görüntüle
\MQL4\Include\Internal\Generic\
List.mqh (38.77 KB) görüntüle
\MQL4\Include\Internal\TimeSpan\ \MQL4\Include\RegularExpressions\
Regex.mqh (57.05 KB) görüntüle
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.mqhGrup nesnelerinin kümesini temsil eder.
RegexMatch.mqhTek bir düzenli ifade eşleşmesinden elde edilen sonuçları temsil eder.
RegexMatchCollection.mqhDüzenli ifade kalıbını girdi dizgesine yinelemeli olarak uygulayarak bulunan başarılı eşleşmelerin kümesini temsil eder.
Regex.mqhBir 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.
ExplicitCaptureAdsı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).
SinglelineTek satır modunu belirtir.
IgnorePatternWhitespaceKalıptan çıkmayan boşlukları kaldırır ve # ile işaretlenmiş yorumları dahil eder.
RightToLeftAramanın soldan sağa yerine sağdan sola olacağını belirtir.
DebugProgramı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:

  1. .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.
  2. 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.
  3. .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();
    
  4. 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

Fuzzy - Bulanık Modeller Geliştirmek İçin Kütüphane Fuzzy - Bulanık Modeller Geliştirmek İçin Kütüphane

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.

QuotesDemo QuotesDemo

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

Simple Slope Oscillator Normalized with symbol overlay for MT4 Simple Slope Oscillator Normalized with symbol overlay for MT4

Simple Slope Oscillator Normalized with symbol overlay for MT4

Chaikin Oscillator smoothed for MT4 Chaikin Oscillator smoothed for MT4

Chaikin Oscillator with smoothing option.