커뮤니티

늦은 축하!!!

프로필 이미지
수식지왕
2003-07-07 00:00:00
708
글번호 195247
늦었지만 예트 프로의 탄생을 축하드립니다. 기대가 컸던만큼 실망도 컸던 것 같습니다. 다른 게시판에 제가 올렸던 글에도 HTS 측면에 대해서는 평가를 않겠다고 했는데 역시 나 HTS 기능 측면에서 사용자들의 요구가 대단하군요. 선물 한종목만 보는 저로서는 불편함이 없지만 여러 종목을 같이 보고자 하는 사람들 한테는 약점이 있는 모양입니다. 게시판의 글들을 읽다보니 비실명으로 운용되던 당시의 시스템시장 묻고답하기 게시판 을 보고 있는 듯한 기분이 들어 우울하군요. 사용자들마다 요구사항이 다양한 것은 알겠지만 자신이 원하는 기능이 부족하다고 서 슴없이 쓸모없는 프로그램이라고까지 하는 것을 보니 예트 매니아로서 답답합니다. 자신이 원하는 기능에 대한 개선을 요구하는 것은 좋지만 너무 감정섞인 듯한 글들을 보면서 정말로 이 프로그램에 대해서 얼마만큼의 애정을 가지고 있기에 흠집내기에만 급급한가 싶습니다. 전 예트를 HTS 기능보다는 시스템트레이딩 툴로 보기 때문에 구버전에 비해 월등히 좋 아졌다고 평하고 싶군요. 하지만 보다 나은 예트 프로가 되기 위해서는 좀 더 많은 수정 보완이 필요한 것은 사 실이지요. 그래서 건의하고 싶은 것이 있는데 지금의 이 묻고답하기 게시판과 별도로 기능개선이 라는 게시판을 따로 만들어 운용해 주셨으면 합니다. 수식에 대한 질문과 사용법에 질문들 사이에 기능개선 요구사항이 같이 묶여 있다보니 일목요연하게 교통정리가 되지 않고 어수선합니다. 이곳 게시판에 이렇게 많은 글들이 올라오는 이유도 따지고 보면 불만은 있지만 결국 은 예트를 사용하고 싶은 사람들이 그만큼 많다는 얘기니까 개발자분들 힘내세요. 예트에 관심없는 사람은 불만조차 얘기않고 떠나니까요.
예스트레이더 (iM증권)
답변 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

