Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Telegram ü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

High-Performance Time Functions (TimeUtils) - MetaTrader 5 için kütüphane

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

Bu kütüphane, zaman değişkenleriyle başa çıkmak için 80'den fazla farklı fonksiyon içerir. Birincil amaç yüksek performanslı zaman fonksiyonları sağlamaktır. Performans modu (derleme zamanında bir #define ile kontrol edilebilir) varsayılan olarak devre dışıdır. Bu mod, kütüphaneyi projelerinize dahil etmek için bir gereklilik değildir, çünkü normalde onsuz da dahil edilebilir.


TIMEUTILS_PERFORMANCE_MODE

İsteğe bağlı olarak, performans modu derleme zamanında #include'dan önce #defines aracılığıyla açılabilir:

// kütüphane için performans modunu etkinleştir
#define  TIMEUTILS_PERFORMANCE_MODE
#include "TimeUtils.mqh"

Bu, MQL'in yerleşik TimeToStruct ve StructToTime işlevlerine yapılan tüm çağrıları daha verimli alternatiflere yönlendirecektir.

Makinenizdeki hız farkını kontrol etmek için "performance_mode.mq5" betiğini TIMEUTILS_PERFORMANCE_MODE ile ve TIMEUTILS_PERFORMANCE_MODE olmadan derleyebilirsiniz. Bu, ağır veya zamanla ilgili birçok görevi yerine getiren yüksek performanslı programlar için faydalı olacaktır (örneğin, işlem haftalarının başında H1 çubukları için tüm fiyat geçmişini taramak veya diğer istatistikleri toplamak).


Kütüphanedeki tüm fonksiyonların listelenmesi:

İşlev adları kendi kendini açıklayıcı olmalıdır; ayrıca TimeUtils.mqh dosyasında belirli bir işlev için kısa bir açıklama bulabilirsiniz.

//+==================================================================+
//| Bileşenlerden datetime oluşturma|
//+==================================================================+
datetime CreateDateTime(
   const int year,           // Yıl
   const int mon,            // Ay
   const int day,            // Gün
   const int hour = 0,       // Saat
   const int min = 0,        // Dakika
   const int sec = 0         // Saniye
   )
datetime CreateDateTime(MqlDateTime&  dt_struct);  // StructToTime() işlevine hızlı alternatif

//+==================================================================+
//| Break datetime To Components|
//+==================================================================+
bool TimeToStructFast(
   datetime      dt,         // Dönüştürülecek tarih değeri
   MqlDateTime&  dt_struct   // değerlerin benimsenmesi için yapı
   )

//+==================================================================+
//| Tarih saatinin bileşenlerini ayıklayın: Pazar, yyyy.mm.dd hh:mm:ss |
//| Get() Birimleri|
//+==================================================================+
int GetSecond(datetime t)
int GetMinute(datetime t)
int GetHour(datetime t)
int GetDay(datetime t)
int GetMonth(datetime t)
int GetYear(datetime t)

//+==================================================================+
//| Day() Sayı|
//+==================================================================+
int DayOfWeek(datetime t)
int DayOfYear(datetime t)
int DayIndex(datetime t)

//+==================================================================+
//| Week() Sayı|
//+==================================================================+
int WeekOfMonth(const datetime t, bool StartsOnMonday = false)
int WeekOfYear(const datetime t, bool StartsOnMonday = false)
int WeekIndex(datetime t, bool StartsOnMonday = false)

//+==================================================================+
//| StartOf() Birimleri|
//+==================================================================+
datetime StartOfMinute(datetime t)
datetime StartOfHour(datetime t)
datetime StartOfDay(datetime t)
datetime StartOfWeek(datetime t, bool StartsOnMonday = false)
datetime StartOfMonth(datetime t)
datetime StartOfYear(datetime t)

//+==================================================================+
//| EndOf() Birimleri|
//+==================================================================+
datetime EndOfMinute(datetime t)
datetime EndOfHour(datetime t)
datetime EndOfDay(datetime t)
datetime EndOfWeek(datetime t, bool StartsOnMonday = false)
datetime EndOfMonth(datetime t)
datetime EndOfYear(datetime t)

//+==================================================================+
//| SecsElapsedOf() Birimleri|
//+==================================================================+
int SecsElapsedOfMinute(datetime t)
int SecsElapsedOfHour(datetime t)
int SecsElapsedOfDay(datetime t)
int SecsElapsedOfWeek(datetime t, bool StartsOnMonday = false)
int SecsElapsedOfMonth(datetime t)
int SecsElapsedOfYear(datetime t)

