답변완료
부탁드립니다.
변형 부탁 드립니다.
indicator("RSI Multi Length [LuxAlgo]")
max = input(20,'Maximum Length')
min = input(10,'Minimum Length')
overbought = input.float(70,step=10)
oversold = input.float(30,step=10)
src = input(close)
//----
rsi_avg_dn_css = input(#ff5d00,'Average RSI Gradient',group='Style',inline='inline1')
rsi_avg_up_css = input(#2157f3,'',group='Style',inline='inline1')
upper_css = input(#0cb51a,'Upper Level',group='Style')
lower_css = input(#ff1100,'Lower Level',group='Style')
ob_area = input(color.new(#0cb51a,70),'Overbought Area',group='Style')
os_area = input(color.new(#ff1100,70),'Oversold Area',group='Style')
//----
N = max-min+1
diff = nz(src - src[1])
var num = array.new_float(N,0)
var den = array.new_float(N,0)
//----
k = 0
overbuy = 0
oversell = 0
avg = 0.
for i = min to max
alpha = 1/i
num_rma = alpha*diff + (1-alpha)*array.get(num,k)
den_rma = alpha*math.abs(diff) + (1-alpha)*array.get(den,k)
rsi = 50*num_rma/den_rma + 50
avg += rsi
overbuy := rsi > overbought ? overbuy + 1 : overbuy
oversell := rsi < oversold ? oversell + 1 : oversell
array.set(num,k,num_rma)
array.set(den,k,den_rma)
k += 1
//----
avg_rsi = avg/N
buy_rsi_ma = 0.
sell_rsi_ma = 0.
buy_rsi_ma := nz(buy_rsi_ma[1] + overbuy/N*(avg_rsi - buy_rsi_ma[1]),avg_rsi)
sell_rsi_ma := nz(sell_rsi_ma[1] + oversell/N*(avg_rsi - sell_rsi_ma[1]),avg_rsi)
//----
var tb = table.new(position.top_right,2,2)
if barstate.islast
table.cell(tb,0,0,'Overbought',text_color=color.gray,bgcolor=na)
table.cell(tb,1,0,'Oversold',text_color=color.gray,bgcolor=na)
table.cell(tb,0,1,str.tostring(overbuy/N*100,'#.##')+' %',text_color=#26a69a,bgcolor=color.new(#26a69a,80))
table.cell(tb,1,1,str.tostring(oversell/N*100,'#.##')+' %',text_color=#ef5350,bgcolor=color.new(#ef5350,80))
//----
css = color.from_gradient(avg_rsi,sell_rsi_ma,buy_rsi_ma,rsi_avg_dn_css,rsi_avg_up_css)
plot(avg_rsi,'Average Multi Length RSI',color=css)
up = plot(buy_rsi_ma,'Upper Channel',color=upper_css)
dn = plot(sell_rsi_ma,'Lower Channel',color=lower_css)
per_over = plot(overbuy/N*100,'Overbought Area',color=color.new(ob_area,100),editable=false)
per_under = plot(100 - oversell/N*100,'Oversold Area',color=color.new(os_area,100),editable=false)
upper = plot(100,color=na,editable=false,display=display.none)
lower = plot(0,color=na,editable=false,display=display.none)
fill(per_over,lower,ob_area)
fill(upper,per_under,os_area)
fill(up,dn,color.new(css,90))
hline(50,color=color.new(color.gray,50))
2023-08-13
919
글번호 171470
지표
답변완료
부탁드립니다
var : sd(0),st(0),ed(0),et(0),hh(0),ll(0),mm(0);
var : tt1(0),tt2(0),tt3(0),tt4(0),tt5(0),tt6(0),tt7(0),tt8(0),tt9(0),tt10(0);
var : xx1(0),xx2(0),xx3(0),xx4(0),xx5(0),xx6(0),xx7(0),xx8(0),xx9(0),xx10(0);
if T != T[1] then
{
if 고점[1,2] < 저점[1,2] then
{
sd = sdate[index-고점[1,2]];
st = stime[index-고점[1,2]];
ed = sdate[index-저점[1,2]];
et = stime[index-저점[1,2]];
hh = 고점[1,1];
ll = 저점[1,1];
mm = hh-ll;
}
if 고점[1,2] > 저점[1,2] then
{
sd = sdate[index-저점[1,2]];
st = stime[index-저점[1,2]];
ed = sdate[index-고점[1,2]];
et = stime[index-고점[1,2]];
hh = 고점[1,1];
ll = 저점[1,1];
mm = hh-ll;
}
}
항상 패턴이 완성된 봉을 기준으로 잡습니다.(1번//시가 2번//최고가 3번//최고가)
1= 1번 자리에서 패턴 완성후 횡보 또는 조정후 1번봉의 시가(기준봉)를 3% 이상 돌파하는
양봉이 나오거나 or
2= 앞전 패턴이 완성된 2번 자리의 고점을 0봉이 돌파 하거나 (양봉조건) or
3= 2번 자리의 고점을 3%이내로 근접하는 양봉이 나올때
1 or 2 or 3
주말 마무리 잘하시고 항상 감사 드립니다.
2023-08-13
1097
글번호 171465
종목검색