Rejoignez notre page de fans
- Vues:
- 180
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Cette bibliothèque contient plus de 80 fonctions différentes pour traiter les variables temporelles. L'objectif principal est de fournir des fonctions temporelles très performantes. Le mode performance (qui peut être contrôlé à la compilation via une #define) est désactivé par défaut. Ce mode n'est pas une obligation pour inclure la bibliothèque dans vos projets, car elle peut être incluse normalement sans lui.
TIMEUTILS_PERFORMANCE_MODE
Optionnellement, le mode performance peut être activé à la compilation via #defines avant #include :
// activer le mode performance pour la bibliothèque #define TIMEUTILS_PERFORMANCE_MODE #include "TimeUtils.mqh"
Cela redirigera tous les appels aux fonctions intégrées TimeToStruct et StructToTime de MQL vers des alternatives plus efficaces.
Vous pouvez compiler le script "performance_mode.mq5" avec et sans TIMEUTILS_PERFORMANCE_MODE pour vérifier la différence de vitesse sur votre machine. Cela sera bénéfique pour les programmes à haute performance qui effectuent des tâches lourdes ou liées au temps (par exemple, l'analyse de l'historique des cotations pour les barres H1 au début des semaines de négociation ou la collecte d'autres statistiques).
Liste de toutes les fonctions de la bibliothèque :
Les noms des fonctions devraient être explicites ; vous pouvez également trouver une brève description d'une fonction spécifique dans le fichier TimeUtils.mqh.
//+==================================================================+ //| Créer une date à partir de composants| //+==================================================================+ datetime CreateDateTime( const int year, // Année const int mon, // Mois const int day, // Jour const int hour = 0, // Heure const int min = 0, // Procès-verbal const int sec = 0 // Secondes ) datetime CreateDateTime(MqlDateTime& dt_struct); // alternative rapide à StructToTime() //+==================================================================+ //| Rupture de l'intervalle de temps en Composants| //+==================================================================+ bool TimeToStructFast( datetime dt, // Valeur de la date à convertir MqlDateTime& dt_struct // structure pour l'adoption de valeurs ) //+==================================================================+ //| Extraire les composants de l'heure de la date : dimanche, aaaa.mm.jj hh:mm:ss | //| Get() Unités| //+==================================================================+ 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() Nombre| //+==================================================================+ int DayOfWeek(datetime t) int DayOfYear(datetime t) int DayIndex(datetime t) //+==================================================================+ //| Week() Number| //+==================================================================+ int WeekOfMonth(const datetime t, bool StartsOnMonday = false) int WeekOfYear(const datetime t, bool StartsOnMonday = false) int WeekIndex(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| StartOf() Unités| //+==================================================================+ 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() Unités| //+==================================================================+ 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() Unités| //+==================================================================+ 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() Units| //+==================================================================+ datetime RoundToMinute(datetime t) datetime RoundToHour(datetime t) datetime RoundToDay(datetime t) datetime RoundToWeek(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| CeilTo() / Next() Unités| //+==================================================================+ datetime CeilToMinute(datetime t) datetime CeilToHour(datetime t) datetime CeilToDay(datetime t) datetime CeilToWeek(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| Next() Jour de la semaine| //+==================================================================+ 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) //+==================================================================+ //| Précédent() Jour de la semaine| //+==================================================================+ 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() Jour de la semaine du mois| //+==================================================================+ 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() Unités| //+==================================================================+ 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() Unités| //+==================================================================+ 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() Units| //+==================================================================+ 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() Unités| //+==================================================================+ 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() Unités| //+==================================================================+ 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) //+==================================================================+ //| Divers| //+==================================================================+ bool IsLeapYear(int year) int DaysInMonth(int year, int month) datetime GetNthWeekdayInYearMonth(iYear, iMonth, Nth, weekday = SUNDAY) datetime GetNthSundayInYearMonth(iYear, iMonth, Nth) //+==================================================================+ //| Formatage du temps en chaîne| //+==================================================================+ 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")
Liste de tous les formats horaires disponibles :
//+------------------------------------------------------------------+ //| Obtenir l'heure formatée en fonction de la chaîne de caractères transmise. | //| Liste de tous les formats disponibles :| //| Format de sortie Description| //| ------ ---------------- ------------------------------------- | //| YY 18Année à deux chiffres //| YYYY 2018 Année à quatre chiffres| //| M 1-12Le mois, commençant à 1 | //| MM 01-12 Le mois, 2 chiffres //| MMM Jan-Dec Le nom du mois abrégé, 3 lettres | //| MMMM Janvier-Décembre Le nom complet du mois| //| D 1-31Le jour du mois | //| DD 01-31Le jour du mois, 2 chiffres | //| DDD Sun-Sat Nom abrégé du jour de la semaine. //| DDDD Dimanche-Samedi Le nom du jour de la semaine | //| h 0-23 L'heure| //| hh 00-23 L'heure, 2 chiffres | //| H 1-12L'heure, horloge de 12 heures | //| HH 01-12 L'heure, horloge de 12 heures, 2 chiffres | //| m 0-59 La minute| //| mm 00-59 Les minutes, 2 chiffres //| s 0-59 La seconde| //| ss 00-59 Le second, à 2 chiffres | //| A AM PM| //| a am pm| //+------------------------------------------------------------------+ //| Formats d'échantillons :| //| "YYYY.MM.DD hh:mm" // "2024.12.08 22:05" (par défaut) | //| "DDD, YYYY.MM.DD hh:mm:ss" // "Sun, 2024.12.08 22:05:21" | //| "D MMMM YYYY, HH:mm a" // "8 décembre 2024, 10:05 pm" | //| "DD/MM/YYYY" // "08/12/2024"| //+------------------------------------------------------------------+ string TimeFormat(const datetime t, const string format = "YYYY.MM.DD hh:mm");
Les deux scripts joints "basic.mq5" et "advanced.mq5" montrent des exemples d'utilisation de base et avancée.
Un exemple de sortie du script "advanced.mq5" :
/*
exemple de sortie :
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
5. GetDay(t) = 18
6. GetHour(t) = 18
7. GetMinute(t) = 27
8. GetSecond(t) = 25
9. DayOfWeek(t) = 3
10. DayOfYear(t) = 352
11. DayIndex(t) = 20075
12. SemaineMois(t) = 3
13. Semaine de l'année(t) = 51
14. WeekIndex(t) = 2868
15. SemaineMois(t, true) = 4
16. Semaine de l'année(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. StartOfDay(t) = 2024.12.18 00:00:00
21. StartOfWeek(t) = 2024.12.15 00:00:00
22. Début de semaine(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. EndOfDay(t) = 2024.12.18 23:59:59
28. Fin de semaine(t) = 2024.12.21 23:59:59
29. Fin de semaine(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. ProchainMardi(t) = 2024.12.24 00:00:00
52. ProchainMercredi(t) = 2024.12.25 00:00:00
53. ProchainJeudi(t) = 2024.12.19 00:00:00
54. ProchainVendredi(t) = 2024.12.20 00:00:00
55. NextSaturday(t) = 2024.12.21 00:00:00
56. PreviousSunday(t) = 2024.12.15 00:00:00
57. PrécédentLundi(t) = 2024.12.16 00:00:00
58. PreviousTuesday(t) = 2024.12.17 00:00:00
59. PrécédentMercredi(t) = 2024.12.11 00:00:00
60. PrécédentJeudi(t) = 2024.12.12 00:00:00
61. PrécédentVendredi(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. Sous-semaines(t, 4) = 2024.11.20 18:27:25
79. Sous-Mois(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) = true
97. IsCurrentMonth(t) = true
98. IsCurrentYear(t) = true
99. IsToday(t) = true
100. IsTomorrow(t) = false
101. IsYesterday(t) = false
102. IsLeapYear(2100) = false
103. DaysInMonth(2024, 2) = 29
104. 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
*/
Mises à jour :
2024.12.03 - v.1.10 : Version initiale.
2024.12.05 - v.1.15 : Ajout de fonctions pour les jours ouvrables et pour le Nième() jour de semaine du mois. Optimisation des calculs dans la fonction DaysInMonth().
2024.12.09 - v.1.20 : Ajout de la fonction TimeFormat() pour formater l'heure en fonction de la chaîne de caractères passée.
2024.12.09 - v.1.25 : Optimisation des calculs dans la fonction TimeToStructFast().
2024.12.10 - v.1.30 : Optimisation des fonctions TimeFormat(), StartOfYear() et EndOfYear(). Mise à jour des descriptions de certaines fonctions.
2024.12.15 - v.1.35 : Optimisation de la fonction GetNthWeekdayInYearMonth().
2024.12.18 - v.1.40 : Ajout des fonctions IsCurrentXXX(), IsToday(), IsTomorrow() et IsYesterday().
2024.12.19 - v.1.45 : Optimisation des fonctions AddMonths() et GetNthWeekdayInYearMonth().
2024.12.20 - v.1.50 : Nettoyage du code.
2024.12.21 - v.1.55 : Simplification des calculs dans AddMonths() : remplacement de la logique complexe d'ajustement des mois et des années par un calcul plus simple du nombre total de mois.
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/53970
SymmetricDarvasBoxes
Corridor symétrique Darvas pour le Forex.
Fractales fines
L'indicateur Fractales fines montrera les courbes de prix importantes, les pics et les creux là où l'indicateur Fractales standard ne fonctionnera pas.
iTrend
Indicateur combiné de la force et de la direction de la tendance.
ExCandles2
L'indicateur ExCandles-v2 indique les combinaisons de chandeliers avec des flèches sur le graphique.