커뮤니티
accumN()에 관한 질문입니다.
2003-09-23 00:00:00
10333
글번호 62
첨부한 그림과 같이 연결선물지수 10분봉에 다음과 같은 지표식을 적용하였습니다.
accumN(
if (
(dayIndex >= 5) &&
(min(L(dayIndex),L(dayIndex-1)) > 0),
1,
0
)
,dayIndex+1)
그런데, dayIndex가 1부터 4까지 에서 지표식의 값이 모두 1로 나오는데 그 이유를
잘 모르겠습니다. 이 값이 비교식 (dayIndex >= 5) 때문에 모두 0으로 나와야 하는
것 아닙니까 ?
- 1. yc_23sep2003.jpg (0.12 MB)
답변 3
예스스탁 예스스탁 답변
2003-09-25 00:00:00
안녕하세요? 예스스탁입니다.....
문의하신 식을 살펴보면 물론, 사용자님께서도 이해하셨겠지만, [불능]의 문제 때문에 이렇게 결과값이 나오는 것입니다.
if문만 살펴볼 때, if문 안의 내용을 보면 첫번째 봉에서 불능이 나오며 두번째 봉부터 5번째 봉까지 0값을 리턴하게 되며 그 이후에는 1값을 리턴하게 됩니다.
우선 차트상에서의 첫번째 날을 보겠습니다....
첫번째 봉에서는 "L(dayindex()-1)"로 인해서 Invalid가 나오게 되며 두번째 봉에서는 첫번째 봉(invalid)과 두번째봉(0) 즉, 봉 두개를 누적해서 차트에 그려야 하나 첫번째 봉이 invalid로써 계산 대상에서 제외되기 때문에 누적할 대상이 하나밖에 존재하지 않게 되어서 (봉이 하나 부족해 지기 때문에) 실제 0값이 지표로 그려지지 않게 되는 것입니다.
세번째 봉도 마찬가지로 누적값이 0(두번째 세번째 봉의 값을 누적)이긴 하지만 누적대상이 실제로 invalid봉 때문에 하나 부족하게 되기 때문에 여전히 차트상에 지표가 그려지지 않게 되는 것입니다.
이런 식으로 첫번째 날에는 차트가 그려지지 않게 되는 것입니다. 다만, 그럼에도 불구하고 지표값이 저장되어 있는 것이죠.
두번째 날에 대해서 알아보면 다음과 같습니다..
첫번째 봉은 여전히 invalid이기 때문에 계산 대상에서 제외되며 두번째 봉에서는 첫번째 봉과 두번째 봉의 값을 누적해야 하나 첫번째 봉이 invalid봉이기 때문에 이전 봉(전일 종가봉)의 지표값 1과 두번째 봉의 지표값 0을 누적한 값 1이 지표로 그려지게 되는 것입니다.
감사합니다...
> 6연음140기타 님이 쓴 글입니다.
> 제목 : accumN()에 관한 질문입니다.
> 첨부한 그림과 같이 연결선물지수 10분봉에 다음과 같은 지표식을 적용하였습니다.
accumN(
if (
(dayIndex >= 5) &&
(min(L(dayIndex),L(dayIndex-1)) > 0),
1,
0
)
,dayIndex+1)
그런데, dayIndex가 1부터 4까지 에서 지표식의 값이 모두 1로 나오는데 그 이유를
잘 모르겠습니다. 이 값이 비교식 (dayIndex >= 5) 때문에 모두 0으로 나와야 하는
것 아닙니까 ?
6연음140기타
2003-09-25 00:00:00
설명하신 내용 중에서 다음 부분에 재질문이 있습니다.
"따라서, 다음날 첫번째 봉에서 불능(L(dayindex()-1) 때문)이 발생하게 되고
두번째 봉에서는 accum에 대한 기간값이 dayindex() +1 == 1+1 ==2가 되기 때문에 이전에 저장된 1값(전일 마지막봉)과 첫번째 봉값(invalid 이기 때문에 누적 안됨)을 누적해서 1값이 리턴되게 됩니다..."
여기서 왜 전일 마지막 봉 일 때의 값 1을 누적시키는지 잘 모르겠습니다.
그리고 이렇게 되면 accumN()안의 문장이 진입식이라고 할 때, 진입식만 있으면
dayIndex=5에서 진입이 되나 재진입을 금지하기 위해 일반적으로 사용하는 방법인
accumN(진입식,dayIndex+1)==1 문장을 사용하게 되면 아예 진입이 안되는
문제가 발생합니다. 이렇게 생각하다 보니 지금까지는 무심코 써왔던 재진입금지
방법인 accumN()에 무슨 문제가 있지는 않을까 하는 우려도 됩니다.
(글로 쓰다보니 길어져서 전화로 말씀드리겠습니다.)
그리고, 120번 질문에 말씀드린 계산불능 문제도 AND 일 때에야 처리안하는게 맞겠지만
OR 조건일 때에는 그 중에 하나라도 TRUE가 발생하면 처리하는게 낫지 않나 싶습니다.
진입이던 청산이던 몇 가지 component가 있기 마련인데 사용자의 프로그램 bug든
예상치 못한 실시간 문제이든지 간에 진입과 청산의 기회를 놓친다면 참 억울한
아니겠습니까 ?
(참, 이와 관련해서 ORing된 청산식에서 불능이 발생하면 식으로 작성된 청산은 동작
안하지만 강제청산은 동작하도록 되어있는데, 비록 강제청산은 예스차트가 해주기는
하지만 어쨌거나 OR된 것인데 이것은 또 동작하고 ...)
10월에 나오는 버전에서는 이 문제가 좀 더 간단명료해졌으면 좋겠습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : accumN...
> 안녕하세요? 예스스탁입니다.....
문의하신 식을 살펴보면 물론, 사용자님께서도 이해하셨겠지만, [불능]의 문제 때문에 이렇게 결과값이 나오는 것입니다.
if문만 살펴볼 때, if문 안의 내용을 보면 첫번째 봉에서 불능이 나오며 두번째 봉부터 5번째 봉까지 0값을 리턴하게 되며 그 이후에는
1값을 리턴하게 됩니다.
하지만, 차트의 첫날을 보게 되면 이 if문을 누적(accumN)을 하는데 dayindex()+1 기간만큼 누적해야 하는데 실제 차트상에서는 매 봉마다 1씩 부족하기 때문에 차트가 그려지지 않습니다.
그런데, 여기에서 중요한 점은 이렇게 계산값이 차트상에 나타나지는 않지만 if문에 의해서 6번째 봉부터의 계산값(1)은 계속 기억이 되고 있는 것이지요.
따라서, 다음날 첫번째 봉에서 불능(L(dayindex()-1) 때문)이 발생하게 되고
두번째 봉에서는 accum에 대한 기간값이 dayindex() +1 == 1+1 ==2가 되기 때문에 이전에 저장된 1값(전일 마지막봉)과 첫번째 봉값(invalid 이기 때문에 누적 안됨)을 누적해서 1값이 리턴되게 됩니다...
이런식으로 5번째 봉까지 1값이 리턴이 되게 되는 것입니다....
감사합니다...
> 6연음140기타 님이 쓴 글입니다.
> 제목 : accumN()에 관한 질문입니다.
> 첨부한 그림과 같이 연결선물지수 10분봉에 다음과 같은 지표식을 적용하였습니다.
accumN(
if (
(dayIndex >= 5) &&
(min(L(dayIndex),L(dayIndex-1)) > 0),
1,
0
)
,dayIndex+1)
그런데, dayIndex가 1부터 4까지 에서 지표식의 값이 모두 1로 나오는데 그 이유를
잘 모르겠습니다. 이 값이 비교식 (dayIndex >= 5) 때문에 모두 0으로 나와야 하는
것 아닙니까 ?
예스스탁 예스스탁 답변
2003-09-26 00:00:00
> 6연음140기타 님이 쓴 글입니다.
> 제목 : 재질문 입니다.
> 설명하신 내용 중에서 다음 부분에 재질문이 있습니다.
"따라서, 다음날 첫번째 봉에서 불능(L(dayindex()-1) 때문)이 발생하게 되고
두번째 봉에서는 accum에 대한 기간값이 dayindex() +1 == 1+1 ==2가 되기 때문에 이전에 저장된 1값(전일 마지막봉)과 첫번째 봉값(invalid 이기 때문에 누적 안됨)을 누적해서 1값이 리턴되게 됩니다..."
여기서 왜 전일 마지막 봉 일 때의 값 1을 누적시키는지 잘 모르겠습니다.
그리고 이렇게 되면 accumN()안의 문장이 진입식이라고 할 때, 진입식만 있으면
dayIndex=5에서 진입이 되나 재진입을 금지하기 위해 일반적으로 사용하는 방법인
accumN(진입식,dayIndex+1)==1 문장을 사용하게 되면 아예 진입이 안되는
문제가 발생합니다. 이렇게 생각하다 보니 지금까지는 무심코 써왔던 재진입금지
방법인 accumN()에 무슨 문제가 있지는 않을까 하는 우려도 됩니다.
(글로 쓰다보니 길어져서 전화로 말씀드리겠습니다.)
그리고, 120번 질문에 말씀드린 계산불능 문제도 AND 일 때에야 처리안하는게 맞겠지만
OR 조건일 때에는 그 중에 하나라도 TRUE가 발생하면 처리하는게 낫지 않나 싶습니다.
진입이던 청산이던 몇 가지 component가 있기 마련인데 사용자의 프로그램 bug든
예상치 못한 실시간 문제이든지 간에 진입과 청산의 기회를 놓친다면 참 억울한
아니겠습니까 ?
(참, 이와 관련해서 ORing된 청산식에서 불능이 발생하면 식으로 작성된 청산은 동작
안하지만 강제청산은 동작하도록 되어있는데, 비록 강제청산은 예스차트가 해주기는
하지만 어쨌거나 OR된 것인데 이것은 또 동작하고 ...)
10월에 나오는 버전에서는 이 문제가 좀 더 간단명료해졌으면 좋겠습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : accumN...
> 안녕하세요? 예스스탁입니다.....
문의하신 식을 살펴보면 물론, 사용자님께서도 이해하셨겠지만, [불능]의 문제 때문에 이렇게 결과값이 나오는 것입니다.
if문만 살펴볼 때, if문 안의 내용을 보면 첫번째 봉에서 불능이 나오며 두번째 봉부터 5번째 봉까지 0값을 리턴하게 되며 그 이후에는
1값을 리턴하게 됩니다.
하지만, 차트의 첫날을 보게 되면 이 if문을 누적(accumN)을 하는데 dayindex()+1 기간만큼 누적해야 하는데 실제 차트상에서는 매 봉마다 1씩 부족하기 때문에 차트가 그려지지 않습니다.
그런데, 여기에서 중요한 점은 이렇게 계산값이 차트상에 나타나지는 않지만 if문에 의해서 6번째 봉부터의 계산값(1)은 계속 기억이 되고 있는 것이지요.
따라서, 다음날 첫번째 봉에서 불능(L(dayindex()-1) 때문)이 발생하게 되고
두번째 봉에서는 accum에 대한 기간값이 dayindex() +1 == 1+1 ==2가 되기 때문에 이전에 저장된 1값(전일 마지막봉)과 첫번째 봉값(invalid 이기 때문에 누적 안됨)을 누적해서 1값이 리턴되게 됩니다...
이런식으로 5번째 봉까지 1값이 리턴이 되게 되는 것입니다....
감사합니다...
> 6연음140기타 님이 쓴 글입니다.
> 제목 : accumN()에 관한 질문입니다.
> 첨부한 그림과 같이 연결선물지수 10분봉에 다음과 같은 지표식을 적용하였습니다.
accumN(
if (
(dayIndex >= 5) &&
(min(L(dayIndex),L(dayIndex-1)) > 0),
1,
0
)
,dayIndex+1)
그런데, dayIndex가 1부터 4까지 에서 지표식의 값이 모두 1로 나오는데 그 이유를
잘 모르겠습니다. 이 값이 비교식 (dayIndex >= 5) 때문에 모두 0으로 나와야 하는
것 아닙니까 ?