mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2026-01-03 05:54:20 +01:00
83 lines
3.7 KiB
Markdown
83 lines
3.7 KiB
Markdown
# 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.
|