____  ___    _  _     _   _ _____     _______
 / ___|/ _ \  | || |   | | | |_ _\ \   / / ____|
| |  _| | | | | || |_  | |_| || | \ \ / /|  _|
| |_| | |_| | |__   _| |  _  || |  \ V / | |___
 \____|\___/     |_|   |_| |_|___|  \_/  |_____|

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

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

BY: @jys5220 | CREATED: June 24, 2017, 3:11 p.m. | VOTES: 9 | PAYOUT: $6.81 | [ VOTE ]

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

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

다음 강좌는
초보 분들을 위하여 첫 서버 설정 (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에 공유하여 여러 분들도 참고가 가능하게 할 예정입니다.

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

TAGS: [ #coinkorea ] [ #develop ] [ #development ] [ #nodejs ] [ #code ]

Replies

@kaching | June 24, 2017, 3:31 p.m. | Votes: 0 | [ VOTE ]

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

@jys5220 | June 24, 2017, 3:37 p.m. | Votes: 0 | [ VOTE ]

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

@nhj12311 | June 24, 2017, 4:03 p.m. | Votes: 0 | [ VOTE ]

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

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

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

@jys5220 | June 24, 2017, 4:10 p.m. | Votes: 0 | [ VOTE ]

팔로우 감사합니다!

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

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

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

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

@nhj12311 | June 24, 2017, 4:42 p.m. | Votes: 0 | [ VOTE ]

댓글 감사합니다.

저도 고민들을 해봤던 부분이라 제가 생각했던 내용은 이렇습니다. ^^

1. api키를 이용하는데에 부담이 엄청난 듯 합니다.

서버에 저장하기도 무섭고 앱은 그래도 네이티브 영역이라

가능할것도 같습니다만... 트러스트존 같은?

이게 api로 사용가능한지는 잘 모르겠지만.

웹은 방법이 안나올거 같아요. ㅎㅎ.

2. 전 이건 불러와서는 답이 없다고 생각하고 거래소별 비트코인 시세는 다 디비화 시켜야 된다고 봐영.
안그러면 속도 정말 안나올듯.( 차트 데이터 제공이 몇년전까지 될지 모르겠네요. )

3. 이 부분에 대해서 잘 아시는거 같아서 정말 부럽네요.
전 트레이딩 지식은 전무해서 ( 주식 경험 거의 없고, 코인도 3달 정도 되었습니다. )
전 임시 계정 돌려가면서 부딪쳐서 만들어볼 생각입니다.
전 코인 별 스코어링 시스템을 제작해서 돌려볼까 하는데
사회적, 경제적 이슈에 따른 정성적, 정량적 데이터를 인풋해주고
이평선 추세에 대한 기준 두가지를 믹스해서
해볼려는 생각이 있네요. 자기전이나 지하철 같은데서 고민을 해본답니다.
고민만...! 너무 큰 프로젝트라 겸업하면서는 도저히 안될듯 해요. 방법론만 혼자 상상 해보는거죠. ㅋㅋ

ps. 요새 폴로닉스 보면 전혀 근거 없이 오르락 내리락하는게 많아서 의미가 있을지 모르겠습니다. ㅠㅠ
실제로도 그냥 존버하신 분들이 수익률이 더 높은 경우가 많아서 ㅎㅎ
그냥 답은 존버일지도 모르겠습니다

@ianereht | June 24, 2017, 4:50 p.m. | Votes: 0 | [ VOTE ]

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

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>