야후님이 시군요. 역시 수식의 재왕 이시군요.. 님의 말씀대로 MRO를 도움말에서 열심이 읽엇읍니다.. 기본 개념은 이해가 되는데요.. 그런후 다시보니 또 이해가안되네요.. bar = MRO(highest(h,left+1)[right]==h[right] and highest(h,right+1)==h[right] ,period,occur); 에서 highest(h,left+1)[right]==h[right] and highest(h,right+1)==h[right] 의의미를 좀 풀어서 설명 부탁드립니다. 또 첨가하신부분인 (highest(h,left+1)[right]-lowest(h,left+1)[right]>=base or highest(h,right+1)-lowest(h,right+1)>=base) 의미도 좀자세이 풀어서 부탁드립니다. > 수식지왕 님이 쓴 글입니다. > 제목 : 나는 이래서 신버전이 좋더라 > <FONT color=#000000>아래의 글은 제 홈페이지에 올려 놓은 글인데 뭔가를 구현하고 싶어도 함수의 제약으로 구현하지 못한 구버전에 > 비해 신버전의 언어는 많은 부분에서 업그레이드되었기에 예트 매니아로서 기분좋게 공개합니다. > =================================================================================== > </FONT> > <p>예전부터 전고점 전저점을 찾는 수식을 만들려고 무던히도 애를 썼었는데 이번 프로 버전에서는 내장함수로 제공되고 > 있다.<BR><BR>SwingHigh와 SwingLow가 그것인데 도움말을 그대로 인용하면 다음과 같다.<BR><BR>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 값 즉, 어떤 > 값도 리턴하지 않는다. <BR><BR>이것을 다시 사용자 함수로 만들어 보겠다. <BR>기간봉동안의 최고치, 최저치의 좌표를 구하는 것인데 > 내장함수가 있음에도 불구하고 다시 사용자 함수로 만드는 이유는&nbsp;변동폭이 작은 변곡점을 걸러 내기 위해서이다. <BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #6bfff3">input: > occur(numeric),left(numeric),right(numeric),period(numeric);<BR></FONT><BR><FONT style="BACKGROUND-COLOR: #6bfff3">var: bar(0);</FONT><BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #6bfff3">bar = MRO(highest(h,left+1)[right]==h[right] > and<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; highest(h,right+1)==h[right]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; > ,period,occur); </FONT><BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #6bfff3">// MRO에 설명은 도움말에서 찾아 보기 바란다. </FONT>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #6bfff3">if bar >= 0 then bar = bar + > right;</FONT><BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #6bfff3">SwingHiBar = bar;&nbsp;&nbsp;&nbsp;&nbsp; </FONT><BR><BR>&nbsp;<BR>위 > 수식을 사용자 함수로 만들어 놓고 SwingHighBar와 어떻게 다른지 지표식을 만들어 비교해 보았다.<BR>&nbsp;<BR><IMG > src="http://img.cyworld.com/data8/2003/7/7/snap006%2Egif" > align=top><BR>&nbsp;<BR>수직선으로 그어진 곳의 지표값을 보면 9라는 수치가 동일하게 나오는데 9번째 이전봉이 변곡점임을 나타내는 > 것이다. <BR>9칸을 세어 보면 화살표 A의 위치가 되는데 그림상으로 보면&nbsp;변곡점이 확실하다.<BR>그런데 화살표 B의 좌표가&nbsp;내가 만든 > 식에서 표시되었음은&nbsp;내장 함수의 로직을 완벽하게 구현하지 못했음을 나타낸다.<BR>&nbsp;<BR>하지만 나의 최종목적은 앞에서 이미 > 언급했듯이&nbsp;내장함수의 로직을 밝혀내는 것이 아니고&nbsp;화살표 A처럼 진폭이 작은 변곡점을 걸러 낼 수 있는&nbsp;사용자 함수를 만드는 > 것이다.<BR>&nbsp;<BR>걸러내고자 하는 진폭을 입력변수로 정의하고 다음과 같이 수식을 만들어 보았다.<BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #97f7fe">input: > occur(numeric),left(numeric),right(numeric),period(numeric),<STRONG>base(numeric)</STRONG>;<BR></FONT><BR><FONT style="BACKGROUND-COLOR: #97f7fe">var: bar(0);</FONT><BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #97f7fe">bar = MRO(highest(h,left+1)[right]==h[right] > and<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; highest(h,right+1)==h[right] > and<BR><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(highest(h,left+1)[right]-lowest(h,left+1)[right]>=base > or<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highest(h,right+1)-lowest(h,right+1)>=base)<BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; > &nbsp;,period,occur); </FONT><BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #97f7fe">if bar >= 0 then bar = bar + > right;</FONT><BR>&nbsp;<BR><FONT style="BACKGROUND-COLOR: #97f7fe">SwingHiBar = bar;&nbsp; </FONT><BR>&nbsp;<BR>처음 수식에서 > 굵은&nbsp;부분을 추가 한 것이며 이를 차트상에서 비교해 보면 다음과 같다.<BR>&nbsp;<BR>진폭을 0.5로 주어 0.5 이상 변동폭을 가지는 변곡점을 > 찾도록 해 보았다.<BR>&nbsp;<BR><IMG > src="http://img.cyworld.com/data5/2003/7/7/snap008%2Egif" align=top><BR>&nbsp;<BR>아까는 > 값이 9였는데 54로 바뀌어 화살표 A와 B를 표시하지 않고 넘어 갔다.<BR>&nbsp;<BR>이렇게&nbsp;이미 제공되는 수식을 다시 재작성한 이유는 작은 > 움직임보다 큰 움직임을 포착하기 위해서이며 다음에는 이렇게 구한 변곡점을 가지고 자동 추세선을 만들어 보겠다.</p>
프로필 이미지

수식지왕

2003-07-07 00:00:00

