커뮤니티
문의드립니다.
2019-06-25 13:59:57
309
글번호 129712
전에 답변 받은 내용입니다.
아직 많이 부족해서 답변 주신 수식을 이해 못해서 문의드립니다.
<<< ?????? 이부분을 (2군데) 주석으로 자세히 설명부탁드립니다.
---------------------------------------------------------------
input : P(4);
var : cnt(0),Hv(0),Lv(0),avgv(0);
Array : WeekH[10](0),WeekL[10](0),WeekC[10](0);
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then << 영업일이 다음주로 바뀌면
{
WeekH[0] = H;
WeekL[0] = L;
for cnt = 1 to 9
{
WeeKH[cnt] = WeekH[cnt-1][1]; << ???????
WeeKL[cnt] = WeekL[cnt-1][1];
WeeKC[cnt] = WeekC[cnt-1][1];
}
}
if WeekH[0] > 0 and H > WeekH[0] Then
WeekH[0] = H;
// ???????? >>> WeekH[0] > 0 의 조건은 필수 조건인가요? 음수가 나올 수 없을텐데요.
아니면 시가( O )를 말하는건가요?
if WeekL[0] > 0 and L < WeekL[0] Then
WeekL[0] = L;
WeekC[0] = c;
if WeekH[P] > 0 and WeekL[P] > 0 then
{
Hv = WeeKH[1];
Lv = WeeKL[1];
for cnt = 1 to P
{
if WeekH[cnt] > Hv Then
Hv = WeekH[cnt];
if WeekH[cnt] < Lv Then
Lv = WeekL[cnt];
}
avgv = (Hv+Lv+WeekC[1])/3;
plot1(avgv,"전주기준 4주평균");
}
----------------------------------------------------------
답변 1
예스스탁 예스스탁 답변
2019-06-25 15:01:31
안녕하세요
예스스탁입니다.
1.
#배열변수 선언
Array : WeekH[10](0),WeekL[10](0),WeekC[10](0);
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then << 영업일이 다음주로 바뀌면
{
WeekH[0] = H;
WeekL[0] = L;
for cnt = 1 to 9
{
WeeKH[cnt] = WeekH[cnt-1][1]; << ???????
WeeKL[cnt] = WeekL[cnt-1][1];
WeeKC[cnt] = WeekC[cnt-1][1];
}
}
weekh,weekl,weekc는 배열변수입니다.
새로운 한주가 시작되면( DayOfWeek(bdate) < DayOfWeek(bdate[1]) )
각 배열변수의 [0]에는 새로운 이번주에 값을 저장해야 하므로 초기값을 지정해 주고
[1]에는 전주, [2]에는 전전주, [3]에는 전전전주 순으로 값을 저장해 주게 됩니다.
for문은 이렇게 새로운 주가 시작되면
전봉(전주마지막봉)기준으로
[0]에 저장된 값은 [1]로
[1]에 저장된 값은 [2]로
[2]에 저장된 값은 [3]로
[3]에 저장된 값은 [4]...로 옮겨 주는 내용입니다.
for문의 cnt변수에 1이 저장되면
WeekH[1] = Week[0][1]; 이되어 weekH[1]에 week[0]의 전봉값(전주마지막봉의값)을 가져와 저장하고
for문의 cnt변수에 2가 저장되면
WeekH[2] = Week[1][1]; 이되어 weekH[2]에 week[1]의 전봉값(전주마지막봉의값)을 가져와 저장하고
for문의 cnt변수에 3이 저장되면
WeekH[3] = Week[2][1]; 이되어 weekH[3]에 week[2]의 전봉값(전주마지막봉의값)을 가져와 저장하고
......
for문의 cnt변수에 9가 저장되면
WeekH[9] = Week[8][1]; 이되어 weekH[9]에 week[8]의 전봉값(전주마지막봉의값)을 가져와 저장되게 합니다.
이렇게 저장값을 옮겨서
항상 현재주에는 [0]이면 이번주, [1]이면 전주, [2]이면 전전주의 값을 리턴받을수 있게 만들게 됩니다.
2
if WeekH[0] > 0 and H > WeekH[0] Then
WeekH[0] = H;
if WeekL[0] > 0 and L < WeekL[0] Then
WeekL[0] = L;
위와 같이 새로운 고가나 새로운저가가 발생시에 값을 갱신하는 수식에
각 변수가 0보다 크다라는 조건이 있는것은
새로운 한주가 시작해서 기초값이 저장된 다음부터 해당 수식으로 계산하라는 의미입니다.
각 배열변수의 기초값은 0입니다.
일주일간의 모든 데이타가 온전히 있어야 해당 주의 최고가와 최저가 계산이 가능하므로
차트상에서 처음으로 한주가 시작되는
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then
위 조건이 만족하는 봉부터 계산을 시작하라는 의미입니다.
차트의 첫봉부터 처음으로
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then 조건에 만족하기 전까지의 데이타는
해당 수식에서 계산에 포함하지 않게 됩니다.
즐거운 하루되세요
> 토루크막토 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 전에 답변 받은 내용입니다.
아직 많이 부족해서 답변 주신 수식을 이해 못해서 문의드립니다.
<<< ?????? 이부분을 (2군데) 주석으로 자세히 설명부탁드립니다.
---------------------------------------------------------------
input : P(4);
var : cnt(0),Hv(0),Lv(0),avgv(0);
Array : WeekH[10](0),WeekL[10](0),WeekC[10](0);
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then << 영업일이 다음주로 바뀌면
{
WeekH[0] = H;
WeekL[0] = L;
for cnt = 1 to 9
{
WeeKH[cnt] = WeekH[cnt-1][1]; << ???????
WeeKL[cnt] = WeekL[cnt-1][1];
WeeKC[cnt] = WeekC[cnt-1][1];
}
}
if WeekH[0] > 0 and H > WeekH[0] Then
WeekH[0] = H;
// ???????? >>> WeekH[0] > 0 의 조건은 필수 조건인가요? 음수가 나올 수 없을텐데요.
아니면 시가( O )를 말하는건가요?
if WeekL[0] > 0 and L < WeekL[0] Then
WeekL[0] = L;
WeekC[0] = c;
if WeekH[P] > 0 and WeekL[P] > 0 then
{
Hv = WeeKH[1];
Lv = WeeKL[1];
for cnt = 1 to P
{
if WeekH[cnt] > Hv Then
Hv = WeekH[cnt];
if WeekH[cnt] < Lv Then
Lv = WeekL[cnt];
}
avgv = (Hv+Lv+WeekC[1])/3;
plot1(avgv,"전주기준 4주평균");
}
----------------------------------------------------------
다음글
이전글