私たちのファンページに参加してください
- ビュー:
- 28
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このライブラリには、時間変数を扱うための80種類以上の関数が含まれている。主な目的は、高性能な時間関数を提供することである。パフォーマンス・モード(コンパイル時に#defineで制御可能)はデフォルトで無効になっています。このモードは、プロジェクトにライブラリをインクルードするための必須条件ではありません。
timeutils_performance_mode
オプションとして、#includeの前に#defineを指定することで、コンパイル時にパフォーマンスモードをオンにすることができます:
// ライブラリのパフォーマンスモードを有効にする #define TIMEUTILS_PERFORMANCE_MODE #include "TimeUtils.mqh"
これにより、MQL組み込みのTimeToStruct 関数とStructToTime 関数の呼び出しがすべて、より効率的な代替関数にリダイレクトされます。
スクリプト "performance_mode.mq5 "をTIMEUTILS_PERFORMANCE_MODEあり/なしで コンパイルして 、ご使用のマシンでの速度の違いを確認できます。これは、重いタスクや多くの時間に関連するタスク(例えば、取引週の開始時にH1バーの全気配履歴をスキャンしたり、その他の統計を収集したりする)を実行する高性能プログラムにとって有益でしょう。
ライブラリ内の全関数のリスト:
また、TimeUtils.mqh ファイルに特定の関数の簡単な説明があります。
//+==================================================================+ | コンポーネントからdatetimeを作成| //+==================================================================+ datetime CreateDateTime( const int year, // 年 const int mon, // 月 const int day, // 日 const int hour = 0, // 時間 const int min = 0, // 分 const int sec = 0 // 秒 ) datetime CreateDateTime(MqlDateTime& dt_struct); // StructToTime() の高速な代替案 //+==================================================================+ //| ブレイクdatetime コンポーネントへ| //+==================================================================+ bool TimeToStructFast( datetime dt, // 変換する日付の値 MqlDateTime& dt_struct 価値観を採用するための//構造 ) //+==================================================================+ //| 日付の構成要素を抽出する:日曜日、yyyy.mm.dd hh:mm:ss||日付の構成要素 //| 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() Number| //+==================================================================+ int DayOfWeek(datetime t) int DayOfYear(datetime t) int DayIndex(datetime t) //+==================================================================+ //| 週番号| //+==================================================================+ int WeekOfMonth(const datetime t, bool StartsOnMonday = false) int WeekOfYear(const datetime t, bool StartsOnMonday = false) int WeekIndex(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| 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) //+==================================================================+ | 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) //+==================================================================+ //| 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) //+==================================================================+ //| RoundTo() / Nearest() 単位| //+==================================================================+ datetime RoundToMinute(datetime t) datetime RoundToHour(datetime t) datetime RoundToDay(datetime t) datetime RoundToWeek(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| CeilTo() / Next() ユニット| //+==================================================================+ datetime CeilToMinute(datetime t) datetime CeilToHour(datetime t) datetime CeilToDay(datetime t) datetime CeilToWeek(datetime t, bool StartsOnMonday = false) //+==================================================================+ //| Next() 平日| //+==================================================================+ 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) //+==================================================================+ //| 前へ() 平日| //+==================================================================+ 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() 今月の平日| //+==================================================================+ 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() ユニット| //+==================================================================+ 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() ユニット| //+==================================================================+ 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() 単位| //+==================================================================+ 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() ユニット| //+==================================================================+ 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() ユニット| //+==================================================================+ 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) //+==================================================================+ //| その他| //+==================================================================+ bool IsLeapYear(int year) int DaysInMonth(int year, int month) datetime GetNthWeekdayInYearMonth(iYear, iMonth, Nth, weekday = SUNDAY) datetime GetNthSundayInYearMonth(iYear, iMonth, Nth) //+==================================================================+ | 時間を文字列に変換する| //+==================================================================+ 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")
利用可能なすべての時間フォーマットのリスト:
//+------------------------------------------------------------------+ //| 渡されたトークンの文字列に従って、フォーマットされた時刻を取得する。| //| 利用可能なすべてのフォーマットのリスト:| //| フォーマット出力の説明| //| ------ ---------------- ------------------------------------- | //| 年|YY 18二桁の年 | YYYY 2018 4桁の西暦| //| M 1-121 から始まる月 //| 月|MM 01-12月、2桁 //| MMM Jan-Dec 月名の省略形、3文字。 //| MMMM 1月~12月 完全な月名| //| D 1-31月日 //| DD 01-312桁の月日。 //| DDD Sun-Sat 曜日の略称。 //| DDDD 日曜日~土曜日 曜日名 //| h 0-23 時| //| hh 00-23時、2桁 //| H 1-12時、12時間時計 //| HH 01-12 時、12時間表示、2桁 //| m 0-59 分| //| mm 00-59分(2桁 //| 秒| |秒 00-592桁目 //| 午前午後| ||午前午後| //+------------------------------------------------------------------+ //| サンプルのフォーマット:| //| "YYYY.MM.DD hh:mm" // "2024.12.08 22:05"(デフォルト) //| DDD、YYYY.MM.DD hh:mm:ss"//"2024.12.08(日)22:05:21" //| D MMMM YYYY, HH:mm a" // "2024年12月8日午後10時5分" | | "D MMMM YYYY, HH:mm a" // "2024年12月8日午後10時5分 | "dd/mm/yyyy" // "08/12/2024"| //+------------------------------------------------------------------+ string TimeFormat(const datetime t, const string format = "YYYY.MM.DD hh:mm");
添付の2つのスクリプト "basic.mq5 "と "advanced.mq5 "は、基本的な使用 例と高度な使用 例を示しています。
advanced.mq5 "スクリプトの出力例:
/*
出力例:
1.CreateDateTime(2022, 03, 25) = 2022.03.25 00:00:00
[年] [月] [日] [時] [分] [秒] [曜日] [年]
[0] 2024 12 1817 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.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.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
*/.
アップデート
2024.12.03 - v.1.10 : 初期リリース。
2024.12.05 - v.1.15 : 営業日およびNth()平日の関数を追加。DaysInMonth()関数の計算を最適化。
2024.12.09 - v.1.20 :渡されたトークン文字列に従って時刻をフォーマットするTimeFormat()関数を追加。
2024.12.09 - v.1.25 : TimeToStructFast()関数の計算を最適化。
2024.12.10 - v.1.30 : TimeFormat()、StartOfYear()、EndOfYear()関数の最適化。いくつかの関数の説明を更新。
2024.12.15 - v.1.35 :GetNthWeekdayInYearMonth()関数を最適化。
2024.12.18 - v.1.40 :IsCurrentXXX(), IsToday(), IsTomorrow(), IsYesterday()関数を追加。
2024.12.19 - v.1.45 :AddMonths()関数とGetNthWeekdayInYearMonth()関数を最適化しました。
2024.12.20 - v.1.50 : 更なるコードのクリーンアップ。
2024.12.21 - v.1.55 : AddMonths()の計算を簡素化: 月と年を調整する複雑なロジックを、より単純な合計月の計算に置き換え。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/53970

こんにちは、私はメタトレーダー5の新入生です。デモ口座から取引をコピーしてデータベースに保存するロボットを作成しています。

MetaTrader 5用MarketPredictor MarketPredictorは、正弦関数、高速フーリエ変換(FFT)、シグモイド関数、モンテカルロシミュレーションなどの数学的モデルを活用して市場の動きを分析・予測するMetaTrader 5用の革新的なExpert Advisor(EA)です。このプロジェクトは、技術革新と金融革新の融合に興味のある開発者、数学愛好家、トレーダーのために設計されています。 このスレッドで直接コードのアイデアを提案、議論、実装してください。新機能、改善提案、戦略など、MarketPredictorのさらなる発展と最適化のため、あらゆる貢献を歓迎します。 また、個人的に質問を明確にするために私を追加したり、GitHubプロジェクトで協力したり、直接フィードバックを送ることも歓迎します。一緒に素晴らしいものを作り上げ、このプロジェクトを次のレベルに引き上げましょう!

適応移動平均線は、ノイズの影響を受けにくい移動平均線を作るときに使われ、トレンドを検知する際にラグが最小に抑えられるという特徴を持ちます。

アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。