You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pine Script中获取虚拟证券的tickerid用于组合分析?

TradingView自定义证券组合脚本解决方案

问题背景

需要在TradingView脚本中创建虚拟证券组合(如(AAPL + MSFT) / GOOGL),用于后续指标分析(RSI、随机指标等)、统计计算,最终开发ETF对冲类配对交易策略。用户在交互图表中直接输入该组合可正常运行,但尝试参数化写入脚本时无输出结果,尝试代码如下:

t1 = ticker.new("NASDAQ", "APPL", session.regular)
t2 = ticker.new("NASDAQ", "MSFT", session.regular)
t3 = ticker.new("NASDAQ", "GOOG", session.regular)
c = request.security( "t1+t2/t3", "1D", close)
plot(c)

问题分析

  1. 参数传递错误:request.security()的第一个参数需要是合法的标的组合表达式字符串,而代码中"t1+t2/t3"只是普通字符串,并未实际引用变量对应的ticker值
  2. 标的代码拼写错误:苹果的代码是AAPL而非APPL

解决方案

方案1:直接构建组合表达式字符串

直接按照TradingView交互图表的组合语法构建字符串,传递给request.security():

// 构建符合TradingView规则的组合表达式
combo_ticker = "(NASDAQ:AAPL + NASDAQ:MSFT) / NASDAQ:GOOG"
// 请求组合的日线收盘价
combo_close = request.security(combo_ticker, "1D", close)
plot(combo_close, title="(AAPL+MSFT)/GOOGL 组合比率")

方案2:参数化动态构建组合

如果需要灵活切换标的,可以用变量拼接组合字符串:

// 参数化定义标的与交易所
exchange = "NASDAQ"
symbol1 = "AAPL"
symbol2 = "MSFT"
symbol3 = "GOOG"

// 动态组合表达式字符串
combo_ticker = "(" + exchange + ":" + symbol1 + " + " + exchange + ":" + symbol2 + ") / " + exchange + ":" + symbol3

// 获取组合数据
combo_close = request.security(combo_ticker, "1D", close)
plot(combo_close, title="参数化组合比率")

扩展应用:基于组合计算指标

获取组合数据后,可直接用于各类指标计算或统计:

// 计算组合的14日RSI
combo_rsi = ta.rsi(combo_close, 14)
// 计算组合的60日最高值及距最高值天数
highest_val = ta.highest(combo_close, 60)
days_since_high = ta.barssince(combo_close == highest_val)

plot(combo_rsi, title="组合RSI", color=color.new(color.blue, 0))
plot(highest_val, title="60日最高值", color=color.new(color.red, 0), style=plot.style_dashed)
label.new(bar_index, highest_val, "距最高值天数: " + str.tostring(days_since_high))

内容的提问来源于stack exchange,提问作者Archer Dixon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:21:07