MCPcopy Create free account
hub / github.com/ccxt/ccxt / parse_position_risk

Method parse_position_risk

python/ccxt/async_support/aster.py:3236–3387  ·  view source on GitHub ↗
(self, position, market: Market = None)

Source from the content-addressed store, hash-verified

3234 return self.parse_ledger(response, currency, since, limit)
3235
3236 def parse_position_risk(self, position, market: Market = None):
3237 #
3238 # {
3239 # "entryPrice": "6563.66500",
3240 # "marginType": "isolated",
3241 # "isAutoAddMargin": "false",
3242 # "isolatedMargin": "15517.54150468",
3243 # "leverage": "10",
3244 # "liquidationPrice": "5930.78",
3245 # "markPrice": "6679.50671178",
3246 # "maxNotionalValue": "20000000",
3247 # "positionSide": "LONG",
3248 # "positionAmt": "20.000",
3249 # "symbol": "BTCUSDT",
3250 # "unRealizedProfit": "2316.83423560",
3251 # "updateTime": 1625474304765
3252 # }
3253 #
3254 marketId = self.safe_string(position, 'symbol')
3255 market = self.safe_market(marketId, market, None, 'contract')
3256 symbol = self.safe_string(market, 'symbol')
3257 isolatedMarginString = self.safe_string(position, 'isolatedMargin')
3258 leverageBrackets = self.safe_dict(self.options, 'leverageBrackets', {})
3259 leverageBracket = self.safe_list(leverageBrackets, symbol, [])
3260 notionalString = self.safe_string_2(position, 'notional', 'notionalValue')
3261 notionalStringAbs = Precise.string_abs(notionalString)
3262 maintenanceMarginPercentageString = None
3263 for i in range(0, len(leverageBracket)):
3264 bracket = leverageBracket[i]
3265 if Precise.string_lt(notionalStringAbs, bracket[0]):
3266 break
3267 maintenanceMarginPercentageString = bracket[1]
3268 notional = self.parse_number(notionalStringAbs)
3269 contractsAbs = Precise.string_abs(self.safe_string(position, 'positionAmt'))
3270 contracts = self.parse_number(contractsAbs)
3271 unrealizedPnlString = self.safe_string(position, 'unRealizedProfit')
3272 unrealizedPnl = self.parse_number(unrealizedPnlString)
3273 liquidationPriceString = self.omit_zero((self.safe_string(position, 'liquidationPrice')))
3274 liquidationPrice = self.parse_number(liquidationPriceString)
3275 collateralString = None
3276 marginMode = self.safe_string(position, 'marginType')
3277 if marginMode is None and isolatedMarginString is not None:
3278 marginMode = 'cross' if Precise.string_eq(isolatedMarginString, '0') else 'isolated'
3279 side = None
3280 if Precise.string_gt(notionalString, '0'):
3281 side = 'long'
3282 elif Precise.string_lt(notionalString, '0'):
3283 side = 'short'
3284 entryPriceString = self.safe_string(position, 'entryPrice')
3285 entryPrice = self.parse_number(entryPriceString)
3286 contractSize = self.safe_value(market, 'contractSize')
3287 contractSizeString = self.number_to_string(contractSize)
3288 # to notionalValue
3289 linear = ('notional' in position)
3290 if marginMode == 'cross':
3291 # calculate collateral
3292 precision = self.safe_dict(market, 'precision', {})
3293 basePrecisionValue = self.safe_string(precision, 'base')

Callers 1

fetch_positions_riskMethod · 0.95

Calls 15

safe_stringMethod · 0.80
safe_dictMethod · 0.80
safe_listMethod · 0.80
safe_string_2Method · 0.80
string_absMethod · 0.80
string_ltMethod · 0.80
parse_numberMethod · 0.80
omit_zeroMethod · 0.80
string_eqMethod · 0.80
string_gtMethod · 0.80
safe_valueMethod · 0.80
string_addMethod · 0.80

Tested by

no test coverage detected