//네이버

이번 페이지에서는 전체 리스트를 받고, 제외하고 싶은 항목들을 제거하는 방법에 대해 이야기한다.

 

0. 트레이딩 대상 코인 종류

모든 코인을 대상이 아닌, 내가 생각한 조건에 해당하는 코인만으로 트레이딩을 할 계획이다

조건은 아래와 같다.

 

   1) 원화 상장된 코인

   2) 업비트 공지사항에 투자 유의 올라온 코인들은 제외 (첫페이지만 크롤링)

   3) 내 블로그에 올려둔 코인들은 제외 (실시간으로 제외 코인을 추가하기 위해서)

 

 

1. 전체 리스트 받기

업비트의 Open API를 통하면 업비트에 상장된 전체 코인 리스트를 받을 수 있다.

import pyupbit

tickers = pyupbit.get_tickers()
print(tickers)

 

 

2. 제외할 종목들 정하기

2-1) 원화 대상만 남기기

우선 원화 상장된 코인은 리스트에서 'KRW-'로 시작하는 요소만 이용하면된다.

tickers = list(filter(lambda x: x.startswith('KRW-'), tickers)) 

 

2-2) 크롤링하여 제외하기

2), 3)은 똑같이 크롤링을 기반으로 하기에 업비트 크롤링만 기준으로 작성하면,

업비트 공지사항(https://api-manager.upbit.com/api/v1/notices?page=1&per_page=20&thread_name=general)에서 

코인이름과 '유의'는 들어가지만 '해제'는 들어가지 않는 코인들만 남기었다.

def badlist_from_upbit():
    url = 'https://api-manager.upbit.com/api/v1/notices?page=1&per_page=20&thread_name=general'

    res = requests.get(url)

    dictedjs = json.loads(res.text)  # 페이지의 json형식의 text를 dict로 저장

    data_ = dictedjs['data']  # 그중 key가 data인 value를 뽑음
    lists_ = data_['list']  # 그중 key가 list인 value를 뽑음

    titles = []
    for i in range(len(lists_)):  # list의 요소는 각각 dict고, dict 중 key가 title인 value를 뽑음
        titles.append(lists_[i]['title'])


    tickers = pyupbit.get_tickers()
    tickers = list(filter(lambda x: x.startswith('KRW-'), tickers))  # 그 중 원화 대상만 남기기

    search = 'KRW-'
    for i, word in enumerate(tickers):
        if search in word:
            tickers[i] = word.strip(search)

    badcoins = []
    for tic in tickers:
        for title in titles:
            if (tic in title) and ('유의' in title) and (not '해제' in title):
                badcoins.append('KRW-'+tic)

    return badcoins

 

+ Recent posts