期貨量化軟件:赫茲量化中的處理時間---基礎
宏替代
所有一切都在(附件)包含文件 里。 在這個文件的開頭有各種宏替換。 首先,不同地區(qū)有一些時間偏移,如此您就不必一次再一次地推導或搜索它們: //--- defines #define TokyoShift ? -32400 // always 9h #define NYShift ? ? ?18000 // winter 17h=22h GMT: NYTime + NYshift = GMT #define LondonShift ?0 // winter London offset #define SidneyShift ?-39600 // winter Sidney offset #define FfmShift ? ? -3600 // winter Frankfurt offset #define MoskwaShift ?-10800 // winter Moscow offset #define FxOPEN ? ? ? 61200 // = NY 17:00 = 17*3600 #define FxCLOSE ? ? ?61200 // = NY 17:00 = 17*3600 #define WeekInSec ? ?604800 // 60sec*60min*24h*7d = 604800 => 1 Week 為了更好地理解,我們同意 GMT 是一個不可變的時間錨點,而不同的本地時間,如紐約、倫敦或莫斯科,每一個都有不同的(可變)時移。 同樣,我們也將夏季或冬季時間的變更作為變量。 原因很簡單。 可變時移的符號定義如下: ? ? ? ? ? ? ? ? ? 可變時間 + 可變時移 = GMT 一些例子: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 莫斯科 (16h) + 莫斯科時移 (-3h) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?= GMT (13h) ? ? ? ? ? ? ? ? ? 紐約時間 (16h) + 紐約時移 (+5h) ? ? ? ? ? ? ? ? ? ? ? ? ? ? = GMT (21h) ? ? ? ? ? ? ? ? ? 紐約時間 (16h) + (紐約時移 (+5h) + DST_US(-1h)) ?= GMT (20h) ? ? ? ? ? ? ? ? ? 法蘭克福時間 (16h) + (法蘭克福時移 (-1h) + DST_US(-1h)) ?= GMT (14h) 留心括號! 當根據(jù) GMT 計算可變時間時,它們變得非常重要: ? ? ? ? ? ? ? ? ? 紐約時間 (16h) = ?GMT (20h) - (紐約時移 (+5h) + DST_US(-1h)) => 20 -(+5 + -1) = 20 - 5 +1 = 16h ? ? ? ? ? ? ? ? ? 法蘭克福時間 (16h) = ?GMT (14h) - (法蘭克福時移 (-1h) + DST_US(-1h)) => 14 -( -1 + -1) = 14 +1 +1 = 16h 相信我,這是標記錯誤和誤解的永恒來源。 以這種形式中,MQL5 和 PC 也會處理時差,如 TimeGMTOffset(): TimeLocal() + TimeGMTOffset() = TimeGMT()) 或 TimeDaylightSavings(): TimeLocal() + TimeDaylightSavings() = 冬季或 PC 的標準本地時間。 作為本部分的最后一部分,諸如 FxOpen 和 FxClose 提供以秒為單位的整個星期的持續(xù)時間 WeekInSec,因為在為變量賦值時,這種設計比在代碼中突兀加入數(shù)字(例如 604800)更容易理解。