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

Method parse_position

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

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