본문 바로가기

기타/주가분석

증권사 API로 시스템에 접근하기

728x90

 

 

이번 글에서는 증권사 API를 이용하여 증권사의 시스템에 접속해 보겠습니다.

 

지난 글에서 말씀 드렸던 것처럼 증권사의 API를 사용하기 위해서는 COM, OCX, DLL 등의 타입으로 제공하는 증권사 API 모듈을 다운로드하고 설치해야 합니다.

증권사별 Open API 지원 여부는 이전 글에서 살펴보았고 그 중에서 많이 사용하는 API는 대신증권, 이베스트증권, 키움증권의 3종류라고 말씀드렸었죠.

API를 호출하는 방법을 알게 되면 어느 증권사의 API라도 사용이 가능합니다.

그리고 증권사가 제공하는 API 모듈은 32비트에서만 동작하기때문에 32비트용 파이썬을 설치해야 합니다.

 

저는 그냥 리눅스 상에 가상머신(VirtualBox)을 설치하고 그 가상머신에 윈도우를 설치한 후 통째로 32비트용 파이썬만 사용하도록 환경을 만들었습니다.

그렇게 하지 않고 자기가 사용하는 윈도우 환경에서 32비트 파이썬 용 가상환경을 만들어서 진행하셔도 됩니다.

 

진행을 해 보죠.

 

먼저 사용하기 위한 증권사 API를 선택하고 해당 증권사 사이트의 계정을 만든 후 API 모듈을 다운로드, 설치합니다.

이 과정은 따로 다루지 않겠습니다.

 

저는 대신증권, 이베스트 투자증권, 키움증권 모두에 계정을 가지고 있기때문에 그냥 3종류를 모두 사용할 예정입니다.

이번 글에서는 이베스트 투자증권의 XingAPI를 사용하도록 하겠습니다.

 

XingAPI의 경우에는 모듈을 설치하면 DevCenter라는 도구가 설치되는데 이 도구를 이용해서 미리 동작을 확인할 수도 있습니다.

 

XingAPI의 DevCenter

파이썬에서 해당 모듈을 호출해서 사용하기 위해서는 먼저 pywin32라는 모듈을 설치해야 합니다.

pywin32를 통해서 다양한 증권사 API를 사용할 수 있죠.

(아래 명령구문에서 경로는 각자 환경에 맞게 사용하시면 됩니다)

(sky_trader) C:\workspace\sky_trader> pip install pywin32

모듈을 설치하고나서 python을 실행시켜 동작을 확인합니다.

윈도우에 설치한 증권사 API모듈을 사용하는 것이니까 당연히 리눅스가 아닌 가상머신 속의 윈도우에서 작업해야겠죠.

 

필요한 모듈을 import 하고 동작을 확인하는 코드는 아래와 같습니다.

import win32com.client
client = win32com.client.Dispatch("XA_Session.XASession")
client.ConnectServer("demo.ebestsec.co.kr", 20001)

실행했을때 True가 나온다면 정상적으로 동작을 한 것입니다.

모의투자 계정을 위한 접속 주소는 위의 예제코드와 같이 demo.ebestsec.co.kr 이며 실투자 계정을 위한 접속주소는 hts.ebestsec.co.kr 입니다.

 

이베스트 투자증권의 경우 홈페이지에 XingAPI를 사용하기 위한 매뉴얼, 자료, Q&A와 같은 커뮤니티를 제공하고 있으니 직접 내용을 찾아보셔도 좋습니다.

단, COM 모듈에 대한 매뉴얼은 소스코드가 VB로 작성되어 있으니 참고하시기 바랍니다.

 

그럼 다른 API도 확인을 해 볼까요?

이베스트 투자증권의 XingAPI의 경우는 그냥 XingAPI 모듈만 다운로드하여 설치해도 사용할 수 있습니다.

 

그러나 대신증권의 경우는 CYBOS Plus 라는 API모듈을 제공하는데 CYBOS Plus를 사용하기 위해서는 CYBOS 5라는 HTS (Home Trading System)을 먼저 설치한 후에 사용할 수 있습니다.

CYBOS 5를 실행하면 상단 탭 메뉴 중에서 CYBOS Plus 메뉴를 확인할 수 있으며 이 메뉴를 통해서 이베스트 투자증권의 DevCenter와 같은 작업들을 할 수 있습니다.

CYBOS Plus를 XingAPI 호출 시 사용했던 것처럼 사용해보면 아마도 오류가 발생할 것입니다.

CYBOS Plus를 사용하기 위해서는 먼저 CYBOS 5를 관리자 권한으로 실행해두고, 파이썬 코드를 실행할 터미널(또는 명령 프롬프트)도 관리자 권한으로 실행해야 합니다.

XingAPI와 다르게 COM 모듈이 자동으로 등록되지 않는 경우가 많은 것 같은데 CYBOS 5가 설치된 폴더의 CYBOSPLUS 폴더에 있는 cputil.dll을 레지스트리에 등록해줘야 동작합니다.

C:\DAISHIN\CYBOSPLUS\> Regsvr32 cputil.dll

레지스트리에 등록이 완료되고 나면 정상적으로 호출이 가능합니다.

만약 등록이 되었는데도 호출이 되지 않으면 관리자모드로 CYBOS 5를 실행해 둔 상태에서 다시 시도해 보세요.

import win32com.client
instCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
print(instCpCybos.IsConnect)

결과가 0 이 나오면 성공한 것입니다.

 

키움증권의 경우는 OCX 방식이어서 사용법이 XingAPI나 CYBOS Plus와 많이 다릅니다.

참고하고 있는 도서에서는 PyQT5를 사용하여 GUI 환경을 통해서 구현하고 있는데..

이 경우는 꽤 많은 분량을 작성해야 하므로 일단 이번 글에서는 제외하는 것으로 결정했습니다.

어차피 개발하려는 프로그램에도 GUI 환경을 적용할 것이기때문에 필요하다면 그 때 다시 다루는 것으로 하겠습니다. 

 

이렇게 각 증권사별 API를 호출하는 방법을 살펴보았습니다.

 

다음 글에서는 자동으로 로그인하고 정보를 읽어오는 예제 코드를 만들어 보겠습니다.

 

 

 

 

728x90
반응형