//+==================================================================+
//| RoundTo() / Nearest() Birimleri|
//+==================================================================+
datetime RoundToMinute(datetime t)
datetime RoundToHour(datetime t)
datetime RoundToDay(datetime t)
datetime RoundToWeek(datetime t, bool StartsOnMonday = false)

//+==================================================================+
//| CeilTo() / Next() Birimleri|
//+==================================================================+
datetime CeilToMinute(datetime t)
datetime CeilToHour(datetime t)
datetime CeilToDay(datetime t)
datetime CeilToWeek(datetime t, bool StartsOnMonday = false)

//+==================================================================+
//| Next() Hafta içi|
//+==================================================================+
datetime NextWeekday(datetime t, ENUM_DAY_OF_WEEK weekday = SUNDAY)
datetime NextSunday(datetime t)
datetime NextMonday(datetime t)
datetime NextTuesday(datetime t)
datetime NextWednesday(datetime t)
datetime NextThursday(datetime t)
datetime NextFriday(datetime t)
datetime NextSaturday(datetime t)

//+==================================================================+
//| Önceki() Hafta içi|
//+==================================================================+
datetime PreviousWeekday(datetime t, ENUM_DAY_OF_WEEK weekday = SUNDAY)
datetime PreviousSunday(datetime t)
datetime PreviousMonday(datetime t)
datetime PreviousTuesday(datetime t)
datetime PreviousWednesday(datetime t)
datetime PreviousThursday(datetime t)
datetime PreviousFriday(datetime t)
datetime PreviousSaturday(datetime t)

//+==================================================================+
//| Nth() Ayın Hafta İçi Günü|
//+==================================================================+
datetime FirstWeekdayOfTheMonth(datetime t, ENUM_DAY_OF_WEEK weekday = SUNDAY)
datetime LastWeekdayOfTheMonth(datetime t, ENUM_DAY_OF_WEEK weekday = SUNDAY)
datetime NthWeekdayOfTheMonth(datetime t, int Nth, ENUM_DAY_OF_WEEK weekday = SUNDAY)

//+==================================================================+
//| Add() Birimleri|
//+==================================================================+
datetime AddSeconds(datetime t, int amount)
datetime AddMinutes(datetime t, int amount)
datetime AddHours(datetime t, int amount)
datetime AddDays(datetime t, int amount)
datetime AddBusinessDays(datetime t, int amount)
datetime AddWeeks(datetime t, int amount)
datetime AddMonths(datetime t, int amount)
datetime AddYears(datetime t, int amount)

//+==================================================================+
//| Sub() Birimleri|
//+==================================================================+
datetime SubSeconds(datetime t, int amount)
datetime SubMinutes(datetime t, int amount)
datetime SubHours(datetime t, int amount)
datetime SubDays(datetime t, int amount)
datetime SubBusinessDays(datetime t, int amount)
datetime SubWeeks(datetime t, int amount)
datetime SubMonths(datetime t, int amount)
datetime SubYears(datetime t, int amount)

//+==================================================================+
//| DifferenceIn() Birimler|
//+==================================================================+
int DifferenceInCalendarDays(datetime beginTime, datetime endTime)
int DifferenceInBusinessDays(datetime beginTime, datetime endTime)
int DifferenceInCalendarWeeks(datetime beginTime, datetime endTime, bool StartsOnMonday = false)
int DifferenceInCalendarMonths(datetime beginTime, datetime endTime)

//+==================================================================+
//| IsSame() Birimleri|
//+==================================================================+
bool IsSameMinute(datetime t1, datetime t2)
bool IsSameHour(datetime t1, datetime t2)
bool IsSameDay(datetime t1, datetime t2)
bool IsSameWeek(datetime t1, datetime t2, bool StartsOnMonday = false)
bool IsSameMonth(datetime t1, datetime t2)
bool IsSameYear(datetime t1, datetime t2)

//+==================================================================+
//| IsCurrent() Birimleri|
//+==================================================================+
bool IsCurrentMinute(datetime t)
bool IsCurrentHour(datetime t)
bool IsCurrentWeek(datetime t, bool StartsOnMonday = false)
bool IsCurrentMonth(datetime t)
bool IsCurrentYear(datetime t)
bool IsToday(datetime t)
bool IsTomorrow(datetime t)
bool IsYesterday(datetime t)

