본문 바로가기
[IT] Spring Boot (JAVA)/[웹서비스] 비트코인 자동매매

비트코인 거래소 API를 활용한 비트코인 자동매매 웹서비스(JAVA+Spring Boot) 개발(1) - 사전 준비

by 오리엔탈킴 2021. 7. 23.

안녕하세요, 오리엔탈입니다.

 

오늘부터 JAVA Spring Boot Web Service를 공부하기 위해 웹서비스를 개발을 해보겠습니다.

 

무엇을 개발할까 고민을 하다가, 최근 핫한 비트코인을 주제로 잡았습니다.

 

비트코인 거래소 중에 비트코인 가격정보, 코인 매매 등의 정보와 기능을 가진 API를 제공하는 곳이 있습니다. 이 거래소의 API를 이용하여, 코인의 가격정보를 받아와서 웹 페이지에 나타내고, 데이터를 저장해서 내가 원하는 통계 데이터를 화면에 뿌려주는 아주 간단한 웹서비스를 구현해 보도록 하겠습니다. 이러한 간단한 웹서비스를 실제로 만들어보고 로컬에서 Run 해보면서 Spring Boot WebService의 기본 개념을 완벽하게 익힐 수 있도록 하겠습니다.

 

이 웹서비스를 활용하여, 특정 조건에 대한 알고리즘을 작성하고 그 조건이 되면 매수/매도 주문을 넣는 로직만 추가해 준다면 아주 심플한 비트코인 자동매매 프로그램이 될 수 있습니다. 단, 제가 경제 관련 지식이 낮고 자동매매 알고리즘도 관련 지식이 없어서, 알고리즘 구현은 건너뛰고 거래소 API를 활용하여 이런 식으로 간단히 자동매매를 만들 수 있다는 IT 기술적인 학습 및 구현에 중점을 둔 포스팅을 진행할 예정입니다. 그럼 지금부터 JAVA Spring Boot를 활용한 비트코인 자동매매 웹서비스 만들기를 시작하겠습니다.

 

먼저 시작을 하기 앞서, JAVA + 스프링 부트 개발환경이 세팅이 되어야 할 텐데요, 만약 환경 세팅이 안되어 있다면 아래의 포스팅을 통해서 환경 세팅을 먼저 하시면 됩니다.

 

2020/11/05 - [기술/[JAVA, SpringBoot, Node.js] 개발 환경] - JAVA 설치 및 환경 세팅 (OpenJDK)

 

JAVA 설치 및 환경 셋팅 (OpenJDK)

