MCPcopy
hub / github.com/ccxt/ccxt / safeOrder

Method safeOrder

java/lib/src/main/java/io/github/ccxt/Exchange.java:6471–6810  ·  view source on GitHub ↗
(Object order, Object... optionalArgs)

Source from the content-addressed store, hash-verified

6469 }
6470
6471 public Object safeOrder(Object order, Object... optionalArgs)
6472 {
6473 // parses numbers as strings
6474 // * it is important pass the trades as unparsed rawTrades
6475 Object market = Helpers.getArg(optionalArgs, 0, null);
6476 Object amount = this.omitZero(this.safeString(order, "amount"));
6477 Object remaining = this.safeString(order, "remaining");
6478 Object filled = this.safeString(order, "filled");
6479 Object cost = this.safeString(order, "cost");
6480 Object average = this.omitZero(this.safeString(order, "average"));
6481 Object price = this.omitZero(this.safeString(order, "price"));
6482 Object lastTradeTimeTimestamp = this.safeInteger(order, "lastTradeTimestamp");
6483 Object symbol = this.safeString(order, "symbol");
6484 Object side = this.safeString(order, "side");
6485 Object status = this.safeString(order, "status");
6486 Object parseFilled = (Helpers.isEqual(filled, null));
6487 Object parseCost = (Helpers.isEqual(cost, null));
6488 Object parseLastTradeTimeTimestamp = (Helpers.isEqual(lastTradeTimeTimestamp, null));
6489 Object fee = this.safeValue(order, "fee");
6490 Object parseFee = (Helpers.isEqual(fee, null));
6491 Object parseFees = Helpers.isEqual(this.safeValue(order, "fees"), null);
6492 Object parseSymbol = Helpers.isEqual(symbol, null);
6493 Object parseSide = Helpers.isEqual(side, null);
6494 Object shouldParseFees = Helpers.isTrue(parseFee) || Helpers.isTrue(parseFees);
6495 Object fees = this.safeList(order, "fees", new java.util.ArrayList<Object>(java.util.Arrays.asList()));
6496 Object trades = new java.util.ArrayList<Object>(java.util.Arrays.asList());
6497 Object isTriggerOrSLTpOrder = (Helpers.isTrue((Helpers.isTrue(!Helpers.isEqual(this.safeString(order, "triggerPrice"), null)) || Helpers.isTrue((!Helpers.isEqual(this.safeString(order, "stopLossPrice"), null))))) || Helpers.isTrue((!Helpers.isEqual(this.safeString(order, "takeProfitPrice"), null))));
6498 if (Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(parseFilled) || Helpers.isTrue(parseCost)) || Helpers.isTrue(shouldParseFees)))
6499 {
6500 Object rawTrades = this.safeValue(order, "trades", trades);
6501 // const oldNumber = this.number;
6502 // we parse trades as strings here!
6503 // i don't think this is needed anymore
6504 // (this as any).number = String;
6505 Object firstTrade = this.safeValue(rawTrades, 0);
6506 // parse trades if they haven't already been parsed
6507 Object tradesAreParsed = (Helpers.isTrue(Helpers.isTrue((!Helpers.isEqual(firstTrade, null))) && Helpers.isTrue((Helpers.inOp(firstTrade, "info")))) && Helpers.isTrue((Helpers.inOp(firstTrade, "id"))));
6508 if (!Helpers.isTrue(tradesAreParsed))
6509 {
6510 trades = this.parseTrades(rawTrades, market);
6511 } else
6512 {
6513 trades = rawTrades;
6514 }
6515 // this.number = oldNumber; why parse trades as strings if you read the value using `safeString` ?
6516 Object tradesLength = 0;
6517 Object isArray = Helpers.isArray(trades);
6518 if (Helpers.isTrue(isArray))
6519 {
6520 tradesLength = Helpers.getArrayLength(trades);
6521 }
6522 if (Helpers.isTrue(Helpers.isTrue(isArray) && Helpers.isTrue((Helpers.isGreaterThan(tradesLength, 0)))))
6523 {
6524 // move properties that are defined in trades up into the order
6525 if (Helpers.isTrue(Helpers.isEqual(Helpers.GetValue(order, "symbol"), null)))
6526 {
6527 Helpers.addElementToObject(order, "symbol", Helpers.GetValue(Helpers.GetValue(trades, 0), "symbol"));
6528 }

Callers 15

createOrderMethod · 0.45
cancelOrderMethod · 0.45
parseOrderMethod · 0.45
parseOrderMethod · 0.45
cancelAllOrdersMethod · 0.45
parseOrderMethod · 0.45
createOrdersMethod · 0.45
cancelOrdersMethod · 0.45
cancelAllOrdersMethod · 0.45
cancelOrderMethod · 0.45
parseOrderMethod · 0.45
createOrderMethod · 0.45

Calls 15

getArgMethod · 0.95
omitZeroMethod · 0.95
safeStringMethod · 0.95
safeIntegerMethod · 0.95
isEqualMethod · 0.95
safeValueMethod · 0.95
isTrueMethod · 0.95
safeListMethod · 0.95
inOpMethod · 0.95
parseTradesMethod · 0.95
isArrayMethod · 0.95
getArrayLengthMethod · 0.95

Tested by

no test coverage detected