@Test public void testAddTradeOrderFill() { try { testAddTradeOrder(); boolean stopped = true; int minute = 25; for (TradeOrder tradeOrder : this.tradestrategy.getTradeOrders()) { tradeOrder = tradeOrderHome.findTradeOrderByKey(tradeOrder.getOrderKey()); minute = minute + 3; ZonedDateTime filledDate = this.tradestrategy.getTradingday().getOpen().plusMinutes(minute); if (tradeOrder.getIsOpenPosition()) { TradeOrderfill orderfill = new TradeOrderfill( tradeOrder, "Paper", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, "ISLAND", "1234", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, this.tradestrategy.getSide(), filledDate); tradeOrder.addTradeOrderfill(orderfill); TradeOrderfill orderfill1 = new TradeOrderfill( tradeOrder, "Paper", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, "ISLAND", "12345", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, this.tradestrategy.getSide(), filledDate.plusMinutes(3)); tradeOrder.addTradeOrderfill(orderfill1); tradeOrder.setIsFilled(true); tradeOrder.setFilledQuantity(tradeOrder.getQuantity()); tradeOrder.setStatus("FILLED"); tradeOrder.setFilledDate(filledDate.plusMinutes(3)); tradeOrder.setAverageFilledPrice(tradeOrder.getLimitPrice()); tradeOrder.setCommission(new BigDecimal(tradeOrder.getQuantity() * 0.005)); } else { if (stopped) { if (OrderType.STP.equals(tradeOrder.getOrderType())) { TradeOrderfill orderfill = new TradeOrderfill( tradeOrder, "Paper", tradeOrder.getAuxPrice(), tradeOrder.getQuantity(), "ISLAND", "12345", tradeOrder.getAuxPrice(), tradeOrder.getQuantity(), this.tradestrategy.getSide(), filledDate.plusMinutes(5)); tradeOrder.addTradeOrderfill(orderfill); tradeOrder.setIsFilled(true); tradeOrder.setStatus(OrderStatus.FILLED); tradeOrder.setAverageFilledPrice(tradeOrder.getAuxPrice()); tradeOrder.setFilledDate(filledDate.plusMinutes(5)); tradeOrder.setCommission(new BigDecimal(tradeOrder.getQuantity() * 0.005)); tradeOrder.setFilledQuantity(tradeOrder.getQuantity()); } else { tradeOrder.setStatus(OrderStatus.CANCELLED); } } else { if (OrderType.LMT.equals(tradeOrder.getOrderType())) { TradeOrderfill orderfill = new TradeOrderfill( tradeOrder, "Paper", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, "ISLAND", "12345", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, this.tradestrategy.getSide(), filledDate.plusMinutes(5)); tradeOrder.addTradeOrderfill(orderfill); TradeOrderfill orderfill1 = new TradeOrderfill( tradeOrder, "Paper", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, "ISLAND", "12345", tradeOrder.getLimitPrice(), tradeOrder.getQuantity() / 2, this.tradestrategy.getSide(), filledDate.plusMinutes(6)); orderfill1.setTradeOrder(tradeOrder); tradeOrder.addTradeOrderfill(orderfill1); tradeOrder.setIsFilled(true); tradeOrder.setStatus(OrderStatus.FILLED); tradeOrder.setFilledQuantity(tradeOrder.getQuantity()); tradeOrder.setFilledDate(filledDate.plusMinutes(15)); tradeOrder.setAverageFilledPrice(tradeOrder.getLimitPrice()); tradeOrder.setCommission(new BigDecimal(tradeOrder.getQuantity() * 0.005)); } else { tradeOrder.setStatus(OrderStatus.CANCELLED); } } } tradeOrder = tradeOrderHome.persist(tradeOrder); _log.info( "IdOrder: " + tradeOrder.getIdTradeOrder() + " Action:" + tradeOrder.getAction() + " OrderType:" + tradeOrder.getOrderType() + " Status:" + tradeOrder.getStatus() + " filledDate:" + filledDate); } } catch (Exception | AssertionError ex) { String msg = "Error running " + name.getMethodName() + " msg: " + ex.getMessage(); _log.error(msg); fail(msg); } }