잠자는 동안 코인이 돈을 벌어주는 즐거운 상상을 하며...
코인자동화를 위해 먼저 생각해야 하는 것 중에 하나가 매수 감시대상을 선정하는 것이다.
업비트 기준으로 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%에 달한다.
비트토렌트는 1호가당 가격변동폭이 4%를 넘어서며, 호가당 매매물량도 엄청나다. 어쩌다가 0.0024원에 매수가 돼버리면, 0.0025원까지 가면 좋겠지만 가기가 매우 힘들다. 손절을 하려면 0.0023원에 해야 하는데, 순식간에 -4% 손실이 생긴다.
개인적 취향에 따라 이러한 코인을 매수 감시대상에서 제외할 수 있다.
"tickers = pyupbit.get_tickers(fiat="KRW")"을 실행하면 업비트 한화 마켓에 상장된 모든 코인(ticker) 목록을 받을 수 있다. "fiat="KRW""으로 한화 마켓 상종 코인만 검색했다. 생략하면 한화, 미화, 비트코인 시장에 상장된 코인들이 모두 다운로드 된다.
"https://api.upbit.com/v1/ticker"로 업비트 api를 통해 현재가 정보를 조회할 수 있다. 끝부분에 "?markets=KRW-ETH" 등과 같이 코인 이름을 파라미터로 붙여주면 해당 코인의 현재를 조회할 수 있다.
현재가를 조회하면 위와 같이 json형태의 데이터를 확인할 수 있다. 필드명별 정의는 업비트의 api 페이지에서 확인할 수 있다.
requests 라이브러리에 url을 넘기면 위에서 본 json 형태의 데이터를 다운로드할 수 있다. 그 데이터를 pandas의 dataframe 형태로 변환하면 보기 좋게 변환된다.
위 활동을 한화 마켓에 상장된 113개의 모든 코인에 적용하는 for 문을 실행하면 다음의 결과를 확인할 수 있다.
이제 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개 코인중에 "KRW-XEC(이캐시)"가 있어 제거해보자.
총 코인 수가 30개에서 29개로 줄었고, "KRW-XEC"가 리스트에서 제외된 것을 확인할 수 있다.
이제 매수 감시대상 만들기 완성.
2022.04.13. 코리.
파이썬과 코인 자동매매를 학습하며 남기는 기록입니다.
조언과 지적 환영합니다.
'Bigdata_tips' 카테고리의 다른 글
라즈베리파이 xrdp 연결 오류 (2) | 2022.11.08 |
---|---|
[코코자] cory의 코인자동화 - 신규 등록 코인 매매 (0) | 2022.03.31 |
[코코자] 코리의 코인자동화 - 매매일지(2022.03.29.) (1) | 2022.03.30 |
[코코자] 코리의 코인자동화 - 매매일지(2022.03.28.) (0) | 2022.03.29 |
라즈베리파이, 모니터 없이 설치하기 (2) | 2021.08.03 |