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

如何在PineScript中实现条件满足后SPX未来12个月收益测试?

在PineScript中测试SPX条件触发后未来12个月收益的实现方案

下面是实现需求的完整PineScript代码,你可以直接修改适配自己的触发条件:

//@version=5
indicator("SPX 12个月后收益测试", overlay=true, shorttitle="SPX Future Return")

// 1. 定义你的触发条件(示例:RSI低于30,可替换为任意逻辑)
triggerCondition = ta.rsi(close, 14) < 30

// 2. 设置未来周期:日线约252个交易日=12个月;月线则设为12
futurePeriods = input.int(252, title="未来周期数", tooltip="日线填252=12个月,月线填12=12个月")

// 3. 计算触发时未来N周期的收盘价及收益百分比
var float[] returnsArray = array.new_float()
if triggerCondition
    // 确保未来周期数据存在(避免图表末端无数据的情况)
    if bar_index >= futurePeriods
        futureClose = close[-(futurePeriods)]
        returnPct = (futureClose / close - 1) * 100
        array.push(returnsArray, returnPct)
        
        // 在触发K线上标记并显示收益
        plotshape(series=triggerCondition, title="触发信号", location=location.belowbar, 
                  color=color.green, style=shape.labelup, text=str.tostring(returnPct, "#.##%"), 
                  textcolor=color.white, size=size.small)

// 4. 统计收益数据(在数据窗口查看)
var label statsLabel = label.new(bar_index, high, "", color=color.blue, textcolor=color.white, style=label.style_label_down)
if barstate.islast and array.size(returnsArray) > 0
    avgReturn = array.avg(returnsArray)
    winRate = array.sum(array.new_float(size=array.size(returnsArray), initial_value=1) * array.gt(returnsArray, 0)) / array.size(returnsArray) * 100
    maxReturn = array.max(returnsArray)
    minReturn = array.min(returnsArray)
    
    statsText = str.format("信号总数: {0}\n平均收益: {1:.2f}%\n胜率: {2:.2f}%\n最大收益: {3:.2f}%\n最小收益: {4:.2f}%", 
                          array.size(returnsArray), avgReturn, winRate, maxReturn, minReturn)
    label.set_xy(statsLabel, bar_index, high)
    label.set_text(statsLabel, statsText)

关键部分说明:

  • 触发条件替换:把triggerCondition = ta.rsi(close, 14) < 30改成你自己的条件,比如ta.crossover(ta.sma(close,5), ta.sma(close,20))(5日均线上穿20日均线),或者价格突破某一阻力位等。
  • 周期调整:如果用月线图表,直接把futurePeriods改成12即可,不用改其他逻辑。
  • 数据查看:触发信号会在K线下方显示未来12个月的收益百分比,图表右上角的标签会显示所有信号的统计数据(信号总数、平均收益、胜率等)。
  • 注意事项:图表末端的N根K线(等于futurePeriods)因为没有未来数据,不会触发统计,这是正常现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:35:17