커뮤니티
수식오류 정정부탁
2017-08-09 23:39:56
162
글번호 111914
*삼성 sdi 월봉
price:170500
per:40
n:4
로 놓으면 4번째봉 의 추세선이 이상하게 나와요 엉클어져 나오는대 고가가 밑에 그려지
고 시가도 밑에 그려지고 이런 오류는 왜 나오는지 수정 부탁드립니다.
*우리은행 주봉
price:18500
per:20
n:3
으로놓으면 상위 3번째봉 시가가 위에 그려져요 이것두 같은 오류같은대 왜 이런 오류가 만들
어지는지 수정부탁드립니다.
*kss해운 월봉
price:10500
per:60
n:3
으로 놓으면 상위 3번째봉 시가와 고가가 그려지질않아요 오류같아요 수정부탁드립니다.
*엔알케이
price:2700
per:50
n:3
으로 놓으면 2016년 12월 봉이 첫번째봉인대 포함이 안되요 오류 수정 부탁드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 4 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if C[cnt2] <= Price*(1+Per/100) and C[cnt2] >= Price*(1-Per/100) and
V[cnt2] > VV[cnt1] and
(cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == HH[cnt3] or HH[cnt1] == OO[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == LL[cnt3] or LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == CC[cnt3] or CC[cnt1] == OO[cnt3] or CC[cnt1] == LL[cnt3] or OO[cnt1] == LL[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
#시가선 추세선 출력
TL_Delete(OTL[cnt1]);
OTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],O[cnt2],sdate,stime,O[cnt2]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
Text_Delete(OTx[cnt1]);
OTx[cnt1] = Text_New(sdate,stime,O[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(O[cnt2],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
TL_Delete(HTL[cnt1]);
HTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],H[cnt2],sdate,stime,H[cnt2]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
#고가선값
Text_Delete(HTx[cnt1]);
HTx[cnt1] = Text_New(sdate,stime,H[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(H[cnt2],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
#저가선 추세선 출력
TL_Delete(LTL[cnt1]);
LTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],L[cnt2],sdate,stime,L[cnt2]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
#저가선값
Text_Delete(LTx[cnt1]);
LTx[cnt1] = Text_New(sdate,stime,L[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(L[cnt2],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
#종가선 추세선 출력
TL_Delete(CTL[cnt1]);
CTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],C[cnt2],sdate,stime,C[cnt2]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
#종가선값
Text_Delete(CTx[cnt1]);
CTx[cnt1] = Text_New(sdate,stime,C[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(C[cnt2],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
#점출력
Text_Delete(Tx[cnt1]);
Tx[cnt1] = Text_New(sdate[cnt2],stime[cnt2],C[cnt2],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
}
이 오류가 제생각에는 %범위 안에 일부분만 들어가도 포함으로 간주하고 시,고,저,종가수평선
이 그려지게 해달라고햇엇는대 그것때문인듯한대 그거때문에 오류가 나면 제가 %범위를 변경하
고 %안에 들어간거만 인식해서 그려지게 해도 좋습니다. 하다보니까 결국 %변경을 해야 정확하
드라고요.
답변 1
예스스탁 예스스탁 답변
2017-08-10 13:17:16
안녕하세요
예스스탁입니다.
식을 수정했습니다.
범위내 가격판단도 기존식은 종가가 기준으로 범위내 봉만 대상으로 했는데
수정한식은 봉이 지정한 범위내에 걸쳐 있으면 포함되게 했습니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0),ii[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
ii[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
TL_Delete(OTL[cnt1]);
TL_Delete(HTL[cnt1]);
TL_Delete(LTL[cnt1]);
TL_Delete(CTL[cnt1]);
Text_Delete(OTx[cnt1]);
Text_Delete(HTx[cnt1]);
Text_Delete(LTx[cnt1]);
Text_Delete(CTx[cnt1]);
Text_Delete(Tx[cnt1]);
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 5 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if !(L[cnt2] > Price*(1+Per/100) or H[cnt2] < Price*(1-Per/100)) and
V[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then
{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
ii[cnt1] = cnt2;
}
}
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N
{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == OO[cnt3] or HH[cnt1] == HH[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == LL[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == OO[cnt3] or CC[cnt1] == HH[cnt3] or CC[cnt1] == LL[cnt3] or CC[cnt1] == CC[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
if LastBarOnChart == 1 Then
MessageLog("O %.2f",color);
#시가선 추세선 출력
OTL[cnt1] = TL_New(Sdate[1],stime[1],OO[cnt1],sdate,stime,OO[cnt1]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
OTx[cnt1] = Text_New(sdate,stime,OO[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(OO[cnt1],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
HTL[cnt1] = TL_New(Sdate[1],stime[1],HH[cnt1],sdate,stime,HH[cnt1]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
HTx[cnt1] = Text_New(sdate,stime,HH[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(HH[cnt1],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
LTL[cnt1] = TL_New(Sdate[1],stime[1],LL[cnt1],sdate,stime,LL[cnt1]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
LTx[cnt1] = Text_New(sdate,stime,LL[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(LL[cnt1],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
CTL[cnt1] = TL_New(Sdate[1],stime[1],CC[cnt1],sdate,stime,CC[cnt1]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
CTx[cnt1] = Text_New(sdate,stime,CC[cnt1],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(CC[cnt1],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
}
if CC[cnt1] > 0 then{
Tx[cnt1] = Text_New(sdate[ii[cnt1]],stime[ii[cnt1]],CC[cnt1],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
즐거운 하루되세요
> 앙이 님이 쓴 글입니다.
> 제목 : 수식오류 정정부탁
> *삼성 sdi 월봉
price:170500
per:40
n:4
로 놓으면 4번째봉 의 추세선이 이상하게 나와요 엉클어져 나오는대 고가가 밑에 그려지
고 시가도 밑에 그려지고 이런 오류는 왜 나오는지 수정 부탁드립니다.
*우리은행 주봉
price:18500
per:20
n:3
으로놓으면 상위 3번째봉 시가가 위에 그려져요 이것두 같은 오류같은대 왜 이런 오류가 만들
어지는지 수정부탁드립니다.
*kss해운 월봉
price:10500
per:60
n:3
으로 놓으면 상위 3번째봉 시가와 고가가 그려지질않아요 오류같아요 수정부탁드립니다.
*엔알케이
price:2700
per:50
n:3
으로 놓으면 2016년 12월 봉이 첫번째봉인대 포함이 안되요 오류 수정 부탁드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),cnt3(0),idx(0),color(0);
var : SameO(0),SameH(0),SameL(0),SameC(0);
Array : VV[50](0),OO[50](0),HH[50](0),LL[50](0),CC[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
OO[cnt] = 0;
HH[cnt] = 0;
LL[cnt] = 0;
CC[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
if cnt1 == 1 Then
color = black;
if cnt1 == 2 Then
color = red;
if cnt1 == 3 Then
color = blue;
if cnt1 == 4 Then
color = GREEN;
if cnt1 == 4 Then
color = YELLOW;
#차트 과거봉 전체 스캔
for cnt2 = 0 to idx
{
#Price대비 +- Per%안에 종가가 형성된
if C[cnt2] <= Price*(1+Per/100) and C[cnt2] >= Price*(1-Per/100) and
V[cnt2] > VV[cnt1] and
(cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then{
VV[cnt1] = V[cnt2];
OO[cnt1] = O[cnt2];
HH[cnt1] = H[cnt2];
LL[cnt1] = L[cnt2];
CC[cnt1] = C[cnt2];
#동일값 체크
sameO = 0;
sameH = 0;
sameL = 0;
sameC = 0;
for cnt3 = 1 to N{
if OO[cnt1] == OO[cnt3] or OO[cnt1] == HH[cnt3] or OO[cnt1] == LL[cnt3] or OO[cnt1] == CC[cnt3] Then
SameO = SameO+1;
if HH[cnt1] == HH[cnt3] or HH[cnt1] == OO[cnt3] or HH[cnt1] == LL[cnt3] or HH[cnt1] == CC[cnt3] Then
SameH = SameH+1;
if LL[cnt1] == LL[cnt3] or LL[cnt1] == OO[cnt3] or LL[cnt1] == HH[cnt3] or LL[cnt1] == CC[cnt3] Then
SameL = SameL+1;
if CC[cnt1] == CC[cnt3] or CC[cnt1] == OO[cnt3] or CC[cnt1] == LL[cnt3] or OO[cnt1] == LL[cnt3] Then
SameC = SameC+1;
}
#시가선
if SameO == 1 then
{
#시가선 추세선 출력
TL_Delete(OTL[cnt1]);
OTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],O[cnt2],sdate,stime,O[cnt2]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
TL_SetColor(OTL[cnt1],color);
#시가선값 텍스트 출력
Text_Delete(OTx[cnt1]);
OTx[cnt1] = Text_New(sdate,stime,O[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(O[cnt2],0));
Text_SetStyle(OTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameH == 1 then
{
#고가선 추세선 출력
TL_Delete(HTL[cnt1]);
HTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],H[cnt2],sdate,stime,H[cnt2]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
TL_SetColor(HTL[cnt1],color);
#고가선값
Text_Delete(HTx[cnt1]);
HTx[cnt1] = Text_New(sdate,stime,H[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(H[cnt2],0));
Text_SetStyle(HTx[cnt1],0,0);
Text_SetColor(HTx[cnt1],color);
}
if SameL == 1 then
{
#저가선 추세선 출력
TL_Delete(LTL[cnt1]);
LTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],L[cnt2],sdate,stime,L[cnt2]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
TL_SetColor(LTL[cnt1],color);
#저가선값
Text_Delete(LTx[cnt1]);
LTx[cnt1] = Text_New(sdate,stime,L[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(L[cnt2],0));
Text_SetStyle(LTx[cnt1],0,0);
Text_SetColor(OTx[cnt1],color);
}
if SameC == 1 then
{
#종가선 추세선 출력
TL_Delete(CTL[cnt1]);
CTL[cnt1] = TL_New(Sdate[cnt2+1],stime[cnt2+1],C[cnt2],sdate,stime,C[cnt2]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
TL_SetColor(CTL[cnt1],color);
#종가선값
Text_Delete(CTx[cnt1]);
CTx[cnt1] = Text_New(sdate,stime,C[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(C[cnt2],0));
Text_SetStyle(CTx[cnt1],0,0);
Text_SetColor(CTx[cnt1],color);
#점출력
Text_Delete(Tx[cnt1]);
Tx[cnt1] = Text_New(sdate[cnt2],stime[cnt2],C[cnt2],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
Text_SetColor(Tx[cnt1],color);
Text_SetColor(Tx[cnt1],white);
}
}
}
이 오류가 제생각에는 %범위 안에 일부분만 들어가도 포함으로 간주하고 시,고,저,종가수평선
이 그려지게 해달라고햇엇는대 그것때문인듯한대 그거때문에 오류가 나면 제가 %범위를 변경하
고 %안에 들어간거만 인식해서 그려지게 해도 좋습니다. 하다보니까 결국 %변경을 해야 정확하
드라고요.
다음글
이전글