Pine Script技术问询:在单图表中获取多标的行情信息
Pine Script 获取非主标的行情信息方案
首先明确:Pine Script目前没有内置API能直接获取图表上所有叠加的非主标的行情或syminfo信息,这是平台的设计限制——当前运行的指标/策略仅绑定主图表标的,其他叠加标的仅作为视觉对比,无法被脚本主动感知。
可行替代方案
1. 硬编码标的代码获取行情
使用request.security()函数手动指定标的代码,获取对应行情数据。示例:
// 获取GBPUSD的收盘价 gbpClose = request.security("FX:GBPUSD", timeframe.period, close) plot(gbpClose, color=color.red, title="GBPUSD Close")
缺点:需要提前知道标的代码,无法动态适配图表上新增的标的。
2. 让用户手动选择标的(灵活度更高)
用input.symbol()创建输入框,允许用户随时选择或更换需要获取的非主标的,无需修改代码。示例:
// 创建标的选择输入框 secondarySymbol = input.symbol("FX:GBPUSD", title="Secondary Symbol") // 获取该标的收盘价 secondaryClose = request.security(secondarySymbol, timeframe.period, close) // 绘制行情线 plot(secondaryClose, color=color.blue, title="Secondary Symbol Close")
3. 支持多个对比标的
如果需要同时获取多个非主标的数据,可以创建多个输入框,逐个获取并展示:
// 多个标的输入框 sym1 = input.symbol("FX:GBPUSD", title="Symbol 1") sym2 = input.symbol("FX:USDJPY", title="Symbol 2") sym3 = input.symbol("FX:AUDUSD", title="Symbol 3") // 获取各标的收盘价 close1 = request.security(sym1, timeframe.period, close) close2 = request.security(sym2, timeframe.period, close) close3 = request.security(sym3, timeframe.period, close) // 分别绘制 plot(close1, color=color.red, title=sym1) plot(close2, color=color.blue, title=sym2) plot(close3, color=color.green, title=sym3)
注意事项
- 所有通过
request.security()获取的数据,需要确保标的代码格式正确(比如外汇要加FX:前缀,股票加对应交易所前缀)。 - 若需要完全自动识别图表上新增的叠加标的,目前没有实现可能,这属于TradingView Pine Script API的功能限制,官方文档中确实无相关接口。
内容的提问来源于stack exchange,提问作者Andreas Wanner
相关产品推荐
相关产品推荐

