def run(): logger = setup_logger() # Instantiating the WS will make it connect. Be sure to add an auth method. You can use login/password # or api_key/api_secret. ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="XBT24H", login="******", password="******", api_key=None, api_secret=None) logger.info("Instrument data: %s" % ws.get_instrument()) # Run forever while(ws.ws.sock.connected): logger.info("Ticker: %s" % ws.get_ticker()) logger.info("Funds: %s" % ws.funds()) logger.info("Market Depth: %s" % ws.market_depth()) logger.info("Recent Trades: %s\n\n" % ws.recent_trades()) sleep(10)
def run(): logger = setup_logger() # Instantiating the WS will make it connect. Be sure to add your api_key/api_secret. ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="XBTUSD", api_key=None, api_secret=None) logger.info("Instrument data: %s" % ws.get_instrument()) # Run forever while(ws.ws.sock.connected): logger.info("Ticker: %s" % ws.get_ticker()) if ws.config['api_key']: logger.info("Funds: %s" % ws.funds()) logger.info("Market Depth: %s" % ws.market_depth()) logger.info("Recent Trades: %s\n\n" % ws.recent_trades()) sleep(10)
def run(): logger = setup_logger() # Instantiating the WS will make it connect. Be sure to add your api_key/api_secret. ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="XBTUSD", api_key=None, api_secret=None) logger.info("Instrument data: %s" % ws.get_instrument()) # Run forever while(ws.ws.sock.connected): logger.info("Ticker: %s" % ws.get_ticker()) if ws.api_key: logger.info("Funds: %s" % ws.funds()) logger.info("Market Depth: %s" % ws.market_depth()) logger.info("Recent Trades: %s\n\n" % ws.recent_trades()) sleep(10)
def run(): logger = setup_logger() config = configparser.ConfigParser() config.read('config/config.ini') ws = BitMEXWebsocket(endpoint=config['bitmex']['endpoint'], symbol="XBTUSD", api_key=config['bitmex']['api_key'], api_secret=config['bitmex']['api_secret']) logger.info("Instrument data: %s" % ws.get_instrument()) # Run forever while(ws.ws.sock.connected): logger.info("Ticker: %s" % ws.get_ticker()) if ws.api_key: logger.info("Funds: %s" % ws.funds()) logger.info("Market Depth: %s" % ws.market_depth()) logger.info("Recent Trades: %s\n\n" % ws.recent_trades()) sleep(10)
def get(self, apikey): acc = User.query.filter_by(api_public=apikey).first() if not acc: return create_error_response( 404, "Account does not exist", "Account with api-key '{}' does not exist.".format(apikey)) if not authorize(acc, request): return create_error_response(401, "Unauthorized", "No API-key or wrong API-key") ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="", api_key=acc.api_public, api_secret=request.headers["api_secret"]) balance = ws.funds() body = MasonControls() body.add_control_account(apikey) body.add_control_transactionhistory(apikey) return Response(body, status=200, mimetype=MASON)
def run(): logger = setup_logger() # Instantiating the WS will make it connect. Be sure to add your api_key/api_secret. ws = BitMEXWebsocket( endpoint="wss://testnet.bitmex.com/realtime", symbol="XBTUSD", api_key="wwvS30igJDo6Ksxa0h2EP1Eq", api_secret="-DOHRIUObpSQilqyr2y18YcTRi5NWFIV95du4i8rG4VveOBI") logger.info("Instrument data: {}".format(ws.get_instrument())) # Run forever while (ws.ws.sock.connected): logger.info("Ticker: %s" % ws.get_ticker()) if ws.config['api_key']: logger.info("Funds: %s" % ws.funds()) logger.info("Market Depth: %s" % ws.market_depth()) logger.info("Recent Trades: %s\n\n" % ws.recent_trades()) sleep(10)
def run(): logger = setup_logger() # Instantiating the WS will make it connect. Be sure to add an auth method. You can use login/password # or api_key/api_secret. ws = BitMEXWebsocket(endpoint="https://testnet.bitmex.com/api/v1", symbol="XBT24H", login="******", password="******", api_key=None, api_secret=None) logger.info("Instrument data: %s" % ws.get_instrument()) # Run forever while (ws.ws.sock.connected): logger.info("Ticker: %s" % ws.get_ticker()) logger.info("Funds: %s" % ws.funds()) logger.info("Market Depth: %s" % ws.market_depth()) logger.info("Recent Trades: %s\n\n" % ws.recent_trades()) sleep(10)
class BitMexWS(object): """ 适合订阅数据 """ def __init__(self, api_key=None, api_secret=None, symbol="XBTUSD"): endpoint = "https://testnet.bitmex.com/api/v1" if api_key: endpoint = "https://www.bitmex.com/api/v1" self.ws = BitMEXWebsocket(endpoint=endpoint, symbol=symbol, api_key=api_key, api_secret=api_secret) def run(self): logger = self.setup_logger() # Instantiating the WS will make it connect. Be sure to add your api_key/api_secret. logger.info("Instrument data: %s" % self.ws.get_instrument()) # Run forever while self.ws.ws.sock.connected: logger.info("Ticker: %s" % self.ws.get_ticker()) if self.ws.api_key: logger.info("Funds: %s" % self.ws.funds()) logger.info("Market Depth: %s" % self.ws.market_depth()) logger.info("Recent Trades: %s\n\n" % self.ws.recent_trades()) sleep(10) def setup_logger(self): # Prints logger info to terminal logger = logging.getLogger() logger.setLevel(logging.INFO) # Change this to DEBUG if you want a lot more info ch = logging.StreamHandler() # create formatter formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") # add formatter to ch ch.setFormatter(formatter) logger.addHandler(ch) return logger
class Main(): def __init__(self): self.ws = BitMEXWebsocket( endpoint="wss://www.bitmex.com/realtime", symbol="XBTUSD", api_key='68_LZNeK1m7TEwnksVTe_7ig', api_secret='wKJXpjr6Y28BNDF4G97TBevkzLG0HVOurFDBn2dx42Sf_Aga') self.client = MongoClient('mongodb://localhost:27017/') self.db = self.client.main_database self.order_book = self.db.orderbook self.position = self.db.position self.balance = self.db.balance #uncomment these 3 methods to check out the db #to see orderbooks #self.check_db(self.find_all_orderbook()) #to see position #self.check_db(self.find_all_positions()) #to see balance #self.check_db(self.find_all_balance()) self.__on_open() self.fetch_data() def check_db(self, objects): for object in objects: self.logger(object) def logger(self, object): print(object) def find_all_positions(self): # Returns a list return self.position.find({}) def find_all_balance(self): # Returns a list return self.balance.find({}) def find_all_orderbook(self): # Returns a list return self.order_book.find({}) def list_db_collections(self): return self.db.list_collection_names() def __on_open(self): # Called when the WS opens. self.logger("Websocket Opened.") def __on_close(self): # Called on websocket close. self.logger('Websocket Closed') def fetch_data(self): # Balance funds = self.ws.funds() # Position positions = self.ws.recent_trades() # Order Book orderbook = self.ws.market_depth() self.__on_close(funds, positions, orderbook) def __on_open(self): '''Called when the WS opens.''' self.logger("Websocket Opened.") def __on_close(self, funds, positions, orderbook): '''Called on websocket close.''' # --- SAVE TO DB ---- # self.balance.insert_one(funds) for position in positions: self.position.insert_one(position) for trade in orderbook: self.order_book.insert_one(trade) # --- SAVE TO DB ---- # self.logger('Websocket Closed')