会议

介绍

会话信息在 Pine Script™ 中以三种不同的方式使用:

  1. 会话字符串包含从开始到结束的开始时间和日期信息,可用于 time()time_close()等函数 ,以检测条形图何时处于特定时间段,并可选择将有效会话限制在特定日期。input.session () 函数提供了一种允许脚本用户通过脚本的“输入”选项卡定义会话值的方法(有关更多信息,请参阅 会话输入部分)。
  2. 会话状态内置变量(例如 session.ismarket ) 可以识别某个条属于哪个会话。
  3. 使用request.security()获取数据时, 您还可以选择仅返回常规会话或 扩展会话的数据。在这种情况下,常规会话和扩展会话的定义是交易所的定义。它是工具属性的一部分 — 而不是用户定义的,如第 1 点所示。常规会话和扩展会话的概念与图表界面中使用的概念相同,例如在“图表设置/符号/会话”字段中。

以下部分介绍了在 Pine Script™ 中使用会话信息的两种方法。

注意:

  • 并非所有 TradingView 上的用户帐户都可以访问扩展会话信息。
  • Pine Script™ 中没有特殊的“会话”类型。相反,会话字符串属于“字符串”类型,但必须符合会话字符串语法。

会话字符串

会话字符串规范

与time()time_close()一起使用的会话字符串 必须具有特定格式。它们的语法是:

<time_period>:<days>

在哪里:

- <time_period> 使用“hhmm”格式的时间,其中“hh”为 24 小时格式,因此1700表示下午 5 点。

时间段采用“hhmm-hhmm”格式,逗号可以分隔多个时间段,以指定离散时间段的组合。

例如,- <days> 是一组从 1 到 7 的数字,用于指定会话在哪些天有效。

1 是星期日,7 是星期六。

这些是会话字符串的示例:

"24x7"

从午夜开始,持续 7 天、24 小时的会议。

"0000-0000:1234567"

相当于前面的例子。

"0000-0000"

与前两个例子相同,因为默认天数是 1234567

"0000-0000:23456"

与前面的例子相同,但仅限于周一至周五。

"2000-1630:1234567"

隔夜交易时段,开始时间为 20:00,结束时间为次日 16:30。该时段在一周内所有日子均有效。

"0930-1700:146"

周日(1)、周三(4)和周五(6)上午 9:30 开始,下午 17:00 结束的课程。

"1700-1700:23456"

隔夜交易时段周一交易时段于周日 17:00 开始,周一 17:00 结束。有效期为周一至周五。

"1000-1001:26"

星期一(2)和星期五(6)的奇怪会议仅持续一分钟。

"0900-1600,1700-2000"

会议从 9:00 开始,从 16:00 到 17:00 休息,一直持续到 20:00。适用于一周中的每一天。

使用会话字符串

使用会话字符串定义的会话属性独立于交易所定义的会话,这些会话决定了何时可以交易工具。程序员可以完全自由地创建适合其目的的任何会话定义,这通常是为了检测条形图何时属于特定时间段。这在 Pine Script™ 中通过使用 time() 函数的以下两个签名之一来实现:

time(timeframe, session, timezone) → series int
time(timeframe, session) → series int

在这里,我们使用带有 参数的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在以下情况下返回:
    • 该图表采用日内时间范围(秒或分钟)。
    • 脚本不在图表的第一条柱上,我们用 来确保这一点 (not barstate.isfirst)。此检查可防止代码始终检测从第一条柱开始的会话,因为 na(t[1]) and not na(t)始终true在那里。
    • time () 调用在前一个条形图上返回了na, 因为它不在会话的时间周期内,并且它 在当前条形图上返回了一个非na的值,这意味着该条形图在会话的时间周期内。

会话状态

三个内置变量可让您区分当前条形图所属的会话类型。它们仅在日内时间范围内有用:

使用`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 () 函数具有以下签名:

ticker.new(prefix, ticker, session, adjustment) → simple string

在哪里:

  • prefix是交换前缀,例如,"NASDAQ"
  • ticker是符号名称,例如"AAPL"
  • session可以是session.extendedsession.regular。请注意,这不是会话字符串。
  • adjustment使用不同的标准调整价格 adjustment.none,,adjustment.splitsadjustment.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)
Original text
Rate this translation
Your feedback will be used to help improve Google Translate