blackcat1402

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

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

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

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
Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.