잠자는 동안 코인이 돈을 벌어주는 즐거운 상상을 하며...

 

 

코인자동화를 위해 먼저 생각해야 하는 것 중에 하나가 매수 감시대상을 선정하는 것이다.

업비트 기준으로 113개 정도 되는 원화시장 상장 코인 중 113개 모든 코인을 감시할지, 아니면 상위 코인 30개 정도만 감시할지 고민이 필요하다.

 

나는 후자를 선택했다. 설정된 로직(기준)에 따라 거래량이 매우 적은 코인을 매수해버리면, 적은 거래량 때문에 매도하기가 매우 어렵기 때문이다.

 

내가 선택한 방법은 지난 24시간 동안의 거래량을 기준으로 정렬하여 상위 30개를 매수 감시대상으로 삼았다. 매수 감시대상에서 제외하고 싶은 코인은 "pass_tickers"에 담아 제거했다. 함수화한 코드는 다음과 같다.

 

import pandas as pd
import pyupbit
import requests

def get_tickers(watch_range=30, pass_tickers=['KRW-BTT', 'KRW-XEC']):
    ticker_df = pd.DataFrame()
    tickers = pyupbit.get_tickers(fiat="KRW")

    for ticker in tickers:
        url = "https://api.upbit.com/v1/ticker?markets=" + ticker
        response = requests.get(url)
        ticker_df = ticker_df.append(pd.DataFrame(response.json()))
        time.sleep(0.05)

    ticker_df = ticker_df.sort_values(by='acc_trade_price_24h', ascending=False).reset_index(drop=True)
    ticker_df = list(ticker_df['market'][0:watch_range])

    for pt in pass_tickers:
        if pt in tickers:
            tickers.remove(pt)
        else:
            pass

    return tickers

 

 

거래량 상위 30개만 매수 감시대상에 포함할 것이므로, watch_range 변수를 30으로 하고, 거래량이 아무리 많아도 매수 감시대상에서 제외할 코인을 리스트로 pass_tickers에 담았다. 

 

BTT(비트토렌트)와 XEC(이캐시) 코인은 현재 가격이 각 0.0024원, 0.1130원이다. 비트토렌트는 가격이 너무 낮다보니 1호가 변동폭이 4%에 달한다. 

 

업비트 비트토렌드 현재가격(2022.04.13. 00:06)

 

비트토렌트는 1호가당 가격변동폭이 4%를 넘어서며, 호가당 매매물량도 엄청나다. 어쩌다가 0.0024원에 매수가 돼버리면, 0.0025원까지 가면 좋겠지만 가기가 매우 힘들다. 손절을 하려면 0.0023원에 해야 하는데, 순식간에 -4% 손실이 생긴다.

 

개인적 취향에 따라 이러한 코인을 매수 감시대상에서 제외할 수 있다.

 

"tickers = pyupbit.get_tickers(fiat="KRW")"을 실행하면 업비트 한화 마켓에 상장된 모든 코인(ticker) 목록을 받을 수 있다. "fiat="KRW""으로 한화 마켓 상종 코인만 검색했다. 생략하면 한화, 미화, 비트코인 시장에 상장된 코인들이 모두 다운로드 된다.

 

pyupbit.get_tickers(fiat="KRW")

 

 

"https://api.upbit.com/v1/ticker"로 업비트 api를 통해 현재가 정보를 조회할 수 있다. 끝부분에 "?markets=KRW-ETH" 등과 같이 코인 이름을 파라미터로 붙여주면 해당 코인의 현재를 조회할 수 있다. 

 

 

업비트 이더리움 현재가 조회

 

현재가를 조회하면 위와 같이 json형태의 데이터를 확인할 수 있다. 필드명별 정의는 업비트의 api 페이지에서 확인할 수 있다.

 

 

업비트 api 현재가 조회

 

 

requests 라이브러리에 url을 넘기면 위에서 본 json 형태의 데이터를 다운로드할 수 있다. 그 데이터를 pandas의 dataframe 형태로 변환하면 보기 좋게 변환된다.

 

업비트 이더리움 현재가 조회 결과를 dataframe으로 변환

 

 

 

위 활동을 한화 마켓에 상장된 113개의 모든 코인에 적용하는 for 문을 실행하면 다음의 결과를 확인할 수 있다.

 

업비트 한화마켓 코인들의 현재가 조회 결과의 dataframe

 

 

이제 113개 코인의 현재가 정보를 모두 다운로드하였다.

"ticker_df = ticker_df.sort_values(by='acc_trade_price_24h', ascending=False).reset_index(drop=True)"를 통해 24시간 누적거래량(acc_trade_price_24h)을 기준으로 내림차순 정렬하고, index를 초기화한다.

 

"ticker_df = list(ticker_df['market'][0:watch_range])"를 통해 24시간 누적 거래량 상위 30개를 리스트로 생성한다. 

 

이제 매수 감시대상 30개 코인이 선정되었다.

 

 

30개 코인중에 "KRW-XEC(이캐시)"가 있어 제거해보자.

 

불필요 코인 삭제

 

총 코인 수가 30개에서 29개로 줄었고, "KRW-XEC"가 리스트에서 제외된 것을 확인할 수 있다.

이제 매수 감시대상 만들기 완성.

 

 

2022.04.13. 코리.

 

 

파이썬과 코인 자동매매를 학습하며 남기는 기록입니다.

조언과 지적 환영합니다.

 

+ Recent posts