레이블이 키움인 게시물을 표시합니다. 모든 게시물 표시
레이블이 키움인 게시물을 표시합니다. 모든 게시물 표시

2017년 4월 8일 토요일

키움 OPEN API 실시간차트 만들기(1)

선물옵션의 연속 선물 + 최근 월물을 위한 실시간 캔들 차트를 만들기 위한 샘플을 만들어 보겠습니다. 
생각해 보니 아래와 같은 사항을 고려해야 겠네요. 

  1. 우선 로그인을 합니다.
  2. 조회 버튼을 누르면 현재 시간 이전의 5분 가격 데이터를  가져옵니다. (TR 데이터 요청)
  3. 실시간 데이터 요청을 합니다. 
  4. 실시간 데이터가 들어 올 때 (장중 시간 판단) 와 아닐 때를 구분합니다.
  5. 데이터가 들어올 때 현재 캔들과 같은 시간대의 캔들인지 아닌지를 구분하여 같을 때는 현재 마지막 캔들의 데이터를 업데이트 하고, 아니라면 새로운 캔들을 추가 합니다. 
  6. 차트에 데이터를 추가하고 차트 설정을 하여 그리기를 합니다. 


우선 Visual Studio 2018 에서 Visual C#  아래와 같이 프로젝트를 생성합니다

도구상자 에서 KHOpenAPI Control 을 마우스 왼쪽 버튼으로 선택하여 드래그 하여 대화상자 위에 끌어 옵니다. 
블로그의 첫강좌 OPEN API  를 이용한 프로그램 만들기를 참고 하세요.  
 이방식으로 버튼 1개와 차트 를 화면에 등록합니다.
버튼은 "조회 시작" 이라고 등록을 하였습니다. 

 OpenAPI 컨트롤을 선택하고 "속성" 창에 번개 표시를 선택해서 아래 화면에서 선택한 함수들 오른쪽의 빈공간을 더블 클릭해 줍니다.
 그럼 Form1.cs 파일에 아래오 같이 함수들이 추가 되어집니다.
 전 강좌에서 설명한 것 처럼 EventConnect 는 로그인 결과에 대한 이벤트를 수신하는 함수 이고
RealData  는 말그대로 실시간 시세를 받아 오는 함수 
TrData 는 요청한 데이터가 수신되는 함수 입니다. 

이번 강좌에서 키움 API 를 사용하는 부분은 크게 3가지 입니다. 
  1. 로그인을 하고 확인하기
  2. 현재 시간을 기준으로 이전데이터를 가져오기 
  3. 실시간 데이터를 수신하기 

폼 디자인 화면에서 조회 버튼을 더블 클릭하면 코드에 함수 하나 추가 됩니다. 그곳에 로그인 함수를 구현합니다. 
 -> 로그인을 요청하는 함수 입니다. 키움 로그인 창이 뜨고 정상적으로 로그인이 되면 아래의 EventConnect 에 e.nErrCode 값이 0으로 넘어오게 됩니다.
 이후 GetConnectState() 값이 1이면 정상 접속된 것이므로 이때 연결 선물 5분 데이터를 요청합니다.
 과거데이터조회 -> 는 임의로 정한 요청 이름입니다. 수신할 때 구분하기 위한 요청 이름
 opt50029 은 제가 가져오려는 연결 선물 5분 데이터를 주기 위한 키움에서 제공하는 TR 요청 번호 입니다. 
KOAStudio 를 열어서 보면 아래와 같이  선물 옵션 분차트 요청시 사용하는 이름입니다.  사용방법은 오른쪽에서 나온 것처럼쓰게 되어 있고 이것을 코드에 복사하여 
입력값 1에는 종목 번호 -> 연결 선물 종목코드가 10100000 입니다. 
입력값 2 는 시간 단위로 우리는 여기서 5분 기준 데이터를 보낼 것이므로 5를 입력합니다. 
이후 CommoRqData 에서 RQName 은 임의의 요청 이름 즉 과거 데이터 조회가 되고
요청 이름, 3번째인자는 일단 0입니다. 그리고 화면번호 5003 은 임의로 설정한 값입니다. 
KOA Studio 에서 안쓰는 화면 번호값 4자리를 입력하면 됩니다. 

저같은 경우 TR요청은 5000 번대, 실시간은 6000 번대를 이용하여 사용합니다. 



실사간 데이터 는 SetRealReg 라는 함수를 사용하고
이런식으로 6001은 임의로 등록한 화면이름, 두번째 인자는 요청하는 데이터 우리는 최근월 즉 17년 6월 선물 데이터이므로 종목번호 101M6000 입니다. 해당 선물시세이므로 이종목의 실시간 데이터중 우리가 사용할 데이터는
체결시간과 현재가 이므로 10:20 두가지 데이터를 위와 같이 입력합니다. 추가로 더 받고 싶다면 : 을 입력하고 계속 문자열로 입력하면 됩니다. 

마지막은 "0" 으로 설정하면 됩니다. 

2017년 3월 26일 일요일

키움_Open API 데이터 조회 C# 샘플

지금 무료 다운로드 가능한 Visual Studio 는 2017 버젼이네요.
설치를 하고 탬플릿을 설치를 하고 나면 아래 화면처럼 프로젝트를 생성합니다.

파일>새프로젝트

원하는 이름을 설정하고 확인을 눌러줍니다.

생성되고 나면 도구상자 창에서 오른쪽 마우스를 눌러서 "항목 선택" 메뉴를 선택하면
아래와 같이 창이 나옵니다.

COM 구성 요소 탭으로 이동을 하여

KHOpenAPI Control 을 선택하여 체크박스 체크 이후 확인을 눌러 줍니다.


 마우스 왼쪽 버튼으로 KHOpenAPIControl 을 클릭한 다음 드래그해서 화면의 Form 화면에 놓아 줍니다.

Button 과 ListBox 를 동일한 방법으로 드래그 해 줍니다. 

Button 을 더블 클릭하면 아래 와 같은 Button1_Click 함수가 생성 되구요 그 않에 아래 
화면처럼 코드를 집어 넣습니다. 
키움에서 제공하는 로그인을 하기 위한 함수 입니다. 

다시 Form Design 화면으로 이동해서 OpenAPI 를 선택한 다음 오른쪽 속성 창에서 번개 
모양의 아이콘을 선택해 줍니다. 그럼 여러 함수 목록이 나오는데요. 
여기서 우리가 사용할 것은 OnEventConnect 함수와 OnREceiveTrData 입니다. 빨간 줄을 친빈공간에서 더블클릭을 해주면 코드에 각각의 함수가 생성됩니다. 


위와 같이 함수가 생성되었으면 아래와 같이 각 함수 안에 코드를 추가하여 줍니다. 


그리고 프로그램 빌드를 ctrl+shift+B  또는 F6 또는 위 메뉴에서 빌드>솔루션 빌드를 선택하여 줍니다. 그럼 아래 상태창에 빌드했습니다 라는 메시지가 나옵니다.
이후 Ctrl+F5 를 눌러 주면 아래 와 같이 프로그램이 실행되고 button1 을 누르면 키움 증권 로그인 화면이 뜹니다. 자신의 ID/Pass 를 입력하고 로그인을 하면 바로 아래와 같이
선물 데이터가 조회되어 출력되는 것을 볼 수 있습니다.



세부 적인 설명을 다음 글에서 계속 할게요 ~