Skip to content

Commit

Permalink
Merge pull request knowm#4436 from alimac87/kraken-ticker-bidSize-ask…
Browse files Browse the repository at this point in the history
…Size

Include askSize and bidSize in Kraken Ticker
  • Loading branch information
earce authored Apr 13, 2022
2 parents cbaed35 + 4b3b517 commit db9a5dd
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -1,32 +1,24 @@
package info.bitrich.xchangestream.kraken;

import static info.bitrich.xchangestream.kraken.KrakenStreamingChecksum.createCrcChecksum;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.node.*;
import com.google.common.collect.Streams;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.knowm.xchange.dto.Order;
import org.knowm.xchange.dto.marketdata.OrderBook;
import org.knowm.xchange.dto.marketdata.Ticker;
import org.knowm.xchange.dto.marketdata.Trade;
import org.knowm.xchange.dto.trade.LimitOrder;
import org.knowm.xchange.instrument.Instrument;
import org.knowm.xchange.kraken.KrakenAdapters;
import org.knowm.xchange.kraken.dto.trade.KrakenType;
import org.knowm.xchange.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.*;
import org.knowm.xchange.dto.*;
import org.knowm.xchange.dto.marketdata.*;
import org.knowm.xchange.dto.trade.*;
import org.knowm.xchange.instrument.*;
import org.knowm.xchange.kraken.*;
import org.knowm.xchange.kraken.dto.trade.*;
import org.knowm.xchange.utils.*;
import org.slf4j.*;

import java.math.*;
import java.util.*;
import java.util.concurrent.atomic.*;
import java.util.stream.*;

import static info.bitrich.xchangestream.kraken.KrakenStreamingChecksum.*;

/** Kraken streaming adapters */
public class KrakenStreamingAdapters {
Expand Down Expand Up @@ -159,8 +151,8 @@ public static Ticker adaptTickerMessage(Instrument instrument, ArrayNode arrayNo
.filter(JsonNode::isObject)
.map(
tickerNode -> {
Iterator<JsonNode> askIterator = tickerNode.get("a").iterator();
Iterator<JsonNode> bidIterator = tickerNode.get("b").iterator();
ArrayNode askArray = (ArrayNode) tickerNode.get("a");
ArrayNode bidArray = (ArrayNode) tickerNode.get("b");
Iterator<JsonNode> closeIterator = tickerNode.get("c").iterator();
Iterator<JsonNode> volumeIterator = tickerNode.get("v").iterator();
Iterator<JsonNode> vwapIterator = tickerNode.get("p").iterator();
Expand All @@ -175,8 +167,10 @@ public static Ticker adaptTickerMessage(Instrument instrument, ArrayNode arrayNo

return new Ticker.Builder()
.open(nextNodeAsDecimal(openPriceIterator))
.ask(nextNodeAsDecimal(askIterator))
.bid(nextNodeAsDecimal(bidIterator))
.ask(arrayNodeItemAsDecimal(askArray, 0))
.bid(arrayNodeItemAsDecimal(bidArray, 0))
.askSize(arrayNodeItemAsDecimal(askArray, 2))
.bidSize(arrayNodeItemAsDecimal(bidArray, 2))
.last(nextNodeAsDecimal(closeIterator))
.high(nextNodeAsDecimal(highPriceIterator))
.low(nextNodeAsDecimal(lowPriceIterator))
Expand Down Expand Up @@ -215,6 +209,21 @@ public static Trade adaptTrade(Instrument instrument, JsonNode arrayNode) {
.build();
}

/**
* Returns the element at index in arrayNode as a BigDecimal. Retuns null if the arrayNode is null
* or index does not exist.
*/
private static BigDecimal arrayNodeItemAsDecimal(ArrayNode arrayNode, int index) {
if (arrayNode == null) {
return null;
}
JsonNode itemNode = arrayNode.get(index);
if (itemNode == null) {
return null;
}
return new BigDecimal(itemNode.asText());
}

/**
* Checks if a iterator has next node and returns the value as a BigDecimal. Returns null if the
* iterator has no next value or the given iterator is null.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ public void testAdaptTickerMessage() throws IOException {
assertThat(ticker.getOpen()).isEqualByComparingTo("9668.90000");
assertThat(ticker.getAsk()).isEqualByComparingTo("9971.00000");
assertThat(ticker.getBid()).isEqualByComparingTo("9970.90000");
assertThat(ticker.getAskSize()).isEqualByComparingTo("2.83251755");
assertThat(ticker.getBidSize()).isEqualByComparingTo("10.57957134");
assertThat(ticker.getHigh()).isEqualByComparingTo("9990.00000");
assertThat(ticker.getLow()).isEqualByComparingTo("9653.20000");
assertThat(ticker.getVwap()).isEqualByComparingTo("9732.48471");
Expand Down

0 comments on commit db9a5dd

Please sign in to comment.