커뮤니티
수식문의
2025-11-04 07:33:04
162
글번호 227616
var : cnt(0) ;
input : period( 200) ,period2(100), intv(5);
HH=Highest(H, period);
cnt=Countif(Crossup(H,HH), period2);
위와같이 하면 HH를 돌파하는 횟수를 모두 표현할 수 있는데 모든 횟수를 알고 싶은 게 아니라 이전 돌파와 다음 돌파 사이에 intv봉(5) 간격이 있어야
횟수가 +1이 되도록 카운트를 하고 싶습니다. 예를 들어 intv가 5 이면 4일전에 돌파가 있고 2일전에 돌파가 있어도 cnt 는 +2가 되지 않고 +1이 되도록
하고 싶습니다.
※ 주석도 함께 부탁드립니다. 수식을 이해 못하면 활용을 할 수가 없더군요.
항상 친절한 답변에 감사드립니다.^^
답변 1
예스스탁 예스스탁 답변
2025-11-04 10:14:42
안녕하세요
예스스탁입니다.
최초 돌파시 봉번호 저장한 이후에
이후 돌파시에 이전 돌파시 봉번호와 현재봉번호 비교해 Intv이상일때만
봉번호 저장을 하게 하시면 됩니다.
봉번호가 전봉과 다른봉이 Intv이상 경과후 돌파가 발생한 봉입니다.
input : period(200) ,period2(100), intv(5);
var : HH(0),cnt(0),Upindex(0);
HH = Highest(H, period);
#상향돌파할 때 봉번호 저장
#최초(Upindex == 0)는 조건없이 저장하고
#최초 이후에는 Upindex대비 intv봉갯수 이상 경과후 돌파만 Upindex 저장
if CrossUp(H,HH[1]) and (Upindex == 0 or (Upindex > 0 and Index >= Upindex+intv)) Then
{
Upindex = Index;
}
//100봉동안 Upindex변경횟수 저장
cnt=Countif(Upindex!= Upindex[1], period2);
즐거운 하루되세요
다음글
이전글