upbit 업비트 open api를 간단히 사용해보자.
- [JAVA] UPBIT API 자동매매 예제
- 2022. 2. 8. 22:29
안녕하세요.
오늘은 우연히 업비트 OPEN API의 레퍼런스를 접하게 되었고 생각보다 잘 정리되어 있는 모습이 매우 호감이어서 이를 간단히 사용해보기 위한 포스팅을 진행하겠습니다.
업비트 open api 레퍼런스 주소는 다음과 같습니다. 관심있으신 분들은 본인만의 프로그래밍을 해보시기 바랍니다 ㅎㅎ
https://docs.upbit.com/reference
우선 업비트 api도 모든 open api처럼 access token을 별도로 챙겨야합니다.
open api 사용등록 방법
먼저 업비트 홈페이지를 PC 환경으로 접속합니다.
로그인을 하고 난 후
1. 고객센터 -> open api 안내
2. Open API 사용하기
3. 기능선택 : 자산조회, 주문조회, 주문하기
4. 특정 IP에서만 실행
세가지 기능중 주문하기, 출금하기를 사용할 경우 아래와 같은 문구를 확인하실 수 있는데요.
주문하기, 출금하기 API를 사용 시, 사용하실 IP 주소를 등록해주시기 바랍니다.
별도로 API를 활용할 특정 IP를 기재해야하는 것 같습니다. 저는 로컬에서 진행할테니 로컬 환경 IP를 https://www.findip.kr/ 해당 사이트에 접속하여 알아내고 발급을 받았습니다.
발급받은 Access Token, Secret Token 은 절대로 외부에 노출하지 마시고 Private 한 공간에 챙겨두셔야 합니다.
여기까지는 첨부된 사진에 따라 아주 잘 따라오셨을 것 같습니다. 아무래도 국내에서 서비스를 하다보니 굉장히 쉽게쉽게 하셨을거라 생각합니다 ㅎㅎ
이제 레퍼런스 페이지를 탐구해보겠습니다.
제공하는 API 목록부터 API 스펙, 언어별 Example들이 아주 친절하게 제시되어있습니다. 저는 여기서 Java 예제를 활용하여 전체 계좌를 조회하는 API를 호출해보도록 하겠습니다.
우선 예제에서 필요로하는 의존성 두가지를 build.gradle에 추가해주었습니다.
// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'
// https://mvnrepository.com/artifact/com.auth0/java-jwt
implementation group: 'com.auth0', name: 'java-jwt', version: '3.18.3'
apache httpcomponent와 jwt 관련 의존성입니다.
예제코드
api 호출은 간단히 기본 contextLoads 테스트 메소드에서 진행하도록 하겠습니다. (main 메소드로 해도 됩니다.)
@Test
void contextLoads() {
String accessKey = "-";
String secretKey = "-";
String serverUrl = "https://api.upbit.com";
Algorithm algorithm = Algorithm.HMAC256(secretKey);
String jwtToken = JWT.create()
.withClaim("access_key", accessKey)
.withClaim("nonce", UUID.randomUUID().toString())
.sign(algorithm);
String authenticationToken = "Bearer " + jwtToken;
try {
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(serverUrl + "/v1/accounts");
request.setHeader("Content-Type", "application/json");
request.addHeader("Authorization", authenticationToken);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.toString(entity, "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
accessKey와 SecretKey는 위에서 발급받은 값을 넣어주시면 됩니다. 만일 깃헙에 코드를 올리신다고 하신다면 해당 키값은 제거한 후 올리셔야합니다!!!!
body 결과
깔끔하게 제가 가진 코인목록을 가져올 수 있네요. ㅎㅎ(근데 생각보다 응답바디가 적네요..)
저는 오늘 이후로 차근차근히 업비트 Open API를 활용하여 재미삼아 자동투자 시스템을 구현해보려고 합니다. 현재 제가 가진 기술을 활용하여 어느정도의 구현이 가능할지는 모르지만 재미삼아 기술연습 하는 김에 시도하는 상황이니 더 재밌게 할 수 있을 것 같다는 생각이 듭니다.
'[JAVA] UPBIT API 자동매매 예제' 카테고리의 다른 글
java를 이용한 업비트 WebSocket 클라이언트 예제(okhttp, websocket client) (6) | 2022.02.20 |
---|---|
upbit api를 이용하여 매수/매도 주문을 넣어보자. (0) | 2022.02.15 |