//+==================================================================+
//| Misc|
//+==================================================================+
bool IsLeapYear(int year)
int  DaysInMonth(int year, int month)
datetime GetNthWeekdayInYearMonth(iYear, iMonth, Nth, weekday = SUNDAY)
datetime GetNthSundayInYearMonth(iYear, iMonth, Nth)

//+==================================================================+
//| Zamanı String Olarak Biçimlendirme|
//+==================================================================+
string t2s(datetime t, const int mode = TIME_DATE | TIME_MINUTES)
string SecondsToString(int seconds)
string TimeFormat(datetime t, string format = "YYYY.MM.DD hh:mm")


Mevcut tüm zaman formatlarının listesi:

//+------------------------------------------------------------------+
//| İletilen belirteç dizesine göre biçimlendirilmiş zamanı alın. |
//| Mevcut tüm formatların listesi:|
//| Biçim Çıktı Açıklama|
//| ------ ---------------- ------------------------------------- |
//| YY 18İki basamaklı yıl |
//| YYY 2018 Dört basamaklı yıl|
//| M 1-12Ay, saat 1'de başlıyor
//| MM 01-12 Ay, 2 basamaklı |
//| MMM Jan-Dec Kısaltılmış ay adı, 3 harfli |
//| MMMM Ocak-Aralık Tam ay adı|
//| D 1-31Ayın günü |
//| DD 01-31Ayın günü, 2 basamaklı |
//| DDD Sun-Sat Haftanın gününün kısa adı |
//| DDDD Pazar-Cumartesi Haftanın gününün adı |
//| h 0-23 Saat|
//| hh 00-23 Saat, 2 basamaklı |
//| H 1-12Saat, 12 saatlik saat |
//| HH 01-12 Saat, 12 saatlik saat, 2 basamaklı |
//| m 0-59 Dakika|
//| mm 00-59 Dakika, 2 basamaklı |
//| s 0-59 İkinci|
//| ss 00-59 İkinci, 2 basamaklı |
//| A AM PM|
//| a am pm|
//+------------------------------------------------------------------+
//| Örnek formatlar:|
//| "YYY.MM.DD hh:mm" // "2024.12.08 22:05" (varsayılan) |
//| "DDD, YYY.MM.DD hh:mm:ss" // "Sun, 2024.12.08 22:05:21" |
//| "D MMMM YYYY, HH:mm a" // "8 Aralık 2024, 10:05 pm" |
//| "GG/AA/YYYY" // "08/12/2024"|
//+------------------------------------------------------------------+
string TimeFormat(const datetime t, const string format = "YYYY.MM.DD hh:mm");


Ekteki iki betik "basic.mq5" ve "advanced.mq5" temel ve gelişmiş kullanım örneklerini göstermektedir.

"advanced.mq5" komut dosyasından örnek bir çıktı:

