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

Method safe_order

python/ccxt/base/exchange.py:4211–4429  ·  view source on GitHub ↗
(self, order: dict, market: Market = None)

Source from the content-addressed store, hash-verified

4209 return balance
4210
4211 def safe_order(self, order: dict, market: Market = None):
4212 # parses numbers
4213 # * it is important pass the trades rawTrades
4214 amount = self.omit_zero(self.safe_string(order, 'amount'))
4215 remaining = self.safe_string(order, 'remaining')
4216 filled = self.safe_string(order, 'filled')
4217 cost = self.safe_string(order, 'cost')
4218 average = self.omit_zero(self.safe_string(order, 'average'))
4219 price = self.omit_zero(self.safe_string(order, 'price'))
4220 lastTradeTimeTimestamp = self.safe_integer(order, 'lastTradeTimestamp')
4221 symbol = self.safe_string(order, 'symbol')
4222 side = self.safe_string(order, 'side')
4223 status = self.safe_string(order, 'status')
4224 parseFilled = (filled is None)
4225 parseCost = (cost is None)
4226 parseLastTradeTimeTimestamp = (lastTradeTimeTimestamp is None)
4227 fee = self.safe_value(order, 'fee')
4228 parseFee = (fee is None)
4229 parseFees = self.safe_value(order, 'fees') is None
4230 parseSymbol = symbol is None
4231 parseSide = side is None
4232 shouldParseFees = parseFee or parseFees
4233 fees = self.safe_list(order, 'fees', [])
4234 trades = []
4235 isTriggerOrSLTpOrder = ((self.safe_string(order, 'triggerPrice') is not None or (self.safe_string(order, 'stopLossPrice') is not None)) or (self.safe_string(order, 'takeProfitPrice') is not None))
4236 if parseFilled or parseCost or shouldParseFees:
4237 rawTrades = self.safe_value(order, 'trades', trades)
4238 # oldNumber = self.number
4239 # we parse trades here!
4240 # i don't think self is needed anymore
4241 # self.number = str
4242 firstTrade = self.safe_value(rawTrades, 0)
4243 # parse trades if they haven't already been parsed
4244 tradesAreParsed = ((firstTrade is not None) and ('info' in firstTrade) and ('id' in firstTrade))
4245 if not tradesAreParsed:
4246 trades = self.parse_trades(rawTrades, market)
4247 else:
4248 trades = rawTrades
4249 # self.number = oldNumber; why parse trades if you read the value using `safeString` ?
4250 tradesLength = 0
4251 isArray = isinstance(trades, list)
4252 if isArray:
4253 tradesLength = len(trades)
4254 if isArray and (tradesLength > 0):
4255 # move properties that are defined in trades up into the order
4256 if order['symbol'] is None:
4257 order['symbol'] = trades[0]['symbol']
4258 if order['side'] is None:
4259 order['side'] = trades[0]['side']
4260 if order['type'] is None:
4261 order['type'] = trades[0]['type']
4262 if order['id'] is None:
4263 order['id'] = trades[0]['order']
4264 if parseFilled:
4265 filled = '0'
4266 if parseCost:
4267 cost = '0'
4268 for i in range(0, len(trades)):

Callers 15

parse_orderMethod · 0.80
cancel_all_ordersMethod · 0.80
parse_orderMethod · 0.80
cancel_orderMethod · 0.80
cancel_all_ordersMethod · 0.80
parse_orderMethod · 0.80
edit_orderMethod · 0.80
cancel_all_ordersMethod · 0.80
cancel_ordersMethod · 0.80
parse_orderMethod · 0.80
parse_orderMethod · 0.80

Calls 15

omit_zeroMethod · 0.95
safe_stringMethod · 0.95
safe_integerMethod · 0.95
safe_valueMethod · 0.95
safe_listMethod · 0.95
parse_tradesMethod · 0.95
extendMethod · 0.95
safe_numberMethod · 0.95
deep_extendMethod · 0.95
safe_boolMethod · 0.95
safe_dictMethod · 0.95

Tested by

no test coverage detected