필명이 좀 유치하긴 한데 장난삼아 이것저것 기입했다가 실명확인 이후 변경이 불가능해져 그냥 쓰게 되었습니다. 첨부 그림에서 변곡점의 위치는 0번이 됩니다. 현재 위치가 볼드체 7번이라고 합시다. 그렇다면 지표식의 결과값은 7이 나와야겠죠? 예제는 left는 5, right는 4로 주겠습니다. 우선 현재 봉의 위치가 0인 상태에서 좌측 5봉중 가장 고가인지 여부를 체크합니다. left는 5를 주었지만 0번 봉도 포함해야 하므로 기간에 해당하는 값은 6이 되어야 합니다. highest(h,6)==h 라는 식이 만들어집니다. 이제 현재 봉의 위치가 우측의 4번이 되었다고 보고 위 식이 여전히 유효한지 체크하려면 4번째 이전봉에서의 두 값을 체크해야 합니다. highest(h,6)[4]==h[4] 신버전에서 과거의 값을 [ ]를 통해서 구할 수 있도록 하였는데 이런데서 유용하게 써먹는군요. 다음은 우측 4봉중 가장 고가인지 체크합니다. 현재 봉의 위치는 4번 봉입니다. 역시 현재 봉을 포함하기 때문에 기간값은 4가 아니라 5가 됩니다. highest(h,5)==h[4] 두개 조건을 묶으면 highest(h,left+1)[right]==h[right] and highest(h,right+1)==h[right] ==> highest(h,6)[4]==h[4] and highest(h,5)==h[4] 위의 설명을 이해하셨다면 아래의 식은 금방 이해하실 겁니다. (highest(h,left+1)[right]-lowest(h,left+1)[right]>=base or highest(h,right+1)-lowest(h,right+1)>=base) 0번 위치에서 5 ~ 0까지의 최고 고가와 최저 고가의 차이가 base 보다 이상이 되는지 판단하는 수식은 highest(h,6)-lowest(h,6)>=base 입니다. 4번 위치에서 0번 좌측의 값을 판단한다면 highest(h,6)[4]-lowest(h,6)[4]>=base 가 됩니다. 나머지 4번 위치에서 0 ~ 4까지 최고 고가와 최저 고가의 차이를 비교하려면 highest(h,5)-lowest(h,5)>=base 입니다. 처음에는 and 조건으로 묶었는데 횡보하다가 급락일 경우와 급등후 횡보일 때를 감안해서 or 조건으로 묶었습니다. 추가로 if bar >= 0 then bar = bar + right;의 의미는 4번봉에서 MRO의 조건을 만족하므로 값이 0으로 나옵니다. 찾고자 하는 봉의 위치는 0번 위치이므로 4를 더하는 것입니다. 쉽게 설명드리려 했지만 신규 함수가 들어가는 바람에 이해시키는데 한계가 있군요. 아후 답변 작성하느라 점심시간 다 까먹었습니다.
프로필 이미지

무아

2003-07-08 00:00:00

답변 감사드립니다. 개념이해와 공부에 많은 도움이 되엇읍니다. 건승 하십시요~ > 수식지왕 님이 쓴 글입니다. > 제목 : Re : 신버전에서 추가된 개념을 이용합니다. > 필명이 좀 유치하긴 한데 장난삼아 이것저것 기입했다가 실명확인 이후 변경이 불가능해져 그냥 쓰게 되었습니다. > > > > 첨부 그림에서 변곡점의 위치는 0번이 됩니다. > > 현재 위치가 볼드체 7번이라고 합시다. > 그렇다면 지표식의 결과값은 7이 나와야겠죠? > > 예제는 left는 5, right는 4로 주겠습니다. > > 우선 현재 봉의 위치가 0인 상태에서 좌측 5봉중 가장 고가인지 여부를 체크합니다. > > left는 5를 주었지만 0번 봉도 포함해야 하므로 기간에 해당하는 값은 6이 되어야 합니다. > > highest(h,6)==h 라는 식이 만들어집니다. > > 이제 현재 봉의 위치가 우측의 4번이 되었다고 보고 > > 위 식이 여전히 유효한지 체크하려면 4번째 이전봉에서의 두 값을 체크해야 합니다. > > highest(h,6)[4]==h[4] > > 신버전에서 과거의 값을 [ ]를 통해서 구할 수 있도록 하였는데 이런데서 유용하게 써먹는군요. > > 다음은 우측 4봉중 가장 고가인지 체크합니다. 현재 봉의 위치는 4번 봉입니다. > > 역시 현재 봉을 포함하기 때문에 기간값은 4가 아니라 5가 됩니다. > > highest(h,5)==h[4] > > 두개 조건을 묶으면 > > highest(h,left+1)[right]==h[right] and highest(h,right+1)==h[right] > > ==> highest(h,6)[4]==h[4] and highest(h,5)==h[4] > > 위의 설명을 이해하셨다면 아래의 식은 금방 이해하실 겁니다. > > (highest(h,left+1)[right]-lowest(h,left+1)[right]>=base or > highest(h,right+1)-lowest(h,right+1)>=base) > > 0번 위치에서 5 ~ 0까지의 최고 고가와 최저 고가의 차이가 base 보다 이상이 되는지 판단하는 수식은 > > highest(h,6)-lowest(h,6)>=base 입니다. > > 4번 위치에서 0번 좌측의 값을 판단한다면 > > highest(h,6)[4]-lowest(h,6)[4]>=base 가 됩니다. > > 나머지 4번 위치에서 0 ~ 4까지 최고 고가와 최저 고가의 차이를 비교하려면 > > highest(h,5)-lowest(h,5)>=base 입니다. > > 처음에는 and 조건으로 묶었는데 횡보하다가 급락일 경우와 급등후 횡보일 때를 감안해서 or 조건으로 묶었습니다. > > 추가로 > if bar >= 0 then bar = bar + right;의 의미는 > > 4번봉에서 MRO의 조건을 만족하므로 값이 0으로 나옵니다. 찾고자 하는 봉의 위치는 0번 위치이므로 4를 더하는 것입니다. > > 쉽게 설명드리려 했지만 신규 함수가 들어가는 바람에 이해시키는데 한계가 있군요. > > 아후 답변 작성하느라 점심시간 다 까먹었습니다.