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

PineScript SMA交叉买卖策略运行无交易触发问题求助

SMA交叉策略回测无交易问题排查

原有代码核心问题

  • 逻辑嵌套错误:strategy.close("long", when = sellCondition)被写在if (longCondition)的判断块内,仅在金叉发生的单根K线会校验平仓条件,其余K线(包括后续死叉K线)完全不会执行平仓逻辑,会导致开仓后永远无法平仓。
  • 触发条件前置依赖不满足:30周期SMA需要至少30根K线才能计算出有效值,前29根K线均线为空值,交叉判断不会返回true;如果回测区间K线总数不足30根,或者区间内从未出现10周期SMA上穿30周期SMA的金叉走势,自然不会触发任何交易。
  • 易忽略的设置问题:策略默认在信号出现后的下一根K线开盘成交,如果回测时开启了「仅显示最近N根K线」、初始资金/手续费参数设置异常(比如初始资金为0、手续费率设为100%这类错误配置),也会导致看不到交易记录。

修复后可正常运行的代码

//@version=5
strategy("SMA均线交叉策略", overlay=true, process_orders_on_close=true)

// 计算长短周期SMA
shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)

// 定义交叉信号
longCondition = ta.crossover(shortSMA, longSMA)
sellCondition = ta.crossunder(shortSMA, longSMA)

// 开多逻辑:金叉触发
if longCondition
    strategy.entry("long", strategy.long)

// 平多逻辑:死叉触发,独立判断不嵌套
if sellCondition
    strategy.close("long")

// 绘制均线到图表
plot(shortSMA, color=color.blue, title="10周期SMA")
plot(longSMA, color=color.black, title="30周期SMA")

// 可选:添加信号标记方便校验
plotshape(longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellCondition, location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

验证步骤

  1. 加载修复后的代码,将K线图缩至全量显示,确认回测区间内存在明确的均线金叉、死叉走势
  2. 打开右侧策略测试器面板,在「交易列表」标签查看成交记录,图上的红绿三角标记会直接标注信号触发位置
  3. 如果仍无交易,检查策略参数设置:确认初始资金大于交易标的1手所需资金、手续费/滑点设置处于合理范围,没有配置无法成交的极端参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:06:28