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

如何在TradingView Supercharts中绘制ETF组合加权平均收益率曲线?

实现基于基准日的ETF涨跌幅百分比及加权组合曲线(Pine Script v6)

核心思路

要实现左边缘为0%的涨跌幅曲线,关键是以时间段起始点的价格为基准,将每个ETF的当前价格转换为相对基准的涨跌幅百分比;加权组合则先计算组合的实时净值,再基于组合的基准净值转换为百分比曲线,确保所有曲线的基准统一。

修改后的完整代码

//@version=6
indicator('ETF组合涨跌幅', overlay=true, scale=scale.percent)

// 1. 获取两个ETF的实时收盘价
etf1_close = request.security('SPY', timeframe.period, close)
etf2_close = request.security('SPDW', timeframe.period, close)

// 2. 获取时间段起始点的基准价格(第一个K线的收盘价)
var float etf1_base = na
var float etf2_base = na
if bar_index == 0
    etf1_base := etf1_close
    etf2_base := etf2_close

// 3. 计算单个ETF的相对基准涨跌幅(%)
etf1_percent = (etf1_close / etf1_base - 1) * 100
etf2_percent = (etf2_close / etf2_base - 1) * 100

// 4. 计算加权组合的基准净值与实时净值,再转换为涨跌幅(%)
// 权重设置:30% SPY,70% SPDW
weight1 = 0.3
weight2 = 0.7
portfolio_base = weight1 * etf1_base + weight2 * etf2_base
portfolio_current = weight1 * etf1_close + weight2 * etf2_close
portfolio_percent = (portfolio_current / portfolio_base - 1) * 100

// 5. 绘制曲线
plot(etf1_percent, color=color.red, title='SPY 涨跌幅')
plot(etf2_percent, color=color.blue, title='SPDW 涨跌幅')
plot(portfolio_percent, color=color.green, title='30%SPY+70%SPDW 组合', linewidth=2)

代码关键部分解释

  • 基准价格锁定:用var关键字定义基准变量,确保仅在第一个K线(bar_index == 0)时赋值一次,后续不再修改,保证基准点固定为时间段左边缘。
  • 涨跌幅转换:通过(当前价/基准价 - 1)*100公式,将绝对价格转换为相对基准的百分比涨跌幅,自然实现左边缘为0%的展示效果。
  • 加权组合计算:先计算组合在基准日的总价值,再计算实时总价值,最后转换为百分比涨跌幅,确保组合曲线与单个ETF的基准完全对齐。
  • 刻度适配:scale=scale.percent强制图表使用百分比刻度,完美匹配涨跌幅数据的展示需求。

使用说明

  1. 将代码粘贴到TradingView的Pine Script编辑器中,点击添加到图表。
  2. 图表会自动以当前所选时间段(如过去一年)的起始点为基准,显示两个ETF及组合的涨跌幅曲线,左边缘统一为0%。
  3. 如需调整权重,直接修改weight1和weight2的值即可(建议权重总和为1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 16:04:53