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
Frånsägelse av ansvar

Informationen och publikationerna är inte avsedda att vara, och utgör inte heller finansiella, investerings-, handels- eller andra typer av råd eller rekommendationer som tillhandahålls eller stöds av TradingView. Läs mer i Användarvillkoren.