会议
介绍
会话信息在 Pine Script™ 中以三种不同的方式使用:
- 会话字符串包含从开始到结束的开始时间和日期信息,可用于 time() 和 time_close()等函数 ,以检测条形图何时处于特定时间段,并可选择将有效会话限制在特定日期。input.session () 函数提供了一种允许脚本用户通过脚本的“输入”选项卡定义会话值的方法(有关更多信息,请参阅 会话输入部分)。
- 会话状态内置变量(例如 session.ismarket ) 可以识别某个条属于哪个会话。
- 使用request.security()获取数据时, 您还可以选择仅返回常规会话或 扩展会话的数据。在这种情况下,常规会话和扩展会话的定义是交易所的定义。它是工具属性的一部分 — 而不是用户定义的,如第 1 点所示。常规会话和扩展会话的概念与图表界面中使用的概念相同,例如在“图表设置/符号/会话”字段中。
以下部分介绍了在 Pine Script™ 中使用会话信息的两种方法。
注意:
- 并非所有 TradingView 上的用户帐户都可以访问扩展会话信息。
- Pine Script™ 中没有特殊的“会话”类型。相反,会话字符串属于“字符串”类型,但必须符合会话字符串语法。
会话字符串
会话字符串规范
与time() 和 time_close()一起使用的会话字符串 必须具有特定格式。它们的语法是:
在哪里:
- <time_period> 使用“hhmm”格式的时间,其中“hh”为 24 小时格式,因此1700
表示下午 5 点。
时间段采用“hhmm-hhmm”格式,逗号可以分隔多个时间段,以指定离散时间段的组合。
例如,- <days> 是一组从 1 到 7 的数字,用于指定会话在哪些天有效。
1 是星期日,7 是星期六。
这些是会话字符串的示例:
"24x7"
"0000-0000:1234567"
"0000-0000"
1234567
。
"0000-0000:23456"
"2000-1630:1234567"
"0930-1700:146"
"1700-1700:23456"
"1000-1001:26"
"0900-1600,1700-2000"
使用会话字符串
使用会话字符串定义的会话属性独立于交易所定义的会话,这些会话决定了何时可以交易工具。程序员可以完全自由地创建适合其目的的任何会话定义,这通常是为了检测条形图何时属于特定时间段。这在 Pine Script™ 中通过使用 time() 函数的以下两个签名之一来实现:
在这里,我们使用带有
参数的time()
在日内图表上session
显示市场的开盘
高点
和低点:
//@version=5
indicator("Opening high/low", overlay = true)
sessionInput = input.session("0930-0935")
sessionBegins(sess) =>
t = time("", sess)
timeframe.isintraday and (not barstate.isfirst) and na(t[1]) and not na(t)
var float hi = na
var float lo = na
if sessionBegins(sessionInput)
hi := high
lo := low
plot(lo, "lo", color.fuchsia, 2, plot.style_circles)
plot(hi, "hi", color.lime, 2, plot.style_circles)
注意:
- 我们使用会话输入来允许用户指定他们想要检测的时间。我们只在条形图上寻找会话的开始时间,因此我们在
"0930-0935"
默认值的开始和结束时间之间使用五分钟的间隔。 - 我们创建一个
sessionBegins()
函数来检测会话的开始。它的time("", sess)
调用使用空字符串作为函数的timeframe
参数,这意味着它使用图表的时间范围,无论它是什么。函数true
在以下情况下返回:
会话状态
三个内置变量可让您区分当前条形图所属的会话类型。它们仅在日内时间范围内有用:
true
当该条属于常规交易时间时,session.ismarket 返回。true
当该条属于正常交易时间之前的延长时段时,session.ispremarket 返回。true
当该条属于正常交易时间之后的延长交易时段时,session.ispostmarket 返回。
使用`request.security()`进行会话
当您的 TradingView 账户提供对扩展会话的访问权限时,您可以选择使用“设置/符号/会话”字段查看其栏目。有两种类型的会话:
- 常规(不包括盘前和盘后数据),以及
- 扩展(包括盘前和盘后数据)。
使用 request.security() 函数访问数据的脚本可以返回扩展会话数据,也可以不返回。这是仅获取常规会话数据的示例:
//@version=5
indicator("Example 1: Regular Session Data")
regularSessionData = request.security("NASDAQ:AAPL", timeframe.period, close, barmerge.gaps_on)
plot(regularSessionData, style = plot.style_linebr)
如果您希望 request.security() 调用返回扩展会话数据,您必须首先使用 ticker.new()函数来构建request.security()调用 的第一个参数 :
//@version=5
indicator("Example 2: Extended Session Data")
t = ticker.new("NASDAQ", "AAPL", session.extended)
extendedSessionData = request.security(t, timeframe.period, close, barmerge.gaps_on)
plot(extendedSessionData, style = plot.style_linebr)
请注意,脚本绘图中上一个图表的空白现已填补。另外,请记住,我们的示例脚本不会在图表上产生背景颜色;这是由于图表的设置显示延长的时间。
ticker.new () 函数具有以下签名:
在哪里:
prefix
是交换前缀,例如,"NASDAQ"
ticker
是符号名称,例如"AAPL"
session
可以是session.extended
或session.regular
。请注意,这不是会话字符串。adjustment
使用不同的标准调整价格 :adjustment.none
,,adjustment.splits
。adjustment.dividends
我们的第一个示例可以重写为:
//@version=5
indicator("Example 1: Regular Session Data")
t = ticker.new("NASDAQ", "AAPL", session.regular)
regularSessionData = request.security(t, timeframe.period, close, barmerge.gaps_on)
plot(regularSessionData, style = plot.style_linebr)
如果您想使用与图表主符号相同的会话规范,请省略 ticker.new()中的第三个参数;它是可选的。如果您希望代码明确声明您的意图,请使用 syminfo.session 内置 变量。它保存图表主符号的会话类型:
//@version=5
indicator("Example 1: Regular Session Data")
t = ticker.new("NASDAQ", "AAPL", syminfo.session)
regularSessionData = request.security(t, timeframe.period, close, barmerge.gaps_on)
plot(regularSessionData, style = plot.style_linebr)