NodeJS로 가상화폐 자동거래 봇이나 자전거래 봇 등 다양한 봇이 존재하는데 대부분 이러한 봇이 엄청나게 어려운 작업이라 생각해서 실제 개발해 보려고 하는 사람은 소수일 듯 하다. 물론 프로그램을 안 짜본 사람에게는 어려울 수 있으나 기본 코딩을 할 줄 안다면 봇 개발 또한 그렇게 어려운 일이 아닙니다.

여기서는 간단하게 모든 가상화폐 봇의 기본이 되는 가격 모니터링 하는 프로그램을 아주 쉽게 스텝 바이 스텝으로 개발하는 과정을 보여주도록 하겠습니다.

우리가 쓸 API는

https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT

바이낸스 BTC/USDT 현재 가격을 리턴하는 공개 API.

로 공개 API이기 때문에 어떠한 인증, 설정이 필요없습니다. 그냥 저 링크를 클릭하면 가격이 아래처럼 JSON 으로 보내집니다.

{
"symbol": "BTCUSDT",
"price": "20792.34000000"
}

자 이제 우선 NodeJS에서 저 API를 Call하여 price를 출력해 봅시다.

내장 모듈인 http 를 사용할 수도 있고, request 를 사용할 수도 있으나 가장 간단한 axios로 쉽게 호출해 보도록 하겠습니다.

처음이니 npm init 부터.

폴더 하나 만들고 새로 생성된 폴더에서

npm init

별도로 설정해 줄 건 없고 계속 엔터 친 후에 마지막에 yes로 쳐 주시면 package.json 파일이 생성 됩니다.

그 뒤에 npm 으로 axios 를 설치해 줍니다.

npm install –save axios

정상적으로 설치가 완료되면 이제 axios를 사용할 수 있습니다. index.js 파일을 만드시고 아래 코드를 입력, 저장한 후에 node index.js 를 하시면 현재 바이낸스의 비트코인 가격이 표시될 겁니다.

const Axios = require('axios');

Axios.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT')
  .then(response => {
    console.log(response.data.price);
  })

자 가격은 구해 왔는데 모니터링 프로그램이니 계속 실행이 되어야 겠지요? 매 시간마다 위 코드를 실행할 수 있게 만들어 보겠습니다.

여러 방법이 있지만 node-schedule을 이용해서 간단하게 작성해 보겠습니다.

npm install –save node-schedule

한 후에 node-schedule을 이용해서 매 3초마다 위 코드를 실행하도록 변경하면 다음과 같습니다.

const Axios = require('axios');
const schedule = require('node-schedule');

schedule.scheduleJob('*/3 * * * * *', function()
{
  Axios.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT')
  .then(response => {
    console.log(response.data.price);
  })
});

위와 같이 하면 매 3초마다 현재 바이낸스의 비트코인 가격을 표시해 주며 별도로 종료되지 않고 계속 실행됩니다.

아주 기본적인 봇이 만들어졌습니다. 예를 들어 비트코인이 1억이 될 때 알람을 받고 싶으시면 다음과 같이 수정하시면 됩니다.

const Axios = require('axios');
const schedule = require('node-schedule');

schedule.scheduleJob('*/3 * * * * *', function()
{
  Axios.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT')
  .then(response => {
    if ( response.data.price > 100000 )
      console.log("Finally")
  })
});

켜 놓으시고 Finally가 출력될 때까지 기다리시면 됩니다.

위 코드는 자동 거래 봇의 가장 기본적인 형태이고 실제 봇은 가격, 거래량 체크, 환율도 체크해야 하고 변동폭 체크, private API 인증 후 자동으로 주문, 판매 하고 API가 에러 리턴 또는 이상한 값을 출력할 경우 처리 (매우 중요) 등 해야할 일이 많습니다. 그러나 결국 기본은 위와 같은 형태이니 참고하시고 실제로 진행해 보시기 바랍니다.