MCPcopy
hub / github.com/ccxt/ccxt / safeTicker

Method safeTicker

java/lib/src/main/java/io/github/ccxt/Exchange.java:7243–7360  ·  view source on GitHub ↗
(Object ticker, Object... optionalArgs)

Source from the content-addressed store, hash-verified

7241 }
7242
7243 public Object safeTicker(Object ticker, Object... optionalArgs)
7244 {
7245 Object market = Helpers.getArg(optionalArgs, 0, null);
7246 Object open = this.omitZero(this.safeString(ticker, "open"));
7247 Object close = this.omitZero(this.safeString2(ticker, "close", "last"));
7248 Object change = this.omitZero(this.safeString(ticker, "change"));
7249 Object percentage = this.omitZero(this.safeString(ticker, "percentage"));
7250 Object average = this.omitZero(this.safeString(ticker, "average"));
7251 Object vwap = this.safeString(ticker, "vwap");
7252 Object baseVolume = this.safeString(ticker, "baseVolume");
7253 Object quoteVolume = this.safeString(ticker, "quoteVolume");
7254 if (Helpers.isTrue(Helpers.isEqual(vwap, null)))
7255 {
7256 vwap = Precise.stringDiv(this.omitZero(quoteVolume), baseVolume);
7257 }
7258 // calculate open
7259 if (Helpers.isTrue(!Helpers.isEqual(change, null)))
7260 {
7261 if (Helpers.isTrue(Helpers.isTrue(Helpers.isEqual(close, null)) && Helpers.isTrue(!Helpers.isEqual(average, null))))
7262 {
7263 close = Precise.stringAdd(average, Precise.stringDiv(change, "2"));
7264 }
7265 if (Helpers.isTrue(Helpers.isTrue(Helpers.isEqual(open, null)) && Helpers.isTrue(!Helpers.isEqual(close, null))))
7266 {
7267 open = Precise.stringSub(close, change);
7268 }
7269 } else if (Helpers.isTrue(!Helpers.isEqual(percentage, null)))
7270 {
7271 if (Helpers.isTrue(Helpers.isTrue(Helpers.isEqual(close, null)) && Helpers.isTrue(!Helpers.isEqual(average, null))))
7272 {
7273 Object openAddClose = Precise.stringMul(average, "2");
7274 // openAddClose = open * (1 + (100 + percentage)/100)
7275 Object denominator = Precise.stringAdd("2", Precise.stringDiv(percentage, "100"));
7276 Object calcOpen = ((Helpers.isTrue((!Helpers.isEqual(open, null))))) ? open : Precise.stringDiv(openAddClose, denominator);
7277 close = Precise.stringMul(calcOpen, Precise.stringAdd("1", Precise.stringDiv(percentage, "100")));
7278 }
7279 if (Helpers.isTrue(Helpers.isTrue(Helpers.isEqual(open, null)) && Helpers.isTrue(!Helpers.isEqual(close, null))))
7280 {
7281 open = Precise.stringDiv(close, Precise.stringAdd("1", Precise.stringDiv(percentage, "100")));
7282 }
7283 }
7284 // change
7285 if (Helpers.isTrue(Helpers.isEqual(change, null)))
7286 {
7287 if (Helpers.isTrue(Helpers.isTrue(!Helpers.isEqual(close, null)) && Helpers.isTrue(!Helpers.isEqual(open, null))))
7288 {
7289 change = Precise.stringSub(close, open);
7290 } else if (Helpers.isTrue(Helpers.isTrue(!Helpers.isEqual(close, null)) && Helpers.isTrue(!Helpers.isEqual(percentage, null))))
7291 {
7292 change = Precise.stringMul(Precise.stringDiv(percentage, "100"), Precise.stringDiv(close, "100"));
7293 } else if (Helpers.isTrue(Helpers.isTrue(!Helpers.isEqual(open, null)) && Helpers.isTrue(!Helpers.isEqual(percentage, null))))
7294 {
7295 change = Precise.stringMul(open, Precise.stringDiv(percentage, "100"));
7296 }
7297 }
7298 // calculate things according to "open" (similar can be done with "close")
7299 if (Helpers.isTrue(!Helpers.isEqual(open, null)))
7300 {

Callers 15

testSafeTickerMethod · 0.95
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45
parseTickerMethod · 0.45

Calls 15

getArgMethod · 0.95
omitZeroMethod · 0.95
safeStringMethod · 0.95
safeString2Method · 0.95
isTrueMethod · 0.95
isEqualMethod · 0.95
stringDivMethod · 0.95
stringAddMethod · 0.95
stringSubMethod · 0.95
stringMulMethod · 0.95
isTickPrecisionMethod · 0.95
safeDictMethod · 0.95

Tested by 1

testSafeTickerMethod · 0.76