Search code examples
chartspine-scriptindicatorpine-script-v4

How to find the first value of Bollinger Bands when bar open


Actually, the Bollinger Bands code is:

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

len = 5
multi = 2

bb5med = sma(close, len)
devBB5 =  mult2 * stdev(close, len)
bb5top =  bb5med + devBB5
bb5bot =  bb5med - devBB5

I would want to find the first value of those 3 lines when the new bar comes, means, when close==open.

Also, I need it to work when I change the len to 20, 50 and/or when I change the multi to 3

Please help me. Thank you.


Solution

  • //@version=5
    indicator("BB Open", overlay = true)
    
    len = input.int(20)
    mult = input.float(2.000)
    
    basis = (math.sum(close, len - 1)[1] + open) / len
    
    float dev_sum = 0.0
    
    for i = 1 to len - 1
        dev_sum += math.pow(basis - close[i], 2)
    
    dev_sum += math.pow(basis - open, 2)
    
    stdev = math.sqrt(dev_sum / len)
    
    up = basis + stdev * mult
    dn = basis - stdev * mult
    
    plot(basis, color = color.yellow)
    plot(up)
    plot(dn)
    

    Function :

    f_BBopen(_close, _open, _len, _mult) =>
        _basis = (math.sum(_close, _len - 1)[1] + _open) / _len
    
        float _dev_sum = 0.0
    
        for i = 1 to _len - 1
            _dev_sum += math.pow(_basis - _close[i], 2)
    
        _dev_sum += math.pow(_basis - _open, 2)
    
        _stdev = math.sqrt(_dev_sum / _len)
    
        _up = _basis + _stdev * _mult
        _dn = _basis - _stdev * _mult
        [_basis, _up, _dn]
    
    [basis, up, dn] = f_BBopen(close, open, len, mult)