2012년 3월 1일 목요일

Elliott Pattern Helper와 HTS의 DDE 연동 기능 구현 1

※ 이 글은 EPH(Elliott Pattern Helper) beta 버전에만 적용되며, v1.0에는 기본으로 포함된 기능입니다.
※ EPH와 상관없이 엑셀에서 HTS의 DDE를 연계하는 것과 관련된 내용은 'Excel에서 HTS DDE 활용하기' 시리즈를 참고하십시요.


안녕하세요? 오랜만에 블로그를 올리는군요.

증권사 HTS가 제공하는 DDE 기능을 이용하여 Elliott chart와 Fractal counting chart를 자동으로 갱신하는 기능을 구현하는 과정을 몇 회에 걸쳐 올리도록 하겠습니다.

목표는 3분, 5분, 15분, 30분, 60분 등 증권사 HTS가 제공하는 모든 시간단위 분차트를 대상으로 합니다.

아이디어는 간단합니다.
아래 그림과 같이 현재가, 거래량, 체결량 및 체결시간을 HTS가 제공하는 DDE 함수를 사용하여 실시간으로 받고, 해당 분단위의 캔들 정보-시가/고가/저가/종가/거래량-를 생성한 후 Elliott Pattern Helper의 chart에서 자동으로 반영하도록 하는 것입니다.


그림 1


글의 구성은 다음과 같습니다.

  1. 캔들 정보 생성 로직
  2. 캔들 정보 자동 생성
  3. EPH chart 활용


생성되는 캔들 또는 최근 캔들의 업데이트 정보를 chart에 자동으로 반영하는 기능을 추가하기 위해 Elliott Pattern Helper를 upgrade했습니다. 물론 사소한 버그 수정 및 기능 개선도 포함되었구요. 조만간 upgrade된 버전을 올리도록 하겠습니다.



1. 캔들 정보 생성 로직

우선, 처음부터 캔들을 하나, 둘, 자동으로 생성하지는 않을 것입니다. 충분히 많은 수의 캔들이 포함된 차트를 분석에 사용하고자 할 것이기 때문입니다. 그러므로 HTS를 통해 데이터를 내려받는 것으로부터 시작합니다.

3분봉 chart를 보는 것으로 가정하겠습니다. 아래 그림은 키움증권 영웅문을 통해 저장한 엑셀 파일 화면으로서 LG전자의 3분봉 데이터를 보여줍니다.


그림 2


아홉시 삼분(09:03) 직후에 내려받은 파일이군요. 한 번 HTS를 통해 내려받은 파일은 자동으로 없데이트 되지 않죠. 그래서 엑셀 매크로를 작성하여 DDE 데이터를 수신할 때마다 위 파일을 자동으로 수정하도록 할 것입니다.

로직은 간단합니다.

그림 1과 같이 새롭게 수신한 DDE 정보가
i) 체결시간(KHRun|'066570'!'20')이 단위 시간을 지난 (09:06 이후) 첫 데이터일 때

  • 새로운 행을 추가
  • 추가한 행의 일자/시간 셀에 일자와 시간 자동입력
  • 추가한 행의 시가, 고가, 저가, 종가 셀을 모두 현재가(KHRun|'066570'!'10')로 입력
  • '직전 거래량' 계산: 거래량(KHRun|'066570'!'13') - 체결량(KHRun|'066570'!'15')
  • 거래량 셀을  체결량(KHRun|'066570'!'15')으로 입력

ii) 이후 단위 시간 경과 전(09:09 전)까지 수신한 데이터에 대해
  • 현재가(KHRun|'066570'!'10')가 최근 행의 고가 셀 값보다 클 경우 최근 행의 고가 셀을  현재가(KHRun|'066570'!'10')로 대체
  • 현재가(KHRun|'066570'!'10')가 최근 행의 저가 셀 값보다 작을 경우 최근 행의 저가 셀을  현재가(KHRun|'066570'!'10')로 대체
  • 최근 행의 종가 셀을  현재가(KHRun|'066570'!'10')로 대체
  • 최근 행의 거래량 셀을  [거래량(KHRun|'066570'!'13') - '직전 거래량']으로 대체


아래 그림은 위의 로직으로 자동 생성한 캔들 정보를 포함한 엑셀 sheet 입니다.

그림 3

※ 위 로직에 의문이 있으시거나 헛점이 보이실 경우 댓글 남겨 주십시요.


다음 블로그 '2. 캔들 정보 자동 생성'에서는 DDE update 이벤트를 처리하여 위 과정을 수행하는 매크로에 대해 기술하겠습니다.




댓글 없음:

댓글 쓰기