커뮤니티
주석과 설명부탁합니다.
2011-10-11 17:20:47
579
글번호 43586
안녕하세요? 너무초보라 열공하는중입니다.
다름이 아니라 아래의 수식 주석과 자세한 해설부탁합니다.
번거롭게해서 죄송합니다. 수고하세요.
아울러 감사드립니다.
[지표식 : N일간동시간평균거래량]
input : N(20);
var : ii(0), sumidx(0), sumVol(0), avgVol(0);
array : temp[50](0);
if date <> date[1] then {
temp[0] = dayindex[1];
for ii = 1 to N begin
temp[ii] = temp[ii-1][1];
end;
}
sumidx = 0;
sumVol = 0;
for ii = 1 to N begin
sumidx = sumidx + temp[ii-1]+1;
sumVol = sumVol + V[sumidx];
avgVol = sumVol/N;
end;
plot1(avgVol,"동시간평균거래량",RED);
답변 1
예스스탁 예스스탁 답변
2011-10-12 11:22:05
안녕하세요
예스스탁입니다.
올리신 식은 과거 20일동안 동시간대의 거래량을 불러와 평균한
값을 계산하고자 작성된 식입니다.
input : N(20);
var : ii(0), sumidx(0), sumVol(0), avgVol(0);
array : temp[50](0);#0~49번까지 총 50개 방을 가지는 배열변수
#1번식
if date <> date[1] then {#날짜 변경시(당일 첫봉에서)
temp[0] = dayindex[1];#전일마지막 봉번호를 [0]번 방에 저장
for ii = 1 to N begin #각 방에 저장된 값을 순차적으로 다음방으로 이전
temp[ii] = temp[ii-1][1];
end;
}
#2번식
sumidx = 0;
sumVol = 0;
for ii = 1 to N begin#1부터 20까지 순차적으로 값을 ii에 할당하고 할당될때마다 아래내용을 실행
sumidx = sumidx + temp[ii-1]+1;#0~19번방의 값을 차례대로 불러와 누적
sumVol = sumVol + V[sumidx];#sumidx값에 값이 누적될때마다 그값에 해당하는 거래량의 이전값을 가져와 sumvol에 저장
avgVol = sumVol/N;#저장된값을 루프횟수로 나눔
end;
plot1(avgVol,"동시간평균거래량",RED);
우선 temp라는 변수를 넉넉히 50개의 방을 가지는 변수로 선언하고
위식에 사용은 21개의 방만 사용됩니다.
1번식은
직전 20일 동안의 각 날의 마지막 봉번호를
0번방~~19번방에 저장합니다.
날짜가 변경되면(당일 첫봉) 우선 0번방에 전일 마지막봉번호를 저장하고
이전에 저장되었던 값들은 차례로 다음방으로 값을 이전하여 보관합니다.
즉 이전에 0번방 값은 1번방으로
이전에 1번방 값은 2번방으로
이전에 2번방 값은 3번방으로
순차적으로 옮겨서 저장합니다.
선물 5분봉차트라면 일반적으로 하루에 74개봉이 발생하므로
각방에 모두 74라는 값이 저장된것입니다.
2번식은
위에 저장된 방번호값을 이용하여 동시간대 거래량을 불러오는 식입니다.
ii에 1이 저장되면
temp[ii-1] 즉 temp[0]의 값(74)을 불러와+1을 더하여 sumidx에 합산하고
(이때 +1은 dayindex는 장일 첫봉을 0으로해서 시작하는 함수이므로 +1을 해주는 것입니다)
sumidx는 다시 v[sumidx]에 사용되어 V[75]가 되어 현재로 부터 75봉전을 거래량을 가져와 sumvol에 합산합니다.
ii에 2가 저장되면
temp[ii-1] 즉 temp[1]의 값(74)을 불러와+1을 더하여 sumidx에 합산하고(75+75)
sumidx는 다시 v[sumidx]에 사용되어 V[150]가 되어 현재로 부터 150봉전을 거래량을 가져와 sumvol에 합산합니다.
ii에 3이 저장되면
temp[ii-1] 즉 temp[2]의 값(74)을 불러와+1을 더하여 sumidx에 합산하고(75+75+75)
sumidx는 다시 v[sumidx]에 사용되어 V[225]가 되어 현재로 부터 225봉전을 거래량을 가져와 sumvol에 합산합니다.
~~~~~~~~~~~~~~~~~~
최종
ii에 20이 저장되면
temp[ii-1] 즉 temp[19]의 값(74)을 불러와+1을 더하여 sumidx에 합산하고(75*20 = 1500)
sumidx는 다시 v[sumidx]에 사용되어 V[1500]가 되어 현재로 부터 1500봉전을 거래량을 가져와 sumvol에 합산합니다.
최종 합산된 smvool을 N으로 나누어 평균값을 계산하여 avgvol에 저장하고 지표로 출력하게 됩니다.
즐거운 하루되세요
> 에리조나 님이 쓴 글입니다.
> 제목 : 주석과 설명부탁합니다.
> 안녕하세요? 너무초보라 열공하는중입니다.
다름이 아니라 아래의 수식 주석과 자세한 해설부탁합니다.
번거롭게해서 죄송합니다. 수고하세요.
아울러 감사드립니다.
[지표식 : N일간동시간평균거래량]
input : N(20);
var : ii(0), sumidx(0), sumVol(0), avgVol(0);
array : temp[50](0);
if date <> date[1] then {
temp[0] = dayindex[1];
for ii = 1 to N begin
temp[ii] = temp[ii-1][1];
end;
}
sumidx = 0;
sumVol = 0;
for ii = 1 to N begin
sumidx = sumidx + temp[ii-1]+1;
sumVol = sumVol + V[sumidx];
avgVol = sumVol/N;
end;
plot1(avgVol,"동시간평균거래량",RED);
다음글
이전글