if(inOrder instanceof NewOrReplaceOrder) { NewOrReplaceOrder newOrReplaceOrder = (NewOrReplaceOrder)inOrder; if(newOrReplaceOrder.getPegToMidpoint()) { Event marketData = requestMarketDataSnapshot(newOrReplaceOrder.getInstrument(), Content.TOP_OF_BOOK, null); if(marketData == null) { throw new IllegalArgumentException("No market data available for " + newOrReplaceOrder.getInstrument().getFullSymbol()); AskEvent ask = topOfBook.getAsk(); if(bid == null || ask == null) { throw new IllegalArgumentException("Insufficient liquidity to peg-to-midpoint for " + newOrReplaceOrder.getInstrument().getFullSymbol()); newOrReplaceOrder.setPrice(newPrice); newOrReplaceOrder.setPegToMidpoint(false); modified = true; SLF4JLoggerProxy.info(MarketDataManagerImpl.this, "Repricing {} to {}", newOrReplaceOrder.getOrderID(), newPrice);
/** * Applies the implied tags and values of the broker algo to the given order. * * @param inOrder a <code>NewOrReplaceOrder</code> value */ public void applyTo(NewOrReplaceOrder inOrder) { if(algoTags == null) { return; } SLF4JLoggerProxy.debug(this, "Broker algo {} being applied to {}", algoSpec.getName(), inOrder); Map<String,String> customFields = inOrder.getCustomFields(); if(customFields == null) { customFields = new HashMap<String,String>(); } for(BrokerAlgoTag algoTag : algoTags) { customFields.put(String.valueOf(algoTag.getTagSpec().getTag()), algoTag.getValue()); } inOrder.setCustomFields(customFields); SLF4JLoggerProxy.debug(this, "Broker algo {} done being applied to {}", algoSpec.getName(), inOrder); } /* (non-Javadoc)