/*
 örnek çıktı:

 1. CreateDateTime(2022, 03, 25) = 2022.03.25 00:00:00
 [year] [mon] [day] [hour] [min] [sec] [day_of_week] [day_of_year]
 [0] 2024 12 18 17 27 25 3 352
 2. t2s(t, TIME_DATE|TIME_SECONDS) = Wed, 2024.12.18 18:27:25
 3. GetYear(t) = 2024
 4. GetMonth(t) = 12  GetMonth(t) = 12
 5. GetDay(t) = 18
 6. GetHour(t) = 18
 7. GetMinute(t) = 18  GetMinute(t) = 27
 8. GetSecond(t) = 27 GetSecond(t) = 25
 9. DayOfWeek(t) = 3
 10. DayOfYear(t) = 352
 11. DayIndex(t) = 200  DayIndex(t) = 20075
 12. WeekOfMonth(t) = 3
 13. WeekOfYear(t) = 51
 14. WeekIndex(t) = 28 WeekIndex(t) = 2868
 15. WeekOfMonth(t, true) = 4
 16. WeekOfYear(t, true) = 4  WeekOfYear(t, true) = 51
 17. WeekIndex(t, true) = 2868
 18. StartOfMinute(t) = 2024.12.18 18:27:00
 19. StartOfHour(t) = 2024.12.18 18:00:00
 20. StartOfHour(t) = 2024.12.18 18:00:00  StartOfDay(t) = 2024.12.18 00:00:00
 21. StartOfWeek(t) = 2024.12.15 00:00:00
 22. StartOfWeek(t, true) = 2024.12.16 00:00:00
 23. StartOfMonth(t) = 2024.12.01 00:00:00
 24. StartOfYear(t) = 2024.01.01 00:00:00
 25. EndOfMinute(t) = 2024.12.18 18:27:59
 26. EndOfHour(t) = 2024.12.18 18:59:59
 27. EndOfHour(t) = 2024.12.18 18:59:59 EndOfDay(t) = 2024.12.18 23:59:59
 28. EndOfWeek(t) = 2024.12.21 23:59:59
 29. EndOfWeek(t) = 2024.12.21 23:59:59  EndOfWeek(t, true) = 2024.12.22 23:59:59
 30. EndOfMonth(t) = 2024.12.31 23:59:59
 31. EndOfYear(t) = 2024.12.31 23:59:59
 32. SecsElapsedOfMinute(t) = 25
 33. SecsElapsedOfHour(t) = 1645
 34. SecsElapsedOfDay(t) = 66445
 35. SecsElapsedOfWeek(t) = 325645
 36. SecsElapsedOfWeek(t, true) = 239245
 37. SecsElapsedOfMonth(t) = 1535245
 38. SecsElapsedOfYear(t) = 30479245
 39. RoundToMinute(t) = 2024.12.18 18:27:00
 40. RoundToHour(t) = 2024.12.18 18:00:00
 41. RoundToDay(t) = 2024.12.19 00:00:00
 42. RoundToWeek(t) = 2024.12.22 00:00:00
 43. RoundToWeek(t, true) = 2024.12.16 00:00:00
 44. CeilToMinute(t) = 2024.12.18 18:28:00
 45. CeilToHour(t) = 2024.12.18 19:00:00
 46. CeilToDay(t) = 2024.12.19 00:00:00
 47. CeilToWeek(t) = 2024.12.22 00:00:00
 48. CeilToWeek(t, true) = 2024.12.23 00:00:00
 49. NextSunday(t) = 2024.12.22 00:00:00
 50. NextMonday(t) = 2024.12.23 00:00:00
 51. NextTuesday(t) = 2024.12.24 00:00:00
 52. NextWednesday(t) = 2024.12.25 00:00:00
 53. NextThursday(t) = 2024.12.19 00:00:00
 54. NextFriday(t) = 2024.12.20 00:00:00
 55. NextSaturday(t) = 2024.12.21 00:00:00
 56. ÖncekiPazar(t) = 2024.12.15 00:00:00
 57. ÖncekiPazartesi(t) = 2024.12.16 00:00:00
 58. ÖncekiSalı(t) = 2024.12.17 00:00:00
 59. ÖncekiÇarşamba(t) = 2024.12.11 00:00:00
 60. ÖncekiPerşembe(t) = 2024.12.12 00:00:00
 61. PreviousFriday(t) = 2024.12.13 00:00:00
 62. PreviousSaturday(t) = 2024.12.14 00:00:00
 63. FirstWeekdayOfTheMonth(t, SUNDAY) = 2024.12.01 00:00:00
 64. LastWeekdayOfTheMonth(t, SUNDAY) = 2024.12.29 00:00:00
 65. AddSeconds(t, 30) = 2024.12.18 18:27:55
 66. AddMinutes(t, 30) = 2024.12.18 18:57:25
 67. AddHours(t, 2) = 2024.12.18 20:27:25
 68. AddDays(t, 10) = 2024.12.28 18:27:25
 69. AddBusinessDays(t, 10) = 2025.01.01 18:27:25
 70. AddWeeks(t, 4) = 2025.01.15 18:27:25
 71. AddMonths(t, 2) = 2025.02.18 18:27:25
 72. AddYears(t, 5) = 2029.12.18 18:27:25
 73. SubSeconds(t, 30) = 2024.12.18 18:26:55
 74. SubMinutes(t, 30) = 2024.12.18 17:57:25
 75. SubHours(t, 2) = 2024.12.18 16:27:25
 76. SubDays(t, 10) = 2024.12.08 18:27:25
 77. SubBusinessDays(t, 10) = 2024.12.04 18:27:25
 78. SubWeeks(t, 4) = 2024.11.20 18:27:25
 79. SubMonths(t, 2) = 2024.10.18 18:27:25
 80. SubYears(t, 5) = 2019.12.18 18:27:25
 81. DifferenceInCalendarDays(t, AddWeeks(t, 9)) = 63
 82. DifferenceInBusinessDays(t, AddWeeks(t, 9)) = 45
 83. DifferenceInCalendarWeeks(t, AddWeeks(t, 9)) = 9
 84. DifferenceInCalendarWeeks(t, AddWeeks(t, 9), true) = 9
 85. DifferenceInCalendarMonths(t, AddWeeks(t, 9)) = 2
 86. IsSameMinute(t, AddHours(t, 25)) = false
 87. IsSameHour(t, AddHours(t, 25)) = false
 88. IsSameDay(t, AddHours(t, 25)) = false
 89. IsSameWeek(t, AddHours(t, 25)) = true
 90. IsSameWeek(t, AddHours(t, 25), true) = true
 91. IsSameMonth(t, AddHours(t, 25)) = true
 92. IsSameYear(t, AddHours(t, 25)) = true
 93. IsCurrentMinute(t) = false
 94. IsCurrentHour(t) = false
 95. IsCurrentWeek(t) = true
 96. IsCurrentWeek(t) = true  IsCurrentWeek(t, true) = true
 97. IsCurrentMonth(t) = true
 98. IsCurrentYear(t) = true  IsCurrentYear(t) = true
 99. IsToday(t) = true
 100. IsToday(t) = true  IsTomorrow(t) = false
 101. IsYesterday(t) = false IsYesterday(t) = false
 102. IsLeapYear(2100) = false IsLeapYear(2100) = false
 103. DaysInMonth(2024, 2) = 29
 104. GetNthWeekdayIn GetNthWeekdayInYearMonth(2024, 1, 1, SUNDAY) = 2024.01.07 00:00:00
 105. t2s(TimeCurrent()) = Wed, 2024.12.18 17:27
 106. SecondsToString(SecsElapsedOfDay(TimeCurrent())) = 17:27:25
 107. TimeFormat(TimeCurrent(), YYYY.MM.DD hh:mm) = 2024.12.18 17:27
 108. TimeFormat(TimeCurrent(), DDD, YYYY.MM.DD hh:mm:ss) = Wed, 2024.12.18 17:27:25
 109. TimeFormat(TimeCurrent(), D MMM YYYY, HH:mm a) = 18 Dec 2024, 05:27 pm

*/


