※ 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 |
글의 구성은 다음과 같습니다.
- 캔들 정보 생성 로직
- 캔들 정보 자동 생성
- 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 이벤트를 처리하여 위 과정을 수행하는 매크로에 대해 기술하겠습니다.
댓글 없음:
댓글 쓰기