Bitmarket REST/Websocket Api implementation
Project description
HFT CRYPTO API-BitMart
Python module for Bitmart SDK
Installation
pip install hftcryptoapi
Spot Market
Introduction
from hftcryptoapi.bitmart import Bitmart
Basic Information
Initialise an instance of Bitmart client:
from hftcryptoapi.bitmart import Bitmart
api_key = ""
secret_key = ""
memo = ""
client = Bitmart(api_key, secret_key, memo, exchange=Exchange.BITMART)
System Status
- Get System Time, returns system time in datetime format.
bt_time = client.get_system_time()
- Get System Service Status, returns system status
bt_staus = client.get_service_status()
Public Market Data
Functions to get info from spot market public API.
- Get Currency List
currency_list = client.get_currency_list()
- Get List of Trading Pairs, return a list of all trading pairs
trading_pairs = client.get_list_of_trading_pairs()
- Get List of Spot Symbol Details
symbols_details = client.get_spot_symbols_details()
- Get Ticker details by Symbol
symbol_details = client.get_spot_ticker_details("BTC_USDT")
- Get K-Line, return Kline object for specified symbol and time period for SPOT and FUTURES markets
symbol_klines = client.get_symbol_kline(symbol, fromTime, toTime, step, market = Market.SPOT)
- Get Depth Returns [buys], [sells] wrapped in SportDepth or FuturesDepth object, depends on market type (Market.SPOT or Market.FUTURES)
symbol_depth = client.get_symbol_depth(symbol, precision, size, market=Market.SPOT)
- Get Recent Trades, returns Trade object for specified symbol and number of trades (by default: 50)
bt_trades = client.get_symbol_recent_trades(symbol, N)
Funding Account Data
- Get Account Balance, a unified method for all types of markets (SPOT, MARGIN, FUTURES). Market should be defined. Returns list of currencies/positions with attributes unique for each market:
result = client.get_account_balance(market=Market.FUTURES)
result = client.get_account_balance(market=Market.SPOT_MARGIN)
[print(b) for b in client.get_account_balance(market=Market.SPOT).items]
- Get User Fee Rate
fee_rate = client.get_spot_user_fee_rate()
- Get Actual Trade Fee Rate
bt_trade_fee = client.get_trade_fee_rate(symbol)
Spot/Margin Trading
- Place Spot Order (V2)
order = client.submit_order(market=Market.SPOT, symbol=symbol, side=SpotSide.BUY, size=0.1, price=70)
- Place Margin Order
order = client.submit_order(market=Market.SPOT_MARGIN, symbol=symbol, side=SpotSide.BUY, size=0.1, price=70)
- Cancel an Order (V3)
client.cancel_order(order)
# OR
client.cancel_order_by_id(order.symbol, order_id=order.order_id, market=Market.SPOT)
- Cancel All Orders
client.cancel_all_orders(symbol=symbol_spot, market=Market.SPOT, side=SpotSide.BUY)
- Get Order Detail (V2), get/update order details
order = get_order_details(symbol, order_id, market)
order = client.update_order_details(order)
- Get User Order History (V3), return list of order objects
history = client.get_order_history(symbol=symbol_eth, market=Market.SPOT)
Margin Loan
- Get Trading Pair Borrowing Rate and Amount
rate = client.spot_margin_borrowing_rate(symbol_spot)
- Get Borrow Record(Isolated)
b_records = client.spot_margin_get_borrow_record(symbol_spot)
- Get Repayment Record(Isolated)
r_records = client.spot_margin_get_repay_record(symbol_spot)
- Margin Borrow (Isolated)
borrow_id = client.spot_margin_borrow(symbol_spot, "BTC", 0.005)
- Margin Repay (Isolated)
repay_id = client.spot_margin_repay(symbol_spot, "BTC", 0.005)
Futures
Basic Information
To access methods for Futures account/market methods should have a flag Market.FUTURES passed to.
Futures Market Data
- Get Futures Open Interest
futures_open_interest = client.get_futures_open_interest(symbol)
- Get Current Funding Rate for futures
funding_rate = client.get_futures_funding_rate(symbol)
- Get List of Futures Contract Details
contracts_details = client.get_futures_contracts_details()
Futures Trading
- Get Futures Position details for a specified contract
client.get_futures_position_details(symbol)
- Close Futures Position
client.close_futures_position(symbol=symbol, position_side=Position.SHORT, open_type=OrderOpenType.CROSS)
-
Get Account Balance - see spot description
-
Submit Order - see spot description
-
Cancel Order - see spot description
-
Cancel All orders - see spot description
-
Get Order Detail - see spot description
-
Get Order History - see spot description
WebSockets
- Subscribe to one or many WebSocket events
# list of channels for list of symbols
client.subscribe_public(market=Market.FUTURES, symbols=[symbol],
channels=[BtFuturesSocketKlineChannels.K_LINE_CHANNEL_1HOUR])
# common listener for all symbols
client.subscribe_private(market=Market.FUTURES, channels=[BtFuturesTPrivatePositionChannel])
- Unsubscribe to one or many WebSocket events
# SPOT
client.subscribe_public(Market.SPOT, [BtSpotSocketKlineChannels.K_LINE_CHANNEL_1HOUR,
BtSpotSocketDepthChannels.DEPTH_CHANNEL_5LEVEL,
BtSpotTradeChannel,
BtSpotTickerChannel],
symbols=[symbol_spot])
client.subscribe_private(Market.SPOT, [BtSpotOrderChannel], symbols=[symbol_spot])
# FUTURES
client.subscribe_public(Market.FUTURES, [BtFuturesTickerChannel])
client.subscribe_public(Market.FUTURES, [BtFuturesSocketKlineChannels.K_LINE_CHANNEL_1HOUR,
BtFuturesSocketDepthChannels.DEPTH_CHANNEL_5LEVEL], [symbol])
client.subscribe_private(Market.FUTURES, [BtFuturesTPrivatePositionChannel])
client.subscribe_private(Market.FUTURES, [BtFuturesTPrivateAssetChannel], ['ETH', 'USDT'])
- Start WebSocket listener for market type
def _on_message(self, msg: Union[WebSocketKline, WebSocketPositionFutures]):
if type(msg) is WebSocketKline:
# ...
else:
# ..
client.start_websockets(market=Market.FUTURES, on_message=_on_message)
client.start_websockets(Market.SPOT, on_message=_on_message_spot))
- Stop and disconnect from WebSockets
client.stop_websockets(Market.FUTURES)
ChangeLog
20.12.2022 Version 1.0.6 - Margin Loan implementation
19.12.2022 Version 1.0.5
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file hft_crypto_api-1.0.6.tar.gz.
File metadata
- Download URL: hft_crypto_api-1.0.6.tar.gz
- Upload date:
- Size: 323.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f26a29c0d2c41fe2d3074d24058b3db62ee2637ec161397ba932983b90dc81aa
|
|
| MD5 |
9d5324ee6183278b8bc69b2499003e88
|
|
| BLAKE2b-256 |
0a97212819160fa862422b01cc745c3c5281739269aae8a094842d7c0e08ef07
|