Create Client module

This commit is contained in:
Jacob Plaster
2018-11-19 16:51:00 +00:00
parent 02e232362b
commit aa50a399dd
5 changed files with 471 additions and 470 deletions

7
bfxapi/Client.py Normal file
View File

@@ -0,0 +1,7 @@
from .websockets.BfxWebsocket import BfxWebsocket
class Client:
def __init__(self, API_KEY=None, API_SECRET=None,
host='wss://test.bitfinex.com/ws/2', *args, **kwargs):
self.ws = BfxWebsocket(API_KEY=API_KEY, API_SECRET=API_SECRET, host=host, *args, **kwargs)
self.rest = None # Eventually will be the rest interface

View File

@@ -1,4 +1,4 @@
name = 'bfxapi'
from bfxapi.websockets.LiveWebsocket import LiveBfxWebsocket
from bfxapi.Client import Client
from bfxapi.websockets.GenericWebsocket import GenericWebsocket

View File

@@ -47,5 +47,5 @@ class Order:
def __str__(self):
''' Allow us to print the Order object in a pretty format '''
return "Order <'{0}' mtsCreate={1} {}>".format(self.symbol, self.mtsCreate,
return "Order <'{0}' mtsCreate={1} {2}>".format(self.symbol, self.mtsCreate,
self.status)

View File

@@ -37,7 +37,7 @@ def _parse_trade(tData, symbol):
'symbol': symbol
}
class LiveBfxWebsocket(GenericWebsocket):
class BfxWebsocket(GenericWebsocket):
'''
More complex websocket that heavily relies on the btfxwss module. This websocket requires
authentication and is capable of handling orders.
@@ -116,15 +116,14 @@ class LiveBfxWebsocket(GenericWebsocket):
20061: 'Websocket server resync complete'
}
def __init__(self, API_KEY=None, API_SECRET=None, backtest=False, host='wss://test.bitfinex.com/ws/2',
def __init__(self, API_KEY=None, API_SECRET=None, host='wss://test.bitfinex.com/ws/2',
onSeedCandleHook=None, onSeedTradeHook=None, *args, **kwargs):
self.channels = {}
self.API_KEY=API_KEY
self.API_SECRET=API_SECRET
self.backtest=backtest
self.pendingOrders = {}
super(LiveBfxWebsocket, self).__init__(host, *args, **kwargs)
super(BfxWebsocket, self).__init__(host, *args, **kwargs)
self._WS_DATA_HANDLERS = {
'tu': self._trade_update_handler,
@@ -397,7 +396,7 @@ class LiveBfxWebsocket(GenericWebsocket):
self.logger.info("Websocket opened.")
self._emit('connected')
# Orders are simulated in backtest mode
if not self.backtest and self.API_KEY and self.API_SECRET:
if not self.API_KEY and self.API_SECRET:
await self._ws_authenticate_socket()
async def send_auth_command(self, channel_name, data):

View File

@@ -16,13 +16,8 @@ def is_json(myjson):
class GenericWebsocket(object):
def __init__(self, host, symbol='tBTCUSD', onCandleHook=None, onTradeHook=None,
logLevel='ERROR'):
self.symbol = symbol
def __init__(self, host, logLevel='ERROR'):
self.host = host
self.awaiting_request = False
self.onCandleHook = onCandleHook
self.onTradeHook = onTradeHook
self.logger = CustomLogger('HFWebSocket', logLevel=logLevel)
self.loop = asyncio.get_event_loop()
self.events = EventEmitter(scheduler=asyncio.ensure_future, loop=self.loop)