Güncellemeler:

2024.12.03 - v.1.10 : İlk sürüm.

2024.12.05 - v.1.15 : İş günleri ve ayın Nth() hafta içi günü için fonksiyonlar eklendi. DaysInMonth() fonksiyonundaki hesaplamalar optimize edildi.

2024.12.09 - v.1.20 : Zamanı iletilen belirteç dizesine göre biçimlendirmek için TimeFormat() işlevi eklendi.

2024.12.09 - v.1.25 : TimeToStructFast() fonksiyonundaki hesaplamalar optimize edildi.

2024.12.10 - v.1.30 : TimeFormat(), StartOfYear() ve EndOfYear() fonksiyonları optimize edildi. Bazı fonksiyonların açıklamaları güncellendi.

2024.12.15 - v.1.35 : GetNthWeekdayInYearMonth() fonksiyonu optimize edildi.

2024.12.18 - v.1.40 : IsCurrentXXX(), IsToday(), IsTomorrow() ve IsYesterday() fonksiyonları eklendi.

2024.12.19 - v.1.45 : AddMonths() ve GetNthWeekdayInYearMonth() fonksiyonları optimize edildi.

2024.12.20 - v.1.50 : Daha fazla kod temizliği.

2024.12.21 - v.1.55 : AddMonths() işlevindeki hesaplamalar basitleştirildi: ayları ve yılları ayarlamanın karmaşık mantığı daha basit bir toplam ay hesaplamasıyla değiştirildi.



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

SymmetricDarvasBoxes SymmetricDarvasBoxes

Forex için Darvas simetrik koridoru.

İnce Fraktallar İnce Fraktallar

İnce Fraktallar göstergesi, standart Fraktallar Göstergesinin çalışmayacağı önemli fiyat kıvrımlarını, zirveleri ve çukurları gösterecektir.

iTrend iTrend

Trend gücü ve yönünün birleşik göstergesi.

ExCandles2 ExCandles2

ExCandles-v2 göstergesi, grafikteki oklarla mum çubuğu kombinasyonlarını gösterir.