티스토리 뷰
주식 자동 매매 프로그램 개발은 참 매력적입니다. 제가 원하는 완벽한 조건에 매수/매도할 수 있기 때문이죠.
키움증권의 영웅문 등 HTS에도 다양한 도구들이 있지만 완전 자유로운 자동 매매는 어렵습니다. 키움증권 Open API는 국내 주식 시장에서 높은 점유율을 차지하고 있는 키움증권의 서비스로, 저희같은 개인 투자자들에게도 강력한 자동화 도구를 제공합니다. 이러한 자동 매매 프로그램은 Python, C++, C# 같은 언어를 활용해 쉽게 구축할 수 있지만, Java로 개발하려는 분들에게는 쉽지 않은 도전일 수 있습니다.
Python 개발자분들은 koapy, pykiwoom 등을 사용하여 개발하시는 것처럼 Java 개발자분들도 이와 같은 도구가 있습니다!
https://github.com/jungwuk-ryu/Koava
Java로 키움증권 Open API를 활용하려면, Koava라는 라이브러리를 사용할 수 있습니다. Koava는 키움 Open API의 Java 래퍼(wrapper)로, Java 개발자도 키움 API의 강력한 기능을 활용할 수 있도록 만들어졌습니다. 또한, 오픈소스 라이브러리로 GitHub에서 관리되며, 커뮤니티의 도움으로 지속적인 업데이트를 받을 수 있다는 장점이 있습니다.
이 글에서는 Koava 설치 및 사용 방법부터 Java로 기본적인 키움증권 Open API 로그인 창을 실행하는 법까지 차근차근 다룹니다. Java에 익숙하지 않은 초보 개발자도 따라 할 수 있도록 설명을 풍부하게 추가했으니 안심하고 따라오세요. (혹시나 어려운 내용이 있으시다면 아래의 카카오 오픈채팅방으로 연락 주시거나 댓글 또는 레포에 이슈 남겨주세요!)
https://open.kakao.com/o/gku8Bq5g
1. Koava 사용을 위한 사전 준비
Koava를 사용하려면 몇 가지 필수 도구를 먼저 설치해야 합니다.
1.1. 32비트 자바(JDK) 설치
키움증권 Open API는 32비트 환경에서 작동하기 때문에 32비트 자바를 사용해야 합니다.
사실 이를 64비트로 랩핑하여 64비트 자바에서 사용하는 방법도 있긴 하지만 그에 따르는 부작용을 감수하면서까지 64비트 자바를 사용할 이유도 없기 때문에 이 글에서는 다루지 않겠습니다.
설치 방법:
https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html
- Oracle의 Java SE 8 Archive Downloads 페이지에 접속합니다.
만약 본인이 이미 32비트 자바를 설치하신 상태 거나 IDE에 내장되어 있다면 이 단계를 건너뛰어도 됩니다.
32비트 자바는 아래의 Oracle 공식 웹사이트에서 다운로드 가능합니다.
주의: Windows x86 을 다운로드하여 설치하시면 되겠습니다. (x64가 아닙니다!)
다운로드가 완료되었다면 설치 파일을 실행하고, 설치 마법사의 지시에 따라 설치를 완료하세요. Next 버튼만 눌러도 대부분 문제없이 설치됩니다.
1.2. kw_.dll 다운로드
Koava는 키움증권 Open API와 연결하기 위해 smok95님이 개발하신 kw_.dll이라는 파일을 필요로 합니다.
이 DLL 파일은 Koava가 API와 통신할 수 있도록 다리 역할을 합니다.
https://github.com/smok95/kw_/releases/tag/v0.0.10
다운로드 방법:
- GitHub - kw_.dll ( 위 링크 )로 이동합니다.
- kw_0.0.10.zip 파일을 다운로드합니다.
- 압축을 해제하고, kw_.dll 파일을 준비합니다.
이 파일은 나중에 프로젝트 폴더에 추가하여 사용합니다.
2. Java 개발 환경(IDE) 설치하기
Java 개발에는 IDE(통합 개발 환경)를 사용하는 것이 필수입니다.
여기서는 무료로 사용 가능한 IntelliJ IDEA Community Edition을 사용합니다.
만약, 사용하시는 IDE가 있으시다면 이 단계를 건너뛰어도 됩니다!
이 글에서는 인텔리제이 커뮤니티 에디션(무료)을 다운로드하고 설치하도록 하겠습니다.
설치 방법:
1. 일단, 아래 링크에 접속합니다.
https://www.jetbrains.com/idea/download/?section=windows
2. 아래로 스크롤하셔서 Community Edition을 선택해 다운로드합니다.
3. 다운로드한 설치 파일을 실행하고 Next를 눌러 설치를 완료합니다.
💡 IntelliJ 외에도 Eclipse, NetBeans 등 다른 Java IDE를 사용해도 (아마도) 무방합니다. 다만, 이 글에서는 IntelliJ를 기준으로 설명합니다.
3. IntelliJ에서 새 프로젝트 생성
3.1. 새 프로젝트 설정
IntelliJ를 실행하고 **새 프로젝트(New Project)**를 생성합니다.
이름: 프로젝트의 이름을 입력합니다.
시스템 빌드 : "Maven"으로 선택합니다.
JDK: 우리가 설치한 32비트 자바가 맞는지 확인합니다. (혹은 설치한 자바로 선택하세요)
💡 팁: * 만약 아까 설치한 JDK가 목록에 안 뜬다면 인텔리제이를 다시 실행해 보시고, 자바가 제대로 설치되었는지 확인해 보세요.
💡 팁: * 32비트 자바인지 확인하시려면 JDK 경로에 (x86)이 포함되어 있는지 확인해 보세요. x86이 포함되어 있다면 32비트 자바입니다. (본인이 64비트 자바를 저기에 설치한 게 아니라면요...)
이후, 생성 버튼을 누르시면 프로젝트가 생성됩니다.
3.2. Maven 설정(pom.xml 편집)
Maven을 통해 Koava 라이브러리를 설치하기 위해 pom.xml 파일을 수정해야 합니다.
pom.xml 파일을 열면 이런 내용이 작성되어 있을 것입니다.
</version> 아래에 아래의 내용을 붙여 넣기 하세요.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
그리고 </properties> 아래에 아래의 내용을 붙여 넣기 하세요.
<dependencies>
<dependency>
<groupId>com.github.jungwuk-ryu</groupId>
<artifactId>Koava</artifactId>
<version>-SNAPSHOT</version>
</dependency>
</dependencies>
그럼 아마 위 사진과 같은 내용이 되어 있을 것입니다. (아직까진 빨간 글씨일 수 있어요)
그리고 오른쪽 위에 뜨는 이 버튼을 클릭하세요. 이 버튼을 클릭하면 변경사항이 반영되어 Koava가 프로젝트에 설치됩니다.
만약, 적용이 잘 되었다면 빨간 글씨들이 사라졌을 것입니다. 즉, 위 사진과 같은 화면이면 됩니다.
이제 아까 다운로드한 kw_0.0.10.zip 압축파일을 압축해제하고, kw_.dll 파일을 프로젝트 폴더에 넣어줍니다.
쉽게 말해, 인텔리제이 화면 왼쪽에 있는 패널에서 가장 위에 있는 폴더에 kw_.dll 파일을 끌어 놓으시면 됩니다.
(.idea 또는 src 폴더에 끌어 넣으시면 안 됩니다! 위 사진의 예시에서는 my_project라는 글자 위에 끌어 넣어야 합니다. 이름은 다를 수 있습니다)
만약, 이런 창이 떴다면 리펙터링(R)을 클릭하면 됩니다. 이렇게 하면 파일이 이동됩니다.\
여기까지 잘 따라오셨다면, pom.xml 파일 위에 kw_.dll파일이 있어야 합니다.
5. 키움증권 Open API 설치하기
아래 링크에 접속하셔서 키움 Open API+ 모듈을 다운로드하셔야 합니다.
https://www.kiwoom.com/h/customer/download/VOpenApiInfoView?dummyVal=0
아, 참고로 아직 키움증권 Open API 사용 신청을 안 하셨다면 먼저 진행해 주시길 바랍니다.
모듈 다운로드가 끝나셨다면 설치를 진행해 주세요. 마찬가지로 모두 '다음' 버튼을 누르시면 됩니다.
설치가 정상적으로 진행되었다면 C드라이브에 OpenAPI 폴더가 생성됩니다.
6. 코드 작성하기
여기까지 오느라 고생하셨습니다.
이제 JAVA로 코드를 작성할 단계입니다!
다시 인텔리제이로 돌아오셔서 src/main/java/org/example/Main.java 파일을 더블클릭하시면 코드를 작성할 파일이 열립니다.
(패키지명 org.example은 다를 수 있습니다)
아마 이 글을 보시는 분들은 어느 정도 Java에 대한 지식이 있으실 거라 생각합니다. 만약 그렇지 않다면 Java를 먼저 익히시고 오시길 바랍니다.
Koava k = Koava.getInstance();
k.init(); // 초기화
// 로그인 이벤트 콜백 설정
k.setOnEventConnect(data -> {
KoaCode code = data.errCode;
if (!code.isError()) {
System.out.println("로그인 성공");
} else {
System.out.println("오류 발생 : " + code.getErrorMessage());
System.out.println(code);
k.disconnect();
}
});
// 로그인 창 실행
KoaCode code = k.commConnect();
if (code.isError()) {
System.out.println("로그인 창을 열지 못했습니다! " + code.getErrorMessage());
Runtime.getRuntime().exit(1);
}
// 종료 대기 (k.disconnect();가 실행될 때까지 대기합니다.)
k.waitDisconnection();
main에 위 코드를 붙여 넣어 줍시다. 위 코드는 키움증권 Open API의 로그인 창을 실행시키는 Koava 기본 예제 코드입니다.
아마 이렇게 오류가 발생할 텐데, 빨간 글자를 클릭하시고 Alt+Enter 하시면 클래스 가져오기 (import)가 되실 것입니다.
위와 같이 오류가 발생하지 않으면 준비 완료입니다!
7. 실행하기
이제 오른쪽 위의 초록색 실행 버튼을 눌러서 프로젝트를 빌드하고 실행합니다.
만약, 위 사진과 같이 '지정된 모듈을 찾을 수 없습니다.' 또는 'Unable to load library 'kw_' 오류가 발생한다면 kw_.dll 파일을 프로젝트의 target/classes 폴더에도 붙여 넣기 하시면 됩니다.
위와 같은 오류가 발생할 수 있습니다. 이 때는 Open API가 잘 설치되어 있는지 확인해 주세요.
만약, 문제가 없다면 아래의 절차를 수행하셔야 합니다.
현재 파일 -> 구성 편집... 을 들어가 줍니다.
새 항목 추가를 누르시고, 애플리케이션을 클릭합니다.
메인 클래스 오른쪽에 있는 아이콘을 클릭하여 우리가 만든 Main 클래스를 선택합니다.
**중요** 빌드 및 실행에서 자바 버전을 클릭하시고, 우리가 설치한 "(x86)이 경로에 쓰인" 32비트 자바를 선택합니다.
이후, 적용 버튼을 클릭하고 실행해 보세요.
그럼 이와 같이 키움 Open API 로그인 창이 실행됩니다!
고생 많으셨습니다. 다음 편에서는 Koava의 또 다른 기본적인 코드들을 알려드리겠습니다.
- Total
- Today
- Yesterday