커뮤니티
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)))))))
다음글
이전글