https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8%ED%95%98%EA%B8%B0
업비트 개발자 센터
docs.upbit.com
□ 매매 API 적용
public OrderResponse orderCoin() throws UnsupportedEncodingException, NoSuchAlgorithmException {
// 계좌 및 gpt와 연동하여 결정
String side = "";
String price = "";
String volume = "";
String ord_type = side.equals("bid") ? "price" : "market";
HashMap<String, String> params = new HashMap<>();
params.put("market", "KRW-ETH");
params.put("side", side);
params.put("ord_type", ord_type);
if(side.equals("bid")){
params.put("price", price);
}else{
params.put("volume", volume);
}
String orderUrl = serverUrl + "/v1/orders";
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/json");
headers.set("Authorization", jwtTokenProvider.createOrderToken(params));
HttpEntity<String> entity = new HttpEntity<>(new Gson().toJson(params), headers);
return restTemplate.exchange(
orderUrl,
HttpMethod.POST,
entity,
new ParameterizedTypeReference<OrderResponse>() {
}).getBody();
}
- 매매 관련 내용을 map넣어 토큰 생성기에 전달
- 매수(bid)의 경우 가격을(가능한 모든 금액 매수)전달
- 매도(ask)의 경우 수량을(가능한 모든 수량 매도)전달
□ 매매를 위한 Token 생성
public String createOrderToken(HashMap<String, String> params) throws NoSuchAlgorithmException, UnsupportedEncodingException {
ArrayList<String> queryElements = new ArrayList<>();
for(Map.Entry<String, String> entity : params.entrySet()) {
queryElements.add(entity.getKey() + "=" + entity.getValue());
}
String queryString = String.join("&", queryElements.toArray(new String[0]));
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(queryString.getBytes("UTF-8"));
String queryHash = String.format("%0128x", new BigInteger(1, md.digest()));
Algorithm algorithm = Algorithm.HMAC256(secretKey);
String jwtToken = JWT.create()
.withClaim("access_key", accessKey)
.withClaim("nonce", UUID.randomUUID().toString())
.withClaim("query_hash", queryHash)
.withClaim("query_hash_alg", "SHA512")
.sign(algorithm);
String token = "Bearer " + jwtToken;
System.out.println(token);
return token;
}
'프로젝트 > coin-trading' 카테고리의 다른 글
4. 투자전략 변경 및 EC2 배포 (0) | 2025.02.10 |
---|---|
3. chatGPT 연동하기(투자 판단) (0) | 2025.02.08 |
1. 업비트 API 적용해보기 (1) | 2025.02.05 |
0. 프로젝트 설계 (0) | 2025.02.05 |