지난 강좌에 이어.. 이번에는 내 포트폴리오를 가격변동에 따라 수익을 계산하고
일정 가격 변동이 오면 텔레그램으로 푸쉬를 받는 서비스 코드를 만들어 보겠습니다.
기본적인 서버 설정 및 환경 설정은 지난강좌를 확인 부탁드립니다.
기본적인 서버를 실행 가능한 분들에게 추천드리는 강좌입니다.
다음 강좌는
초보 분들을 위하여 첫 서버 설정 (Amazon AWS EC2 Free Tier) 강좌
기초 서버 설정 및 스크립트 제작 강좌
간단한 서버 운용법에 대한 강좌
를 작성해보도록 하겠습니다.
node.js 스크립트
const publicApi = require('poloniex-api').publicApi.create();
const TelegramBot = require('node-telegram-bot-api');
var request = require('sync-request');
const token = 'YOUR_TELEGRAM_BOT_TOKEN';
const bot = new TelegramBot(token, {polling: true});
var price_last =0;
var price_current=0;
var USER = 'YOUR_TELEGRAM_NUMBER';
var idx = 0;
function push_channel(text) {
var opt = {
disable_web_page_preview: true,
parse_mode: "HTML"
};
bot.sendMessage(USER, text, opt);
price_last=price_current;
idx++;
}
function get_newprice(arg){
var res = request('GET', 'https://api.coinone.co.kr/ticker/?format=json¤cy=all');
var coinone_price = JSON.parse(res.getBody().toString("utf8"));
var price_current = coinone_price.eth.last;
//eth 는 이더리움 btc는 비트코인 etc는 이더리움 클래식 입니다.
return price_current;
}
function myFunc (arg) {
price_current=get_newprice("d");
if(Math.abs(price_last - price_current) > 3000 ) {
//여기서 3000은 3000원 이상 변동이 있을때 아래 스크립트를 실행합니다.
var total_profit = price_current * 10 - 3000000;
// 총 수익 계산법은 "현재가격 * 현재 가지고 있는 코인수 - 투자금" 으로 계산하였습니다.
msg = "변동: " + (price_current - price_last).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "원 \n";
msg += "======== 수익 ======== \n";
msg += "전 대비 수익: " + (( price_current - price_last ) * 10).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "원 \n";
msg += "총 수익: " + total_profit.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "원\n";
msg += "===== 현재 가격 =====\n";
msg += "ETH: " + Number(price_current).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") +"원\n";
msg += "IDX: "+idx;
push_channel(msg)
}
}
setInterval(myFunc, 1000);
//서버와 1초마다 통신하여 가격을 확인합니다.
주요 로직
주요 로직은 다음과 같습니다.
- 현재 가격을 체크한다.
- 지난 주기 가격대비 변동을 체크한다. (현재는 1초)
- 변동이 내 한계보다 높으면 수익을 계산한다.
- 계산된 수익과 변동을 텔레그램으로 보내준다.
- 1초마다 이 루프를 확인한다.
기타
프로그래밍에 있어 제일 중요한 부분은 위와 같이 첫 로직을 잡는 일입니다.
사실상 로직만 잡게 된다면 코드를 짜는 부분은 어렵지 않습니다.
제 개인적인 로드맵은 가격 확인까지 완료 하였으니, 재정거래나 트레이딩 봇을 만들어볼까 하는데요,
개발 하면서 milestone이나 일부 결과물은 steemit에 공유하여 여러 분들도 참고가 가능하게 할 예정입니다.
부족하지만 궁금하신점 있으시면 댓글 남겨주세요 :)