是否可以在不产生角度的情况下进行填充?

Is it possible to fill without producing angles?

我想在两条阶梯线之间填充,但填充会产生角度,就像我在两条规则线之间填充一样。这可能吗?

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bajaco

//@version=4
study("renko test again", overlay=true)
renko_tickerid = renko(syminfo.tickerid, "ATR", 14)
renko_close = security(renko_tickerid, timeframe.period, close)
renko_open = security(renko_tickerid, timeframe.period, open)
var float brick_size = abs(renko_close - renko_open)
var float previous_close = renko_open
var float real_renko = renko_close

green = real_renko > previous_close
if green and close - real_renko >= brick_size
    previous_close := real_renko
    real_renko := real_renko + floor((close- real_renko)/brick_size) * brick_size
else if not green and close - real_renko >= brick_size*2
    real_renko := real_renko + floor((close- real_renko)/brick_size) * brick_size
else if not green and real_renko - close >= brick_size
    previous_close := real_renko
    real_renko := real_renko - floor((real_renko - close)/brick_size) * brick_size
else if green and real_renko - close >= brick_size*2
    real_renko := real_renko - floor((real_renko - close)/brick_size) * brick_size

renko_color = color.new(color.black, 100)
rc = plot(real_renko, linewidth=1, color=color.black, style=plot.style_stepline)
ro = plot(previous_close, linewidth=1, color=color.black, style=plot.style_stepline)

rfill = real_renko > previous_close ? color.green : color.red
fill(rc,ro,rfill, transp=50, fillgaps=true)

这是可能的,但只要值发生变化,您就会'lose'填充。
我在 show/hide 丢失填充的行中添加了一个输入复选框。

//@version=4
study("renko test again", overlay=true)
renko_tickerid = renko(syminfo.tickerid, "ATR", 14)
renko_close = security(renko_tickerid, timeframe.period, close)
renko_open = security(renko_tickerid, timeframe.period, open)
var float brick_size = abs(renko_close - renko_open)
var float previous_close = renko_open
var float real_renko = renko_close

green = real_renko > previous_close
if green and close - real_renko >= brick_size
    previous_close := real_renko
    real_renko := real_renko + floor((close- real_renko)/brick_size) * brick_size
else if not green and close - real_renko >= brick_size*2
    real_renko := real_renko + floor((close- real_renko)/brick_size) * brick_size
else if not green and real_renko - close >= brick_size
    previous_close := real_renko
    real_renko := real_renko - floor((real_renko - close)/brick_size) * brick_size
else if green and real_renko - close >= brick_size*2
    real_renko := real_renko - floor((real_renko - close)/brick_size) * brick_size

renko_color = color.new(color.black, 100)

rr = abs(change(real_renko))?na:real_renko
pc = abs(change(previous_close))?na:previous_close

var st = input(true, "Show connection lines on blank areas?", type=input.bool) ? plot.style_stepline : plot.style_linebr

rc = plot(rr, linewidth=1, color=color.black, style=st) 
ro = plot(pc, linewidth=1, color=color.black, style=st) 

rfill = real_renko > previous_close ? color.green : color.red
fill(rc,ro,rfill, transp=50, fillgaps=false)

编辑 1
这可能会更好。你'lose'少一补

//@version=4
study("renko test again", overlay=true)
renko_tickerid = renko(syminfo.tickerid, "ATR", 14)
renko_close = security(renko_tickerid, timeframe.period, close)
renko_open = security(renko_tickerid, timeframe.period, open)
var float brick_size = abs(renko_close - renko_open)
var float previous_close = renko_open
var float real_renko = renko_close

green = real_renko > previous_close
if green and close - real_renko >= brick_size
    previous_close := real_renko
    real_renko := real_renko + floor((close- real_renko)/brick_size) * brick_size
else if not green and close - real_renko >= brick_size*2
    real_renko := real_renko + floor((close- real_renko)/brick_size) * brick_size
else if not green and real_renko - close >= brick_size
    previous_close := real_renko
    real_renko := real_renko - floor((real_renko - close)/brick_size) * brick_size
else if green and real_renko - close >= brick_size*2
    real_renko := real_renko - floor((real_renko - close)/brick_size) * brick_size

renko_color = color.new(color.black, 100)

// rr = abs(change(real_renko))?na:real_renko
// pc = abs(change(previous_close))?na:previous_close
rr = real_renko
pc = previous_close

var st = input(true, "Show connection lines on blank areas?", type=input.bool) ? plot.style_stepline : plot.style_linebr

rc = plot(rr, linewidth=1, color=color.black, style=st) 
ro = plot(pc, linewidth=1, color=color.black, style=st) 

rfill = real_renko > previous_close ? color.green : color.red
rfill := abs(change(rr))?na:rfill
fill(rc,ro,rfill, transp=50, fillgaps=false)