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:
- 89
- Derecelendirme:
- Yayınlandı:
-
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
Forex için Darvas simetrik koridoru.
İnce Fraktallar
İnce Fraktallar göstergesi, standart Fraktallar Göstergesinin çalışmayacağı önemli fiyat kıvrımlarını, zirveleri ve çukurları gösterecektir.
iTrend
Trend gücü ve yönünün birleşik göstergesi.
ExCandles2
ExCandles-v2 göstergesi, grafikteki oklarla mum çubuğu kombinasyonlarını gösterir.