암호화폐 알고리즘 트레이딩 - 1.크롤링편

in #python8 years ago

암호화폐 알고리즘 트레이딩 - 1.크롤링편

최근 암호화폐 열기가 매우 뜨겁네요.
암호화폐시장은 시대적 흐름으로 보이고, 이러한 흐름은 상당기간 지속될 것이라 생각합니다.
참고로 필자는 처음 호기심으로 암호화폐를 접하였지만 현재는 알고리즘 트레이딩까지 하고 있네요.

알고리즘 트레이딩을 하게 된 계기는 암호화폐 거래소라는 특성상 24시간 거래되고, 변동성도 심하기 때문에 항상 신경 쓰여 본업 및 일상생활에도 영향을 미쳐 변동성으로부터 자유로워지고자 룰베이스 방식으로 투자하기 위해 시작하였습니다.

알고리즘은 투자성과에 직결되는 것이기에 공개할 순 없지만, 알고리즘트레이딩 시스템을 구축하며 습득한 지식 및 내용을 공유하고자 연재를 하기로 하였습니다.

참고로 필자는 현재, 국내 거래소 중 한곳의 API를 활용하여 알고리즘 트레이딩을 하고 있으며, 텔레그램을 활용하여 챗봇 형태로 사전에 몇 가지 전략을 설정해 놓고 전략을 변경해가며 알고리즘을 실시간 컨트롤 하고 있습니다. 또한, 초단위 데이터를 데이터베이스에 적재 후, 향후 알고리즘 시뮬레이션도 진행할 예정입니다.

트레이딩 시스템 개발환경은 Anaconda3(Python 3.6)을 활용하였으며, MYSQL DB를 사용하고 있습니다. 설치 및 설정방법은 인터넷에서 쉽게 찾을 수 있습니다.

연재 첫번째 주제로 시세를 크롤링 해 오는 방법에 대해 작성해 보겠습니다.
물론 각 거래소에서 제공하는 API를 활용해 시세를 받아올 수 있지만, API는 거래소별로 상이하기 때문에 크롤링을 통해 시세를 가지고 오도록 하겠습니다.

참고로, 국내거래소는 빗썸을 사용하였고, 해외거래소는 Bittrex를 사용하였습니다.

먼저, 크롤링에 필요한 패키지를 불러옵니다.

다음으로 거래소별로 API를 제공하는 URL을 저장해 놓습니다.

원하는 티커의 URL접속 후, 정보를 크롤링해오는 함수를 작성합니다.

상기에 작성된 함수를 활용해 거래소 별 데이터를 크롤링 해옵니다.
예시로, 각 거래소 별로 이더리움 정보를 크롤링 해보겠습니다.

크롤링해 온 데이터를 Pandas 데이터프레임 형태로 저장합니다.

참고로,Pandas를 활용하여 데이터프레임을 구성하면 간단한 투자시뮬레이션 뿐만 아니라, 머신러닝 등의 고급 방법론을 적용한 시뮬레이션도 효율적으로 진행할 수 있습니다.
만약 Pandas를 모르신다면 인터넷에도 많은 자료들이 있고, 시중에 좋은 서적들도 많으니 꼭 공부하셨으면 좋겠습니다.

원하는 정보는 다음과 같이 데이터프레임 형태로 정상적으로 들어왔습니다.

만약 빗썸 거래소에서 크롤링해 온 정보들 중 "Closing_price"의 정보만을 알고 싶다면,
현재 Pandas 데이터프레임으로 구성되어 있기에 다음과 같이 실행한다면 됩니다.

이것으로 암호화폐 알고리즘 트레이딩을 위한 크롤링1편을 마치도록 하겠습니다.

PS. 취미로 만들어 사용하고 있는 것이기 때문에, 다소 부족한 부분이 있을 수 있습니다.
쪽지 및 댓글등으로 피드백 주신다면 이를 반영하여 좀 더 완성도 높은 내용을 공유해 드리도록 하겠습니다.

전체코드

import json 
import requests
import pandas as pd
import datetime as dt

# 거래소 별 URL
BITHUMB = "https://api.bithumb.com/public/ticker/"
BITTREX = "https://bittrex.com/api/v1.1/public/getticker?market="


# 크롤링 함수
def crawling(url, ticker = 'BTC'):
    get_data = requests.get(url + ticker)
    return json.loads(get_data.text)

# 거래소 별 데이터 크롤링
bithumb_data = crawling(BITHUMB, ticker = 'ETH')
bittrex_data = crawling(BITTREX, ticker = 'BTC-ETH')

# 빗썸 데이터프레임
bithumb = pd.DataFrame(bithumb_data['data'], 
                       index= [dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S')])
# 비트렉스 데이터프레임
bittrex = pd.DataFrame(bittrex_data['result'], 
                       index= [dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S')])
Sort:  

Congratulations @coinquant, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.


Thumbs up for Steem Network´s strategy

The proven road to boost your personal success in this amazing Steem Network

Do you already know that awesome content will get great profits by following these simple steps, that have been worked out by experts?

Congratulations @coinquant! You received a personal award!

1 Year on Steemit

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @coinquant! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.081
BTC 60778.63
ETH 1619.55
USDT 1.00
SBD 0.47