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

Pine Script编译错误修复求助:找不到crossover函数及策略代码问题

Pine Script 编译错误与策略逻辑修复方案

一、编译错误修复

第11行的crossover函数未找到,原因是Pine Script v5中所有技术分析函数都归属ta命名空间,必须写成ta.crossover才能正确调用。

二、策略逻辑问题修复

原代码存在多处逻辑漏洞,逐一修正如下:

  • 交叉信号区分缺失:仅检测了EMA上穿SMA的金叉信号,未定义EMA下穿SMA的死叉信号,需分别设置多空触发条件
  • 开仓参数无效:strategy.entry的方向参数错误,空头应使用strategy.short;且开仓时strategy.position_avg_price无有效值,止损需基于当前价格设置
  • 止盈止损配置错误:strategy.exit未正确关联开仓ID,且参数使用不符合v5规范,需明确用stop和limit定义止损止盈价位

三、修复后的完整代码

//@version=5
strategy("EMA-SMA 交叉策略", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// 设置均线变量
ema8 = ta.ema(close, 8)
sma47 = ta.sma(close, 47)

// 分别定义金叉(多单信号)和死叉(空单信号)
longCross = ta.crossover(ema8, sma47)
shortCross = ta.crossunder(ema8, sma47)

// 开多单:金叉触发,止损为当前价-1,止盈为当前价+3
if (longCross)
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", stop=close - 1, limit=close + 3)

// 开空单:死叉触发,止损为当前价+1,止盈为当前价-3
if (shortCross)
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", stop=close + 1, limit=close - 3)

// 绘制均线便于观察信号
plot(ema8, color=color.blue, title="8-period EMA")
plot(sma47, color=color.red, title="47-period SMA")

代码说明

  • 新增策略基础配置(资金、佣金等),符合回测标准化要求
  • 用ta.crossunder补充死叉信号,明确多空开仓触发条件
  • 基于当前收盘价计算止损止盈,确保参数有效可执行
  • 为strategy.exit指定对应开仓ID,避免信号关联错误
  • 添加均线可视化,方便直观验证交叉信号

内容的提问来源于stack exchange,提问作者Michael Rurup Andersen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:40:26