커뮤니티
부탁드립니다
2014-10-14 19:51:37
202
글번호 79403
일봉차트나 분봉 차트에 보이지 않아 검토부탁드립니다.
Input:Period(2000),Percent(20);
Var:j(0),k(0),행번호(0),cnt(0),총거래량(0),추정거래량(0);
Array:가격대[1000](0),거래량[1000](0),구간[11](0),부분합[10](0),비율[10](0);
If Index == 0 then
{
#----------------------------------------------------------------------------------#
# 가격대를 배열변수에 세팅한다.
# 첫번째 봉에서 한번만 수행하고 이후는 추가행으로 처리
#----------------------------------------------------------------------------------#
가격대[0] = (Int(Round(H/PriceScale/100,9))+3) * PriceScale * 100; //200틱 이상 둠
for 행번호 = 0 to 998
{
가격대[행번호+1] = 가격대[행번호] - PriceScale; //가격대 배열에 가격 대입둠
}
}
#----------------------------------------------------------------------------------#
# 가격대를 위로 벗어날 경우 행을 추가한다.
#----------------------------------------------------------------------------------#
if 가격대[0] <= H + PriceScale * 100 then //고가가 가격대 배열 이상이 되면
{
for 행번호 = 899 downto 0
{
가격대[행번호+100] = 가격대[행번호]; //추가행만큼 뒤로 옮긴다
거래량[행번호+100] = 거래량[행번호];
}
가격대[0] = 가격대[0] + PriceScale * 100; //추가된 행에 가격 재설정
for 행번호 = 0 to 99
{
가격대[행번호+1] = 가격대[행번호] - PriceScale;
}
for 행번호 = 0 to 100 //추가된 행의 나머지 항목은
{
거래량[행번호] = 0; //0값으로 초기화
}
}
#----------------------------------------------------------------------------------#
# 반대로 가격이 하락세라면 상단의 빈가격대 행을 삭제한다.
#----------------------------------------------------------------------------------#
if 가격대[0] > highest(H,Period) + PriceScale * 300 then //가격 하락 추세일 경우
{
for 행번호 = 0 to 899
{
가격대[행번호] = 가격대[행번호+100]; //100행만큼 앞으로 옮긴다
거래량[행번호] = 거래량[행번호+100];
}
for 행번호 = 899 to 998
{
가격대[행번호+1] = 가격대[행번호] - PriceScale;
}
for 행번호 = 900 to 999 //추가된 행의 나머지 항목은
{
거래량[행번호] = 0; //0값으로 초기화
}
}
#----------------------------------------------------------------------------------#
# 현재 봉의 거래량을 걸쳐있는 가격대에 분배
#----------------------------------------------------------------------------------#
cnt = 0;
for 행번호 = 0 to 999
{
if L <= 가격대[행번호] and 가격대[행번호] <= H then //현재 봉 가격대가 몇가격대
cnt = cnt + 1; //걸쳐져 있는지 계산
}
추정거래량 = V/cnt; //가격대별 배분할 거래량
//두번 연산하는 셈인데 위에서는 몇가격대에 걸쳐 있는지 판단하기 위함이고
//아래는 가격대에 해당 거래량을 누적하는 것임
for 행번호 = 0 to 999
{
if L <= 가격대[행번호] and 가격대[행번호] <= H then
{
거래량[행번호] = 거래량[행번호] + 추정거래량;
}
}
#----------------------------------------------------------------------------------#
# 이전 봉의 거래량을 걸쳐있는 가격대에 차감
#----------------------------------------------------------------------------------#
If Index >= Period Then
{
cnt = 0;
for 행번호 = 0 to 999
{
if L[Period] <= 가격대[행번호] and 가격대[행번호] <= H[Period] then
cnt = cnt + 1;
}
추정거래량 = V[Period]/cnt;
for 행번호 = 0 to 999
{
if L[Period] <= 가격대[행번호] and 가격대[행번호] <= H[Period] then
{
거래량[행번호] = 거래량[행번호] - 추정거래량;
}
}
}
#----------------------------------------------------------------------------------#
# 10개 구간의 구간별 거래량 비율 계산
#----------------------------------------------------------------------------------#
총거래량 = 총거래량 + V - Iff(Index>=Period,V[Period],0);
For j = 0 To 9
{
구간[j] = 가격대[j*100];
부분합[j] = 0;
}
구간[10] = 가격대[999]-PriceScale;
k = 0;
For j = 0 To 999
{
If 구간[k] >= 가격대[j] && 구간[k+1] < 가격대[j] Then
부분합[k] = 부분합[k] + 거래량[j];
Else
k = k + 1;
}
For j = 0 To 9
{
비율[j] = 부분합[j] * 100 / 총거래량;
}
if 비율[0] > percent then plot1(구간[0]);
if 비율[0] > percent then Plot2(구간[1]);
if 비율[1] > percent then Plot3(구간[1]);
if 비율[1] > percent then plot4(구간[2]);
if 비율[2] > percent then Plot5(구간[2]);
if 비율[2] > percent then plot6(구간[3]);
if 비율[3] > percent then Plot7(구간[3]);
if 비율[3] > percent then plot8(구간[4]);
if 비율[4] > percent then Plot9(구간[4]);
if 비율[4] > percent then plot10(구간[5]);
if 비율[5] > percent then Plot11(구간[5]);
if 비율[5] > percent then plot12(구간[6]);
if 비율[6] > percent then plot13(구간[6]);
if 비율[6] > percent then Plot14(구간[7]);
if 비율[7] > percent then Plot15(구간[7]);
if 비율[7] > percent then plot16(구간[8]);
if 비율[8] > percent then Plot17(구간[8]);
if 비율[8] > percent then plot18(구간[9]);
if 비율[9] > percent then Plot19(구간[9]);
if 비율[9] > percent then plot20(구간[10]);
답변 1
예스스탁 예스스탁 답변
2014-10-15 11:06:50
안녕하세요
예스스탁입니다.
해당식 특별히 주기에 따라 값이 출력이 되지 않고 하는 부분은 없습니다.
외부변수 조절하시면 일봉과 분봉에도 값이 출력됩니다.
즐거운 하루되세요
> 괌 님이 쓴 글입니다.
> 제목 : 부탁드립니다
> 일봉차트나 분봉 차트에 보이지 않아 검토부탁드립니다.
Input:Period(2000),Percent(20);
Var:j(0),k(0),행번호(0),cnt(0),총거래량(0),추정거래량(0);
Array:가격대[1000](0),거래량[1000](0),구간[11](0),부분합[10](0),비율[10](0);
If Index == 0 then
{
#----------------------------------------------------------------------------------#
# 가격대를 배열변수에 세팅한다.
# 첫번째 봉에서 한번만 수행하고 이후는 추가행으로 처리
#----------------------------------------------------------------------------------#
가격대[0] = (Int(Round(H/PriceScale/100,9))+3) * PriceScale * 100; //200틱 이상 둠
for 행번호 = 0 to 998
{
가격대[행번호+1] = 가격대[행번호] - PriceScale; //가격대 배열에 가격 대입둠
}
}
#----------------------------------------------------------------------------------#
# 가격대를 위로 벗어날 경우 행을 추가한다.
#----------------------------------------------------------------------------------#
if 가격대[0] <= H + PriceScale * 100 then //고가가 가격대 배열 이상이 되면
{
for 행번호 = 899 downto 0
{
가격대[행번호+100] = 가격대[행번호]; //추가행만큼 뒤로 옮긴다
거래량[행번호+100] = 거래량[행번호];
}
가격대[0] = 가격대[0] + PriceScale * 100; //추가된 행에 가격 재설정
for 행번호 = 0 to 99
{
가격대[행번호+1] = 가격대[행번호] - PriceScale;
}
for 행번호 = 0 to 100 //추가된 행의 나머지 항목은
{
거래량[행번호] = 0; //0값으로 초기화
}
}
#----------------------------------------------------------------------------------#
# 반대로 가격이 하락세라면 상단의 빈가격대 행을 삭제한다.
#----------------------------------------------------------------------------------#
if 가격대[0] > highest(H,Period) + PriceScale * 300 then //가격 하락 추세일 경우
{
for 행번호 = 0 to 899
{
가격대[행번호] = 가격대[행번호+100]; //100행만큼 앞으로 옮긴다
거래량[행번호] = 거래량[행번호+100];
}
for 행번호 = 899 to 998
{
가격대[행번호+1] = 가격대[행번호] - PriceScale;
}
for 행번호 = 900 to 999 //추가된 행의 나머지 항목은
{
거래량[행번호] = 0; //0값으로 초기화
}
}
#----------------------------------------------------------------------------------#
# 현재 봉의 거래량을 걸쳐있는 가격대에 분배
#----------------------------------------------------------------------------------#
cnt = 0;
for 행번호 = 0 to 999
{
if L <= 가격대[행번호] and 가격대[행번호] <= H then //현재 봉 가격대가 몇가격대
cnt = cnt + 1; //걸쳐져 있는지 계산
}
추정거래량 = V/cnt; //가격대별 배분할 거래량
//두번 연산하는 셈인데 위에서는 몇가격대에 걸쳐 있는지 판단하기 위함이고
//아래는 가격대에 해당 거래량을 누적하는 것임
for 행번호 = 0 to 999
{
if L <= 가격대[행번호] and 가격대[행번호] <= H then
{
거래량[행번호] = 거래량[행번호] + 추정거래량;
}
}
#----------------------------------------------------------------------------------#
# 이전 봉의 거래량을 걸쳐있는 가격대에 차감
#----------------------------------------------------------------------------------#
If Index >= Period Then
{
cnt = 0;
for 행번호 = 0 to 999
{
if L[Period] <= 가격대[행번호] and 가격대[행번호] <= H[Period] then
cnt = cnt + 1;
}
추정거래량 = V[Period]/cnt;
for 행번호 = 0 to 999
{
if L[Period] <= 가격대[행번호] and 가격대[행번호] <= H[Period] then
{
거래량[행번호] = 거래량[행번호] - 추정거래량;
}
}
}
#----------------------------------------------------------------------------------#
# 10개 구간의 구간별 거래량 비율 계산
#----------------------------------------------------------------------------------#
총거래량 = 총거래량 + V - Iff(Index>=Period,V[Period],0);
For j = 0 To 9
{
구간[j] = 가격대[j*100];
부분합[j] = 0;
}
구간[10] = 가격대[999]-PriceScale;
k = 0;
For j = 0 To 999
{
If 구간[k] >= 가격대[j] && 구간[k+1] < 가격대[j] Then
부분합[k] = 부분합[k] + 거래량[j];
Else
k = k + 1;
}
For j = 0 To 9
{
비율[j] = 부분합[j] * 100 / 총거래량;
}
if 비율[0] > percent then plot1(구간[0]);
if 비율[0] > percent then Plot2(구간[1]);
if 비율[1] > percent then Plot3(구간[1]);
if 비율[1] > percent then plot4(구간[2]);
if 비율[2] > percent then Plot5(구간[2]);
if 비율[2] > percent then plot6(구간[3]);
if 비율[3] > percent then Plot7(구간[3]);
if 비율[3] > percent then plot8(구간[4]);
if 비율[4] > percent then Plot9(구간[4]);
if 비율[4] > percent then plot10(구간[5]);
if 비율[5] > percent then Plot11(구간[5]);
if 비율[5] > percent then plot12(구간[6]);
if 비율[6] > percent then plot13(구간[6]);
if 비율[6] > percent then Plot14(구간[7]);
if 비율[7] > percent then Plot15(구간[7]);
if 비율[7] > percent then plot16(구간[8]);
if 비율[8] > percent then Plot17(구간[8]);
if 비율[8] > percent then plot18(구간[9]);
if 비율[9] > percent then Plot19(구간[9]);
if 비율[9] > percent then plot20(구간[10]);