TradingView中Pine Script报错‘Script could not be translated from: null’求助
问题分析与代码修正
你的代码存在几处语法和逻辑问题,直接导致了运行报错,以下是具体修正方案:
1. 版本声明语法错误
第一行的版本声明多了一个多余的单引号,正确写法应为:
//@version=2
2. 空if语句触发语法异常
代码中存在一行无执行体的空if语句:if (distance > breakout) and (close > sma),这属于无效语法,直接删除该行即可。
3. 策略平仓/止盈止损逻辑冲突
- 同时混用
strategy.exit和strategy.close处理平仓,逻辑重复且易引发冲突 - 多个独立的
strategy.exit指令针对同一仓位,会导致策略执行异常,需整合止损、止盈规则
修正后的完整代码
//@version=2 strategy("MA Breakout Strategy", overlay=true) // 移动平均线周期 length = input(20, minval=1) // 突破阈值 breakout = input(2) // 止盈止损参数 takeProfit = input(5) stopLoss = input(3) // 计算移动平均线 sma = sma(close, length) // 计算价格与MA的偏离距离 distance = abs(close - sma) // 开仓条件:价格偏离MA超过阈值且位于MA上方(仅做多) if (distance > breakout) and (close > sma) strategy.entry("Long", strategy.long) // 整合止盈、止损和移动止损规则 strategy.exit("Exit Long", "Long", limit=sma + takeProfit, stop=sma - stopLoss, trail_stop=sma) // 平仓条件:价格回到MA范围内 或 价格跌破MA if (distance < breakout) or (close < sma) strategy.close("Long")
关键调整说明
- 新增策略名称声明,让策略直接叠加显示在K线图上
- 明确开仓条件为价格偏离MA超过设定值且位于MA上方,避免无效开仓
- 将止盈、止损、移动止损规则整合到同一个
strategy.exit指令中,消除逻辑冲突 - 删除无效空语句,修复语法错误
内容的提问来源于stack exchange,提问作者EagleEye
相关产品推荐
相关产品推荐

