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
Clause de non-responsabilité

Les informations et les publications ne sont pas destinées à être, et ne constituent pas, des conseils ou des recommandations en matière de finance, d'investissement, de trading ou d'autres types de conseils fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.