Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 60
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
CDebugLogger Sınıfı: MQL4/5 için Kapsamlı Bir Günlük Yardımcı Programı
CDebugLogger sınıfı, MQL4/5 ortamları için özel olarak tasarlanmış güçlü ve esnek bir günlük tutma aracıdır. Uygulamalarının davranışlarını hassas bir şekilde izlemesi, hata ayıklaması ve takip etmesi gereken geliştiriciler için önemli bir araçtır. Aşağıda, bu sınıfın temel özelliklerini ve yeteneklerini keşfediyoruz.
Temel Özellikler
- Çoklu Günlük Seviyeleri: CDebugLogger sınıfı INFO, WARNING, ERROR ve DEBUG dahil olmak üzere farklı önem seviyelerinde günlük tutmayı destekler. Bu, geliştiricilerin belirli öneme sahip mesajları filtrelemesine ve bunlara odaklanmasına olanak tanır.
- Zaman Damgası Ekleme: Geliştiriciler, özelleştirilebilir formatlarla günlük mesajlarına zaman damgası eklemeyi seçebilirler. Bu özellik, olayların tam zamanını izlemek ve zamana duyarlı sorunlarda hata ayıklamak için çok önemlidir.
- Dosya Günlüğü: Sınıf, dosyalara günlük kaydı için güçlü destek sağlar. Geliştiriciler dosya günlüğünü etkinleştirebilir veya devre dışı bırakabilir, günlük dosyasının yolunu belirleyebilir ve günlüklerin ortak bir klasöre kaydedilip kaydedilmeyeceğini seçebilir. Ayrıca, günlükler CSV formatında kaydedilerek ayrıştırılmaları ve analiz edilmeleri kolaylaştırılabilir.
- Bağlamsal Bilgi: Günlük mesajlarının netliğini artırmak için CDebugLogger sınıfı fonksiyon imzalarının, dosya adlarının ve satır numaralarının eklenmesine izin verir. Bu bağlamsal bilgiler, kod içindeki sorunların tam yerini belirlemeye yardımcı olur.
- Sessiz Anahtar Kelimeler: Bu sınıfın benzersiz bir özelliği, belirli anahtar kelimeler içeren günlükleri susturma yeteneğidir. Bu özellikle parolalar veya gizli veriler gibi hassas bilgilerin günlüğe kaydedilmesini önlemek için kullanışlıdır.
- Anahtar Kelimeleri Filtrele: Bu sınıfın bir diğer benzersiz özelliği de belirli anahtar kelimeler içeren günlükleri filtreleyebilmesidir. Bu, özellikle yalnızca belirli sorunlarla ilgili günlüklere odaklanarak hata ayıklama için kullanışlıdır. Geliştiriciler, günlük çıktısını yalnızca belirli terimleri içeren iletileri içerecek şekilde daraltabilir, böylece ilgisiz günlük girdileri tarafından boğulmadan bu terimlerle ilgili sorunları tanımlamayı ve ele almayı kolaylaştırır.
Örnek Kullanım
Aşağıda, CDebugLogger sınıfının nasıl başlatılacağı ve kullanılacağına ilişkin bir örnek yer almaktadır:
// Logger'ı INFO seviyesinde bir dosyaya günlük tutacak şekilde başlatın CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true); // Basit bir mesaj günlüğe kaydedin logger.Log(INFO, "This is an info message"); // Bir anahtar sözcüğü susturun logger.AddSilentKeyword("password"); // Susturulacak bir mesaj kaydedin logger.Log(INFO, "User entered password: 1234"); // Dosya günlüğünü etkinleştir logger.EnableFileLogging(true, "debug.log", false); // Susturulmuş bir anahtar sözcüğü kaldırın logger.RemoveSilentKeyword("password"); // Anahtar kelimeyi sessizlik listesinden çıkardıktan sonra bir mesaj günlüğe kaydedin logger.Log(INFO, "User entered password: 1234"); // Günlükleri filtrelemek için bir anahtar sözcük ekleyin logger.AddFilterKeyword("success"); // Filtrelenecek bir mesajı günlüğe kaydedin logger.Log(INFO, "Operation failed"); // Filtreyi geçecek bir mesaj günlüğe kaydedin logger.Log(INFO, "Operation successful"); // Filtreden bir anahtar sözcüğü kaldırın logger.RemoveFilterKeyword("success"); // Genel Log işlevini kullanarak başlatma logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true); // Genel Log işlevini kullanarak bir uyarıyı günlüğe kaydedin Log(WARNING, "This is a warning message");
Betik Örneği
CDebugLogger sınıfını bir kodda kullanmak için, aşağıda gösterildiği gibi dosyanızın başına gerekli kütüphaneyi eklemeniz yeterlidir:
//--- Bu başlık dosyasını diğerlerinden önce dahil etmek önemlidir #include <Logging.mqh> //+------------------------------------------------------------------+ //| Betik program başlatma işlevi| //+------------------------------------------------------------------+ void OnStart() { //--- Kaydediciyi INFO düzeyinde başlatın, bir dosyaya kaydedin //--- Zaman damgalarını dahil etme ve CSV formatında kaydetme int log_options = 0; // DOSYA ADI | SATIR | FUNCSIG; logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true); //--- Basit bir bilgilendirme mesajı günlüğe kaydedin Log(INFO, "Script started successfully."); //--- Bir uyarı mesajı günlüğe kaydedin Log(WARNING, "This is a warning message."); //--- Bir hata mesajı günlüğe kaydedin Log(ERROR, "This is an error message."); //--- Bir hata ayıklama mesajı günlüğe kaydedin Log(DEBUG, "This is a debug message for debugging purposes."); //--- 'password' içeren günlükleri susturmak için bir anahtar sözcük ekleyin logging.AddSilentKeyword("password"); //--- Susturuldu anahtar sözcüğünü içeren bir mesajı günlüğe kaydetme girişimi Log(INFO, "User entered password: 12348"); // Bu mesaj susturulacaktır //--- Susturulmuş anahtar sözcüğünü kaldırın logging.RemoveSilentKeyword("password"); //--- Mesajı tekrar günlüğe kaydet, şimdi günlüğe kaydedilecek Log(INFO, "User entered password: 1234"); //--- Bir mesajı günlüğe kaydetmek için genel Log işlevini kullanın Log(INFO, "This message is logged using the generic Log function."); //--- INFO düzeyinde bir mesajı günlüğe kaydetmek için Yazdır makrosunu kullanın Print("This message is logged using the Print macro."); //--- Farklı seçenek kombinasyonları ile günlüğe kaydetmeyi gösterin logging.Initialize(INFO, true, "log_with_options.txt", true, TIME_DATE | TIME_MINUTES, false, FILENAME | LINE, true); Log(INFO, "This log includes only the file name and line number."); logging.Initialize(INFO, true, "log_with_funcsig.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, FUNCSIG, true); Log(INFO, "This log includes only the function signature."); logging.Initialize(INFO, true, "log_custom_order.txt", true, TIME_MINUTES, false, LINE | FILENAME | FUNCSIG, true); Log(INFO, "This log includes line number, file name, and function signature in a custom order."); //--- 'important' içeren günlükleri filtrelemek için bir anahtar sözcük ekleyin logging.AddFilterKeyword("important"); //--- Filtreyi göstermek için bazı mesajları günlüğe kaydedin Log(INFO, "This is an important message."); // Bu mesaj görünür olacak Log(INFO, "This is a regular message."); // Bu mesaj görünür olmayacaktır //--- Tüm günlükleri göstermek için filtre anahtar sözcüğünü kaldırın logging.RemoveFilterKeyword("important"); //--- Komut dosyasının sonunu belirten bir son mesaj günlüğe kaydedin Log(INFO, "Script execution completed."); }
Çıktı CSV örneği:
Timestamp,Level,Message "2024.09.01 18:31:44","INFO","Script started successfully." "2024.09.01 18:31:44","WARNING","This is a warning message." "2024.09.01 18:31:44","ERROR","This is an error message." "2024.09.01 18:31:44","DEBUG","This is a debug message for debugging purposes." "2024.09.01 18:31:44","INFO","User entered password: 1234" "2024.09.01 18:31:44","INFO","This message is logged using the generic Log function." "2024.09.01 18:31:44","INFO","This message is logged using the Print macro."
Timestamp,Level,Message,Filename,Line "2024.09.01 18:31","INFO","This log includes only the file name and line number.","Logging.mq5","135"
Timestamp,Level,Message,Funcsig "2024.09.01 18:31:44","INFO","This log includes only the function signature.","void OnStart()"
Timestamp,Level,Message,Filename,Line,Funcsig "18:31","INFO","This log includes line number, file name, and function signature in a custom order.","Logging.mq5","141","void OnStart()" "18:31","INFO","This is an important message.","Logging.mq5","147","void OnStart()" "18:31","INFO","Script execution completed.","Logging.mq5","154","void OnStart()"
Sonuç
CDebugLogger sınıfı, tüm MQL4/5 geliştiricileri için paha biçilmez bir araçtır. Çok çeşitli özelleştirilebilir özellikleriyle, uygulamaların hassas bir şekilde günlüğe kaydedilmesini ve izlenmesini sağlayarak daha kolay hata ayıklama ve daha iyi uygulama performansı takibini kolaylaştırır. İster basit mesaj günlüğüne ister ayrıntılı bağlamsal bilgilere ihtiyacınız olsun, CDebugLogger sınıfı geliştirme ihtiyaçlarınıza göre uyarlanmış güvenilir ve verimli bir çözüm sunar.
CDebugLogger sınıfı hakkında daha fazla bilgi almak veya diğer gelişmiş araçları ve çözümleri keşfetmek için StormWave Technologies'i ziyaret edin.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/51817
Max trade volume checker for your trading account
Farklı emir türleri (alış, satış, bekleyen alış ve bekleyen satış) için dayanak varlıkta izin verilen maksimum lot büyüklüğünü görüntüleyen bir iletişim kutusu.
IncAMAOnArray
SAMAOnAgro sınıfı, AMA (Uyarlanabilir Hareketli Ortalama) gösterge değerlerinin gösterge tamponları tarafından hesaplanması için tasarlanmıştır.
X2MA Dönüşüm Mumları
Gösterge, fiyat verilerini X2MA gösterge değerleriyle ilişkili yeni bir koordinat sistemine aktarır.
XTrendlessOS (trendsizlik osilatörü)
Gösterge, Joe DiNapoli'nin "Trading Using DiNapoli Levels" kitabında verilen açıklamaya göre yazılmıştır. Gösterge, gerçek aşırı alım/aşırı satım piyasasını değerlendirmek için tasarlanmıştır.