지난 강좌에 이어.. 이번에는 내 포트폴리오를 가격변동에 따라 수익을 계산하고
일정 가격 변동이 오면 텔레그램으로 푸쉬를 받는 서비스 코드를 만들어 보겠습니다.
기본적인 서버 설정 및 환경 설정은 지난강좌를 확인 부탁드립니다.
기본적인 서버를 실행 가능한 분들에게 추천드리는 강좌입니다.
다음 강좌는
초보 분들을 위하여 첫 서버 설정 (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에 공유하여 여러 분들도 참고가 가능하게 할 예정입니다.
부족하지만 궁금하신점 있으시면 댓글 남겨주세요 :)
신기하네요! 좋은 글 감사드립니다 ^^
아직 잘 이해가 안되는지라 다음에 한 번 해봐야겠네요
즐거운 주말 보내세요~
두서없이 코딩을 하긴했는데, 혹시 따라하시다가 궁금하신점 있으시면 알려주세요. 좋은 밤 되세요 :)
응원합니다. 팔로하고 갑니다.
저도 재정거래나 트레이딩 봇을 생각하고 있는 중인데
변수가 정말 많은것 같아요.
팔로우 감사합니다!
저는 현재 총 3개 정도의 큰 부분으로 나누려고 합니다.
보안 레이어
아무래도 실제 계정을 이용하기 때문에 보안처리를 어떻게 해야할지.. 고민해야할것같습니다.
거래내역 처리
각 거래소의 정보를 불러오는 방식을 최적화 하여 최단시간에 거래내역을 확보 할수 있는 파트입니다.
거래 기법
사실상 영업기밀에 해당하는 부분입죠 ㅎㅎ MA (1min, 3min, 5min 등), 세계 시장동향, spread 등 아무래도 주식쪽 트레이딩 알고리즘을 도입해야할것같은데, quantitative analysis 도입해야할것 같습니다.
기대가 됩니다. 이쪽 분야에 관심이 많은데 어떤 프로그래밍 언어를 사용하여 만드는 건지요?