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

Pine Script报错‘未声明标识符slowHA’问题求助

Pine Script报错‘未声明标识符slowHA’问题求助

嘿,我来帮你排查这个问题!首先看你遇到的Undeclared identifier 'slowHA'错误,主要有两个核心原因:

1. 变量声明语法用错了

在Pine Script v4里,:=是赋值运算符,只能给已经用=声明过的变量更新值,不能用来创建新变量。你直接用fastHA := sma(...)和slowHA := sma(...),相当于没先告诉编译器这两个变量的存在,自然会报错找不到它们。

2. 跨时间周期数据的获取方式不对

你想获取小时线的20/50周期SMA,直接在sma函数里加"hour"参数是行不通的。Pine Script里要调取其他时间框架的数据,必须用request.security()函数来实现。

下面是修正后的完整代码,我标注了关键修改点:

//@version=4
strategy("MA Crossover")

// Define the daily moving averages
fastDA = sma(close, 20)
slowDA = sma(close, 50)

// Define the hourly moving averages - 核心修改部分
// 先调取1小时周期的收盘价,再计算对应均线
hourly_close = request.security(syminfo.tickerid, "60", close)
fastHA = sma(hourly_close, 20)
slowHA = sma(hourly_close, 50)

// Buy when fast DA is above slow DA and fast HA crosses above slow HA
longCondition = fastDA > slowDA and crossover(fastHA, slowHA)
if (longCondition)
    strategy.entry("Long", strategy.long)

// Sell when fast HA crosses under slow HA(和你描述的平仓逻辑完全匹配)
shortCondition = crossunder(fastHA, slowHA)
if (shortCondition)
    strategy.close("Long")

// Plot the moving averages
plot(fastDA, color = color.red, linewidth = 2, title = "Fast DA")
plot(slowDA, color = color.blue, linewidth = 2, title = "Slow DA")
plot(fastHA, color = color.orange, linewidth = 1, title = "Fast HA", style = plot.style_line)
plot(slowHA, color = color.green, linewidth = 1, title = "Slow HA", style = plot.style_line)

简单说下修改细节:

  • 用request.security(syminfo.tickerid, "60", close)获取当前标的1小时周期的收盘价("60"代表60分钟,也就是1小时)
  • 改用=来声明fastHA和slowHA变量,符合Pine v4的语法规范
  • 简化了平仓条件,完全贴合你描述的“20小时均线下穿50小时均线时平仓”的逻辑

这样修改后,既解决了未声明标识符的错误,也能正确获取小时线的均线数据啦!

备注:内容来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:47:41