Alım-satım 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

Simplest Logger class for MetaTrader 5 - MetaTrader 5 için kütüphane

Görüntülemeler:
144
Derecelendirme:
(5)
Yayınlandı:
\MQL5\Include\DKStdLib\Logger\ \MQL5\Scripts\
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Her programcının kendi logger'ı vardır. Python loglama modülünden esinlenerek MQL5 için kendiminkini yazdım.

Bu sınıf en basit olanıdır. Hiyerarşi, döndürücü veya biçimlendirici yok. Her proje için basit ve kullanışlıdır.

Kurulum

  1. CDKLogger.mqh dosyasını MQL\Include\DKStdLib\Logger klasörüne kopyalayın.
  2. CDKLogger sınıfını içe aktarın.

#include <DKStdLib\Logger\CDKLogger.mqh

Kullanım

CDKLogger logger;

// ADIM 1. Logger'ı "MyLoggerName" adı ve INFO seviyesi ile başlatın
logger.Init("MyLoggerName", INFO);

// Varsayılan logger formatını "%name%:[%level%] %message%" kendi formatınızla değiştirebilirsiniz
// Herhangi bir desen kombinasyonu kullanın 
logger.Format = "%YYYY%-%MM%-%DD% %hh%:%mm%-%ss% - %name%:[%level%] %message%"; 

// ADIM 2. İletiyi yalnızca alt dizinlerle filtrelemek isterseniz,
// FilterInList'i doldurun 
// 2.1. FilterIntList'e bir substings ekleyin
logger.FilterInList.Add("Including-Substring-#1");        
logger.FilterInList.Add("Including-Substring-#2");        

// 2.2. Tüm alt dizeleri tek satırda FilterInList'e eklemek için dizeyi ";" ayırıcısıyla bölün
logger.FilterInFromStringWithSep("Including-Substring-#3;Including-Substring-#4", ";");  

// ADIM 3. OUT mesajını alt dizelerle filtrelemek, ancak diğerlerini bırakmak isterseniz,
// FilterOutList'i doldurun 
// 3.1. FilterOutList'e bir alt dize ekleyin
logger.FilterOutList.Add("Excluding-Substring-#1");        
logger.FilterOutList.Add("Excluding-Substring-#2");        

// 3.2. Tüm alt dizeleri tek satırda FilterOutList'e eklemek için dizeyi ";" ayırıcısıyla bölün
logger.FilterOutFromStringWithSep("Excluding-Substring-#3;Excluding-Substring-#4", ";");  // use Filter In filtre str'nizi sep by ; ile buraya koyun

// ADIM 4. Günlük kaydı
logger.Debug("Debug: Including-Substring-#1", false);                  // Uyarı olmadan hata ayıklama
logger.Info("Info: Including-Substring-#1", true);                     // Uyarı iletişim kutusu ile bilgi
logger.Warn("Warn: Including-Substring-#1"); 
logger.Error("Error: Including-Substring-#1: Excluding-Substring-#1"); // FilterOutList nedeniyle atlandı
logger.Critical("Critical: Including-Substring-#1");

logger.Assert(true, 
              "Log msg if true", INFO,   // tamam ise
              "Log msg if false", ERROR, // eğer başarısız olursa
              true);                     // Uyarıyı da Göster
logger.Assert(true, 
              "Same msg for true & false", 
              INFO,   // Tamamsa günlük seviyesi
              ERROR,  // Başarısız olursa günlük seviyesi
              false); // Uyarı Yok 

Yürütme sonucunda aşağıdaki mesajlar günlüğe çıktılanacaktır:

Açık sorunlar

Class'ı genellikle bu şekilde kullanıyorum:

logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f",
                          __FUNCTION__, __LINE__,
                          my_param));

Ancak burada bir sorunumuz var. StringFormat fonksiyonu, loglama seviyesi mesajın çıktılanmasını gerektirmese bile her seferinde dizeyi ayrıştırır.

Eğer hata ayıklama mesajlarının çıktısını çok fazla almanız gerekiyorsa, çıktıyı bir koşula bağlamanız gerekecektir:

if(DEBUG >= logger.Level)                          
  logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f",
                            __FUNCTION__, __LINE__,
                            my_param));      

Bunu yapmanın en iyi yolu StringFormat'ı tembel bir şekilde kullanmaktır, ancak ne yazık ki MQL5 Hata Ayıklama, Bilgi, Hata ve benzeri işlevlere dinamik sayıda işlev parametresi aktarmayı desteklemez.

Bunun nasıl yapılabileceğine dair fikirleriniz varsa duymak isterim.

MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/52741

Waddah Attar Patlaması Waddah Attar Patlaması

Gösterge, piyasanın ne zaman daha hızlı hareket etmeye başladığını gösterir. Ek olarak, tüccara bir ticareti ne zaman alacağını, satacağını ve çıkacağını söyler.

Düzeltilmiş ADX Düzeltilmiş ADX

Birçok yumuşatma algoritması vardır, bu gösterge standart ADX göstergesinin yumuşatılmasıdır.

TimeServerDaylightSavings TimeServerDaylightSavings

Teklif geçmişinden sunucu saat dilimi ve yaz saati uygulamasının (DST) ampirik tespiti için zamanla ilgili işlevler

StepMA_Line StepMA_Line

StepMA göstergesi, hareketli ortalama olarak tasarlanmıştır.