非标准图表数据
介绍
这些函数允许脚本从非标准条形图或图表类型中获取信息,无论脚本在哪种图表类型上运行。它们是: ticker.heikinashi()、 ticker.renko()、 ticker.linebreak()、 ticker.kagi() 和 ticker.pointfigure() 。它们都以相同的方式工作;它们创建一个特殊的代码标识符,用作request.security()函数调用中的第一个参数 。
`ticker.heikinashi()`
Heikin-Ashi在日语中是“平均条”的意思。Heikin-Ashi 蜡烛图的开盘价/最高价/最低价/收盘价是合成的;它们不是实际的市场价格。它们是通过对当前和前一个条的实际 OHLC 值进行平均组合计算得出的。所使用的计算方法使 Heikin-Ashi 条形图比普通蜡烛图的噪声更小。它们可用于进行视觉评估,但不适合回溯测试或自动交易,因为订单是根据市场价格执行的,而不是 Heikin-Ashi 价格。
ticker.heikinashi()函数 创建一个特殊的股票代码标识符,用于使用 request.security() 函数请求 Heikin-Ashi 数据。
此脚本请求平均足蜡烛图的收盘价并将其绘制在普通蜡烛图的顶部:
//@version=5
indicator("HA Close", "", true)
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
plot(haClose, "HA Close", color.black, 3)
注意:
- 以黑线表示的平均足条形图的收盘价与使用市场价格的真实蜡烛图的收盘价有很大不同。它们的作用更像是移动平均线。
- 图表条上方出现黑线是因为我们从脚本的“更多”菜单中选择了“视觉顺序/置于顶层”。
如果您想在上一个示例中省略延长时间的值,则需要先创建没有延长会话信息的中间行情自动收录器:
//@version=5
indicator("HA Close", "", true)
regularSessionTicker = ticker.new(syminfo.prefix, syminfo.ticker, session.regular)
haTicker = ticker.heikinashi(regularSessionTicker)
haClose = request.security(haTicker, timeframe.period, close, gaps = barmerge.gaps_on)
plot(haClose, "HA Close", color.black, 3, plot.style_linebr)
注意:
- 我们首先使用 ticker.new() 函数来创建一个没有扩展会话信息的股票行情机。
- 我们在 ticker.heikinashi()调用中使用该 ticker 而不是 syminfo.tickerid 。
- 在我们的
request.security()
调用中,我们将
gaps
参数的值设置为barmerge.gaps_on
。这指示函数不要使用以前的值来填充数据缺失的位置。这使得它可以 在常规会话之外返回na值。 - 为了能够在图表上看到这一点,我们还需要使用一种特殊的
plot.style_linebr
样式,将图表分解为 na 值。
此脚本在图表下绘制平均足蜡烛图:
//@version=5
indicator("Heikin-Ashi candles")
CANDLE_GREEN = #26A69A
CANDLE_RED = #EF5350
haTicker = ticker.heikinashi(syminfo.tickerid)
[haO, haH, haL, haC] = request.security(haTicker, timeframe.period, [open, high, low, close])
candleColor = haC >= haO ? CANDLE_GREEN : CANDLE_RED
plotcandle(haO, haH, haL, haC, color = candleColor)
注意:
- 我们使用 带有 request.security()的元组 来通过相同的调用获取四个值。
- 我们使用 plotcandle() 来绘制蜡烛图。 有关更多信息,请参阅条形图页面。
`ticker.renko()`
Renko条仅绘制价格走势,不考虑时间或交易量。它们看起来像堆叠在相邻列1中的砖块。只有在价格超过顶部或底部预定量后才会绘制新砖块。ticker.renko () 函数创建一个代码 ID,可与 request.security()一起使用 以获取 Renko 值,但没有 Pine Script™ 函数可以在图表上绘制 Renko 条:
//@version=5
indicator("", "", true)
renkoTicker = ticker.renko(syminfo.tickerid, "ATR", 10)
renkoLow = request.security(renkoTicker, timeframe.period, low)
plot(renkoLow)
`ticker.linebreak()`
Line Break图表类型显示一系列基于价格变化的垂直框1。 ticker.linebreak() 函数创建一个股票代码 id,可与 request.security()一起使用 以获取“Line Break”值,但没有 Pine Script™ 函数可以在图表上绘制此类条形图:
//@version=5
indicator("", "", true)
lineBreakTicker = ticker.linebreak(syminfo.tickerid, 3)
lineBreakClose = request.security(lineBreakTicker, timeframe.period, close)
plot(lineBreakClose)
`ticker.kagi()`
Kagi图由一条连续的线组成,该线会改变方向。当价格变化超过预定量时,方向会改变。ticker.kagi ( ) 函数创建一个代码 ID,可与 request.security() 一起使用以获取“Kagi”值,但没有 Pine Script™ 函数可以在图表上绘制此类条形图:
//@version=5
indicator("", "", true)
kagiBreakTicker = ticker.linebreak(syminfo.tickerid, 3)
kagiBreakClose = request.security(kagiBreakTicker, timeframe.period, close)
plot(kagiBreakClose)
`ticker.pointfigure()`
点数图(PnF) 仅绘制价格变动1,而不考虑时间。价格上涨时绘制一列 X,价格下跌时绘制一列 O。ticker.pointfigure () 函数创建一个股票代码 ID,可与 request.security()一起使用 以获取“PnF”值,但没有 Pine Script™ 函数可以在图表上绘制此类条形图。每列 X 或 O 都用四个数字表示。您可以将它们视为合成 OHLC PnF 值:
//@version=5
indicator("", "", true)
pnfTicker = ticker.pointfigure(syminfo.tickerid, "hl", "ATR", 14, 3)
[pnfO, pnfC] = request.security(pnfTicker, timeframe.period, [open, close], barmerge.gaps_on)
plot(pnfO, "PnF Open", color.green, 4, plot.style_linebr)
plot(pnfC, "PnF Close", color.red, 4, plot.style_linebr)
脚注
-
在 TradingView 上,Renko、Line Break、Kagi 和 PnF 图表类型是根据较低时间范围内的 OHLC 值生成的。因此,这些图表类型仅代表了它们根据报价数据生成的近似值。↩ ↩ 2 ↩ 3 ↩ 4