我的策略不执行交易如何修复?3周高点突破策略添加至图表后无成交
策略不触发交易的解决方案
核心问题定位
你提供的代码存在关键计算错误,叠加开仓条件设置过严,共同导致无法触发交易:
- 均量计算错误:原代码中
AvgVol = sum(volume, 50)计算的是过去50个周期的总成交量,而非日均成交量,后续Long6要求当日成交量大于总成交量的1.5倍,这个条件几乎不可能满足,是无法开仓的核心原因。 - 开仓条件叠加过严:6个多头条件同时要求长中短期均线完全多头排列、突破15周期高点、成交量放大、空仓状态,同时满足的概率极低。
- 时间范围变量未生效:你定义了
TimePeriod限制回测从2010年开始,但未将该条件加入开仓判断逻辑,不符合原本的策略设计。
修复后的代码
//@version=4 strategy("Breakout 3 Weeks High", overlay=true) Long1 = ema(close, 150) > ema(close, 200) Long2 = sma(close, 50) > ema(close, 150) Long3 = ema(close, 21) > sma(close, 50) Long4 = close > ema(close, 21) Long5 = crossover(close, high[15]) // 修正均量计算:总成交量除以50得到平均值 AvgVol = sum(volume, 50) / 50 Long6 = volume > AvgVol * 1.5 OutofTrade = strategy.position_size <= 0 TimePeriod = time > timestamp(syminfo.timezone, 2010, 01, 01, 0, 0) // 补全时间条件到开仓判断中 if(Long1 and Long2 and Long3 and Long4 and Long5 and Long6 and OutofTrade and TimePeriod) strategy.entry("Long", strategy.long) if strategy.position_size != 0 StopLoss = strategy.position_avg_price * 0.97 TakeProfit = strategy.position_avg_price * 1.09 strategy.exit("Exit", "Long", stop=StopLoss, limit=TakeProfit)
额外排查项
如果修复后还是没有触发交易,可以检查以下设置:
- 回测时间范围:确认TradingView的回测起始时间设置在2010年之后,覆盖到有符合条件的行情区间
- 策略属性设置:检查策略设置中的「初始资金」「手续费」「持仓上限」参数是否设置合理,没有限制开仓
- 标的适配:当前策略是偏趋势的长周期策略,建议在股指、流动性好的行业ETF等趋势性较强的标的上测试,波动率过低的标的很难满足突破条件。
内容的提问来源于stack exchange,提问作者DogDogMe
相关产品推荐
相关产品推荐

