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

Method parse_position

python/ccxt/async_support/grvt.py:2247–2302  ·  view source on GitHub ↗
(self, position: dict, market: Market = None)

Source from the content-addressed store, hash-verified

2245 return self.parse_positions(result, symbols)
2246
2247 def parse_position(self, position: dict, market: Market = None):
2248 #
2249 # {
2250 # "event_time": "1765258069092857642",
2251 # "sub_account_id": "2147050003876484",
2252 # "instrument": "BTC_USDT_Perp",
2253 # "size": "0.001",
2254 # "notional": "89.8169",
2255 # "entry_price": "90000.0",
2256 # "exit_price": "0.0",
2257 # "mark_price": "89816.900008979",
2258 # "unrealized_pnl": "-0.183099",
2259 # "realized_pnl": "0.0",
2260 # "total_pnl": "-0.183099",
2261 # "roi": "-0.2034",
2262 # "quote_index_price": "1.00017885",
2263 # "est_liquidation_price": "77951.450008979",
2264 # "leverage": "28.0",
2265 # "cumulative_fee": "-0.00009",
2266 # "cumulative_realized_funding_payment": "0.033862"
2267 # }
2268 #
2269 marketId = self.safe_string(position, 'instrument')
2270 timestamp = self.safe_integer_product(position, 'event_time', 0.000001)
2271 sizeRaw = self.safe_string(position, 'size')
2272 isLong = (Precise.string_ge(sizeRaw, '0'))
2273 side = 'long' if isLong else 'short'
2274 return self.safe_position({
2275 'info': position,
2276 'id': None,
2277 'symbol': self.safe_symbol(marketId, market),
2278 'notional': self.parse_number(Precise.string_abs(self.safe_string(position, 'notional'))),
2279 'marginMode': None,
2280 'liquidationPrice': self.safe_number(position, 'est_liquidation_price'),
2281 'entryPrice': self.safe_number(position, 'entry_price'),
2282 'unrealizedPnl': self.safe_number(position, 'unrealized_pnl'),
2283 'realizedPnl': self.safe_number(position, 'realized_pnl'),
2284 'percentage': None,
2285 'contracts': self.parse_number(Precise.string_abs(sizeRaw)),
2286 'markPrice': self.safe_number(position, 'mark_price'),
2287 'lastPrice': None,
2288 'side': side,
2289 'hedged': None,
2290 'timestamp': timestamp,
2291 'datetime': self.iso8601(timestamp),
2292 'lastUpdateTimestamp': self.safe_integer(position, 'lastUpdateTime'),
2293 'maintenanceMargin': self.safe_number(position, 'maintenanceMargin'),
2294 'maintenanceMarginPercentage': None,
2295 'collateral': None,
2296 'initialMargin': self.safe_number(position, 'initialMargin'),
2297 'initialMarginPercentage': None,
2298 'leverage': self.safe_number(position, 'leverage'),
2299 'marginRatio': None,
2300 'stopLossPrice': None,
2301 'takeProfitPrice': None,
2302 })
2303
2304 async def fetch_leverages(self, symbols: Strings = None, params={}) -> Leverages:

Callers 1

parse_ws_positionMethod · 0.95

Calls 10

safe_stringMethod · 0.80
safe_integer_productMethod · 0.80
string_geMethod · 0.80
safe_positionMethod · 0.80
safe_symbolMethod · 0.80
parse_numberMethod · 0.80
string_absMethod · 0.80
safe_numberMethod · 0.80
safe_integerMethod · 0.80
iso8601Method · 0.45

Tested by

no test coverage detected