查找绘图线的第一个值

Find the first value of a plot line

我有剧情:

//@version=4
study(title="Line", shorttitle="Line", overlay=true)

theline(src, len) => wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))

Line = theline(close, 9)

plot(Line, title='Line', color=#0066ff, linewidth=3)

该线将根据收盘价向上或向下移动。

当新柱出现时,当第一个收盘==开盘时,我如何找到该线的第一个值。

我需要那个值来比较,看看当前行是高于还是低于第一个值。

谢谢你帮助我。

您可以使用varip来冻结和保持实时值并有条件地更新它们。我为您编写了一个自定义函数,它将冻结 wma 行的实时打开值。请注意,这仅适用于实时或警报。如果您正在实时观看开盘,它只会冻结开盘,并且警报将在添加到图表后的第一个开盘时开始工作。

//@version=4
study(title="Line", shorttitle="Line", overlay=true)

theline(src, len) => wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))

openVal(src) =>
    varip float lineOpen = na
    if barstate.isnew
        lineOpen := src
    result = barstate.islastconfirmedhistory[1] or barstate.isconfirmed ? src : lineOpen

Line = theline(close, 5)

Line2 = openVal(Line)

plot(Line, title='Line', color=#0066ff, linewidth=4)
plot(Line2, title='Alt Line', color=color.white)

干杯,祝你好运

答案与你上一个问题的原理相同,你必须重构wma方程才能正常获得前n-1个值的总和并替换使用计算的第n个值(当前柱的值)打开而不是关闭。

//@version=5
indicator("hull open", overlay = true)

len = input.int(9)

f_wma_open(_close, _open, _len) =>
    float _wtd_sum = 0.0
    int _denom = 0

    for i = 1 to _len - 1
        _wt = _len - i
        _wtd_sum += _close[i] * _wt
        _denom += _wt

    _wtd_sum += _open * _len
    _denom += _len

    _wma_open = _wtd_sum / _denom
    _wma_open


f_hull_open(_close, _open, _len) =>
    _a = 2 * ta.wma(_close, _len / 2) - ta.wma(_close, _len)
    _b = 2 * f_wma_open(_close, _open, _len / 2) - f_wma_open(_close, _open, _len)
    _slen = math.round(math.sqrt(_len))
    
    float _wtd_sum = 0.0
    float _denom = 0.0
    for i = 1 to _slen - 1    
        _wt = _slen - i
        _wtd_sum += _a[i] * _wt
        _denom += _wt
    
    _wtd_sum += _b * _slen
    _denom += _slen
    
    _hull_open = _wtd_sum / _denom
    _hull_open


f_hull(_src, _len) =>
    ta.wma(2 * ta.wma(_src, _len / 2) - ta.wma(_src, _len), math.round(math.sqrt(_len)))
    
hull = f_hull(close, len)
hull_open = f_hull_open(close, open, len)


plot(hull, color = color.gray)
plot(hull_open, color = color.yellow)