diff --git a/bfxapi/__init__.py b/bfxapi/__init__.py index 34ba4fa..22f9f95 100644 --- a/bfxapi/__init__.py +++ b/bfxapi/__init__.py @@ -1,4 +1,4 @@ name = 'bfxapi' from bfxapi.websockets.LiveWebsocket import LiveBfxWebsocket -from bfxapi.websockets.DataServerWebsocket import DataServerWebsocket +from bfxapi.websockets.GenericWebsocket import GenericWebsocket diff --git a/bfxapi/websockets/DataServerWebsocket.py b/bfxapi/websockets/DataServerWebsocket.py deleted file mode 100644 index 8d46a0a..0000000 --- a/bfxapi/websockets/DataServerWebsocket.py +++ /dev/null @@ -1,78 +0,0 @@ -import json - -from .GenericWebsocket import GenericWebsocket - -class DataServerWebsocket(GenericWebsocket): - ''' - Basic websocket client that simply reads data from the DataServer. This instance - of the websocket should only ever be used in backtest mode since it isnt capable - of handling orders. - - Events: - - connected: called when a connection is made - - done: fires when the backtest has finished running - ''' - WS_END = 'bt.end' - WS_CANDLE = 'bt.candle' - WS_TRADE = 'bt.trade' - WS_START = 'bt.start' - WS_SYNC_START = 'bt.sync.start' - WS_SYNC_END = 'bt.sync.end' - WS_CONNECT = 'connected' - - def __init__(self, host='ws://localhost:8899', *args, **kwargs): - super(DataServerWebsocket, self).__init__(host, *args, **kwargs) - - def run(self, fromDate, toDate, syncTrades=True, syncCandles=True, tf='1m', - candleFields='*', tradeFields='*', syncMissing=True): - self.fromDate = fromDate - self.toDate = toDate - self.tf = tf - self.sync = syncCandles - self.syncTrades = syncTrades - self.syncCandles = syncCandles - self.syncMissing = syncMissing - self.candleFields = candleFields - self.tradeFields = tradeFields - super(DataServerWebsocket, self).run() - - async def on_message(self, message): - self.logger.debug(message) - msg = json.loads(message) - eType = msg[0] - if eType == self.WS_SYNC_START: - self.logger.info("Syncing data with backtest server, please wait...") - elif eType == self.WS_SYNC_END: - self.logger.info("Syncing complete.") - elif eType == self.WS_START: - self.logger.info("Backtest data stream starting...") - elif eType == self.WS_END: - self.logger.info("Backtest data stream complete.") - await self.on_close() - elif eType == self.WS_CANDLE: - await self._onCandle(msg) - elif eType == self.WS_TRADE: - await self._onTrade(msg) - elif eType == self.WS_CONNECT: - await self.on_open() - else: - self.logger.warn('Unknown websocket command: {}'.format(msg[0])) - - def _exec_bt_string(self): - data = '["exec.bt", [{}, {}, "{}", "{}", "{}", "{}", "{}", "{}", "{}"]]'.format( - self.fromDate, self.toDate, self.symbol, self.tf, json.dumps(self.syncCandles), - json.dumps(self.syncTrades), self.candleFields, self.tradeFields, json.dumps(self.sync)) - return data - - async def on_open(self): - self._emit('connected') - data = self._exec_bt_string() - await self.ws.send(data) - - async def _onCandle(self, data): - candle = data[3] - self._emit('new_canlde', candle) - - async def _onTrade(self, data): - trade = data[2] - self._emit('new_trade', trade)