본문 바로가기
  • 개발자 Jueony의 블로그
개발 관련

한국투자증권 Open API 파이썬 예제코드

by jueony 2021. 5. 26.

0. 서론

개인적으로 한국투자증권에 메인 투자계좌와 연금저축계좌가 있고, 매달 정해놓은 비율대로 ETF들을 사고 있다.

원래는 엑셀로 계산한 다음에 수동으로 직접 하나하나 매수 주문을 넣었었는데, 보유한 ETF 종목이 많아지니까 이게 매우 귀찮아졌다(비록 한달에 한번하는 작업이지만..)

 

그래서 이 단순 작업을 자동화하기 위해서 한국투자증권의 Open API(eFriend Expert)를 신청하여 사용하게 됐다.

 

 

1.  프로그램 작성전 알아야하는 사항

1-1. 먼저 한국투자증권 공식홈페이지에서 Open API 서비스 사용 신청을 해야한다. (https://www.truefriend.com/main/customer/systemdown/OpenAPI.jsp)

 

1-2. 사용 신청이 끝났으면, API모듈(eFriend Expert)을 다운로드 받아 설치한다. 

(https://www.truefriend.com/main/customer/systemdown/OpenAPI.jsp?cmd=TF04ea01200)

C++(MFC), C#(WinForm)을 사용한 예제코드도 올라와있으니 참고하면 좋다. 

 

1-3. eFriend Expert는 Windows만 지원하며, 32비트만 지원한다. 따라서 파이썬 32비트 버전을 사용해야만 한다.

이 부분은 다른 증권사 API도 동일한듯하고, 관련 초기세팅들도 인터넷에 자료가 많으므로 참고하면 된다.

 

1-4. 설치가 끝나면, eFriend Expert 모듈을 실행하고, 아이디, 비밀번호, 공인인증서 비밀번호 정보를 입력해서 로그인한다. Open API를 사용하려면 eFriend Expert 모듈이 계속 실행중이어야만 한다.

 

1-5. Open API 실행시, 반드시 프로그램을 관리자권한으로 실행해야만 정상동작 한다.

예를 들어 vs code로 개발시, vs code를 관리자권한으로 실행해야한다.

 

 

 

2. 파이썬 코딩 관련

증권사 API에는 몇가지 카테고리가 있는듯 한데, 자세한건 나도 잘 모르겠고 한국투자증권의 경우는 OCX방식이라고 불리는 방식이다. OCX방식의 API들은, 파이썬에서 사용할때는 PyQt5를 쓰면 비교적 간단하게 사용할 수 있다. PySide2로도 아마 사용이 가능할텐데, 필자가 테스트해봤을땐 뭔가 잘 안되서 그냥 PyQt5를 사용하였다. 

다른 증권사 중에 대표적으로 키움증권의 API가 OCX방식인데, 비교적 인터넷에 자료가 있는 편이라 참고하기 좋다. PyQt5를 써서 OCX방식의 API를 사용하는 기본방법은 키움증권이나 한국투자증권이나 동일하니, 아래 링크한 자료등을 참고하면 어떤식으로 사용하면 될지 금방 감이 올 것이다.

 

참고할만한 자료

- 파이썬으로 배우는 알고리즘 트레이딩

- AyoteraLab 지식 스케치

 

 

왠지는 잘 모르겠으나, 한국투자증권 Open API를 사용한 예제는 구글링해도 잘 안나온다.

그래서 그냥 내 나름대로 만들어봤다. 한달 정도 매매에 사용하고 있는데 아직까진(?) 잘 돌아간다.

 

한국투자증권 예제코드 github repository:

https://github.com/pjueon/eFriendPy

 

pjueon/eFriendPy

python으로 한국투자증권 Open API (eFriend expert)를 사용하는 예제 코드 - pjueon/eFriendPy

github.com

위 예제코드는, 한국투자증권의 Open API를 함수레벨에서 1대 1로 wrapping한 클래스와, 그 wrapper를 사용하여 구현한 고수준 API의 예제를 다루고 있다.

 

 

예제코드 관련 주의사항

필자는 위 예제코드를 실제 매매에 사용 하고 있고, 아직까지는 큰 문제가 없었다.  

하지만, 필자가 한국투자증권의 Open API에 대한 이해도가 그리 깊지 않기 때문에 잘못된 내용이 있을 수 있다.

따라서, 코드에 불완전한 부분이나 버그가 있을 수 있다.

해당 코드는 아무런 제약없이 사용/수정/배포할 수 있으나, 필자는 해당 코드에 대해 어떤 것도 보장하지 않는다.

만일 이 예제코드를 사용함으로 인해서 어떠한 종류의 문제(버그, 사용자 실수, 투자로 인한 손실 등등)가 생기더라도 필자는 아무런 책임을 지지 않는다. 

 

 

3. eFriend Expert 관련 참고자료 

  • eFriend Expert 공식 메뉴얼에도 써있는데, 문의사항이 있으면 한국투자증권의 "고객의 소리"를 통해서 API 관련 질문을 보내면 답변해준다. 나도 특정 TR을 보낼때 필드값을 어떻게 넣어야 할지 모르는 부분이 있어서 질문 보내니까 답변해줬다.