TradingView运行简单Pinescript策略时策略标签无显示问题咨询
TradingView策略无信号修复方案
问题根源
- 未声明Pine Script版本:TradingView当前默认运行Pine Script v5,未声明版本会导致旧语法执行异常
- 止损止盈作用域错误:
strategy.exit()及止损止盈值定义在开仓条件的if块内,仅开仓当根K线生效,后续K线会丢失止损止盈配置,触发订单逻辑异常 - 回测范围不匹配:代码硬编码回测区间为2018年1月1日至2020年1月1日,若图表未加载对应时间段K线,或策略设置的回测区间与该范围无重叠,不会产生任何交易信号
- 止损止盈取值问题:使用当前未走完K线的low/high计算止损止盈,会导致数值随K线波动反复变化,无法固定开仓时的风险收益比
修复后完整代码
//@version=5 strategy ("LONG TERM STRAT", overlay = true, initial_capital = 5000, default_qty_value = 5, default_qty_type = strategy.percent_of_equity) // 可自定义回测时间参数,无需修改核心代码 timeStart = input.time(timestamp("2018-01-01"), "回测开始时间") timeEnd = input.time(timestamp("2020-01-01"), "回测结束时间") inBacktestRange = time >= timeStart and time <= timeEnd noTrade = strategy.position_size <= 0 // 均线计算,保留原EMA翻倍逻辑,如需标准SMMA可替换为ta.smma(),周期改为21/50/100即可 SMMA21= ta.ema(close,42) SMMA50= ta.ema(close,100) SMMA100= ta.ema(close,200) // 绘制均线方便核对触发条件 plot(SMMA21, color=color.blue, linewidth=2, title="21SMMA") plot(SMMA50, color=color.yellow, linewidth=2, title="50SMMA") plot(SMMA100, color=color.red, linewidth=2, title="100SMMA") // RSI计算 RSIval= ta.rsi(close,14) // 多头开仓条件 longCon1 = SMMA21 > SMMA50 and SMMA50 > SMMA100 longCon2 = RSIval > 50 longCondition = longCon1 and longCon2 and noTrade and inBacktestRange if (longCondition) // 取前一根K线高低点计算止损止盈,避免未来函数问题 stopLoss = low[1] * 0.95 takeProfit = high[1] * 1.1 strategy.entry("long", strategy.long) strategy.exit("exit", "long" , stop=stopLoss, limit=takeProfit)
验证步骤
- 导入脚本后打开策略设置,确认回测时间范围覆盖你设置的回测区间
- 拉取图表K线直到显示对应回测时间段的行情,即可看到策略信号和回测业绩
- 如需调整止损止盈比例,直接修改0.95和1.1两个参数即可
内容的提问来源于stack exchange,提问作者AmitJ
相关产品推荐
相关产品推荐

