in java/connectors/polygon-io/src/main/java/com/epam/deltix/data/connectors/polygon/PolygonIoCryptoFeed.java [50:89]
protected void processPolygonData(JsonArray array) {
for (int i = 0; i < array.size(); ++i) {
JsonObject obj = array.getObject(i);
String event = obj.getString("ev");
if ("XT".equalsIgnoreCase(event)) {
String instrument = obj.getString("pair");
long timestamp = obj.getLong("t");
long price = obj.getDecimal64Required("p");
long size = obj.getDecimal64Required("s");
String ex = String.valueOf(obj.getLong("x"));
JsonArray conditionsArray = obj.getArray("c");
String conditions = readConditions(conditionsArray);
AggressorSide side = null;
if (conditionsArray.size() > 0) {
long condition = conditionsArray.getLong(0);
if (condition == 1) {
side = AggressorSide.SELL;
} else if (condition == 2) {
side = AggressorSide.BUY;
}
}
processor().onTrade(
instrument, timestamp, price, size, side, ex, conditions
);
} else if ("XQ".equalsIgnoreCase(event)) {
String instrument = obj.getString("pair");
long timestamp = obj.getLong("t");
long askPrice = obj.getDecimal64Required("ap");
long askSize = obj.getDecimal64Required("as");
long bidPrice = obj.getDecimal64Required("bp");
long bidSize = obj.getDecimal64Required("bs");
String ex = String.valueOf(obj.getLong("x"));
processor().onL1Snapshot(
instrument, timestamp, bidPrice, bidSize, ex, askPrice, askSize, ex
);
}
}
}