커뮤니티
수식 수정 요청 드려 봅니다.
2025-10-20 23:06:50
300
글번호 227076
//@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)
VwapRopevwapsign
지표
답변 1
예스스탁 예스스탁 답변
2025-10-21 10:44:37
안녕하세요
예스스탁입니다.
input : multi(1.5);
input : len(20);
input : up_col(yellow);
input : down_col(Magenta);
input : flat_col(Green);
input : rng_col(Black);
var : src(0);
var : value(0),sum1(0),sum2(0),vwap(0),threshold(0);
var : move(0),rope(C),upper(0),lower(0);
src = close;
if Bdate != Bdate[1] Then
{
sum1 = 0;
sum2 = 0;
}
value = (h+l+c)/3;
sum1 = sum1 + (value*v);
sum2 = sum2 + v;
vwap = sum1/sum2;
threshold = std(close - vwap, len) * multi;
move = src - rope;
rope = rope + max(abs(move) - IFf(IsNan(threshold)==true, 0,threshold),0) * IFf(move>0,1,IFf(move<0,-1,0));
upper = rope + threshold;
lower = rope - threshold;
var : dir(0),col(0);
dir = iff(rope > rope[1] , 1 , iff(rope < rope[1] , -1 , dir));
if CrossUp(src, rope) or CrossDown(src,rope) Then
dir = 0;
col = iff(dir > 0 , up_col , IFf( dir < 0 , down_col , flat_col));
var : c_hi(Nan);
var : c_lo(nan);
var : h_sum(0);
var : l_sum(0);
var : c_count(0);
var : ff(1);
if dir == 0 Then
{
if dir[1] != 0 Then
{
h_sum = 0;
l_sum = 0;
c_count = 0;
ff = ff * -1;
}
h_sum = h_sum + upper;
l_sum = l_sum + lower;
c_count = c_count+ 1;
c_hi = h_sum / c_count;
c_lo = l_sum / c_count;
}
/// 시각화
plot1(rope,"VWAP Rope",col);
plot2(upper,"Upper Band", col);
plot3(lower,"Lower Band", col);
if ff > 0 Then
{
NoPlot(4);
NoPlot(5);
plot6(c_hi,"FF>0 rng",rng_col);
plot7(c_lo,"FF>0 rng",rng_col);
}
Else
{
plot4(c_hi,"FF<0 rng",rng_col);
plot5(c_lo,"FF<0 rng",rng_col);
NoPlot(6);
NoPlot(7);
}
즐거운 하루되세요
다음글
이전글