앞서서 한국투자증권 API 를 사용해서 자동 매매 프로그램을 왜 만들려고 하는지, 어떤 장점이 있는지 알아봤습니다.
2024.03.17 - [한국투자증권 api] - 한국투자증권 API 통한 자동 매매 프로그램 만들기
한국투자증권 API 통한 자동 매매 프로그램 만들기
한국투자증권 api를 개발해야 하는 일이 생겼습니다. 아무래도 최근 해외 주식, 특히 미국 주식이 가파르게 회복을 하기 때문에 더 프로그래밍을 통한 매매에 관심이 생기는 것 같습니다. 저는
kyeyangdak.tistory.com
이번에는 한국투자증권 API를 개발하기 위해 필요한 정보를 수집했던 과정을 정리해서 공유 드리려고 합니다. 이미 많은 고수 분들이 한국투자증권 API를 공유해주고 있어서 정보를 찾기는 어렵지 않았습니다. 그럼에도 어떤 내용을 얻을 수 있었는지 느낀점을 간단히 커멘트 해보려 하고 이 내용이 도움이 되시기를 바랍니다. (github 레파지토리부터 보면 좋아요!!)
공식 사이트
한국투자증권 공식 사이트
기본적인 내용들은 공식사이트를 통해 얻을 수 있습니다. 한국투자증권 공식 사이트를 통해 아이디, 계좌 설정, 모의투자 신청, 해외 거래 신청 등의 작업을 수행할 수 있습니다. 또한 공식 사이트에서 개발을 위한 사이트로의 링크가 쉽게 되어 있습니다.

KIS Developer 개발자 센터
KIS Developer 사이트는 API를 개발하면서 계속 들여다봐야 하는 사이트입니다. API 문서의 상세 내용을 확인할 수 있습니다.


github - koreainvestment/open-trading-api
Open Trading API github 레파지토리 입니다. README.md 파일로 친절한 작업 순서를 안내해주고 있습니다. 그래서 위에도 적었지만 github부터 보면 좋을 것 같습니다.

위키독스
마지막으로 python 개발 시 참고할 만한 위키독스 입니다. 저자가 한국투자증권이므로 대부분의 내용은 믿을 수 있습니다. 대부분인 이유는 시간이 흐르면서 추가된 내용이 없기도 하고, 개인적으로는 실시간 데이터 부분에서 따라하다가 막혔는데 해소할 방법을 못 찾았기 때문입니다.

추가 레퍼런스
여기 까지 참고할 내용들을 보면서 뚝딱뚝딱 만들면 참 좋겠는데 저는 그럴만한 실력이 없다보니 막히는 부분이 꽤 많았습니다. 그래서 이것 저것 많이 찾아봤고 도움을 받은 추가 레퍼런스를 나열해 보겠습니다. 제가 찾은 내용이므로 여러분도 쉽게 찾을 수 있을 것입니다.
조코딩님의 유튜브 한 편 (23:41초)
이 영상을 통해 한국투자증권 API 장점을 사용자 관점에서 이해할 수 있었습니다. 그리고 역시나 동작하는 소스를 영상으로 설명해주니깐 이해가 더 쉬웠습니다. 앞서서 공식 사이트를 통해 무엇이 있는지 대략적인 파악을 했다면 조코딩님의 영상 (23:41초)을 빠르게 보는 것을 권장합니다.
Websockets
앞에서도 잠깐 언급했지만 실시간 데이터 핸들링 하는 부분에서 막혔는데 위키독스에서는 python의 websockets 을 사용했습니다. 그런데 websocket이 뭔지 잘 이해가 되지 않았습니다. 이럴 땐 물어봐야죠. +_+
웹소켓
웹소켓은 TCP 통신 방식으로 서버와 클라이언트 사이에 데이터를 주고 받을 수 있는 기술이다. RFC 6455
namu.wiki
ChatGPT야 도와줘.

통신을 위한 방법이고 연결이 되면 데이터를 좌좌좍 받을 수 있게 되는 그런 것 같습니다. 여기까지 보고 느낀점은 REST API는 한 번의 요청에 한 번의 응답을 받는 것이고, Websocket은 한 번의 요청이 등록되면 관련해서 계속 응답을 받는 것이라는 점입니다. 자동 매매 프로그래밍을 하기 위해서는 이 두가지 모두 구현이 잘 되어서 조합이 되어야 가능하겠네요.
await websocket.send(senddata)
# 무한히 데이터가 오기만 기다린다.
while True:
data = await websocket.recv()
print("Recev Command is :", data)
그런데 위키독스의 위의 예제에서 막혔습니다. websocket으로 요청을 한 것 까지는 좋았는데 바로 while True:가 되면서 계속 저 상태에 머물렀거든요. 분명 방법이 있을텐데 저와 같은 쪼랩에겐 개념이 익숙하지 않다보니 어떻게 해결해야 하는지 감을 잡기가 쉽지 않았습니다. 그래서 github에 다른 방법으로 구현한 소스가 있는지 찾아보았습니다.
github 레파지토리
- python-kis - Soju06/python-kis: 📈 파이썬 한국투자증권 REST 기반 Trading API 라이브러리 (github.com)
- pykis - pjueon/pykis: 한국투자증권 신규 Open Trade API 를 쉽게 사용하기 위한 python 패키지 (github.com)
- mojito - sharebook-kr/mojito: python wrapper for the KIS (github.com)
정말 많은 고수가 있다는 것을 다시 한 번 느꼈습니다. 3개를 확인하긴 했지만 이 번에 사용한 레파지토리는 1번 python-kis 입니다. 이 로직을 가져와서 websocket 부분을 참고했습니다. 결론적으로 websockets 라이브러리가 아닌 websocket, websocket-client 라이브러리를 활용했습니다. 이 자리를 빌어 Soju06 님을 비롯한 github에 좋은 소스를 공유해주시는 모든 분들께 감사 드립니다.
이제 이런 정보들을 참고하여 개발을 할 수 있습니다. 약간의 시행착오가 있기도 했지만 그와 관련해서는 별도로 정리해서 공유 드리겠습니다. 다음으로는 조금 근본적일 수 있는 "주식 자동 매매의 구조"에 대해서 고민해본 내용을 나열해보려 합니다. 이를 토대로 추후에는 시행착오를 줄이고 이미 개발된 부분을 쉽게 재사용 할 수 있게 되기를 기대합니다.
'한국투자증권 api' 카테고리의 다른 글
한국투자증권 API - 개발 시행착오에 대한 기록 (0) | 2024.03.20 |
---|---|
한국투자증권 API 개발 시 어려웠던 점 (1) | 2024.03.18 |
주식 자동 매매의 기본 구조 (업데이트 중...) (0) | 2024.03.17 |
한국투자증권 API 통한 자동 매매 프로그램 만들기 (19) | 2024.03.17 |