커뮤니티
확인바랍니다
2015-05-05 20:46:59
179
글번호 85714
첫번째 참조할 데이터가 없습니다
라는 메세지가 뜨네요
수정해주세요
Input:기간(300),
구간개수(10),T(0); //최대 20
Var:최대(0),최소(0),j(0),행번호(0),총거래량(0),총거래량2(0),총거래량3(0),총거래량4(0),
가격대거래량(0),가격대거래량2(0),가격대거래량3(0),가격대거래량4(0),시작번호(0),끝번호(0),val1(0),d2(0,data2),d3(0,data3),dsum(0),d4(0,data4),d5(0,data5),d6(0,data6),d7(0,data7),d8(0,data8),d9(0,data9),d10(0,data10);
Array:가격대[21](0),거래량[21](0),거래량2[21](0),거래량3[21](0),거래량4[21](0),비율[21](0),비율2[21](0),비율3[21](0),비율4[21](0),Text[21](0),TL[21](0);
#----------------------------------------------------------------------------------#
# 가격대를 배열변수에 세팅한다.
#----------------------------------------------------------------------------------#
최대 = Data1(Highest(H,기간-1));
최소 = Data1(Lowest(L,기간-1));
Val1 = Data1(Round((최대-최소)/구간개수,0));
D2 = data2(c); // 예스차트에서 종목추가 - 참조 - 개인 선물 순매수 (수량 혹은 금액)
D3 = data3(c); // 외국인
D4 = data4(c); // 이하 4 ~10 까지 나머지 전부 추가 (금융투자, 연기금, 투신 등등)
D5 = data5(c);
D6 = Data6(c);
D7 = data7(c);
D8 = data8(c);
D9 = data9(c);
D10 = data10(c);
dsum = data4(c) + data5(c) + data6(c) + data7(c) + data8(c) + data9(c) + data10(c); //기관 전체의 합계
가격대[0] = 최대;
For 행번호 = 0 To 구간개수-1 {
가격대[행번호+1] = 가격대[행번호] - Val1;
거래량[행번호] = 0;
거래량2[행번호] = 0;
거래량3[행번호] = 0;
거래량4[행번호] = 0;
비율[행번호] = 0;
비율2[행번호] = 0;
비율3[행번호] = 0;
비율4[행번호] = 0;
}
총거래량 = 0;
For j = 0+T To 기간-2 {
총거래량 = 총거래량 + v[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 - 총 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량 = V[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량[행번호] = 거래량[행번호] + 가격대거래량;
}
}
총거래량2 = 0;
For j = 0+T To 기간-2 {
총거래량2 = 총거래량2 + D2[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 2 - 개인 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량2 = D2[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량2[행번호] = 거래량2[행번호] + 가격대거래량2;
}
}
총거래량3 = 0;
For j = 0+T To 기간-2 {
총거래량3 = 총거래량3 + D3[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 3 - 외국인 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량3 = D3[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량3[행번호] = 거래량3[행번호] + 가격대거래량3;
}
}
총거래량4 = 0;
For j = 0+t To 기간-2 {
총거래량4 = 총거래량4 + Dsum[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 4 - 기관 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량4 = Dsum[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량4[행번호] = 거래량4[행번호] + 가격대거래량4;
}
}
#----------------------------------------------------------------------------------#
# 비율 계산1 - 거래량의 구간별 비율 / 항상 양수 값을 가지므로 0 ~ 100%로 표현 된다.
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율[행번호] = 거래량[행번호] * 100 / abs(총거래량);
}
#----------------------------------------------------------------------------------#
# 비율 계산2 - 개인 순매수 값은 양수/음수가 가능하므로 총량에 따라 합계값이 100%가 된다. (-15% + 185% 등) / 지표에 표현하지 않음
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율2[행번호] = 거래량2[행번호] * 100 / abs(총거래량2);
}
#----------------------------------------------------------------------------------#
# 비율 계산3 - 외인 순매수 값 / 지표에 표현하지 않음
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율3[행번호] = 거래량3[행번호] * 100 / abs(총거래량3);
}
#----------------------------------------------------------------------------------#
# 비율 계산4 - 기관 순매수 값 / 지표에 표현하지 않음
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율4[행번호] = 거래량4[행번호] * 100 / abs(총거래량4);
}
#----------------------------------------------------------------------------------#
# 지표출력
#----------------------------------------------------------------------------------#
for j = 0 to 구간개수-1 {
TL_Delete(TL[j]);
TL[j] = TL_New(Date[기간-2],sTime[기간-2],가격대[j],Date[0],sTime[0],가격대[j]);
Text_Delete(Text[j]);
Text[j] = Text_New(date[0], stime[0], (가격대[j]+가격대[j+1])/2, "거래량"+ NumToStr(거래량[j],0)+" ("+NumToStr(비율[j],2)+"%) / 개인"+ NumToStr(거래량2[j],0)+ " / 외인" + NumToStr(거래량3[j],0) + " / 기관" + NumToStr(거래량4[j],0)+ "("+NumToStr(가격대[j+1],0)+" ~ "+NumToStr(가격대[j],0)+")");
Text_SetStyle(Text[j], 1, 2);
}
j = 구간개수;
TL_Delete(TL[j]);
TL[j] = TL_New(Date[기간-2],sTime[기간-2],가격대[j],Date[0],sTime[0],가격대[j]);
답변 1
예스스탁 예스스탁 답변
2015-05-06 14:48:46
안녕하세요
예스스탁입니다.
문의하신 내용은 수식으로 처리될수 있는 부분이 아닙니다.
올려주신 식 자체가 차트에 참조데이터가 있어야만 구동이 되는 식이고
data2부터 data10까지 총 9개의 참조데이터를 추가하셔야만 되는 식입니다.
참조데이터는 차트의 왼쪽 상단의 종목선택 버튼 중 오른쪽버튼을 누르시면
추가하실수 있고 차트에 추가되는 순서에 따라 data2부터 번호가 붙게 됩니다.
순서별 추가되는 데이터는 식을 구하신 곳에서 알아보셔야 정확하지만
아래와 같이 수급데이터를 추가하는 것 같습니다.
data2 개인선물순매수
data3 외국인선물순매수
data4 금융투자선물순매수
data5 투신선물순매수
data6 은행선물순매수
data7 보험선물순매수
data8 연기금선물순매수
data9 기타금융선물순매수
즐거운 하루되세요
> NH_mo****** 님이 쓴 글입니다.
> 제목 : 확인바랍니다
> 첫번째 참조할 데이터가 없습니다
라는 메세지가 뜨네요
수정해주세요
Input:기간(300),
구간개수(10),T(0); //최대 20
Var:최대(0),최소(0),j(0),행번호(0),총거래량(0),총거래량2(0),총거래량3(0),총거래량4(0),
가격대거래량(0),가격대거래량2(0),가격대거래량3(0),가격대거래량4(0),시작번호(0),끝번호(0),val1(0),d2(0,data2),d3(0,data3),dsum(0),d4(0,data4),d5(0,data5),d6(0,data6),d7(0,data7),d8(0,data8),d9(0,data9),d10(0,data10);
Array:가격대[21](0),거래량[21](0),거래량2[21](0),거래량3[21](0),거래량4[21](0),비율[21](0),비율2[21](0),비율3[21](0),비율4[21](0),Text[21](0),TL[21](0);
#----------------------------------------------------------------------------------#
# 가격대를 배열변수에 세팅한다.
#----------------------------------------------------------------------------------#
최대 = Data1(Highest(H,기간-1));
최소 = Data1(Lowest(L,기간-1));
Val1 = Data1(Round((최대-최소)/구간개수,0));
D2 = data2(c); // 예스차트에서 종목추가 - 참조 - 개인 선물 순매수 (수량 혹은 금액)
D3 = data3(c); // 외국인
D4 = data4(c); // 이하 4 ~10 까지 나머지 전부 추가 (금융투자, 연기금, 투신 등등)
D5 = data5(c);
D6 = Data6(c);
D7 = data7(c);
D8 = data8(c);
D9 = data9(c);
D10 = data10(c);
dsum = data4(c) + data5(c) + data6(c) + data7(c) + data8(c) + data9(c) + data10(c); //기관 전체의 합계
가격대[0] = 최대;
For 행번호 = 0 To 구간개수-1 {
가격대[행번호+1] = 가격대[행번호] - Val1;
거래량[행번호] = 0;
거래량2[행번호] = 0;
거래량3[행번호] = 0;
거래량4[행번호] = 0;
비율[행번호] = 0;
비율2[행번호] = 0;
비율3[행번호] = 0;
비율4[행번호] = 0;
}
총거래량 = 0;
For j = 0+T To 기간-2 {
총거래량 = 총거래량 + v[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 - 총 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량 = V[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량[행번호] = 거래량[행번호] + 가격대거래량;
}
}
총거래량2 = 0;
For j = 0+T To 기간-2 {
총거래량2 = 총거래량2 + D2[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 2 - 개인 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량2 = D2[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량2[행번호] = 거래량2[행번호] + 가격대거래량2;
}
}
총거래량3 = 0;
For j = 0+T To 기간-2 {
총거래량3 = 총거래량3 + D3[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 3 - 외국인 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량3 = D3[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량3[행번호] = 거래량3[행번호] + 가격대거래량3;
}
}
총거래량4 = 0;
For j = 0+t To 기간-2 {
총거래량4 = 총거래량4 + Dsum[j];
#----------------------------------------------------------------------------------#
# 거래량을 걸쳐있는 가격대에 분배 4 - 기관 거래량 값
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
if 가격대[행번호] >= H[j] and 가격대[행번호+1] < H[j] then 시작번호 = 행번호;
if 가격대[행번호] >= L[j] and 가격대[행번호+1] < L[j] then 끝번호 = 행번호;
}
가격대거래량4 = Dsum[j]/(끝번호-시작번호+1);
for 행번호 = 시작번호 To 끝번호 {
거래량4[행번호] = 거래량4[행번호] + 가격대거래량4;
}
}
#----------------------------------------------------------------------------------#
# 비율 계산1 - 거래량의 구간별 비율 / 항상 양수 값을 가지므로 0 ~ 100%로 표현 된다.
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율[행번호] = 거래량[행번호] * 100 / abs(총거래량);
}
#----------------------------------------------------------------------------------#
# 비율 계산2 - 개인 순매수 값은 양수/음수가 가능하므로 총량에 따라 합계값이 100%가 된다. (-15% + 185% 등) / 지표에 표현하지 않음
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율2[행번호] = 거래량2[행번호] * 100 / abs(총거래량2);
}
#----------------------------------------------------------------------------------#
# 비율 계산3 - 외인 순매수 값 / 지표에 표현하지 않음
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율3[행번호] = 거래량3[행번호] * 100 / abs(총거래량3);
}
#----------------------------------------------------------------------------------#
# 비율 계산4 - 기관 순매수 값 / 지표에 표현하지 않음
#----------------------------------------------------------------------------------#
for 행번호 = 0 To 구간개수-1 {
비율4[행번호] = 거래량4[행번호] * 100 / abs(총거래량4);
}
#----------------------------------------------------------------------------------#
# 지표출력
#----------------------------------------------------------------------------------#
for j = 0 to 구간개수-1 {
TL_Delete(TL[j]);
TL[j] = TL_New(Date[기간-2],sTime[기간-2],가격대[j],Date[0],sTime[0],가격대[j]);
Text_Delete(Text[j]);
Text[j] = Text_New(date[0], stime[0], (가격대[j]+가격대[j+1])/2, "거래량"+ NumToStr(거래량[j],0)+" ("+NumToStr(비율[j],2)+"%) / 개인"+ NumToStr(거래량2[j],0)+ " / 외인" + NumToStr(거래량3[j],0) + " / 기관" + NumToStr(거래량4[j],0)+ "("+NumToStr(가격대[j+1],0)+" ~ "+NumToStr(가격대[j],0)+")");
Text_SetStyle(Text[j], 1, 2);
}
j = 구간개수;
TL_Delete(TL[j]);
TL[j] = TL_New(Date[기간-2],sTime[기간-2],가격대[j],Date[0],sTime[0],가격대[j]);