Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Poloniex API wrapper for Python 2.7 & 3

License

NotificationsYou must be signed in to change notification settings

s4w3d0ff/python-poloniex

pythonlicencereleaserelease build
mastermaster builddevdev build

Inspired bythis wrapper written by 'oipminer'

I (s4w3d0ff) am not affiliated with, nor paid byPoloniex. If you wish to contribute to the repository please readCONTRIBUTING.md. All and any help is appreciated.

Features:

  • Python 2.7 and 3+
  • Pypi
  • Travis
  • Websocket api support
  • Minimal amount of dependencies
  • Internal checks to reduce external api errors
  • Rate limiter to keep from going over call limits
  • Retries failed api calls during connection issues

Install:

pip install --upgrade poloniexapi

Usage:

See thewiki orhelp(poloniex) for more.

All api calls are done through an instance ofpoloniex.Poloniex. You can use the instance as follows:

# import this packagefrompolonieximportPoloniex# make an instance of poloniex.Poloniexpolo=Poloniex()# show the tickerprint(polo('returnTicker'))

Using the instances__call__ method (shown above) you can pass the command string as the first argument to make an api call. Thepoloniex.Poloniex class also has 'helper' methods for each command that will help 'sanitize' the commands arguments. For example,Poloniex.returnChartData('USDT_BTC', period=777) will raisePoloniexError("777 invalid candle period").

# using a 'helper' methodprint(polo.returnChartData(currencyPair='BTC_LTC',period=900))# bypassing 'helper'print(polo(command='returnChartData',args={'currencyPair':'BTC_LTC','period':900}))

Almost every api command can be called this way. This wrapper also checks that the command you pass to thecommand arg is a valid command to send to poloniex, this helps reduce api errors due to typos.

Private Commands:

To use the private api commands you first need an api key and secret (supplied by poloniex). When creating the instance ofpoloniex.Poloniex you can pass your api key and secret to the object like so:

importpoloniexpolo=poloniex.Poloniex(key='your-Api-Key-Here-xxxx',secret='yourSecretKeyHere123456789')# or this workspolo.key='your-Api-Key-Here-xxxx'polo.secret='yourSecretKeyHere123456789'# get your balancesbalance=polo.returnBalances()print("I have %s ETH!"%balance['ETH'])# or use '__call__'balance=polo('returnBalances')print("I have %s BTC!"%balance['BTC'])

Trade History:

Poloniex has two api commands with the same namereturnTradeHistory. To work around this without splitting up the commands or having to specify 'public' or 'private' we use the helper methodPoloniex.marketTradeHist for public trade history andPoloniex.returnTradeHistory for private trades. If you try to bypass the helper method usingPoloniex.__call__, it will call the private command.

Public trade history:

print(polo.marketTradeHist('BTC_ETH'))

Private trade history:

print(polo.returnTradeHistory('BTC_ETH'))

You can also not use the 'helper' methods at all and usepoloniex.PoloniexBase which only hasreturnMarketHist and__call__ to make rest api calls.

Websocket Usage:

To connect to the websocket api use thePoloniexSocketed class like so:

importpolonieximportloggingfromtimeimportsleep# helps show what is going onlogging.basicConfig()poloniex.logger.setLevel(logging.DEBUG)defon_volume(data):print(data)# make instancesock=poloniex.PoloniexSocketed()# start the websocket thread and subscribe to '24hvolume' setting the callback to 'on_volume'sock.startws(subscribe={'24hvolume':on_volume})# give the socket some time to initsleep(5)# use the channel name str or id int to subscribe/unsubscribesock.subscribe(chan='ticker',callback=print)sleep(1)# unsub from ticker using id (str name can be use as well)sock.unsubscribe(1002)sleep(4)# stop websocketsock.stopws()
INFO:poloniex:Websocket thread startedDEBUG:poloniex:Subscribed to 24hvolume[1010]DEBUG:poloniex:Subscribed to ticker[241, '86.59997298', '86.68262835', '85.69590501', '0.01882321', '22205.56419338', '258.30264061', 0, '87.31843098', '82.81638725']......[254, '5.89427014', '6.14542299', '5.92000026', '-0.03420118', '9978.11197201', '1649.83975863', 0, '6.19642428', '5.74631502']DEBUG:poloniex:Unsubscribed to ticker[1010][1010][1010]['2019-06-07 04:16', 2331, {'BTC': '2182.115', 'ETH': '490.635', 'XMR': '368.983', 'USDT': '7751402.061', 'USDC': '5273463.730'}]DEBUG:poloniex:Websocket ClosedINFO:poloniex:Websocket thread stopped/joined

You can also subscribe and start the websocket thread when creating an instance ofPoloniexSocketed by using thesubscribe andstart args:

sock=poloniex.PoloniexSocketed(subscribe={'24hvolume':print},start=True)

More examples of how to use websocket push API can be foundhere.

Sponsor this project

 

Contributors15

Languages


[8]ページ先頭

©2009-2025 Movatter.jp