如何在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)
问题分析
- 参数传递错误:
request.security()的第一个参数需要是合法的标的组合表达式字符串,而代码中"t1+t2/t3"只是普通字符串,并未实际引用变量对应的ticker值 - 标的代码拼写错误:苹果的代码是
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
相关产品推荐
相关产品推荐

