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

Method parse_position_risk

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

Source from the content-addressed store, hash-verified

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