커뮤니티
수식 수정 요청 드려 봅니다.
//@version=6indicator("VWAP Rope", overlay = true)
/// Inputs
var params = "Parameters"
src = nz(input.source(close, title = "Source", group = params))
multi = input.float(1.5, title = "VWAP Band Multiplier", step = 0.25, minval = 0, group = params)
len = input.int(20, title = "StdDev Length", minval = 1, group = params) //
var disp = "Display"
rng_tog = input.bool(true, title = "Consolidation Ranges", group = disp)
var cols = "Colors"
up_col = input.color(color.yellow, title = "Up Color", group = cols)
down_col = input.color(color.fuchsia, title = "Down Color", group = cols)
flat_col = input.color(#004d92, title = "Flat Color", inline = "3", group = cols)
rng_col = input.color(#004d9233, title = "", inline = "3", group = cols)
/// VWAP 기반 threshold
vwap = ta.vwap
threshold = ta.stdev(close - vwap, len) * multi //
/// Rope smoother
rope_smoother(float _src, float _threshold) =>
var float _rope = _src
_move = _src - _rope
_rope += math.max(math.abs(_move) - nz(_threshold), 0) * math.sign(_move)
[_rope, _rope + _threshold, _rope - _threshold]
// Rope 계산
[rope, upper, lower] = rope_smoother(src, threshold)
/// 방향성 감지
var dir = 0
dir := rope > rope[1] ? 1 : rope < rope[1] ? -1 : dir
if ta.cross(src, rope)
dir := 0
col = dir > 0 ? up_col : dir < 0 ? down_col : flat_col
/// Consolidation Range
var float c_hi = na
var float c_lo = na
var float h_sum = 0
var float l_sum = 0
var int c_count = 0
var ff = 1
if dir == 0
if dir[1] != 0
h_sum := 0
l_sum := 0
c_count := 0
ff := ff * -1
h_sum += upper
l_sum += lower
c_count += 1
c_hi := h_sum / c_count
c_lo := l_sum / c_count
/// 시각화
plot(rope, linewidth = 3, color = col, title = "VWAP Rope")
plot(upper, color = col, title = "Upper Band", linewidth = 1)
plot(lower, color = col, title = "Lower Band", linewidth = 1)
h1 = plot(ff > 0 ? na : c_hi, style = plot.style_linebr, color = color.new(rng_col, 0), display = rng_tog ? display.all : display.none)
l1 = plot(ff > 0 ? na : c_lo, style = plot.style_linebr, color = color.new(rng_col, 0), display = rng_tog ? display.all : display.none)
h2 = plot(ff < 0 ? na : c_hi, style = plot.style_linebr, color = color.new(rng_col, 0), display = rng_tog ? display.all : display.none)
l2 = plot(ff < 0 ? na : c_lo, style = plot.style_linebr, color = color.new(rng_col, 0), display = rng_tog ? display.all : display.none)
fill(h1, l1, rng_col, title = "Range Fill 1", display = rng_tog ? display.all : display.none)
fill(h2, l2, rng_col, title = "Range Fill 2", display = rng_tog ? display.all : display.none)
답변 1
예스스탁 예스스탁 답변
2025-10-21 10:44:37