不同时间范围的值计算不一致

问题描述 投票:0回答:1

我希望使用 pinescript 来计算两个不同时间范围(3m 和 15 m)内的 Ehler 瞬时趋势线。 3m 是图表时间范围。我的代码库是由一位非常多产的 pinescript 编码器 LazyBear 使用的。代码的链接是https://www.tradingview.com/script/DaHLcICg-Ehlers-Instantaneous-Trend-LazyBear/

由于代码较旧,我稍微修改了代码,我希望绘制两组 EIT 带,一组在当前时间范围内计算,另一组在 15 分钟时间范围内计算。

The code for calculation of Ehlers instantaneous Trendline:
// 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

And code for the input parameters, bands(areas between the EIT and the trigger line):

// Input parameters
src  = input(ohlc4, title="Source")
src2 = request.security(syminfo.tickerid, "15", ohlc4)
alpha1 = input.float(0.01, title="Alpha1", step=0.01)
alpha2 = input.float(0.01, title="Alpha1 - 15m TF", step=0.01)


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

//Zones setup for TF-15 min
show_zone15_1 = input.bool(false, title="Show Zone-151 (15m) color fill?")
transparency15_1 = input.int(20, title="fill transparency", minval=0, maxval=100)
fill_color_151_dn = input(color.rgb(255, 0,  0, 30), title="Fill Color 151-down")
fill_color_151_up = input(color.rgb(0, 255, 0, 30), title="Fill Color 151-up")

and the calculations for the EIT and Trigger values:

// Input parameters
src  = input(ohlc4, title="Source")
src2 = request.security(syminfo.tickerid, "15", ohlc4)
alpha1 = input.float(0.01, title="Alpha1", step=0.01)
alpha2 = input.float(0.01, title="Alpha1 - 15m TF", step=0.01)


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

//Zones setup for TF-15 min
show_zone15_1 = input.bool(false, title="Show Zone-151 (15m) color fill?")
transparency15_1 = input.int(20, title="fill transparency", minval=0, maxval=100)
fill_color_151_dn = input(color.rgb(255, 0,  0, 30), title="Fill Color 151-down")
fill_color_151_up = input(color.rgb(0, 255, 0, 30), title="Fill Color 151-up")

我正在获取这些值并将它们绘制在图表中,但是绘制时,这些值彼此重叠。我创建了一个表来查看即将到来的值,我惊讶地发现即将到来的值集几乎相同。这不可能,因为我检查了 15m 时间范围内的值的显示,并且这些值有所不同。

我知道这些值可能存在一些差异,但这里并非如此。 src2 的值(使用 request.security(syminfo.tickerid, "15", ohlc4) 计算)显然没有按我的预期工作。

我的问题是: 我现在应该做什么来更正代码,使值是近似的,并且值和绘图之间存在一些协调? 感谢您阅读我的问题。

pine-script pine-script-v5
1个回答
0
投票

尝试这个库的f_security

eit_value1 = eit(src, alpha1)
eit_value15 =eit(src2, alpha2)

//Trigger line calculation (lag of 2 periods)
lag1 =2.0 * eit_value1 - nz(eit_value1[2])
lag2 =2.0 * eit_value15 - nz(eit_value15[2])
© www.soinside.com 2019 - 2024. All rights reserved.