개발자의 삶/코인

Nodejs로 바이낸스 API 연동을 해봅시다.

비전공돌이 2022. 8. 3. 00:49

사실 제가 코인 자동매매 프로그램을 만들기 시작한것은 꽤 오래되었습니다.

 

작년 10월에 자바로 연동하는 글을 하나 적은 적이 있긴 합니다만, 사실은 그보다 훨씬 더 전부터 시작했었죠.

 

처음에는 빗썸에서 자동매매를 만들었고, 이 후 업비트, 그리고 그 이후에 바이낸스까지 만들어보았습니다.

시작할 당시에는 개발자의 호기심이 더 컸어요. 잘 된다면 밥값 정도 벌리면 괜찮겠다는 생각이었죠.

어쩌다보니 지금은 본업도, 재테크도 모두 자동매매 프로그램을 이용하고 있게 되었네요.

 

사설이 길었네요. 어쨌든 이번에는 node.js로 바이낸스 API 연동을 해볼 겁니다.

저는 이미 해봤지만 이 글을 보시는 분들이 따라하실 수 있게 샘플 코드를 만들어 볼게요.

 

디렉토리 생성

먼저 사용할 디렉토리를 하나 만듭니다. 이름은 상관없어요. 본인이 하고 싶은대로 하시면 됩니다.

저는 binanceNodeBot이라고 만들었습니다.

 

음..참고로 제가 노드 강의를 하진 않을 겁니다. nodejs는 어느정도 다루실 수 있다는 전제로 작성된 글입니다.

이제 코드를 작성할 건데요. 편하신 방식으로 하시면 됩니다.

저는 웹스톰을 사용하겠습니다. 저는 있는 김에 쓰는 겁니다.

무료버전으로는 vscode가 훌륭합니다.

 

IDE에서 해당 디렉토리를 열어봅니다.

workspace로 사용할 디렉토리를 열어보세요.

당연히 아무것도 없습니다.

 

파일을 하나 만듭니다. 저는 asset.js라고 만들었습니다.

첫 번째 파일. asset.js

파일명에서 추측이 가능하실 수 있습니다.

본인의 계좌를 조회하는 기능을 만들어 볼 생각입니다.

 

먼저 테스트를 테스트를 해보겠습니다.

 

console.log('hello')

이렇게 넣고 터미널에서 node asset.js 라고 입력해봅니다.

teminal을 통해 실행한 결과

위와 같이 hello가 출력되는 것을 보실 수 있습니다.

참고로 저는 웹스톰에 Terminal 창을 이용했습니다. vscode에도 터미널 창이 있죠.

IDE 수준이 아닌 에디터 수준으로 코딩 하시는 분들은 일반 터미널에서 파일이 위치한 경로에서 명령을 실행해도 됩니다.

참고로 node 명령어가 없다면 node.js 설치가 안된 상태입니다.

node.js 설치와 기초 강좌를 좀 보고 오시길 권해드립니다.

 

자 그러면 다음 단계로 넘어가 보겠습니다.

 

바이낸스는 node.js용 connector가 있습니다. 터미널에서 아래 명령어를 입력해주세요.

npm init

위 명령어를 치면 프롬프트로 이름부터 물어보는데...적당히 전부 엔터 쳐도 됩니다. 그러면 package.json 파일이 생성될 거에요.

그 후에 아래 명령어를 다시 입력합니다.

npm install @binance/connector

음..노드 초보자분들이 이해하기 쉽게 설명드리면...바이낸스 API를 사용하기 위한 라이브러리 혹은 SDK를 추가한다고 보시면 됩니다.

그러면 package.json 파일에 다음과 같은 항목이 추가됩니다.

"dependencies": {
  "@binance/connector": "^1.12.0"
}

이제 준비는 끝났습니다.

이제 계좌를 조회하는 코드를 짜보도록 합시다.

 

먼저 apikey.json으로 파일을 하나 만들겠습니다.

{
  "BINANCE_API_KEY": "본인의 API KEY를 입력하세요.",
  "BINANCE_API_SECRET": "본인의 API SECRET을 입력하세요."
}

위와 같이 JSON 형태로 key 정보를 입력합니다.

 

그리고 asset.js 파일을 다시 열겠습니다.

const API_KEY = require("./apikey.json")
const { Spot } = require('@binance/connector')

맨 위에 위와 같이 입력합니다. 저는 cjs 스타일로 작성했습니다.

바이낸스 커넥터와 apikey.json 파일을 불러온 것이 보이네요.

 

const client = new Spot(API_KEY.BINANCE_API_KEY, API_KEY.BINANCE_API_SECRET)

위와 같이 바이낸스 spot client를 선언합니다. 여기에 apikey.json의 파일에 작성한 항목이 사용됩니다.

 

이 클라이언트를 사용해 계좌를 조회해보겠습니다.

const API_KEY = require("./apikey.json")
const { Spot } = require('@binance/connector')

const client = new Spot(API_KEY.BINANCE_API_KEY, API_KEY.BINANCE_API_SECRET)

client.userAsset()
.then((response) => {
    console.log(response)
})
.catch(error => console.error(error))
node asset.js

실행 결과

일부만 스샷했습니다.

해더부터 이런 저런 데이터들이 잔뜩 포함되어 있습니다.

여기서 우리는 위에 보이는 data 항목이 필요합니다. 아래처럼 바꿔봅니다.

const API_KEY = require("./apikey.json")
const { Spot } = require('@binance/connector')

const client = new Spot(API_KEY.BINANCE_API_KEY, API_KEY.BINANCE_API_SECRET)

client.userAsset()
.then((response) => {
    // console.log(response.data)
    response.data.forEach((c) => {
        console.log(`asset : ${c.asset}, 수량 : ${c.free}`)
    })
})
.catch(error => console.error(error))

실행 결과로 코인 수량이 보여집니다.

 

이렇게 바이낸스의 계좌를 조회해보았습니다.

바이낸스는 커넥터가 잘 만들어져 있기 때문에 API 연계 자체는 매우 쉬운 편입니다.

 

다음 편에서는 매수와 매도 기능도 구현을 해보도록 하겠습니다.