如何使用TradingView管理策略中的時間要素

僅當我把時間要素納入通盤考慮之後,我的行情記錄才對即將到來的重大行情有所幫助。----傑西 利弗莫爾

時間要素就是重大行情發生所需要的時間。重大行情的發生需要時間來醞釀,這需要交易者具備耐心並且關注重要的時間節點。我是因為最近優化策略也考慮加入時間要素,才進一步對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庫當中去。
blackcat1402Technical Indicators

Avoid losing contact!Don't miss out! The first and most important thing to do is to join my Discord chat now! Click here to start your adventure: discord.com/invite/ZTGpQJq 防止失联,请立即行动,加入本猫聊天群: discord.com/invite/ZTGpQJq
更多:

相關出版品

免責聲明