[암호화폐] 특정 암호화폐의 현재가를 알고 싶다면 coingecko로 가~요~

본인이 보유하고 있는 암호화폐의 현재가를 한번에 알 수 있으면 편할 것 같습니다.
그리고 yieldwatch의 경우에는 LP로 공급중인 pair들의 현재 가치를 보여주는 기능이 있습니다. 이를 구현하기 위해서는 코인들의 현재가를 알아야 합니다.

코인은 상장된 곳이 다양하기 때문에 특정 거래소에서 모든 값을 구할 수가 없습니다. 그렇다고 여기 저기 API를 이용해서 현재가를 받아오는 것도 조금 귀찮기는하죠.

그러던 중 coingecko에서 지원하는 API에서 거의 모든 코인의 현재가와 관련 정보를 제공한다는 사실을 발견하였습니다.

https://www.coingecko.com/en/api

API문서는 아래 사이트에서 확인이 가능합니다.
https://www.coingecko.com/api/documentations/v3

API 문서보고 하나하나 개발하면 되겠지만,, 누군가 API를 만들어 놓았겠죠. 찾아보겠습니다.

역시나.. 고마우신 분이 계시군요.

https://github.com/man-c/pycoingecko

CoinGecko API wrapper

그럼 coingecko API를 이용하여 원하는 코인의 현재가를 확인하는 방법에 대하여 기술하도록 하겠습니다.

우선 pycoingecko를 설치합니다.

pip install pycoingecko 

coingecko API를 이용하여 특정 코인을 검색하기 위해서는 coingecko에서 사용하는 코인의 id를 알아야합니다. coingecko API에서 BTC와 같은 coin의 ticker를 사용하지 않고 bitcoin과 같이 별도의 coin id를 사용하는 이유는 코인 ticker가 중복되는 경우가 많기 때문입니다. 실제로 uni의 경우에도 동일한 ticker를 사용하는 코인이 두 개가 나옵니다. 이런 경우에는 별도의 확인 과정이 필요합니다.

uni의 경우에는 id로 uniswap를 사용합니다. 이런 사실을 확인한 후 uni에 대한 코인의 id를 별도로 처리하여야 합니다.

            if each['symbol'] == 'uni'  :
                if each['id'] == 'uniswap' :

이하 전체 소스입니다. 현재가를 알고 싶은 ticker list를 제공하면 해당하는 코인의 현재가를 돌려주는 내용입니다.


from pycoingecko import CoinGeckoAPI


def get_name_using_ticker(tokens) :
    name_tickers = {}
    coins = quoter.get_coins_list()
    for each in coins :
        if each['symbol'].upper() in tokens : # 찾는 coin이 있다.
            if each['symbol'] == 'uni'  :
                if each['id'] == 'uniswap' :
                    name_tickers[each['symbol'].upper()] = each
            else :
                name_tickers[each['symbol'].upper()] = each

    return name_tickers


quoter = CoinGeckoAPI()


int_tokens = ['BTC', 'ETH', 'BNB', 'CAKE', 'FLOW', 'UNI', 'HT', 'LUNA', 'MIR', 'CRO', 'STEEM', 'SBD', 'TRX']

gecko_name = get_name_using_ticker(int_tokens)

for ticker in int_tokens:
    id = gecko_name[ticker]['id']
    coin_price = quoter.get_price(ids=id, vs_currencies='usd')
    print('%6s : %12.3f'%(gecko_name[ticker]['symbol'], float(coin_price[id]['usd'])))


print('')

출력결과입니다.

현재 값이 정확하게 출력이 되는군요.

지난 번에 설명한 유동성 공급중인 smart contract 주소를 기반으로 해당하는 코인의 종류와 수량을 확인하고, 이번에 소개해드린 코인의 현재가를 기반으로 yieldwatch와 같이 현재가 기준의 자산 가치를 출력해줄 수 있을 것 같습니다. 이것도 마무리한 후 소스를 공개하도록 하겠습니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

[US$49.00](▼14%)[Nespresso]스타벅스 네스프레소 호환 캡슐 7종 / 120 캡슐 골라담기 / 20개씩 총 6종류 교차 선택 가능 / 중복 선택 가능 / 재고 확보 / 무료배송 / 개당 약 486원 최저가★

WWW.QOO10.COM

정말 대단하십니다!

@tradingideas transfered 15 KRWP to @krwp.burn. voting percent : 53.76%, voting power : 81.05%, steem power : 1722169.90, STU KRW : 1200.
@tradingideas staking status : 7500 KRWP
@tradingideas limit for KRWP voting service : 22.5 KRWP (rate : 0.003)
What you sent : 15 KRWP [51772618 - cd89f2752bcf24bdbdf0885ec7d8fd70ad444a08]

좋은 정보 감사합니다.

한 번에 모든 거래소 가격을 다 알 수 있겠군요.

사용법도 간단하고 아주 굿입니다.

오.. 역시 트아형님
멋지십니다.

좋은 정보 알려 주셔서 감사드립니다. 좋은 주말 되세요. ^^

Very good 👍🏻

어렵군요...
코린이라^^