커뮤니티
늦은 축하!!!
답변 4
수식지왕
2003-07-07 00:00:00
예전부터 전고점 전저점을 찾는 수식을 만들려고 무던히도 애를 썼었는데 이번 프로 버전에서는 내장함수로 제공되고
있다.
SwingHigh와 SwingLow가 그것인데 도움말을 그대로 인용하면 다음과 같다.
SwingHighBar는
일정한 bar에서의 가격이 좌측과 우측의 일정기간 동안의 가격보다 높게 형성된 bar를 의미한다. 최근 30개 봉 동안 기준 bar를 중심으로
좌측으로 세개, 우측으로 두개의 고가 보다 기준bar의 고가가 높은 가장 최근의 Swing high bar의 고가를 구하려면 Occur = 1,
Value = H, Leftstrength = 3, Rightstrength = 2, Period = 3 을 입력하면 된다. =>
SwingHigh(1, H, 3, 2, 30) 지정한 기간동안 조건에 만족하는 Swing high bar가 없을 경우 none 값 즉, 어떤
값도 리턴하지 않는다.
이것을 다시 사용자 함수로 만들어 보겠다.
기간봉동안의 최고치, 최저치의 좌표를 구하는 것인데
내장함수가 있음에도 불구하고 다시 사용자 함수로 만드는 이유는 변동폭이 작은 변곡점을 걸러 내기 위해서이다.
input:
occur(numeric),left(numeric),right(numeric),period(numeric);
var: bar(0);
bar = MRO(highest(h,left+1)[right]==h[right]
and
highest(h,right+1)==h[right]
,period,occur);
// MRO에 설명은 도움말에서 찾아 보기 바란다.
if bar >= 0 then bar = bar +
right;
SwingHiBar = bar;
위
수식을 사용자 함수로 만들어 놓고 SwingHighBar와 어떻게 다른지 지표식을 만들어 비교해 보았다.
수직선으로 그어진 곳의 지표값을 보면 9라는 수치가 동일하게 나오는데 9번째 이전봉이 변곡점임을 나타내는
것이다.
9칸을 세어 보면 화살표 A의 위치가 되는데 그림상으로 보면 변곡점이 확실하다.
그런데 화살표 B의 좌표가 내가 만든
식에서 표시되었음은 내장 함수의 로직을 완벽하게 구현하지 못했음을 나타낸다.
하지만 나의 최종목적은 앞에서 이미
언급했듯이 내장함수의 로직을 밝혀내는 것이 아니고 화살표 A처럼 진폭이 작은 변곡점을 걸러 낼 수 있는 사용자 함수를 만드는
것이다.
걸러내고자 하는 진폭을 입력변수로 정의하고 다음과 같이 수식을 만들어 보았다.
input:
occur(numeric),left(numeric),right(numeric),period(numeric),base(numeric);
var: bar(0);
bar = MRO(highest(h,left+1)[right]==h[right]
and
highest(h,right+1)==h[right]
and
(highest(h,left+1)[right]-lowest(h,left+1)[right]>=base
or
highest(h,right+1)-lowest(h,right+1)>=base)
,period,occur);
if bar >= 0 then bar = bar +
right;
SwingHiBar = bar;
처음 수식에서
굵은 부분을 추가 한 것이며 이를 차트상에서 비교해 보면 다음과 같다.
진폭을 0.5로 주어 0.5 이상 변동폭을 가지는 변곡점을
찾도록 해 보았다.
아까는
값이 9였는데 54로 바뀌어 화살표 A와 B를 표시하지 않고 넘어 갔다.
이렇게 이미 제공되는 수식을 다시 재작성한 이유는 작은
움직임보다 큰 움직임을 포착하기 위해서이며 다음에는 이렇게 구한 변곡점을 가지고 자동 추세선을 만들어 보겠다.
무아
2003-07-07 00:00:00
수식지왕
2003-07-07 00:00:00
무아
2003-07-08 00:00:00