코인 - 라이프 - 밸런스

당신의 코인과 인생의 밸런스를 위하여 코라밸을 만들었습니다.

코라밸 UI 바로가기

함께만드는 자동매매

업비트 자동매매 프로그램 만들기 - 기본

코라밸 2022. 1. 17. 17:32
320x100

안녕하세요.

코라밸 입니다.

 

이번 글에서는 업비트 자동매매 프로그램을 같이 만들어 보겠습니다.

 

우선 업비트 개발자 문서 페이지를 살펴 보겠습니다. (개발자 문서 페이지 바로가기)

  1. 전체 계좌 조회
    방식: REST API
    용도: 현재 보유한 코인의 정보를 조회
    사용: 1초에 한번씩 호출하여 현재가와 평단가를 비교 -> 현재 손익률 계산 가능
  2. 주문 리스트 조회
    방식: REST API
    용도: 보유한 미체결 주문을 조회
    사용:
        1. 1초에 한번씩 호출하며 한번 호출할 때 최대 100개의 주문을 가져올 수 있음
        2. 호출해서 배열에 저장
        3. 저장된 배열과 조회된 데이터를 비교하여 변경된 주문이 있는지 확인
        4. 변경된 주문은 체결된 주문이 체결완료된 주문인지 확인 후 처리
  3. 주문하기
    방식: REST API
    용도: 매수 주문 및 매도 주문 전송
    사용:
        - 매수 주문 체결 시 조건식에 따라 매도 주문을 전송
        - 매도 주문 체결 시 조건식에 따라 매수 주문을 전송
  4. 시세 Ticker 조회
    방식: Websocket
    용도: 실시간 시세정보를 수신
    사용: 실시간으로 들어오는 시세 정보를 저장하고 사용

이전글에서 언급한 요청 수 제한 내용입니다.

참고하셔서 아이피가 차단되는 일이 없길 바랍니다.

웹소켓을 이용해서 업비트에서 원화 마켓의 코인들의 현재가를 가져오는 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const axios = require('axios');
const W3CWebSocket = require('websocket').w3cwebsocket;
const { uuid } = require('uuidv4');
 
let markets = [];
let upbitTickers = [];
let upbitTicker = null;
 
const tickerWebSocket = () => {
    try {
        upbitTicker = null;
        upbitTicker = new W3CWebSocket('wss://api.upbit.com/websocket/v1');
        upbitTicker.binaryType = 'arraybuffer';
        let arrMarkets = [];
        for (const market of markets) {
            arrMarkets.push(market.market);
        }
        upbitTicker.onopen = () => {
            upbitTicker.send(
                JSON.stringify([
                    { ticket: uuid() },
                    {
                        type: 'ticker',
                        codes: arrMarkets,
                        isOnlySnapshot: false,
                        isOnlyRealtime: true,
                    },
                    { foramt: 'SIMPLE' },
                ])
            );
        };
        upbitTicker.onmessage = (e) => {
            const enc = new TextDecoder('utf-8');
            const arr = new Uint8Array(e.data);
            const ticker = JSON.parse(enc.decode(arr));
            upbitTickers[ticker.cd] = ticker.tp;
            console.log(`${ticker.cd}: ${ticker.tp}`);
        };
        upbitTicker.onerror = () => {
            console.log('Websocker ticker ERROR occurred.');
        };
        upbitTicker.onclose = () => {
            tickerWebSocket();
        };
    } catch (error) {
        log.error(moment().local().format(), error);
    }
};
 
axios
    .get('https://api.upbit.com/v1/market/all', {
        params: { isDetails: false },
    })
    .then((response) => {
        markets = response.data.filter((x) => x.market.startsWith('KRW-'));
        tickerWebSocket();
    })
    .catch((error) => {
        log.error(moment().local().format(), error);
    });
cs

 

다음글에서 주문 전송 및 자동매매 실습 코드를 작성해보도록 하겠습니다.

 

 

자동매매 개발자 오픈톡: https://open.kakao.com/o/gbD73Bud

 

함께만드는 자동매매

#코인 #암호화폐 #자동매매 #반자동매매

open.kakao.com

 

320x100