Python 을 이용한 Poloniex API 접근steemCreated with Sketch.

in kr •  8 years ago 

개인적으로 Poloniex 는 예술이라 생각합니다.

  1. 깔끔함
  2. 빠른 속도 - 숨가쁘게 변하는 BUY/SELL order
  3. 아기자기함 - 우측 Markets 목록에 보이는 javascript effect

Poloniex 하단의 Support Resource 로 들어가서 API Documentation 에 가면
https://www.poloniex.com/support/api/ 여기로 오게 되는데,
API 를 통한 Poloniex 가격정보를 얻어 올 수 있으며, 거래도 할 수 있습니다.
Push API 와 Public API 그리고 Trading API 를 제공합니다.

가장 간단한 Public API Methods 중에 returnTicker 를 예를 들어보겠습니다.


returnTicker : Returns the ticker for all markets. Sample output:

{"BTC_LTC":{"last":"0.0251","lowestAsk":"0.02589999","highestBid":"0.0251","percentChange":"0.02390438",
"baseVolume":"6.16485315","quoteVolume":"245.82513926"},"BTC_NXT":{"last":"0.00005730","lowestAsk":"0.00005710",
"highestBid":"0.00004903","percentChange":"0.16701570","baseVolume":"0.45347489","quoteVolume":"9094"}, ... }

Call: https://poloniex.com/public?command=returnTicker


브라우저에서 https://poloniex.com/public?command=returnTicker 를 입력하면
바로 위와 같은 정보가 보일 겁니다.
위의 포맷을 보면,
{
"BTC_LTC" : {
"last":"0.0251",
"lowestAsk":"0.02589999",
"highestBid":"0.0251",
"percentChange":"0.02390438",
"baseVolume":"6.16485315",
"quoteVolume":"245.82513926"
},
"BTC_NXT" : {
와 같이 { key : value } 같은 형태가 반복해서 나타나는 것을 볼 수 있는데, 이를 json 포맷이라고 합니다.
이 형식으로 Database 뿐만 아니라 객체정보 등을 모두 Text 화 하여 전송할 수 있습니다.
위의 예에서 Key 는 "BTC_LTC" 이며 Value 는
{ "last":"0.0251",
"lowestAsk":"0.02589999",
"highestBid":"0.0251",
"percentChange":"0.02390438",
"baseVolume":"6.16485315",
"quoteVolume":"245.82513926"
}
가 됩니다.
Value 도 여러개의 Json 포맷으로 되어있는데, "last", "lowestAsk" 등은 Key 가 됨을 볼 수 있습니다.
Json 포맷을 중첩시키면 다양한 데이터베이스를 text 화 하여 전송할 수 있을 겁니다.


브라우저를 통해서 위의 정보를 읽어낼 수 있지만, 우리는 이것을 이용하여 우리가 필요로 하는 정보를 얻어내고 싶습니다. Pyhon 을 이용한 방법입니다.

import json, requests
url = 'https://poloniex.com/public?command=returnTicker'
resp = requests.get(url)
data = json.loads(resp.text)
for d in data:
    print d + " " + data[d]["last"]

  1. import 는 라이브러리를 사용하겠다는 의미입니다.
    json 을 text 를 처리하기 위한 json library
    http request 를 처리하기 위한 requests library
  2. url 을 위에서 본 url 을 저장하기 위한 문자열
  3. resp 는 url 처리를 한 후 전달 받은 데이터입니다. (resp.text 가 위에서 본 결과값임)
  4. data 는 잘 모르겠지만 resp.text 정보를 load 하는 것입니다.
    load 후 data 는 key value 형식의 데이터 배열을 갖게 됩니다.
  5. for d in data : data 에서 하나씩 뽑아내서 반복합니다. (for 문)
    d 는 key 이며 data[d] 는 value 인데,
    value 도 key, value 형식이니 data[d]["last"] 하면 뭐가 나올까요?
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:  
  ·  8 years ago (edited)

한가지 유념해두셔야 할 것이 return 되는 값을 보면 숫자인데 옆에 따옴표가 붙어있는 string입니다. (예: "lowestAsk":"0.02589999") 따라서 이 값을 가지고 뭔가 산술적인 계산을 하시려면 float(data[d]["last"]) 식으로 처리해주셔야 합니다.

그리고 아마 위 식대로 하면 dictionary 특성상 무작위 순서로 나올텐데요, for d in data: 대신에 for d in sorted(data): 하시면 알파벳 순서대로 나옵니다.

0.0251 0.00005730 죽 이런식으로 last값을 가져오는걸까요?

그렇습니다. ^^

파이썬으로 기본기를 배우고 있는데, 이렇게 실제 사용해 볼 수 있는 예제가 생겨서 도움이 많이 됩니다. 앞으로도 부탁드릴께요.
BTC_IOC(키값) 0.00039402(최근값) 이렇게 받을 수 있네요.
주기적으로 받도록 만들면 추이 분석하는데 도움이 될 것 같아요. ^^
감사합니다.

파이선과 웹프로그래밍과 TDD 를 한꺼번에 배울 수 있는...
http://chimera.labs.oreilly.com/books/1234000000754
어렵지만... 아자아자...

마크다운 에디터에서 소스코드 예제를 넣을 때

This is a 
piece of code 
in a block

물결표시 4개(~~~~)하고 줄바꿈해서
소스코드 여러줄 넣고
다시 물결표시 4개(~~~~)하면 깔끔하게 보입니다

감사합니다. 이후 참고하겠습니다.