커뮤니티

vi 키움수식을 예스에서 사용 할 수 있게 변환 부탁드립니다.

프로필 이미지
오토
2017-11-10 16:13:56
267
글번호 114089
답변완료
변동성완화장치(VI) 라인을 표시하는 지표입니다 키움도 사용가능 하지만 약간의 차이가 있을수도 있습니다 수식1 상승vi a1=valuewhen(1,o(1)==h(1)&&o(1)==l(1)&&(v(1)==0||v(1)>=1)&&v>=1,o*1.1); a2=if(a1<1000,a1, if(a1<5000,if(a1%10>5,a1-(a1%10-5),if(a1%10<5,a1-(a1%10),a1),0), if(a1<10000,a1-(a1%10), if(a1<50000,if(a1%100>50,a1-(a1%100-50),if(a1%100<50,a1-(a1%100),a1),0), if(a1<100000,a1-(a1%100), if(a1<500000,a1-(a1%1000),a1-(a1%1000))))))); floor(a2) 수식2 시가 valuewhen(1,o(1)==h(1)&&o(1)==l(1)&&(v(1)==0||v(1)>=1)&&v>=1,o*1.0) 수식3 하락vi b1=valuewhen(1,o(1)==h(1)&&o(1)==l(1)&&(v(1)==0||v(1)>=1)&&v>=1,o*0.9); b2=ceil(b1); if(b2<1000,b2, if(b2<5000,if(b2%10>5,10-(b2%10)+b2,if(b2%10>=1&&b2%10<5,5-(b2%10)+b2,b2),0), if(b2<10000,if(b2%10>0,b2+(10-(b2%10)),b2), if(b2<50000,if(b2%100 >50,100-(b2%100)+b2,if(b2%100>=1&&b2%100<50,50-(b2%100)+b2,b2),0), if(b2<100000,if(b2%100>0,b2+(100-(b2%100)),b2), if(b2<500000,if(b2%1000>500,1000-(b2%1000)+b2,if(b2%1000>=1&&b2%1000<500,500-(b2%1000)+b2,b2),0), if(b2%1000>1,1000-(b2%1000)+b2,b2)))))))
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-11-13 11:27:54

