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

多时间框架Ehler瞬时趋势线计算异常的代码修正请求

问题:跨时间框架Ehler瞬时趋势线(EIT)数值重叠

在PineScript中实现3分钟(当前图表时间框架)和15分钟(跨框架)双EIT带时,两组线完全重叠,数值几乎一致,与15分钟时间框架的实际显示值不符。

问题根源

当前代码仅通过request.security获取15分钟的ohlc4数据,随后在3分钟时间框架上执行EIT计算。由于EIT函数使用var声明的持久化变量,在3分钟周期上计算拉伸后的15分钟数据,结果会与当前时间框架的EIT高度趋同,而非15分钟框架上原生计算的EIT值。

修正方案

将EIT的完整计算逻辑移入request.security内部,直接获取15分钟时间框架上计算完成的EIT值及触发线值,避免在当前框架重复计算。

修正后完整代码

//@version=5
indicator("Dual TF Ehlers Instantaneous Trend", overlay=true)

// Ehlers Instantaneous Trendline function
eit(src, alpha) =>
    var float it = 0.0
    it := (alpha - ((alpha * alpha) / 4.0)) * src +
         (0.5 * alpha * alpha) * src[1] -
         (alpha - 0.75 * alpha * alpha) * src[2] +
         2 * (1 - alpha) * nz(it[1], ((src + 2 * src[1] + src[2]) / 4.0)) -
         (1 - alpha) * (1 - alpha) * nz(it[2], ((src + 2 * src[1] + src[2]) / 4.0))
    it

// Input parameters
src = input(ohlc4, title="Source (3m TF)")
alpha1 = input.float(0.01, title="Alpha (3m TF)", step=0.01)
alpha2 = input.float(0.01, title="Alpha (15m TF)", step=0.01)

// 3分钟TF EIT计算
eit_value1 = eit(src, alpha1)
lag1 = 2.0 * eit_value1 - nz(eit_value1[2])

// 15分钟TF EIT计算(直接在目标框架内完成计算)
[eit_value15, lag2] = request.security(syminfo.tickerid, "15", 
    [eit(ohlc4, alpha2), 2.0 * eit(ohlc4, alpha2) - nz(eit(ohlc4, alpha2)[2])]
)

// Zones setup - 3m TF
show_zone1 = input.bool(true, title="Show 3m Zone-1 Color Fill?")
transparency1 = input.int(65, title="3m Fill Transparency", minval=0, maxval=100)
fill_color_1_dn = input(color.rgb(255, 0, 0, 30), title="3m Fill Color (Down)")
fill_color_1_up = input(color.rgb(0, 255, 0, 30), title="3m Fill Color (Up)")

// Zones setup - 15m TF
show_zone15_1 = input.bool(false, title="Show 15m Zone-1 Color Fill?")
transparency15_1 = input.int(20, title="15m Fill Transparency", minval=0, maxval=100)
fill_color_151_dn = input(color.rgb(255, 0, 0, 30), title="15m Fill Color (Down)")
fill_color_151_up = input(color.rgb(0, 255, 0, 30), title="15m Fill Color (Up)")

// 绘制3m TF线条与填充
plot(eit_value1, color=color.blue, title="3m EIT Line")
plot(lag1, color=color.red, title="3m Trigger Line")
if show_zone1
    fill(eit_value1, lag1, color=eit_value1 > lag1 ? fill_color_1_up : fill_color_1_dn, transp=transparency1)

// 绘制15m TF线条与填充
plot(eit_value15, color=color.orange, title="15m EIT Line", linewidth=2)
plot(lag2, color=color.purple, title="15m Trigger Line", linewidth=2)
if show_zone15_1
    fill(eit_value15, lag2, color=eit_value15 > lag2 ? fill_color_151_up : fill_color_151_dn, transp=transparency15_1)

关键修正点

  1. 跨框架计算逻辑迁移:将EIT和触发线的计算完全放在request.security的闭包中,确保在15分钟时间框架内完成所有计算,再将结果传递回3分钟框架。
  2. 多值返回处理:使用数组从request.security返回EIT值和触发线值,避免重复计算。
  3. 线条区分优化:为15分钟TF的线条设置更粗的线宽和不同颜色,便于视觉区分。

内容的提问来源于stack exchange,提问作者Neville N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:13:19