python-binance icon indicating copy to clipboard operation
python-binance copied to clipboard

Binance Exchange API python implementation for automated trading

trafficstars

================================ Welcome to python-binance v0.6.8

.. image:: https://img.shields.io/pypi/v/python-binance.svg :target: https://pypi.python.org/pypi/python-binance

.. image:: https://img.shields.io/pypi/l/python-binance.svg :target: https://pypi.python.org/pypi/python-binance

.. image:: https://img.shields.io/travis/sammchardy/python-binance.svg :target: https://travis-ci.org/sammchardy/python-binance

.. image:: https://img.shields.io/coveralls/sammchardy/python-binance.svg :target: https://coveralls.io/github/sammchardy/python-binance

.. image:: https://img.shields.io/pypi/wheel/python-binance.svg :target: https://pypi.python.org/pypi/python-binance

.. image:: https://img.shields.io/pypi/pyversions/python-binance.svg :target: https://pypi.python.org/pypi/python-binance

This is an unofficial Python wrapper for the Binance exchange REST API v1/3 <https://github.com/binance-exchange/binance-official-api-docs>_. I am in no way affiliated with Binance, use at your own risk.

If you came here looking for the Binance exchange <https://www.binance.com/?ref=10099792>_ to purchase cryptocurrencies, then go here <https://www.binance.com/?ref=10099792>_. If you want to automate interactions with Binance stick around.

Source code https://github.com/sammchardy/python-binance

Documentation https://python-binance.readthedocs.io/en/latest/

Binance API Telegram https://t.me/binance_api_english

Blog with examples https://sammchardy.github.io

Make sure you update often and check the Changelog <https://python-binance.readthedocs.io/en/latest/changelog.html>_ for new features and bug fixes.

Features

  • Implementation of all General, Market Data and Account endpoints.
  • Simple handling of authentication
  • No need to generate timestamps yourself, the wrapper does it for you
  • Response exception handling
  • Websocket handling with reconnection and multiplexed connections
  • Symbol Depth Cache
  • Historical Kline/Candle fetching function
  • Withdraw functionality
  • Deposit addresses

Quick Start

Register an account with Binance <https://www.binance.com/register.html?ref=10099792>_.

Generate an API Key <https://www.binance.com/userCenter/createApi.html>_ and assign relevant permissions.

.. code:: bash

pip install python-binance

.. code:: python

from binance.client import Client
client = Client(api_key, api_secret)

# get market depth
depth = client.get_order_book(symbol='BNBBTC')

# place a test market buy order, to place an actual order use the create_order function
order = client.create_test_order(
    symbol='BNBBTC',
    side=Client.SIDE_BUY,
    type=Client.ORDER_TYPE_MARKET,
    quantity=100)

# get all symbol prices
prices = client.get_all_tickers()

# withdraw 100 ETH
# check docs for assumptions around withdrawals
from binance.exceptions import BinanceAPIException, BinanceWithdrawException
try:
    result = client.withdraw(
        asset='ETH',
        address='<eth_address>',
        amount=100)
except BinanceAPIException as e:
    print(e)
except BinanceWithdrawException as e:
    print(e)
else:
    print("Success")

# fetch list of withdrawals
withdraws = client.get_withdraw_history()

# fetch list of ETH withdrawals
eth_withdraws = client.get_withdraw_history(asset='ETH')

# get a deposit address for BTC
address = client.get_deposit_address(asset='BTC')

# start aggregated trade websocket for BNBBTC
def process_message(msg):
    print("message type: {}".format(msg['e']))
    print(msg)
    # do something

from binance.websockets import BinanceSocketManager
bm = BinanceSocketManager(client)
bm.start_aggtrade_socket('BNBBTC', process_message)
bm.start()

# get historical kline data from any date range

# fetch 1 minute klines for the last day up until now
klines = client.get_historical_klines("BNBBTC", Client.KLINE_INTERVAL_1MINUTE, "1 day ago UTC")

# fetch 30 minute klines for the last month of 2017
klines = client.get_historical_klines("ETHBTC", Client.KLINE_INTERVAL_30MINUTE, "1 Dec, 2017", "1 Jan, 2018")

# fetch weekly klines since it listed
klines = client.get_historical_klines("NEOBTC", KLINE_INTERVAL_1WEEK, "1 Jan, 2017")

For more check out the documentation <https://python-binance.readthedocs.io/en/latest/>_.

Donate

If this library helped you out feel free to donate.

  • ETH: 0xD7a7fDdCfA687073d7cC93E9E51829a727f9fE70
  • LTC: LPC5vw9ajR1YndE1hYVeo3kJ9LdHjcRCUZ
  • NEO: AVJB4ZgN7VgSUtArCt94y7ZYT6d5NDfpBo
  • BTC: 1Dknp6L6oRZrHDECRedihPzx2sSfmvEBys

Other Exchanges

If you use Quoinex <https://accounts.quoinex.com/sign-up?affiliate=PAxghztC67615>_ or Qryptos <https://accounts.qryptos.com/sign-up?affiliate=PAxghztC67615>_ check out my python-quoine <https://github.com/sammchardy/python-quoine>_ library.

If you use Kucoin <https://www.kucoin.com/#/?r=E42cWB>_ check out my python-kucoin <https://github.com/sammchardy/python-kucoin>_ library.

If you use Allcoin <https://www.allcoin.com/Account/RegisterByPhoneNumber/?InviteCode=MTQ2OTk4MDgwMDEzNDczMQ==>_ check out my python-allucoin <https://github.com/sammchardy/python-allcoin>_ library.

If you use IDEX <https://idex.market>_ check out my python-idex <https://github.com/sammchardy/python-idex>_ library.

If you use BigONE <https://big.one>_ check out my python-bigone <https://github.com/sammchardy/python-bigone>_ library.

.. image:: https://analytics-pixel.appspot.com/UA-111417213-1/github/python-binance?pixel&useReferer