예스스탁
예스스탁 답변
2023-03-30 10:16:16
안녕하세요
예스스탁입니다.
#= input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style")
input : length(20);
input : mult(2.0);
input : ex(true); #0:단수이평, 1:지수이평
input : BandsStyle(1); #0:tr, 1:atr, 2: range
input : atrlength(10);
var : src(0),mav(0),alpha(0),sum(0),Rangema(0);
var : upper(0),lower(0);
src = C;
if ex == 0 Then
mav = ma(src,length);
Else
mav = ema(src,length);
if BandsStyle == 0 Then
rangema = TrueRange;
else if BandsStyle == 1 then
rangema = ATR(atrlength);
else
{
alpha = 1/length;
sum = iff(isnan(sum[1]) == true , ma(Range, length) , alpha * Range + (1 - alpha) * sum[1]);
rangema = sum;
}
upper = mav + rangema * mult;
lower = mav - rangema * mult;
plot1(upper);
plot2(mav);
plot3(lower);
즐거운 하루되세요
> 이만스닥 님이 쓴 글입니다.
> 제목 : 수식 변경 부탁드립니다!
> 안녕하세요 항상 감사드립니다
Keltner channel 지표 수식인데, YT꺼랑은 달라서 그런데, Yeslanguage로 변환 부탁드립니다. (__) 항상 감사드립니다.
-----------------
//@version=5
indicator(title="Keltner Channels", shorttitle="KC", overlay=true, timeframe="", timeframe_gaps=true)
length = input.int(20, minval=1)
mult = input(2.0, "Multiplier")
src = input(close, title="Source")
exp = input(true, "Use Exponential MA")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style")
atrlength = input(10, "ATR Length")
esma(source, length)=>
s = ta.sma(source, length)
e = ta.ema(source, length)
exp ? e : s
ma = esma(src, length)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
u = plot(upper, color=#2962FF, title="Upper")
plot(ma, color=#2962FF, title="Basis")
l = plot(lower, color=#2962FF, title="Lower")
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background")