2018-11-20 14:21:40 +00:00
2018-11-14 12:24:22 +01:00
2018-11-19 16:50:07 +00:00
2018-11-16 15:03:45 +00:00

Official Python bfxapi

This repo contains an official python library that is used to connect to the both the Bitfinex api and the Honey Frameworks data-server. The library communicates with these servers using both websockets connection and a its REST interface.

Install dependencies

pip3 install -r requirements.txt

Run the trades/candles example:

cd bfxapi/examples
python3 subsribe_trades_candles.py

bfxapi.LiveWebsocket

The websocket exposes a collection of events that are triggered when certain data is received. When subscribing to an event you are able to pass either a standard function or an asyncio co-routine Here is a full list of available events:

  • all (array|json): listen for all messages coming through
  • connected: () called when a connection is made
  • authenticated (): called when the websocket passes authentication
  • notification (array): incoming account notification
  • error (array): error from the websocket
  • order_closed (Order, Trade): when an order has been closed
  • order_new (Order, Trade): when an order has been created but not closed. Note: will not be called if order is executed and filled instantly
  • order_confirmed (Order, Trade): When an order has been submitted and received
  • wallet_snapshot (array): Initial wallet balances (Fired once)
  • order_snapshot (array): Initial open orders (Fired once)
  • positions_snapshot (array): Initial open positions (Fired once)
  • wallet_update (array): changes to the balance of wallets
  • seed_candle (json): initial past candle to prime strategy
  • seed_trade (json): initial past trade to prime strategy
  • funding_offer_snapshot (array): opening funding offer balances
  • funding_loan_snapshot (array): opening funding loan balances
  • funding_credit_snapshot (array): opening funding credit balances
  • balance_update (array): when the state of a balance is changed
  • new_trade (array): a new trade on the market has been executed
  • new_candle (array): a new candle has been produced
  • margin_info_updates (array): new margin information has been broadcasted
  • funding_info_updates (array): new funding information has been broadcasted

For example. If you wanted to subscribe to all of the trades on the tBTCUSD market, then you can simply listen to the new_trade event. For Example:

ws = LiveBfxWebsocket(
  logLevel='INFO'
)

@ws.on('new_trade')
def log_trade(trade):
  print ("New trade: {}".format(trade))

@ws.on('connected')
def start():
  ws.subscribe('trades', 'tBTCUSD')

ws.run()

NOTE: Instead of using the python decorators, you can also listen to events via function call:

ws.on('new_trade', log_trade)

Exposed Async Functions

  • subscribe(channel_name, symbol, timeframe=None, **kwargs) Subscribes the socket to a data feed such as 'trades' or 'candles'.
  • submit_order(symbol, price, amount, market_type, hidden=False, onComplete=None, onError=None, *args, **kwargs) Submits an order to the Bitfinex api. If the order is successful then the order_closed event will be triggered and the onComplete function will also be called if provided in the parameters.
  • update_order(orderId, price=None, amount=None, delta=None, price_aux_limit=None, price_trailing=None, flags=None, time_in_force=None, onComplete=None, onError=None) Updates the given order_id with the provided values
  • cancel_order(self, orderId, onComplete=None, onError=None): Cancels the order with the given order id
  • cancel_order_multi(self, orderIds, onComplete=None, onError=None) Cancels multiple orders in a batch.

Exposed Functions

  • on(event, function) Subscribes the function to be triggered on the given event.
  • once(event, function) Subscribes the function to the given event but only triggers once.
Description
No description provided
Readme 1.2 MiB
Languages
Python 100%