public void addRow() { final Tradestrategy tradestrategy = getData(); String side = tradestrategy.getSide(); if (null == side) side = Side.BOT; String orderType = OrderType.STPLMT; String action = Action.BUY; if (Side.SLD.equals(side)) { action = Action.SELL; } double risk = tradestrategy.getRiskAmount().doubleValue(); double stop = 1.0d; Money price = new Money( tradestrategy.getStrategyData().getBaseCandleSeries().getContract().getLastPrice()); final Entrylimit entrylimit = DAOEntryLimit.newInstance().getValue(price); Money limitPrice = Action.BUY.equals(action) ? price.add(new Money(entrylimit.getLimitAmount().doubleValue())) : price.subtract(new Money(entrylimit.getLimitAmount().doubleValue())); int quantity = (int) ((int) risk / stop); if (tradestrategy.isThereOpenTradePosition()) { for (TradeOrder item : tradestrategy.getTradeOrders()) { if (item.hasTradePosition()) { TradePosition position = item.getTradePosition(); if (position.isOpen()) { quantity = Math.abs(position.getOpenQuantity()); side = position.getSide(); action = Action.BUY; if (Side.BOT.equals(side)) { action = Action.SELL; } orderType = OrderType.LMT; limitPrice = price; } } } } final TradeOrder tradeOrder = new TradeOrder( tradestrategy, action, orderType, quantity, price.getBigDecimalValue(), limitPrice.getBigDecimalValue(), TradingCalendar.getDate()); tradeOrder.setOcaGroupName(""); tradeOrder.setTransmit(true); tradeOrder.setStatus(OrderStatus.UNSUBMIT); tradestrategy.addTradeOrder(tradeOrder); final Vector<Object> newRow = new Vector<Object>(); getNewRow(newRow, tradeOrder); rows.add(newRow); // Tell the listeners a new table has arrived. fireTableChanged(new TableModelEvent(this)); }
/** * Method populateDAO. * * @param value Object * @param row int * @param column int */ public void populateDAO(Object value, int row, int column) { TradeOrder element = null; int i = 0; for (final TradeOrder tradeOrder : getData().getTradeOrders()) { if (i == row) { element = tradeOrder; break; } i++; } switch (column) { case 0: { element.getTradestrategy().getContract().setSymbol((String) value); break; } case 1: { element.setOrderKey(((Quantity) value).getIntegerValue()); break; } case 2: { element.setAction(((Action) value).getCode()); break; } case 3: { element.setOrderType(((OrderType) value).getCode()); break; } case 4: { element.setQuantity(((Quantity) value).getIntegerValue()); break; } case 5: { element.setLimitPrice(((Money) value).getBigDecimalValue()); break; } case 6: { element.setAuxPrice(((Money) value).getBigDecimalValue()); break; } case 7: { element.setTransmit(new Boolean(((YesNo) value).getCode())); break; } case 8: { element.setStatus(((OrderStatus) value).getCode()); break; } case 9: { element.setOcaGroupName((String) value); break; } case 10: { element.setAverageFilledPrice(((Decimal) value).getBigDecimalValue()); break; } case 11: { element.setFilledDate(((Date) value).getDate()); break; } case 12: { element.setFilledQuantity(((Quantity) value).getIntegerValue()); break; } case 13: { element.setStopPrice(((Money) value).getBigDecimalValue()); break; } case 14: { if (value instanceof TradeOrder) { element.setFAProfile(((TradeOrder) value).getFAProfile()); element.setFAGroup(((TradeOrder) value).getFAGroup()); element.setFAMethod(((TradeOrder) value).getFAMethod()); element.setFAPercent(((TradeOrder) value).getFAPercent()); } else { element.setFAProfile(null); element.setFAGroup(null); element.setFAMethod(null); element.setFAPercent(null); } break; } default: { } } }