예스스탁
예스스탁 답변
2023-04-20 13:14:49
안녕하세요
예스스탁입니다.
input : len(14),oblevel(70),oslevel(30),bullz(60),bearz(40),emasmt(1);
var : src(0),uu(0),dd(0),sumu(0),sumd(0),rs(0),rsiv(0);
var : diffupob(0),diffdnob(0),diffupos(0),diffdnos(0);
var : oble(0),osle(0),oblev(0),oslev(0);
var : diffupblzn(0),diffdnblzn(0),diffupbrzn(0),diffdnbrzn(0);
var : bull(0),bear(0),bullzone(0),bearzone(0);
src = close;
uu = max(close - close[1], 0);
dd = max(close[1] - close, 0);
sumu = 0.0;
sumd = 0.0;
sumu = (uu + (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0)) / len;
sumd = (dd + (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0)) / len;
rs = sumu / sumd;
rsiv = 100 - 100 / (1 + rs);
diffupob = (sumd * ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0);
diffdnob = (sumu / ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0);
diffupos = (sumd * ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0);
diffdnos = (sumu / ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0);
oble = iff(Rsiv <= oblevel , close + diffupob , close - diffdnob);
osle = iff(Rsiv <= oslevel , close + diffupos , close - diffdnos);
oblev = ema(oble, emasmt);
oslev = ema(osle, emasmt);
diffupblzn= (sumd * ((100 / (100 - bullz)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0);
diffdnblzn = (sumu / ((100 / (100 - bullz)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0);
diffupbrzn= (sumd * ((100 / (100 - bearz)) -1 )) * len - (len - 1) * iff(isnan(sumu[1]) == False,sumu[1],0);
diffdnbrzn = (sumu / ((100 / (100 - bearz)) -1 )) * len - (len - 1) * iff(isnan(sumd[1]) == False,sumd[1],0);
bull = iff(Rsiv <= bullz , close + diffupblzn , close - diffdnblzn);
bear = iff(Rsiv <= bearz , close + diffupbrzn , close - diffdnbrzn);
bullzone = ema(bull, emasmt);
bearzone = ema(bear, emasmt);
plot1(oblev,"obl",red);
plot2(oslev, "osl",green);
plot3((oblev + oslev) / 2, "+",gray);
plot4(bullzone,"bullzone",Lime);
plot5(bearzone,"bearzone",lime);
즐거운 하루되세요
> 부똘이 님이 쓴 글입니다.
> 제목 : 도움 요청 드립니다.
>
아래 지표를 트레이딩뷰에서 찾았는데요,
예트로 변환하고 싶어서 말씀올립니다.
항상 감사드립니다~
src = input(close, title ="Source")
len = input(14, title ="Length")
oblevel = input(70, title ="OB Level", maxval = 99, minval = 1)
oslevel = input(30, title ="OS Level", maxval = 99, minval = 1)
bullz = input(60, title ="Bull Zone Level", maxval = 99, minval = 1)
bearz = input(40, title ="Bear Zone Level", maxval = 99, minval = 1)
fillbtw = input(true, title ="Fill between OB and OS lines")
showbbzone = input(false, title ="Show Bull/Bear Zones")
drawmidl = input(false, title ="Draw Midline")
emasmt = input(1, title ="EMA Smoothing", minval = 1)
my_rsi(x, len) =>
u = max(x - x[1], 0)
d = max(x[1] - x, 0)
sumu = 0.0, sumd = 0.0
sumu := (u + (len - 1) * nz(sumu[1])) / len
sumd := (d + (len - 1) * nz(sumd[1])) / len
rs = sumu / sumd
res = 100 - 100 / (1 + rs)
[res, sumu, sumd]
[Rsi, sumu, sumd] = my_rsi(close, len)
diffupob = (sumd * ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnob = (sumu / ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumd[1])
diffupos = (sumd * ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnos = (sumu / ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumd[1])
oblev = Rsi <= oblevel ? close + diffupob : close - diffdnob
oslev = Rsi <= oslevel ? close + diffupos : close - diffdnos
oblev := ema(oblev, emasmt)
oslev := ema(oslev, emasmt)
obl = plot(oblev, color = color.red)
osl = plot(oslev, color = color.green)
fill(obl, osl, color = fillbtw ? color.new(color.gray, 89) : color.new(color.white, 100))
plot((oblev + oslev) / 2, color = drawmidl ? color.gray : color.new(color.white, 100))
//Bull/Bear Zones
diffupblzn= (sumd * ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnblzn = (sumu / ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumd[1])
diffupbrzn= (sumd * ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnbrzn = (sumu / ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumd[1])
bullzone = Rsi <= bullz ? close + diffupblzn : close - diffdnblzn
bearzone = Rsi <= bearz ? close + diffupbrzn : close - diffdnbrzn
bullzone := ema(bullzone, emasmt)
bearzone := ema(bearzone, emasmt)
bullzln = plot(bullzone, color = showbbzone ? color.lime : na)
bearzln = plot(bearzone, color = showbbzone ? color.lime : na)
fill(obl, bullzln, color = bullz < oblevel and showbbzone ? color.new(color.lime, 90) : color.new(color.white, 100))
fill(osl, bearzln, color = bearz > oslevel and showbbzone ? color.new(color.red, 90) : color.new(color.white, 100))