// Used by Limit,MOO,MOC,MKT,OCO for mapOrder private void setOutstandingOrders( Order mapOrder, Boolean isSpot, Boolean isMakeLimitOrder, boolean isDelivery) { /*if (this._outstandingOrders.size() > 0 || this._account.get_Type() == AccountType.Agent) { Iterator<RelationOrder> relationOrders = this._outstandingOrders.values().iterator(); while(relationOrders.hasNext()) { relationOrders.next().set_IsMakeLimitOrder(isMakeLimitOrder); } return; }*/ this._outstandingOrders.clear(); Guid orderId = mapOrder.get_Id(); RelationOrder outstandingOrder = new RelationOrder( this._tradingConsole, this._settingsManager, mapOrder, isSpot, isMakeLimitOrder, isDelivery); BigDecimal avaiableCloseLot = outstandingOrder.get_LiqLot(); if (avaiableCloseLot.compareTo(BigDecimal.ZERO) > 0) { TradePolicyDetail tradePolicyDetail = this.getTradePolicyDetail(); BigDecimal lot = isDelivery ? AppToolkit.fixDeliveryLot(avaiableCloseLot, tradePolicyDetail) : AppToolkit.fixCloseLot( avaiableCloseLot, avaiableCloseLot, tradePolicyDetail, this._account); if (avaiableCloseLot.compareTo(lot) >= 0) { outstandingOrder.set_LiqLot(lot); if (!isDelivery) outstandingOrder.set_IsMakeLimitOrder(isMakeLimitOrder); this._outstandingOrders.put(orderId, outstandingOrder); } } }
// exclude make Liquidation order and make Limit,MOO,MOC,MKT,OCO for mapOrder..... private void setOutstandingOrders( BuySellType buySellType, Boolean isSpot, Boolean isMakeLimitOrder, boolean isDelivery) { /*if (this._outstandingOrders.size() > 0 || this._account.get_Type() == AccountType.Agent) { Iterator<RelationOrder> relationOrders = this._outstandingOrders.values().iterator(); while(relationOrders.hasNext()) { relationOrders.next().set_IsMakeLimitOrder(isMakeLimitOrder); } return; }*/ this._outstandingOrders.clear(); HashMap<Guid, Transaction> accountInstrumentTransactions = this.getAccountInstrumentTransactions(); for (Iterator<Transaction> iterator = accountInstrumentTransactions.values().iterator(); iterator.hasNext(); ) { Transaction transaction = iterator.next(); if (transaction.get_Phase().equals(Phase.Executed)) { for (Iterator<Order> iterator2 = transaction.get_Orders().values().iterator(); iterator2.hasNext(); ) { Order order = iterator2.next(); if (order.get_Phase() != Phase.Executed) continue; if (order.get_Transaction().get_Account().get_Type() == AccountType.Agent || order.get_Transaction().get_Account().get_Type() == AccountType.Transit) continue; BigDecimal availableLotBanlance = BigDecimal.ZERO; if (isDelivery) { if (order.canDelivery()) { availableLotBanlance = order.getAvailableDeliveryLot(); if (availableLotBanlance.compareTo(BigDecimal.ZERO) > 0) { Guid orderId = order.get_Id(); RelationOrder outstandingOrder = new RelationOrder( this._tradingConsole, this._settingsManager, order, false, null, true); this._outstandingOrders.put(orderId, outstandingOrder); } } } else { if (order.canClose()) { availableLotBanlance = order.get_LotBalance(); if (isSpot != null) availableLotBanlance = order.getAvailableLotBanlance(isSpot, isMakeLimitOrder); if (availableLotBanlance.compareTo(BigDecimal.ZERO) > 0) { Guid orderId = order.get_Id(); RelationOrder outstandingOrder = new RelationOrder(this._tradingConsole, this._settingsManager, order); outstandingOrder.set_IsMakeLimitOrder(isMakeLimitOrder); if (buySellType.equals(BuySellType.Both)) { this._outstandingOrders.put(orderId, outstandingOrder); } else if (order.get_IsBuy() && (buySellType.equals(BuySellType.Buy))) { this._outstandingOrders.put(orderId, outstandingOrder); } else if (!order.get_IsBuy() && (buySellType.equals(BuySellType.Sell))) { this._outstandingOrders.put(orderId, outstandingOrder); } } } } } } } }