예스스탁
예스스탁 답변
2023-11-16 16:45:52
안녕하세요
예스스탁입니다.
input : length(20),BB_mult(2.0);
var : BB_basis(0),dev(0),BB_upper(0),BB_lower(0);
BB_basis = ma(close, length);
dev = BB_mult * std(close, length);
BB_upper = BB_basis + dev;
BB_lower = BB_basis - dev;
input : KC_mult_high(1.0);
input : KC_mult_mid(1.5);
input : KC_mult_low(2.0);
var : KC_basis(0),devKC(0);
var : KC_upper_high(0),KC_lower_high(0);
var : KC_upper_mid(0),KC_lower_mid(0);
var : KC_upper_low(0),KC_lower_low(0);
var : NoSqz(False),LowSqz(False),MidSqz(False),HighSqz(False);
var : mom(0),iff_1(0),iff_2(0),mom_color(0),sq_color(0);
KC_basis = ma(close, length);
devKC = ma(TrueRange, length);
KC_upper_high = KC_basis + devKC * KC_mult_high;
KC_lower_high = KC_basis - devKC * KC_mult_high;
KC_upper_mid = KC_basis + devKC * KC_mult_mid;
KC_lower_mid = KC_basis - devKC * KC_mult_mid;
KC_upper_low = KC_basis + devKC * KC_mult_low;
KC_lower_low = KC_basis - devKC * KC_mult_low;
//SQUEEZE CONDITIONS
NoSqz = BB_lower < KC_lower_low or BB_upper > KC_upper_low; //NO SQUEEZE: GREEN
LowSqz = BB_lower >= KC_lower_low or BB_upper <= KC_upper_low; //LOW COMPRESSION: BLACK
MidSqz = BB_lower >= KC_lower_mid or BB_upper <= KC_upper_mid ;//MID COMPRESSION: RED
HighSqz = BB_lower >= KC_lower_high or BB_upper <= KC_upper_high; //HIGH COMPRESSION: ORANGE
//MOMENTUM OSCILLATOR
mom = LRL(close - avg(avg(highest(high, length), lowest(low, length)),ma(close, length)), length);
//MOMENTUM HISTOGRAM COLOR
iff_1 = iff(mom > iff(isnan(mom[1])==true,0,mom[1]) , Cyan , Blue);
iff_2 = iff(mom < iff(isnan(mom[1])==true,0,mom[1]) , red , yellow);
mom_color = iff(mom > 0 , iff_1 , iff_2);
//SQUEEZE DOTS COLOR
sq_color = iff(HighSqz , orange ,IFf(MidSqz , red ,IFf(LowSqz , black , green)));
//PLOTS
plot1(mom, "MOM",mom_color);
plot2(0, "SQZ", sq_color);
즐거운 하루되세요
> 신대륙발견 님이 쓴 글입니다.
> 제목 : 문의 드립니다.
> indicator('Beardy Squeeze Pro', shorttitle='Squeeze', overlay=false, precision=2)
length = input.int(20, "TTM Squeeze Length")
//BOLLINGER BANDS
BB_mult = input.float(2.0, "Bollinger Band STD Multiplier")
BB_basis = ta.sma(close, length)
dev = BB_mult * ta.stdev(close, length)
BB_upper = BB_basis + dev
BB_lower = BB_basis - dev
//KELTNER CHANNELS
KC_mult_high = input.float(1.0, "Keltner Channel #1")
KC_mult_mid = input.float(1.5, "Keltner Channel #2")
KC_mult_low = input.float(2.0, "Keltner Channel #3")
KC_basis = ta.sma(close, length)
devKC = ta.sma(ta.tr, length)
KC_upper_high = KC_basis + devKC * KC_mult_high
KC_lower_high = KC_basis - devKC * KC_mult_high
KC_upper_mid = KC_basis + devKC * KC_mult_mid
KC_lower_mid = KC_basis - devKC * KC_mult_mid
KC_upper_low = KC_basis + devKC * KC_mult_low
KC_lower_low = KC_basis - devKC * KC_mult_low
//SQUEEZE CONDITIONS
NoSqz = BB_lower < KC_lower_low or BB_upper > KC_upper_low //NO SQUEEZE: GREEN
LowSqz = BB_lower >= KC_lower_low or BB_upper <= KC_upper_low //LOW COMPRESSION: BLACK
MidSqz = BB_lower >= KC_lower_mid or BB_upper <= KC_upper_mid //MID COMPRESSION: RED
HighSqz = BB_lower >= KC_lower_high or BB_upper <= KC_upper_high //HIGH COMPRESSION: ORANGE
//MOMENTUM OSCILLATOR
mom = ta.linreg(close - math.avg(math.avg(ta.highest(high, length), ta.lowest(low, length)), ta.sma(close, length)), length, 0)
//MOMENTUM HISTOGRAM COLOR
iff_1 = mom > nz(mom[1]) ? color.new(color.aqua, 0) : color.new(#2962ff, 0)
iff_2 = mom < nz(mom[1]) ? color.new(color.red, 0) : color.new(color.yellow, 0)
mom_color = mom > 0 ? iff_1 : iff_2
//SQUEEZE DOTS COLOR
sq_color = HighSqz ? color.new(color.orange, 0) : MidSqz ? color.new(color.red, 0) : LowSqz ? color.new(color.black, 0) : color.new(color.green, 0)
//ALERTS
Detect_Sqz_Start = input.bool(true, "Alert Price Action Squeeze")
Detect_Sqz_Fire = input.bool(true, "Alert Squeeze Firing")
if Detect_Sqz_Start and NoSqz[1] and not NoSqz
alert("Squeeze Started")
else if Detect_Sqz_Fire and NoSqz and not NoSqz[1]
alert("Squeeze Fired")
//PLOTS
plot(mom, title='MOM', color=mom_color, style=plot.style_columns, linewidth=2)
plot(0, title='SQZ', color=sq_color, style=plot.style_circles, linewidth=3)
트레이딩뷰 지표인데 예스로 좀 변환해주세요.