@@ -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