[Node.js] 내 포트폴리오를 텔레그램 푸쉬로 받기

in #coinkorea7 years ago (edited)

지난 강좌에 이어.. 이번에는 내 포트폴리오를 가격변동에 따라 수익을 계산하고
일정 가격 변동이 오면 텔레그램으로 푸쉬를 받는 서비스 코드를 만들어 보겠습니다.

기본적인 서버 설정 및 환경 설정은 지난강좌를 확인 부탁드립니다.
기본적인 서버를 실행 가능한 분들에게 추천드리는 강좌입니다.

다음 강좌는
초보 분들을 위하여 첫 서버 설정 (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&currency=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. 현재 가격을 체크한다.
  2. 지난 주기 가격대비 변동을 체크한다. (현재는 1초)
  3. 변동이 내 한계보다 높으면 수익을 계산한다.
  4. 계산된 수익과 변동을 텔레그램으로 보내준다.
  5. 1초마다 이 루프를 확인한다.

기타

프로그래밍에 있어 제일 중요한 부분은 위와 같이 첫 로직을 잡는 일입니다.
사실상 로직만 잡게 된다면 코드를 짜는 부분은 어렵지 않습니다.

제 개인적인 로드맵은 가격 확인까지 완료 하였으니, 재정거래나 트레이딩 봇을 만들어볼까 하는데요,
개발 하면서 milestone이나 일부 결과물은 steemit에 공유하여 여러 분들도 참고가 가능하게 할 예정입니다.

부족하지만 궁금하신점 있으시면 댓글 남겨주세요 :)

Sort:  

신기하네요! 좋은 글 감사드립니다 ^^
아직 잘 이해가 안되는지라 다음에 한 번 해봐야겠네요
즐거운 주말 보내세요~

두서없이 코딩을 하긴했는데, 혹시 따라하시다가 궁금하신점 있으시면 알려주세요. 좋은 밤 되세요 :)

응원합니다. 팔로하고 갑니다.

저도 재정거래나 트레이딩 봇을 생각하고 있는 중인데

변수가 정말 많은것 같아요.

팔로우 감사합니다!

저는 현재 총 3개 정도의 큰 부분으로 나누려고 합니다.

  1. 보안 레이어
    아무래도 실제 계정을 이용하기 때문에 보안처리를 어떻게 해야할지.. 고민해야할것같습니다.

  2. 거래내역 처리
    각 거래소의 정보를 불러오는 방식을 최적화 하여 최단시간에 거래내역을 확보 할수 있는 파트입니다.

  3. 거래 기법
    사실상 영업기밀에 해당하는 부분입죠 ㅎㅎ MA (1min, 3min, 5min 등), 세계 시장동향, spread 등 아무래도 주식쪽 트레이딩 알고리즘을 도입해야할것같은데, quantitative analysis 도입해야할것 같습니다.

Loading...

기대가 됩니다. 이쪽 분야에 관심이 많은데 어떤 프로그래밍 언어를 사용하여 만드는 건지요?