Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 32
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Essa biblioteca contém mais de 80 funções diferentes para lidar com variáveis de tempo. O objetivo principal é fornecer funções de tempo de alto desempenho. O modo de desempenho (que pode ser controlado no momento da compilação por meio de uma #definição) é desativado por padrão. Esse modo não é um requisito para incluir a biblioteca em seus projetos, pois ela pode ser incluída normalmente sem ele.
TIMEUTILS_PERFORMANCE_MODE
Opcionalmente, o modo de desempenho pode ser ativado no momento da compilação por meio de #defines antes de #include:
// ativar o modo de desempenho para a biblioteca #define TIMEUTILS_PERFORMANCE_MODE #include "TimeUtils.mqh"
Isso redirecionará todas as chamadas para as funções TimeToStruct e StructToTime incorporadas do MQL para alternativas mais eficientes.
Você pode compilar o script "performance_mode.mq5" com e sem TIMEUTILS_PERFORMANCE_MODE para verificar a diferença de velocidade em seu computador. Isso será benéfico para os programas de alto desempenho que executam tarefas pesadas ou relacionadas ao tempo (por exemplo, varredura de todo o histórico de cotações para barras H1 no início das semanas de negociação ou coleta de outras estatísticas).
Listagem de todas as funções da biblioteca:
Os nomes das funções devem ser autoexplicativos; além disso, você pode encontrar uma breve descrição de uma função específica no arquivo TimeUtils.mqh.
//+==================================================================+ //| Criar datetime a partir de componentes| //+==================================================================+ datetime CreateDateTime( const int year, // Ano const int mon, // Mês const int day, // Dia const int hour = 0, // Hora const int min = 0, // Minutos const int sec = 0 // Segundos ) datetime CreateDateTime(MqlDateTime& dt_struct); // alternativa rápida para StructToTime() //+==================================================================+ //| Quebrar datetime para componentes| //+==================================================================+ bool TimeToStructFast( datetime dt, // Valor de data a ser convertido MqlDateTime& dt_struct // estrutura para a adoção de valores ) //+==================================================================+ //| Extrair componentes de datetime: Sunday, yyyy.mm.dd hh:mm:ss | //| Unidades Get()| //+==================================================================+ 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() Número| //+==================================================================+ int DayOfWeek(datetime t) int DayOfYear(datetime t) int DayIndex(datetime t) //+==================================================================+ //| Week() Número| //+==================================================================+ int WeekOfMonth(const datetime t, bool StartsOnMonday = false) int WeekOfYear(const datetime t, bool StartsOnMonday = false) int WeekIndex(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| Unidades StartOf()| //+==================================================================+ 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) //+==================================================================+ //| Unidades EndOf()| //+==================================================================+ 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) //+==================================================================+ //| Unidades SecsElapsedOf()| //+==================================================================+ 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) //+==================================================================+ //| Unidades RoundTo() / Nearest()| //+==================================================================+ datetime RoundToMinute(datetime t) datetime RoundToHour(datetime t) datetime RoundToDay(datetime t) datetime RoundToWeek(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| Unidades CeilTo() / Next()| //+==================================================================+ datetime CeilToMinute(datetime t) datetime CeilToHour(datetime t) datetime CeilToDay(datetime t) datetime CeilToWeek(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| Next() Dia da semana| //+==================================================================+ 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) //+==================================================================+ //| Anterior() Dia da semana| //+==================================================================+ 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() Dia da semana do mês| //+==================================================================+ 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) //+==================================================================+ //| Unidades Add()| //+==================================================================+ 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) //+==================================================================+ Unidades //| Sub()| //+==================================================================+ 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) //+==================================================================+ //| Unidades DifferenceIn()| //+==================================================================+ 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) //+==================================================================+ //| Unidades IsSame()| //+==================================================================+ 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) //+==================================================================+ //| Unidades IsCurrent()| //+==================================================================+ 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) //+==================================================================+ //| Diversos| //+==================================================================+ bool IsLeapYear(int year) int DaysInMonth(int year, int month) datetime GetNthWeekdayInYearMonth(iYear, iMonth, Nth, weekday = SUNDAY) datetime GetNthSundayInYearMonth(iYear, iMonth, Nth) //+==================================================================+ //| Formando o tempo como string| //+==================================================================+ 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")
Lista de todos os formatos de hora disponíveis:
//+------------------------------------------------------------------+ //| Obter a hora formatada de acordo com a cadeia de tokens passada. | //| Lista de todos os formatos disponíveis:| //| Descrição do formato de saída| //| ------ ---------------- ------------------------------------- | //| YY 18Ano com dois dígitos //| YYYY 2018 Ano com quatro dígitos| //| M 1-12O mês, começando em 1 //| MM 01-12 O mês, 2 dígitos //| MMM Jan-Dez O nome abreviado do mês, 3 letras //| MMMM Janeiro-Dezembro O nome completo do mês| //| D 1-31O dia do mês //| DD 01-31O dia do mês, 2 dígitos //| DDD Sun-Sat O nome abreviado do dia da semana. //| DDDD Domingo-Sábado O nome do dia da semana //| h 0-23 A hora| //| hh 00-23 A hora, 2 dígitos //| H 1-12A hora, relógio de 12 horas //| HH 01-12 A hora, relógio de 12 horas, 2 dígitos //| m 0-59 O minuto| //| mm 00-59 O minuto, 2 dígitos //| s 0-59 O segundo| //| ss 00-59 O segundo, de 2 dígitos //| A AM PM| //| a am pm| //+------------------------------------------------------------------+ //| Formatos de amostra:| //| "YYYY.MM.DD hh:mm" // "2024.12.08 22:05" (padrão) //| "DDD, YYYY.MM.DD hh:mm:ss" // "Sun, 2024.12.08 22:05:21" | //| "D MMMM YYYY, HH:mm a" // "8 December 2024, 10:05 pm" | //| "DD/MM/YYYY" // "08/12/2024"| //+------------------------------------------------------------------+ string TimeFormat(const datetime t, const string format = "YYYY.MM.DD hh:mm");
Os dois scripts anexados "basic.mq5" e "advanced.mq5" mostram os exemplos de uso básico e avançado.
Um exemplo de saída do script "advanced.mq5":
/*
exemplo de saída:
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. WeekOfMonth(t) = 3
13. WeekOfYear(t) = 51
14. WeekIndex(t) = 2868
15. WeekOfMonth(t, true) = 4
16. 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. 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. EndOfDay(t) = 2024.12.18 23:59:59
28. EndOfWeek(t) = 2024.12.21 23:59:59
29. 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. CeilTooHour(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. PreviousSunday(t) = 2024.12.15 00:00:00
57. PreviousMonday(t) = 2024.12.16 00:00:00
58. PreviousTuesday(t) = 2024.12.17 00:00:00
59. PreviousWednesday(t) = 2024.12.11 00:00:00
60. PreviousThursday(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) = 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
*/
Atualizações:
2024.12.03 - v.1.10 : Versão inicial.
2024.12.05 - v.1.15 : Funções adicionadas para dias úteis e para Nth() dia da semana do mês. Cálculos otimizados na função DaysInMonth().
2024.12.09 - v.1.20 : Adicionada a função TimeFormat() para formatar a hora de acordo com a string de tokens passada.
2024.12.09 - v.1.25: Cálculos otimizados na função TimeToStructFast().
2024.12.10 - v.1.30: Funções TimeFormat(), StartOfYear() e EndOfYear() otimizadas. Atualizadas as descrições de algumas funções.
2024.12.15 - v.1.35 : Otimizada a função GetNthWeekdayInYearMonth().
2024.12.18 - v.1.40 : Adicionadas as funções IsCurrentXXX(), IsToday(), IsTomorrow() e IsYesterday().
2024.12.19 - v.1.45 : Funções AddMonths() e GetNthWeekdayInYearMonth() otimizadas.
2024.12.20 - v.1.50: Mais limpeza de código.
2024.12.21 - v.1.55 : Cálculos simplificados em AddMonths(): substituiu a lógica complexa de ajuste de meses e anos por um cálculo mais simples do total de meses.
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/53970

MarketPredictor para o MetaTrader 5 O MarketPredictor é um Expert Advisor (EA) inovador para o MetaTrader 5 que utiliza modelos matemáticos como funções senoidais, Fast Fourier Transform (FFT), funções sigmoidais e simulações de Monte Carlo para analisar e prever os movimentos do mercado. Este projeto foi criado para desenvolvedores, entusiastas da matemática e operadores interessados em combinar inovações tecnológicas e financeiras. Sinta-se à vontade para sugerir, discutir e implementar ideias de código diretamente neste tópico. Sejam novos recursos, sugestões de aprimoramento ou estratégias, todas as contribuições são bem-vindas para desenvolver e otimizar ainda mais o MarketPredictor. Você também pode me adicionar para esclarecer dúvidas em particular, colaborar no projeto do GitHub ou enviar seus comentários diretamente. Vamos preparar algo incrível juntos e levar este projeto para o próximo nível!

Indicador de aumento de preços

O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.

O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.