안녕하세요, 오리엔탈킴입니다. 오늘은 JAVA를 설치하고 개발 환경 세팅을 하도록 하겠습니다. 그럼 바로 JAVA를 설치를 하겠습니다. 저는 OpenJDK를 설치하겠습니다. (Oracle JDK는 상업용이고, 같은 Or

kim-oriental.tistory.com

2020/11/17 - [기술/[JAVA, SpringBoot, Node.js] 개발 환경] - JAVA Spring Boot IDE (STS) 설치 및 프로젝트 생성

 

JAVA Spring Boot IDE (STS) 설치 및 프로젝트 생성

안녕하세요, 오리엔탈 입니다. 지난시간에는 개발 언어인 JAVA(OpenJDK)를 설치를 했습니다. 2020/11/05 - [기술/JAVA Spring Boot Web Service] - JAVA 설치 및 환경 셋팅 (OpenJDK) 이번에는 JAVA를 가지고 개발..

kim-oriental.tistory.com

 

비트코인 웹서비스 만들기
비트코인 웹서비스 만들기

사전 준비 (1) : 비트코인 거래소 API KEY 생성

 

자 모든 개발환경 세팅이 완료되었다면, 우선 비트코인 거래소에 계정을 만들고, 계좌를 개설하고, API 사용을 등록하는 절차를 진행합니다. 거래소 사이트에 직접 접속하여 거래를 하는 거나 데이터를 직접 받아오는 게 아니라 내가 개발한 애플리케이션에서 거래소로 매매 요청 및 데이터 요청을 해야 하는데, 원격에서의 요청은 모두 API를 통해서 이루어집니다. API란 간단하게 두 다른 시스템 간 요청/응답 및 데이터를 주고받기 위한 도구/수단 정도로 생각하시면 됩니다.

 

여러 비트코인 거래소가 많지만, 평소에 자주 이용하는 빗썸(bithumb)으로 선택을 하였습니다. 빗썸(www.bithumb.com/)에 회원가입이나 계좌 개설 및 소액의 금액까지 입금까지는 되었다고 가정을 하고 다음을 진행을 하겠습니다.

 

빗썸(www.bithumb.com/)에 로그인 후, 전체 메뉴에서 API 관리 메뉴를 클릭합니다.

 

API 관리 클릭

 

API 관리 페이지에 들어가신 후, API 활성화 접근 항목에서 회원 지갑 정보, 주문내역, 매수주문, 매도주문을 클릭해 줍니다. 위의 항목에 대해 접근을 허용하는 API Key를 생성하겠다는 의미입니다. 다음으로는 IP 및 출금 주소 제한 설정에서 본인이 사용할 PC의 공인 IP를 아시는 경우 보안을 위해 IP 설정을 합니다. 모르시면 우선은 넘어가셔도 됩니다.

 

API 접근 허용 항목
API 접근 허용 항목

 

다음으로는 보안 인증에서 ARS 인증 후, API Key 생성을 클릭하세요. 그러면 하단의 사용 중 API 리스트에 API 1개가 추가가 되어있습니다. 

 

API 키 보안 인증
API 키 보안 인증

 

새로 추가된 API의 오른쪽에 활성화 버튼을 클릭하시면, 가입하셨던 e-Mail로 아래와 같이 인증메일이 옵니다. 인증을 하게 되면 Secret Key가 화면에서 사라지게 되므로 미리 복사해놓고 인증을 하셔야 합니다. Secret Key를 복사를 하신 후 이메일의 Click 버튼을 클릭하여 인증을 하시면 됩니다. 이렇게 하면 사용이 가능한 API Key가 생성된 것입니다.

API 활성화
API 활성화

 

 

사전 준비 (2) : 샘플 소스 다운

이제 실제 API 매매에 사용될 샘플 코드를 다운로드합니다. 빗썸 Private API는 제공된 Secret Key를 그대로 요청하는 것이 아니고 자체적인 룰을 이용하여 암호화하여 요청을 해야 통신이 됩니다. 직접 구현이 어렵기도 하고 자체 룰이기 때문에 굳이 구현할 이유도 없어서, 빗썸에서 제공하는 샘플 코드를 이용하면 아주 간단하고 쉽게 API를 날릴 수 있습니다.

 

API Dosc 메뉴에 샘플 코드 다운로드 (apidocs.bithumb.com/docs/api_sample) 메뉴로 이동합니다.

 

No.1 가상자산 플랫폼, 빗썸

가상자산 거래소, 렌딩, 스테이킹, 예치, 비트코인, 이더리움, 리플, 비트코인캐시, 라이트코인, 비트코인 골드, 이오스, 이더리움클래식, 퀀텀, 체인링크, 실시간 시세, 쉽고 안전한 거래

www.bithumb.com

 

 

여기에 여러 가지 언어가 있지만, 우리가 사용할 JAVA 샘플 코드를 다운로드하여 줍니다.

 

샘플코드 다운로드

 

사전 준비 (3) : Spring Boot 프로젝트 생성

그런 다음 이제부터 개발을 진행할, Spring Boot 프로젝트를 생성해줍니다. 

 

STS (이클립스)를 실행해서, 좌측 Explorer 탭에서 마우스 오른쪽 클릭 New - Other를 클립, Spring Boot - Spring Starter Project를 클릭해줍니다.

 

Spring Boot 프로젝트 생성
Spring Boot 프로젝트 생성
Spring 스타터 프로젝트 생성
Spring Boot 프로젝트 생성

 

그다음 프로젝트의 기본정보인 Name, Group, Description 등은 임의로 아무렇게나 작성을 해줍니다. 보통 Package명은 com.회사명.어플케이션명 등의 형식을 많이 사용합니다.

 

프로젝트 기본 정보 작성
프로젝트 기본 정보

 

다음으로 Next 버튼을 클릭하여, Project Dependence 설정에서 기본적인 Web > Spring Web을 선택하고, DB는 SQL > H2 Database, Spring Data JPA, Front에는 JSP가 아닌 Thymeleaf를 사용할 예정이므로 Template Engines > Thymeleaf를 선택합니다. 추가로 개발 편의성을 위해 Developer Tools > Spring Boot DevTools를 선택하고 Finish를 눌러줍니다. 그럼 프로젝트 생성은 완료되었습니다.

 

  • Web > Spring Web
  • SQL > H2 Database, Spring Data JPA
  • Template Engines > Thymeleaf
  • Developer Tools > Spring Boot DevTools

(나중에 pom.xml에 아래 내용을 추가하셔도 됩니다.)

 

프로젝트 의존성 설정
프로젝트 의존성 설정

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-jpa</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-thymeleaf</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<scope>runtime</scope>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>com.h2database</groupId>
		<artifactId>h2</artifactId>
		<scope>runtime</scope>
	</dependency>
</dependencies>

 

그럼 다음 포스팅에서 프로젝트 기본 설정, DB 구성부터 시작해서 본격적인 개발을 시작하도록 하겠습니다.

 

 

 

 

반응형

댓글