public byte[] marshall(MarketDataSnapshot mds) throws InvalidProtocolBufferException { BaseMessage mdsm = mf.buildMds(mds.getMdiId(), ArrayUtils.toDoubleList(mds.getBidPrices()), ArrayUtils.toDoubleList(mds.getAskPrices()), ArrayUtils.toDoubleList(mds.getBidSizes()), ArrayUtils.toDoubleList(mds.getAskSizes()), mds.isResend()); return mdsm.toByteArray(); }
public MarketDataSnapshot demarshall(AQMessages.MarketDataSnapshot mdsm) { MarketDataSnapshot mds = new MarketDataSnapshot(); mds.setMdiId(mdsm.getMdiId()); mds.setTimeStamp(new TimeStamp(mdsm.getTimestamp())); mds.setBidPrices(ArrayUtils.toPrimArray(mdsm.getBidPxList())); mds.setAskPrices(ArrayUtils.toPrimArray(mdsm.getAskPxList())); mds.setBidSizes(ArrayUtils.toPrimArray(mdsm.getBidQList())); mds.setAskSizes(ArrayUtils.toPrimArray(mdsm.getAskQList())); if (mdsm.hasResend()) mds.setResend(mdsm.getResend()); return mds; }
public String toString(){ return "MDS:" + mdiId + " - " + getTimeStamp().getCalendar().getTime(); }
private void process(MarketDataSnapshot mds) { int divs = 0; mp = 0; if (!Double.isNaN(mds.getBidPrices()[0])) { mp += mds.getBidPrices()[0]; divs++; } if (!Double.isNaN(mds.getAskPrices()[0])) { mp += mds.getAskPrices()[0]; divs++; } mp /= (double) divs; // System.out.println("Midpoint: " + mp); if (!initialized) { init(); } else { // reprice. reprice(); } // }
String tdiId = mds.getTdiId(); if (mds.getBidPrices() != null && mds.getBidPrices().length > 0) { LimitOrder bestBid = new LimitOrder(); bestBid.setWorkingTimeStamp(currentExchangeTime); bestBid.setOrderSide(OrderSide.BUY); bestBid.setLimitPrice(mds.getBidPrices()[0]); bestBid.setQuantity(mds.getBidSizes()[0]); bestBid.setOpenQuantity(mds.getBidSizes()[0]); lob.addOrder(bestBid); if (mds.getAskPrices() != null && mds.getAskPrices().length > 0) { LimitOrder bestAsk = new LimitOrder(); bestAsk.setOrderSide(OrderSide.SELL); bestAsk.setWorkingTimeStamp(currentExchangeTime); bestAsk.setLimitPrice(mds.getAskPrices()[0]); bestAsk.setQuantity(mds.getAskSizes()[0]); bestAsk.setOpenQuantity(mds.getAskSizes()[0]); lob.addOrder(bestAsk);
@Override public void eventFired(byte[] event) { BaseMessage bm; try { bm = marshaller.demarshall(event); if(log.isDebugEnabled()) log.debug("Event type: " + bm.getType()); if (bm.getType().equals(CommandType.MDS)) { MarketDataSnapshot mds = marshaller .demarshall(((AQMessages.MarketDataSnapshot) bm .getExtension(AQMessages.MarketDataSnapshot.cmd))); if(!mds.isResend()) collectionList.add(mds); // else we drop it. } } catch (Exception e) { e.printStackTrace(); log.warn("Exception: ", e); } } });
Double mid = ((MarketDataSnapshot)se).getBidPrices()[0] + ((MarketDataSnapshot)se).getAskPrices()[0]; mid /= 2.0; midpoints.add(mid);
@Override public void eventFired(byte[] event) { BaseMessage bm; try { bm = marshaller.demarshall(event); if (log.isDebugEnabled()) log.debug("Event type: " + bm.getType()); if (bm.getType().equals(CommandType.MDS)) { MarketDataSnapshot mds = marshaller .demarshall(((AQMessages.MarketDataSnapshot) bm .getExtension(AQMessages.MarketDataSnapshot.cmd))); // we'll ignore resends. if(!mds.isResend()) process(mds); } } catch (Exception e) { e.printStackTrace(); log.warn("Exception: ", e); } } });
return; counter++; String seriesId = mds.getMdiId(); if (mds.getBidSizes() != null && mds.getBidSizes().length > 0) { double bestBidPx = mds.getBidPrices()[0]; double bestBidQ = mds.getBidSizes()[0]; rawWriter.write(seriesId, mds.getTimeStamp(), "BID", bestBidPx); rawWriter.write(seriesId, mds.getTimeStamp(), "BIDQUANTITY", bestBidQ); if (log.isDebugEnabled()) log.debug("Wrote " + seriesId + ", " + mds.getTimeStamp() + ", " + bestBidPx +", "+ bestBidQ); for(int i=0;i<mds.getBidSizes().length;i++){ rawWriter.write(seriesId, mds.getTimeStamp(), "BID_"+i, mds.getBidPrices()[i]); rawWriter.write(seriesId, mds.getTimeStamp(), "BIDQUANTITY_"+i, mds.getBidSizes()[i]); if (mds.getAskSizes() != null && mds.getAskSizes().length > 0) { double bestAskPx = mds.getAskPrices()[0]; double bestAskQ = mds.getAskSizes()[0]; rawWriter.write(seriesId, mds.getTimeStamp(), "ASK", bestAskPx); rawWriter.write(seriesId, mds.getTimeStamp(), "ASKQUANTITY", bestAskQ); log.debug("Wrote " + seriesId + ", " + mds.getTimeStamp() + ", " + bestAskPx +", "+ bestAskQ); for(int i=0;i<mds.getAskSizes().length;i++){ rawWriter.write(seriesId, mds.getTimeStamp(), "ASK_"+i, mds.getAskPrices()[i]);
@Override public MarketDataEvent next() { Tuple<TimeStamp, Double> valueMap = streamIterator.next(); // fixing ... bid = new double[1]; ask = new double[1]; bidQ = new double[1]; askQ = new double[1]; // take the value and create a synthetic bid and ask out of it. ask[0] = valueMap.getB()+this.getAskOffset(); bid[0] = valueMap.getB()+this.getBidOffset(); askQ[0] = this.getAskQuantity(); bidQ[0] = this.getBidQuantity(); MarketDataSnapshot mds = new MarketDataSnapshot(); mds.setMdiId(this.mdiId); mds.setTdiId(this.tdiId); mds.setAskPrices(ask); mds.setBidPrices(bid); mds.setAskSizes(askQ); mds.setBidSizes(bidQ); mds.setTimeStamp(valueMap.getA()); return mds; }
return; String seriesId = mds.getMdiId(); Double bid = null; Double ask = null; if (mds.getBidSizes() != null && mds.getBidSizes().length > 0) { double bestBidPx = mds.getBidPrices()[0]; double bestBidQ = mds.getBidSizes()[0]; bid = bestBidPx; System.out.print("B"); if (mds.getAskSizes() != null && mds.getAskSizes().length > 0) { double bestAskPx = mds.getAskPrices()[0]; double bestAskQ = mds.getAskSizes()[0]; ask = bestAskPx; System.out.print("A"); double mid = (bid + ask) / 2.0; OHLCV o = getCandle(seriesId); o.update(mds.getTimeStamp(), mid); o.update(mds.getTimeStamp(), bid); o.update(mds.getTimeStamp(), ask); o.update(mds.getTimeStamp(), mid);
@Override public MarketDataEvent next() { Tuple<TimeStamp, Map<String, Double>> valueMap = streamIterator.next(); if (valueMap.getB().containsKey("BID")) bid[0] = valueMap.getB().get("BID"); if (valueMap.getB().containsKey("ASK")) ask[0] = valueMap.getB().get("ASK"); if (valueMap.getB().containsKey(bidQuantityKey)) bidQ[0] = valueMap.getB().get(bidQuantityKey); if (valueMap.getB().containsKey(askQuantityKey)) askQ[0] = valueMap.getB().get(askQuantityKey); // if (quantityOverride != 0.0) { bidQ[0] = askQ[0] = quantityOverride; } mds.setMdiId(this.mdiId); mds.setTdiId(this.tdiId); mds.setAskPrices(ask); mds.setBidPrices(bid); mds.setAskSizes(askQ); mds.setBidSizes(bidQ); mds.setTimeStamp(valueMap.getA()); return mds; }
return; String mdiId = mds.getMdiId(); if (getInstrumentTable().containsInstrumentId(mdiId)) { int rowIndx = getInstrumentTable().getRowIndexOf(mdiId); if (mds.getAskPrices() != null && mds.getAskPrices().length > 0 && !Double.isNaN(mds.getAskPrices()[0])) { row[rowIndx][ASK_COL_IDX] = mds.getAskPrices()[0]; row[rowIndx][ASK_SIZE_COL_INDX] = mds.getAskSizes()[0]; if (mds.getBidPrices() != null && mds.getBidPrices().length > 0 && !Double.isNaN(mds.getBidPrices()[0])) { row[rowIndx][BID_COL_IDX] = mds.getBidPrices()[0]; row[rowIndx][BID_SIZE_COL_IDX] = mds.getBidSizes()[0]; log.info("Dropping data for unknown instrument: " + mds.getMdiId());
for (int i = 0; i < 1000; i++) { long l1 = System.nanoTime(); MarketDataSnapshot mds = new MarketDataSnapshot(); mds.setMdiId("TT.SFE.XTH3M3.SFE_XT"); mds.setTimeStamp(new TimeStamp()); mds.setBidPrices(new double[] { Math.random() }); mds.setAskPrices(new double[] { Math.random() }); mds.setBidSizes(new double[] { Math.random() }); mds.setAskSizes(new double[] {Math.random() });