Beskrivning ⋅ 27 jan 2022 14:10 僅當我把時間要素納入通盤考慮之後,我的行情記錄才對即將到來的重大行情有所幫助。----傑西 利弗莫爾 時間要素就是重大行情發生所需要的時間。重大行情的發生需要時間來醞釀,這需要交易者具備耐心並且關注重要的時間節點。我是因為最近優化策略也考慮加入時間要素,才進一步對TradingView的時間函數進行了深入的學習,有些相見恨晚。TradingView 測量時間的方式源自所謂的 Unix 時間值,並且以毫秒為單位測量時間,這非常精確。 TradingView 中的這些值是自 1970 年 1 月 1 日以來發生的毫秒數。並且Pine腳本提供了很多將時間戳值轉換為秒、分鐘和小時等單位的基礎函數。 time既是變數也是函數 當time作為變數時,以 UNIX 格式和交易所的時區返回每根K線的開盤時間的日期/時間(時間戳)。這是 time 返回的默認時間。time同樣可以是個帶參數的函數,返回值仍然是時間戳,但是含義則更為豐富。 例如: //@version =4 study("Session bars") t = time(timeframe.period, "0930-1130") plot(na(t) ? 0 : 1) time() 函數以 UNIX 時間的毫秒數返回K線的開盤時間,如果K線位於給定交易時段之外(在我們的示例中為 09:30–11:30),則返回NaN。 time()函數接受兩個輸入參數:用於確定K線週期和交易時段。其中,交易時段可以通過字串形式進行輸入,其中以"HHMM-HHMM"的格式確定交易所時區中交易時段的開始和結束時間。 對於交易時段的用法很靈活,包括 0000-0000 表示週一至週五午夜開始的 24 小時交易時段。 0900-1600,1700-2000 表示交易時段從 9:00 開始到16:00, 然後休市,再從 17:00 到 20:00結束,適用於週一至週五。 2000-1630:1234567 表示交易時段為從 20:00 開始到第二天 16:30 結束,1234567表示一周7天都在交易。 0930-1700:146 表示交易時段為周日 (1)、週三 (4) 和週五 (6) 的 9:30 開始到 17:00 結束(一周中的其他日子是休市的時間段)。 24x7 表示交易時段為一周的每天 00:00 開始的完整 24 小時。 0000-0000:1234567 這個格式含義和“24x7”相同。 0000-0000:23456 表示交易時段與前面的示例相同,但僅限週一至週五。 用於time()函數的第二個參數session(交易時段)事實上不需要對應於交易品種的真實交易時段。 假設的交易時段功能可用於突出顯示K線。除了時間函數time()以外,TradingView還內置的豐富的時間變數可以一樣實現很多功能。這些變數主要分為3類。 第1類,最基本的變數: time — 當前K線開盤的 UNIX 時間,以毫秒為單位,UTC 時區。 timenow — 當前 UNIX 時間(以毫秒為單位),UTC 時區。 syminfo.timezone — 圖表主要交易品種系列的交易時段。 第2類,提供有關當前柱線開始時間資訊的變數: year - 當前K線年份。 month - 當前K線月份。 weekofyear — 當前K線的周數。 dayofmonth — 當前K線的日期。 dayofweek — 當前K線的星期幾。您可以使用星期日、星期一、星期二、星期三、星期四、星期五和星期六變數進行比較。 hour — 當前K線開始時間的小時(在交易時區中)。 minute — 當前K線開始時間的分鐘(在交易時區中)。 second — 當前K線開始時間的秒數(在交易時區中)。 第3類, UNIX時間“構造”的函數: year(t) — 返回提供的 UTC 時間 t 的年份。 month(t) — 返回提供的 UTC 時間 t 的月份。 weekofyear(t) — 返回提供的 UTC 時間 t 的一年中的一周。 dayofmonth(t) — 返回提供的 UTC 時間 t 的月份日期。 dayofweek(t) — 返回提供的 UTC 時間 t 的星期幾。 hour(t) — 返回提供的 UTC 時間 t 的小時數。 minute(t) — 返回提供的 UTC 時間 t 的分鐘。 second(t) — 返回提供的 UTC 時間 t 的秒數。 timestamp(year, month, day, hour, minute) — 返回指定日期和時間的 UNIX 時間戳。 除了 time 和 timenow 變數返回 UTC 時區時間以外,所有這些變數和函數都返回交易時區的時間。 當然,通過基礎時間變數和函數可以編制更為複雜的時間函數庫,我這裏發佈了interval_ta時間函數庫,實現了更為複雜的功能: tir()函數表示time in range, 用於判斷某週期K線是否在指定的交易時段當中。例如:判斷當前60分鐘K線是否在9:30至11:30交易時段內。 nbs()函數表示在一個小週期K線圖中,一旦大週期K線看盤就返回為True,否則為False。例如:在1分鐘週期K線,標記15分鐘K線開盤時間。 ismarket()函數表示當前時間是否在A股交易時區和交易時段內。 tp1_timestamp()函數通過輸入當前時間戳,返回A股T+1特定某個時間戳,專門為A股策略時間管理進行定制。 綜上所述,後面隨著研究的深入我也會把更多的時間函數封裝到interval_ta庫當中去。