Skip to content

Commit bdb0a24

Browse files
author
Sam McHardy
committed
First pass at rest endpoints for futures API
1 parent 83ca8e8 commit bdb0a24

1 file changed

Lines changed: 279 additions & 4 deletions

File tree

binance/client.py

Lines changed: 279 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ class Client(object):
1515
WITHDRAW_API_URL = 'https://api.binance.{}/wapi'
1616
MARGIN_API_URL = 'https://api.binance.{}/sapi'
1717
WEBSITE_URL = 'https://www.binance.{}'
18+
FUTURES_URL = 'https://fapi.binance.{}/fapi'
1819
PUBLIC_API_VERSION = 'v1'
1920
PRIVATE_API_VERSION = 'v3'
2021
WITHDRAW_API_VERSION = 'v3'
2122
MARGIN_API_VERSION = 'v1'
23+
FUTURES_API_VERSION = 'v1'
2224

2325
SYMBOL_TYPE_SPOT = 'SPOT'
2426

@@ -87,13 +89,11 @@ def __init__(self, api_key=None, api_secret=None, requests_params=None, tld='com
8789
8890
"""
8991

90-
91-
### Offers support for both binance.com and binance.us
9292
self.API_URL = self.API_URL.format(tld)
9393
self.WITHDRAW_API_URL = self.WITHDRAW_API_URL.format(tld)
9494
self.MARGIN_API_URL = self.MARGIN_API_URL.format(tld)
9595
self.WEBSITE_URL = self.WEBSITE_URL.format(tld)
96-
96+
self.FUTURES_URL = self.FUTURES_URL.format(tld)
9797

9898
self.API_KEY = api_key
9999
self.API_SECRET = api_secret
@@ -125,6 +125,9 @@ def _create_margin_api_uri(self, path):
125125
def _create_website_uri(self, path):
126126
return self.WEBSITE_URL + '/' + path
127127

128+
def _create_futures_api_uri(self, path):
129+
return self.FUTURES_URL + '/' + self.FUTURES_API_VERSION + '/' + path
130+
128131
def _generate_signature(self, data):
129132

130133
ordered_data = self._order_params(data)
@@ -209,11 +212,15 @@ def _request_margin_api(self, method, path, signed=False, **kwargs):
209212
return self._request(method, uri, signed, **kwargs)
210213

211214
def _request_website(self, method, path, signed=False, **kwargs):
212-
213215
uri = self._create_website_uri(path)
214216

215217
return self._request(method, uri, signed, **kwargs)
216218

219+
def _request_futures_api(self, method, path, signed=False, **kwargs):
220+
uri = self._create_futures_api_uri(path)
221+
222+
return self._request(method, uri, signed, True, **kwargs)
223+
217224
def _handle_response(self):
218225
"""Internal helper for handling API responses from the Binance server.
219226
Raises the appropriate exceptions when necessary; otherwise, returns the
@@ -3347,3 +3354,271 @@ def get_sub_account_assets(self, **params):
33473354
33483355
"""
33493356
return self._request_withdraw_api('get', 'sub-account/assets.html', True, data=params)
3357+
3358+
# Futures API
3359+
3360+
def futures_ping(self):
3361+
"""Test connectivity to the Rest API
3362+
3363+
https://binance-docs.github.io/apidocs/futures/en/#test-connectivity
3364+
3365+
"""
3366+
return self._request_futures_api('get', 'ping')
3367+
3368+
def futures_time(self):
3369+
"""Test connectivity to the Rest API and get the current server time.
3370+
3371+
https://binance-docs.github.io/apidocs/futures/en/#check-server-time
3372+
3373+
"""
3374+
return self._request_futures_api('get', 'time')
3375+
3376+
def futures_exchange_info(self):
3377+
"""Current exchange trading rules and symbol information
3378+
3379+
https://binance-docs.github.io/apidocs/futures/en/#exchange-information-market_data
3380+
3381+
"""
3382+
return self._request_futures_api('get', 'exchangeInfo')
3383+
3384+
def futures_order_book(self, **params):
3385+
"""Get the Order Book for the market
3386+
3387+
https://binance-docs.github.io/apidocs/futures/en/#order-book-market_data
3388+
3389+
"""
3390+
return self._request_futures_api('get', 'depth', data=params)
3391+
3392+
def futures_recent_trades(self, **params):
3393+
"""Get recent trades (up to last 500).
3394+
3395+
https://binance-docs.github.io/apidocs/futures/en/#recent-trades-list-market_data
3396+
3397+
"""
3398+
return self._request_futures_api('get', 'trades', data=params)
3399+
3400+
def futures_historical_trades(self, **params):
3401+
"""Get older market historical trades.
3402+
3403+
https://binance-docs.github.io/apidocs/futures/en/#old-trades-lookup-market_data
3404+
3405+
"""
3406+
return self._request_futures_api('get', 'historicalTrades', data=params)
3407+
3408+
def futures_aggregate_trades(self, **params):
3409+
"""Get compressed, aggregate trades. Trades that fill at the time, from the same order, with the same
3410+
price will have the quantity aggregated.
3411+
3412+
https://binance-docs.github.io/apidocs/futures/en/#compressed-aggregate-trades-list-market_data
3413+
3414+
"""
3415+
return self._request_futures_api('get', 'aggTrades', data=params)
3416+
3417+
def futures_klines(self, **params):
3418+
"""Kline/candlestick bars for a symbol. Klines are uniquely identified by their open time.
3419+
3420+
https://binance-docs.github.io/apidocs/futures/en/#kline-candlestick-data-market_data
3421+
3422+
"""
3423+
return self._request_futures_api('get', 'klines', data=params)
3424+
3425+
def futures_mark_price(self, **params):
3426+
"""Get Mark Price and Funding Rate
3427+
3428+
https://binance-docs.github.io/apidocs/futures/en/#mark-price-market_data
3429+
3430+
"""
3431+
return self._request_futures_api('get', 'premiumIndex', data=params)
3432+
3433+
def futures_funding_rate(self, **params):
3434+
"""Get funding rate history
3435+
3436+
https://binance-docs.github.io/apidocs/futures/en/#get-funding-rate-history-market_data
3437+
3438+
"""
3439+
return self._request_futures_api('get', 'fundingRate', data=params)
3440+
3441+
def futures_ticker(self, **params):
3442+
"""24 hour rolling window price change statistics.
3443+
3444+
https://binance-docs.github.io/apidocs/futures/en/#24hr-ticker-price-change-statistics-market_data
3445+
3446+
"""
3447+
return self._request_futures_api('get', 'ticker/24hr', data=params)
3448+
3449+
def futures_symbol_ticker(self, **params):
3450+
"""Latest price for a symbol or symbols.
3451+
3452+
https://binance-docs.github.io/apidocs/futures/en/#symbol-price-ticker-market_data
3453+
3454+
"""
3455+
return self._request_futures_api('get', 'ticker/price', data=params)
3456+
3457+
def futures_orderbook_ticker(self, **params):
3458+
"""Best price/qty on the order book for a symbol or symbols.
3459+
3460+
https://binance-docs.github.io/apidocs/futures/en/#symbol-order-book-ticker-market_data
3461+
3462+
"""
3463+
return self._request_futures_api('get', 'ticker/bookTicker', data=params)
3464+
3465+
def futures_liquidation_orders(self, **params):
3466+
"""Get all liquidation orders
3467+
3468+
https://binance-docs.github.io/apidocs/futures/en/#get-all-liquidation-orders-market_data
3469+
3470+
"""
3471+
return self._request_futures_api('get', 'ticker/allForceOrders', data=params)
3472+
3473+
def futures_open_interest(self, **params):
3474+
"""Get present open interest of a specific symbol.
3475+
3476+
https://binance-docs.github.io/apidocs/futures/en/#open-interest-market_data
3477+
3478+
"""
3479+
return self._request_futures_api('get', 'ticker/openInterest', data=params)
3480+
3481+
def futures_leverage_bracket(self, **params):
3482+
"""Notional and Leverage Brackets
3483+
3484+
https://binance-docs.github.io/apidocs/futures/en/#notional-and-leverage-brackets-market_data
3485+
3486+
"""
3487+
return self._request_futures_api('get', 'ticker/leverageBracket', data=params)
3488+
3489+
def transfer_history(self, **params):
3490+
"""Get future account transaction history list
3491+
3492+
https://binance-docs.github.io/apidocs/futures/en/#new-future-account-transfer
3493+
3494+
"""
3495+
return self._request_margin_api('get', 'futures/transfer', True, data=params)
3496+
3497+
def futures_create_order(self, **params):
3498+
"""Send in a new order.
3499+
3500+
https://binance-docs.github.io/apidocs/futures/en/#new-order-trade
3501+
3502+
"""
3503+
return self._request_futures_api('post', 'order', True, data=params)
3504+
3505+
def futures_get_order(self, **params):
3506+
"""Check an order's status.
3507+
3508+
https://binance-docs.github.io/apidocs/futures/en/#query-order-user_data
3509+
3510+
"""
3511+
return self._request_futures_api('get', 'order', True, data=params)
3512+
3513+
def futures_get_open_orders(self, **params):
3514+
"""Get all open orders on a symbol.
3515+
3516+
https://binance-docs.github.io/apidocs/futures/en/#current-open-orders-user_data
3517+
3518+
"""
3519+
return self._request_futures_api('get', 'openOrders', True, data=params)
3520+
3521+
def futures_get_all_orders(self, **params):
3522+
"""Get all futures account orders; active, canceled, or filled.
3523+
3524+
https://binance-docs.github.io/apidocs/futures/en/#all-orders-user_data
3525+
3526+
"""
3527+
return self._request_futures_api('get', 'allOrders', True, data=params)
3528+
3529+
def futures_cancel_order(self, **params):
3530+
"""Cancel an active futures order.
3531+
3532+
https://binance-docs.github.io/apidocs/futures/en/#cancel-order-trade
3533+
3534+
"""
3535+
return self._request_futures_api('delete', 'order', True, data=params)
3536+
3537+
def futures_cancel_all_open_orders(self, **params):
3538+
"""Cancel all open futures orders
3539+
3540+
https://binance-docs.github.io/apidocs/futures/en/#cancel-all-open-orders-trade
3541+
3542+
"""
3543+
return self._request_futures_api('delete', 'allOpenOrders', True, data=params)
3544+
3545+
def futures_cancel_orders(self, **params):
3546+
"""Cancel multiple futures orders
3547+
3548+
https://binance-docs.github.io/apidocs/futures/en/#cancel-multiple-orders-trade
3549+
3550+
"""
3551+
return self._request_futures_api('delete', 'batchOrders', True, data=params)
3552+
3553+
def futures_account_balance(self, **params):
3554+
"""Get futures account balance
3555+
3556+
https://binance-docs.github.io/apidocs/futures/en/#future-account-balance-user_data
3557+
3558+
"""
3559+
return self._request_futures_api('get', 'balance', True, data=params)
3560+
3561+
def futures_account(self, **params):
3562+
"""Get current account information.
3563+
3564+
https://binance-docs.github.io/apidocs/futures/en/#account-information-user_data
3565+
3566+
"""
3567+
return self._request_futures_api('get', 'account', True, data=params)
3568+
3569+
def futures_change_leverage(self, **params):
3570+
"""Change user's initial leverage of specific symbol market
3571+
3572+
https://binance-docs.github.io/apidocs/futures/en/#change-initial-leverage-trade
3573+
3574+
"""
3575+
return self._request_futures_api('post', 'leverage', True, data=params)
3576+
3577+
def futures_change_margin_type(self, **params):
3578+
"""Change the margin type for a symbol
3579+
3580+
https://binance-docs.github.io/apidocs/futures/en/#change-margin-type-trade
3581+
3582+
"""
3583+
return self._request_futures_api('post', 'marginType', True, data=params)
3584+
3585+
def futures_change_position_margin(self, **params):
3586+
"""Change the position margin for a symbol
3587+
3588+
https://binance-docs.github.io/apidocs/futures/en/#modify-isolated-position-margin-trade
3589+
3590+
"""
3591+
return self._request_futures_api('post', 'positionMargin', True, data=params)
3592+
3593+
def futures_position_margin_history(self, **params):
3594+
"""Get position margin change history
3595+
3596+
https://binance-docs.github.io/apidocs/futures/en/#get-postion-margin-change-history-trade
3597+
3598+
"""
3599+
return self._request_futures_api('get', 'positionMargin/history', True, data=params)
3600+
3601+
def futures_position_information(self, **params):
3602+
"""Get position information
3603+
3604+
https://binance-docs.github.io/apidocs/futures/en/#position-information-user_data
3605+
3606+
"""
3607+
return self._request_futures_api('get', 'positionRisk', True, data=params)
3608+
3609+
def futures_account_trades(self, **params):
3610+
"""Get trades for the authenticated account and symbol.
3611+
3612+
https://binance-docs.github.io/apidocs/futures/en/#account-trade-list-user_data
3613+
3614+
"""
3615+
return self._request_futures_api('get', 'userTrades', True, data=params)
3616+
3617+
def futures_income_history(self, **params):
3618+
"""Get income history for authenticated account
3619+
3620+
https://binance-docs.github.io/apidocs/futures/en/#get-income-history-user_data
3621+
3622+
"""
3623+
return self._request_futures_api('get', 'income', True, data=params)
3624+

0 commit comments

Comments
 (0)