Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Portfolio margin support #1384

Open
chedlykechaou opened this issue Dec 26, 2023 · 1 comment
Open

Portfolio margin support #1384

chedlykechaou opened this issue Dec 26, 2023 · 1 comment

Comments

@chedlykechaou
Copy link

I tried to switch to portfolio margin mode but the api functions won't work anymore.

Binance portfolio margin mode is slightly different and requires a few changes in the code.

Do you have any guidelines on how to modify code so it works??

@BlockDweller
Copy link

You can just add some functions that call the /papi endpoints as described in Binance API docs here: https://binance-docs.github.io/apidocs/pm/en/

To set up the endpoints, I added the following two private functions to the binance client:

PORTFOLIO_MARGIN_URL = 'https://papi.binance.com/papi'
PORTFOLIO_MARGIN_VERSION = 'v1'

def _create_portfolio_margin_api_uri(self, path: str, version: int = 1) -> str:
        url = self.PORTFOLIO_MARGIN_URL
        options = {1: self.PORTFOLIO_MARGIN_VERSION}
        return url + '/' + options[version] + '/' + path

async def _request_portfolio_margin_api(self, method, path, signed=False, version: int = 1, **kwargs) -> Dict:
    uri = self._create_portfolio_margin_api_uri(path, version)

Here are some examples of function calls to create and cancel orders:

async def pm_create_order(self, **params):
    return await self._request_portfolio_margin_api('post', 'um/order', True, data=params)

async def pm_cancel_order(self, **params):
    return await self._request_portfolio_margin_api('delete', 'um/order', True, data=params)

^ these functions are the same as for "normal" futures accounts without portfolio margin. The only difference is the endpoint /um/order instead of /order.
There are some things you need to be aware of though, such as that there is no endpoint for order modification on portfolio margin (you have to cancel existing order and place a new one instead).

Hope this helps!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants