본문 바로가기
Python/업비트 자동매매

(Python) 업비트 자동 매매 프로그램 만들기(2) - 정보 조회

by 미니몬 2023. 8. 14.

목차

    728x90
    반응형

    Summary

    지난 게시물에서 업비트 자동 매매 프로그램을 만들기 위해서 필요한 환경을 구성해 보았습니다.

    이어서 이번 게시물에서는 업비트 자동 매매 프로그램 만들기 2탄 업비트 사이트에서 정보를 조회하는 방법입니다.

     

    혹시 파이썬 설치 / VSCode 설치 / 업비트 API 키 발급 안되어 있으신 분들은 이전 게시물을 확인해주세요.

     

    [Python] - (Python) 업비트 자동 매매 프로그램(1) - 환경구성

     

    (Python) 업비트 자동 매매 프로그램(1) - 환경구성

    Summary 앞으로 파이썬 언어와 업비트 API를 활용해서 가상화폐를 자동으로 매수/매도 하는 프로그램을 만들어 보겠습니다. 이번 게시물에서는 개발을 시작하기 전 갖춰야 할 환경을 소개해 보도

    mcc96.tistory.com


    0) vscode 에서 업비트 API 연동하기

    • 우선 API 사용을 위해 API 키를 발급받을 때 Access Key, Secret Key를 "Key.txt" 파일에 저장
    • 터미널에서 필요한 모듈을 설치
      pip install pyupbit
    • 업비트 API 모듈 import 및 Upbit Key 연동
    import pyupbit
    
    ### 거래할 코인 symbol
    coin = "KRW-XRP" 
    
    ### API 키 파일 참조
    with open("key.txt") as f:
        access_key, secret_key = [line.strip() for line in f.readlines()]
    
    ### 업비트 연동
    upbit = pyupbit.Upbit(access_key, secret_key)

     

    위 코드는 기본적으로 기재한 뒤 코드를 작성 하겠습니다.

     

     

    1) 현재 보유금액 조회

    • 보유 현금 조회
      upbit.get_balance("KRW")
    def get_balance_cash():
        return upbit.get_balance("KRW")
    
    print(get_cur_balance())

     

     

    2) 현재가격 조회

    • 특정 코인의 현재 가격 조회
      pyupbit.get_current_price(ticker)
    def get_cur_price(ticker):
        return pyupbit.get_current_price(ticker)
    
    print(get_cur_price(coin))

     

     

    참고로 거래할 코인의 티커명은 사전에 알아두셔야합니다.

    import requests
    
    url = "https://api.upbit.com/v1/market/all"
    res = requests.get(url).json()
    
    ticker_list = {}
    
    for i in res:
        name = i['korean_name']
        ticker = i['market']
    
        if ticker.startswith("KRW"):
            ticker_list[name] = ticker
            
    # 전체 항목 조회        
    print(ticker_list)
    
    # 코인 이름으로 ticker 찾기
    print(ticker_list['리플'])

     

     

    3) 현재 코인 보유 수량 조회

    • 특정 코인의 현재 보유 수량 조회
      upbit.get_balance(ticker)
    def get_balance_coin(ticker):
        return upbit.get_balance(ticker)
    
    print(get_balance_coin(coin))

     

     

    4) 평균 매수가 조회

    • 특정 코인의 평균 매수 가격 조회
      upbit.get_avg_buy_price(ticker)
    def get_buy_avg(ticker):
        return upbit.get_avg_buy_price(ticker)
    
    print(get_buy_avg(coin))

     

     

    5) 주문 (미체결)정보 조회

    • 특정 코인의 미체결 된 주문 정보 조회
      upbit.get_order(ticker)
        또는
      upbit.get_order(uuid)
    def get_order_info(ticker):
        try:
            orders = upbit.get_order(ticker)
            if "error" in orders[0]:
                return None
            return orders[-1]  # 마지막 주문건에 대한 정보 리턴
        except Exception as e:
            print(e)
            return None
    
    # info는 원하는 symbol 을 입력하거나, 주문의 uuid 를 입력
    print(get_order_info(info))

     

    • get_order 구문 파악
      ticker_or_uuid = 조회할 ticker(주문 전체 조회) 또는 uuid(단일 조회)
      state = 현재 상태 (생략가능)
      limit = 출력할 주문 정보 개수 (생략가능)
    get_order(ticker_or_uuid='KRW-XRP',
              state='wait',
              limit=100)

     

    결과는 리스트 형태로 되어있습니다. 리스트의 인덱스는 주문 역순입니다.
    가장 최근 주문 정보는 리스트의 마지막에 위치합니다.

    각 리스트의 내용은 dictionary 형태로 되어있습니다.
    해당 dictionary 내용은 주문의 정보를 나타냅니다.

     

    항목(키) 설명(값)
    uuid 주문의 고유 식별자
    side 주문 타입 ('ask'는 매도 / 'bid'는 매수 주문을 의미)
    ord_type 주문 유형 (예: 'limit'는 한도 주문을 의미)
    price 주문 가격
    state 주문 상태 (예: 'wait'는 대기 중인 주문을 의미)
    market 주문이 발생한 시장 (예: 'KRW-XRP'는 한국 원화로 리플을 거래하는 시장을 의미)
    created_at 주문 생성 시간
    volume 주문 수량
    remaining_volume 남아있는 주문량
    reserved_fee 예약된 수수료
    remaining_fee 남아있는 수수료
    paid_fee 지불된 수수료
    locked locking 금액 또는 자산
    executed_volume 실행된 주문량
    trades_count 거래 횟수

     

    오늘은 이렇게 API를 활용한 자산 / 가격 / 코인정보 등을 조회하는 방법을 알아보았습니다.
    다음 게시물에서는 주문하는 방법을 알아보도록 하겠습니다.

    728x90
    반응형