안녕하세요 예스스탁입니다. var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0); var : a1(0),a2(0),b1(0),b2(0); if o[1]==h[1]&&o[1]==l[1]&&(v[1]==0||v[1]>=1)&&v>=1 Then{ a1 = o*1.1; b1 = o*0.9; } if date >= 19981207 then { if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(a1/100+0.00001)*100; up2 = int(a1/100+0.00001)*100; up3 = int(a1/100+0.00001)*100; up4 = int(a1/50+0.00001)*50; up5 = int(a1/10+0.00001)*10; up6 = int(a1/5+0.00001)*5; up7 = int(a1/1+0.00001)*1; } else { up1 = int(a1/1000+0.00001)*1000; up2 = int(a1/500+0.00001)*500; up3 = int(a1/100+0.00001)*100; up4 = int(a1/50+0.00001)*50; up5 = int(a1/10+0.00001)*10; up6 = int(a1/10+0.00001)*10; up7 = int(a1/1+0.00001)*1; } } Else { up1 = int(a1/1000+0.00001)*1000; up2 = int(a1/500+0.00001)*500; up3 = int(a1/100+0.00001)*100; up4 = int(a1/50+0.00001)*50; up5 = int(a1/10+0.00001)*10; up6 = int(a1/5+0.00001)*5; up7 = int(a1/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then { If a1 >= 500000 Then a2 = up1; Else If a1 >= 100000 Then a2 = iff(up2>=500000, up1, up2); Else If a1 >= 50000 Then a2 = iff(up3>=100000, up2, up3); Else If a1 >= 10000 Then a2 = iff(up4>=50000, up3, up4); Else If a1 >= 5000 Then a2 = iff(up5>=10000, up4, up5); Else If a1 >= 1000 Then a2 = iff(up5>=5000, up5, up6); Else a2 = iff(up6>=1000, up6, up6); } Else { If a1 >= 500000 Then a2 = up1; Else If a1 >= 100000 Then a2 = iff(up2>=500000, up1, up2); Else If a1 >= 50000 Then a2 = iff(up3>=100000, up2, up3); Else If a1 >= 10000 Then a2 = iff(up4>=50000, up3, up4); Else If a1 >= 5000 Then a2 = iff(up5>=10000, up4, up5); Else If a1 >= 1000 Then a2 = iff(up5>=5000, up5, up6); Else a2 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF a2 = up6; } } if date >= 19981207 then { if CodeCategory() == 2 then { if date >= 20030721 then { dn1 = int(b1/100+0.00001)*100; dn2 = int(b1/100+0.00001)*100; dn3 = int(b1/100+0.00001)*100; dn4 = int(b1/50+0.00001)*50; dn5 = int(b1/10+0.00001)*10; dn6 = int(b1/5+0.00001)*5; dn7 = int(b1/1+0.00001)*1; } else { dn1 = int(b1/1000+0.00001)*1000; dn2 = int(b1/500+0.00001)*500; dn3 = int(b1/100+0.00001)*100; dn4 = int(b1/50+0.00001)*50; dn5 = int(b1/10+0.00001)*10; dn6 = int(b1/10+0.00001)*10; dn7 = int(b1/1+0.00001)*1; } } Else { dn1 = int(b1/1000+0.00001)*1000; dn2 = int(b1/500+0.00001)*500; dn3 = int(b1/100+0.00001)*100; dn4 = int(b1/50+0.00001)*50; dn5 = int(b1/10+0.00001)*10; dn6 = int(b1/5+0.00001)*5; dn7 = int(b1/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then { If b1 >= 500000 Then b2 = dn1; Else If b1 >= 100000 Then b2 = iff(dn2>=500000, dn1, dn2); Else If b1 >= 50000 Then b2 = iff(dn3>=100000, dn2, dn3); Else If b1 >= 10000 Then b2 = iff(dn4>=50000, dn3, dn4); Else If b1 >= 5000 Then b2 = iff(dn5>=10000, dn4, dn5); Else If b1 >= 1000 Then b2 = iff(dn5>=5000, dn5, dn6); Else b2 = iff(dn6>=1000, dn6, dn6); } Else { If b1 >= 500000 Then b2 = dn1; Else If b1 >= 100000 Then b2 = iff(dn2>=500000, dn1, dn2); Else If b1 >= 50000 Then b2 = iff(dn3>=100000, dn2, dn3); Else If b1 >= 10000 Then b2 = iff(dn4>=50000, dn3, dn4); Else If b1 >= 5000 Then b2 = iff(dn5>=10000, dn4, dn5); Else If b1 >= 1000 Then b2 = iff(dn5>=5000, dn5, dn6); Else b2 = iff(dn6>=1000, dn6, dn7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF b2 = dn6; } } plot1(floor(a2)); plot2(Ceiling(b2)); 즐거운 하루되세요 > 오토 님이 쓴 글입니다. > 제목 : vi 키움수식을 예스에서 사용 할 수 있게 변환 부탁드립니다. > 변동성완화장치(VI) 라인을 표시하는 지표입니다 키움도 사용가능 하지만 약간의 차이가 있을수도 있습니다 수식1 상승vi a1=valuewhen(1,o(1)==h(1)&&o(1)==l(1)&&(v(1)==0||v(1)>=1)&&v>=1,o*1.1); a2=if(a1<1000,a1, if(a1<5000,if(a1%10>5,a1-(a1%10-5),if(a1%10<5,a1-(a1%10),a1),0), if(a1<10000,a1-(a1%10), if(a1<50000,if(a1%100>50,a1-(a1%100-50),if(a1%100<50,a1-(a1%100),a1),0), if(a1<100000,a1-(a1%100), if(a1<500000,a1-(a1%1000),a1-(a1%1000))))))); floor(a2) 수식2 시가 valuewhen(1,o(1)==h(1)&&o(1)==l(1)&&(v(1)==0||v(1)>=1)&&v>=1,o*1.0) 수식3 하락vi b1=valuewhen(1,o(1)==h(1)&&o(1)==l(1)&&(v(1)==0||v(1)>=1)&&v>=1,o*0.9); b2=ceil(b1); if(b2<1000,b2, if(b2<5000,if(b2%10>5,10-(b2%10)+b2,if(b2%10>=1&&b2%10<5,5-(b2%10)+b2,b2),0), if(b2<10000,if(b2%10>0,b2+(10-(b2%10)),b2), if(b2<50000,if(b2%100 >50,100-(b2%100)+b2,if(b2%100>=1&&b2%100<50,50-(b2%100)+b2,b2),0), if(b2<100000,if(b2%100>0,b2+(100-(b2%100)),b2), if(b2<500000,if(b2%1000>500,1000-(b2%1000)+b2,if(b2%1000>=1&&b2%1000<500,500-(b2%1000)+b2,b2),0), if(b2%1000>1,1000-(b2%1000)+b2,b2)))))))