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
Görüntülemeler:
32
Derecelendirme:
(3)
Yayınlandı:
\MQL5\Include\Tools\Custom\ \MQL5\Expert\Test\DateTimeMsc\
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Yakın zamanda CopyTicksRange() işlevselliğini yoğun bir şekilde test etmeye başladığımda, milisaniye zamanları işlerken birkaç olumsuz sorunla karşılaştım:

  1. Aslında CDateTime kullanmak istiyordum, çünkü MqlTimeStruct'tan türetilmiştir ve dahil edilen artırma ve azaltma yöntemlerini kullanarak farklı zaman birimlerini çok kolay bir şekilde düzenleyebilirsiniz.
  2. Aynı zamanda, milisaniye zamanlarını (1 Ocak 1970'ten bu yana geçen saniye çarpı 1000 ulong formatında) ileri geri sorunsuz bir şekilde çevirmek için bir yola ihtiyacım vardı.

Burada, örneğin milisaniye sayısının size tam tarih hakkında pek bir şey söylemeyen çok belirsiz bir sayı olması gibi bir zorlukla karşılaştım. Bununla birlikte, CDateTime veya TimeStruct kullanırsanız, tüm zaman birimlerini değiştirmek kolaydır, ancak biçim onları ayırır ve sonuç da çok belirsizdir. Bu CDateTimeMsc sınıfı bu sorunu çözmek için oluşturulmuştur.

#include <Tools\DateTime.mqh>

struct CDateTimeMsc: public CDateTime
  {
public:
   int               msc;               // additional variable for msc storage
   datetime          check_datetime;    // uygun gözlem için biraz ek yük gereklidir.

   //--- CDateTimeMsc yöntemleri

   ulong             MscTime(void) {return(ulong(double(CDateTime::DateTime()) * 1000) + msc);}
   void              MscTime(ulong a_msc_time);  // giriş (datetime*1000)
   void              Msc(int value);
   //bool IsNumInt(const int num);
   void              MscDec(int delta = 1);
   void              MscInc(int delta = 1);
   void              SecTime(int a_int_time);
   ulong             SecTime(void);
   void              UpdateDateTime();   // gözlem değişkenini günceller check_datetime
   void              DateTime(datetime a_datetime) {CDateTime::DateTime(a_datetime); UpdateDateTime();}
   datetime          DateTime(void) {return(CDateTime::DateTime());}

  };

Yeni metotlar eski yapının kalıtımı altına yerleştirildi.

Artık aslında bir yapı olan sınıf (bkz. Yapılar/Sınıflar), bu tür kesin zamanların mevcut olması koşuluyla milisaniyelerle de çalışabilir.

Ayrıca, artırma ve azaltma yöntemleri msc özelliğine genişletilmiştir.

Şimdi, belirli bir ek yük oluşturduğundan (bazı insanlar için bu çok önemlidir) ek değişken "check_datetime" ın gerçekten gerekli olup olmadığı tartışılabilir. Ancak, genellikle çok fazla CDateTime nesnesi kullanılmadığını, yalnızca saat, dakika, saniye veya gün gibi zaman birimlerinin değiştirilmesi gereken önemli yerlerde birkaç tane kullanıldığını varsaydım. Ayrıca, her artış/azalışta gereksiz yere çağrılan UpDateTime() yöntemi hakkında da birkaç şüphem vardı.

Ancak sonuçta, kullanım faktörü ana odak noktasıydı.


Test
Tam tarihi bilmek istiyorsanız artık ek bir datetime değişkeni ile zamanı sorgulamak zorunda değilsiniz, ancak "check_datetime" değişkenini denetim altına alabilirsiniz: (TestEA yukarıya bakın)


obs2

Milisaniye zamanı otomatik olarak tarih-saat formatına çevrilmiştir.


MetaQuotes Ltd tarafından Almancadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/de/code/48156

Gün İçi Üçlü Performans Gün İçi Üçlü Performans

Üç çarpı işareti belirleyin ve belirli bir zamandan başlayarak (bu da ayarlanabilir) günlük yüzde performansını izleyin.

Mükemmel ZigZag Mükemmel ZigZag

Mümkün olan en basit prensipte ultra hızlı zikzak. Sarkan köşe yok. Zaman optimizasyonlu köşe bulma desteği ile.

Jolly Roger'ın danışman versiyonu Jolly Roger'ın danışman versiyonu

Otomatik Ticaret Şampiyonası 2011'deki Pirat katılımcısına dayanmaktadır.

Triangle Hedge Triangle Hedge

MetaTrader 5'te sanal bir hedge pozisyonu açar.