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

Method parse_market

python/ccxt/bitrue.py:937–1035  ·  view source on GitHub ↗
(self, market: dict)

Source from the content-addressed store, hash-verified

935 return self.parse_markets(markets)
936
937 def parse_market(self, market: dict) -> Market:
938 id = self.safe_string(market, 'symbol', '')
939 lowercaseId = self.safe_string_lower(market, 'symbol')
940 side = self.safe_integer(market, 'side') # 1 linear, 0 inverse, None spot
941 type = 'spot'
942 isLinear = None
943 isInverse = None
944 if side is None:
945 type = 'spot'
946 else:
947 type = 'swap'
948 isLinear = (side == 1)
949 isInverse = (side == 0)
950 isContract = (type != 'spot')
951 baseId = self.safe_string(market, 'baseAsset')
952 quoteId = self.safe_string(market, 'quoteAsset')
953 settleId = None
954 settle = None
955 if isContract:
956 symbolSplit = id.split('-')
957 baseId = self.safe_string(symbolSplit, 1)
958 quoteId = self.safe_string(symbolSplit, 2)
959 if isLinear:
960 settleId = quoteId
961 else:
962 settleId = baseId
963 settle = self.safe_currency_code(settleId)
964 base = self.safe_currency_code(baseId)
965 quote = self.safe_currency_code(quoteId)
966 symbol = base + '/' + quote
967 if settle is not None:
968 symbol += ':' + settle
969 filters = self.safe_list(market, 'filters', [])
970 filtersByType = self.index_by(filters, 'filterType')
971 status = self.safe_string(market, 'status')
972 priceFilter = self.safe_dict(filtersByType, 'PRICE_FILTER', {})
973 amountFilter = self.safe_dict(filtersByType, 'LOT_SIZE', {})
974 defaultPricePrecision = self.safe_string(market, 'pricePrecision')
975 defaultAmountPrecision = self.safe_string(market, 'quantityPrecision')
976 pricePrecision = self.safe_string(priceFilter, 'priceScale', defaultPricePrecision)
977 amountPrecision = self.safe_string(amountFilter, 'volumeScale', defaultAmountPrecision)
978 multiplier = self.safe_string(market, 'multiplier')
979 maxQuantity = self.safe_number(amountFilter, 'maxQty')
980 if maxQuantity is None:
981 maxQuantity = self.safe_number(market, 'maxValidOrder')
982 minCost = self.safe_number(amountFilter, 'minVal')
983 if minCost is None:
984 minCost = self.safe_number(market, 'minOrderMoney')
985 isSpot = (type == 'spot')
986 return {
987 'id': id,
988 'lowercaseId': lowercaseId,
989 'symbol': symbol,
990 'base': base,
991 'quote': quote,
992 'settle': settle,
993 'baseId': baseId,
994 'quoteId': quoteId,

Callers

nothing calls this directly

Calls 12

safe_stringMethod · 0.80
safe_string_lowerMethod · 0.80
safe_integerMethod · 0.80
splitMethod · 0.80
safe_listMethod · 0.80
index_byMethod · 0.80
safe_dictMethod · 0.80
safe_numberMethod · 0.80
parse_numberMethod · 0.80
string_absMethod · 0.80
parse_precisionMethod · 0.80
safe_currency_codeMethod · 0.45

Tested by

no test coverage detected