private HashMap<Guid, RelationOrder> getEditOutstandingOrders( BuySellType buySellType, Order mapOrder) { HashMap<Guid, RelationOrder> editOutstandingOrders; if (buySellType == BuySellType.Both) { editOutstandingOrders = this._outstandingOrders; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (mapOrder != null) { relationOrder.set_IsSelected(true); } } } else { editOutstandingOrders = new HashMap<Guid, RelationOrder>(); for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (mapOrder != null) { relationOrder.set_IsSelected(true); } if (buySellType == BuySellType.Buy && relationOrder.get_IsBuy()) { editOutstandingOrders.put(relationOrder.get_OpenOrderId(), relationOrder); } else if (buySellType == BuySellType.Sell && !relationOrder.get_IsBuy()) { editOutstandingOrders.put(relationOrder.get_OpenOrderId(), relationOrder); } } } return editOutstandingOrders; }
// for Instrument code with "#" // for IsBuy = true: // SumBuy = all confirmed order.Buy.LotBalance + all unconfirmed order.Buy.Lot // SumSell = all confirmed order.Sell.LotBalance // for IsBuy = false: // SumSell = all confirmed order.Sell.LotBalance + all unconfirmed order.Sell.Lot // SumBuy = all confirmed order.Buy.LotBalance public GetSumLotBSForOpenOrderWithFlagResult getSumLotBSForOpenOrderWithFlag(boolean isBuy) { BigDecimal[] sumLot = new BigDecimal[] {BigDecimal.ZERO, BigDecimal.ZERO}; boolean isExistsUnconfirmedOrder = false; HashMap<Guid, Transaction> accountInstrumentTransactions = this.getAccountInstrumentTransactions(); for (Iterator<Transaction> iterator = accountInstrumentTransactions.values().iterator(); iterator.hasNext(); ) { Transaction transaction = iterator.next(); if (transaction.get_Phase() == Phase.Executed || transaction.get_Phase() == Phase.Placing || transaction.get_Phase() == Phase.Placed) { for (Iterator<Order> iterator2 = transaction.get_Orders().values().iterator(); iterator2.hasNext(); ) { Order order = iterator2.next(); if (order.get_LotBalance().compareTo(BigDecimal.ZERO) > 0) { if (isBuy) { if (order.get_IsBuy()) { if (transaction.get_Phase() == Phase.Executed) { sumLot[0] = sumLot[0].add(order.get_LotBalance()); } else { sumLot[0] = sumLot[0].add(order.get_Lot()); isExistsUnconfirmedOrder = true; } } else { if (transaction.get_Phase() == Phase.Executed) { sumLot[1] = sumLot[1].add(order.get_LotBalance()); } } } else { if (order.get_IsBuy()) { if (transaction.get_Phase() == Phase.Executed) { sumLot[0] = sumLot[0].add(order.get_LotBalance()); } } else { if (transaction.get_Phase() == Phase.Executed) { sumLot[1] = sumLot[1].add(order.get_LotBalance()); } else { sumLot[1] = sumLot[1].add(order.get_Lot()); isExistsUnconfirmedOrder = true; } } } } } } } return new GetSumLotBSForOpenOrderWithFlagResult( sumLot[0], sumLot[1], isExistsUnconfirmedOrder); }
public void setDefaultLiqLotForOutStanding( BuySellType buySellType, boolean isSelectedRelationOrder, boolean isSpotTrade, Boolean isMakeLimitOrder) { for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); relationOrder.set_IsSelected(isSelectedRelationOrder); BigDecimal liqLot = relationOrder.get_OpenOrder().getAvailableLotBanlance(isSpotTrade, isMakeLimitOrder); if (this._outstandingOrders.values().size() == 1) { TradePolicyDetail tradePolicyDetail = this.getTradePolicyDetail(); liqLot = AppToolkit.fixCloseLot(liqLot, liqLot, tradePolicyDetail, this._account); } boolean isBuy = (buySellType == BuySellType.Buy); if (buySellType == BuySellType.Both) { relationOrder.set_LiqLot(liqLot); // Update Outstanding Order UI relationOrder.update(this._outstandingKey); } else if (relationOrder.get_IsBuy() != isBuy) { relationOrder.set_LiqLot(liqLot); // Update Outstanding Order UI // maybe not binding // if (this._isBuyForCurrent != isBuy) // { relationOrder.update(this._outstandingKey); // } } } }
public BigDecimal closeAll() { BigDecimal totalLiqLot = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (this._isBuyForCurrent != relationOrder.get_IsBuy() || (this._isForDelivery && relationOrder.get_IsBuy())) { totalLiqLot = totalLiqLot.add(relationOrder.get_LiqLot()); } } TradePolicyDetail tradePolicyDetail = this._settingsManager.getTradePolicyDetail( this._account.get_TradePolicyId(), this._instrument.get_Id()); totalLiqLot = this._isForDelivery ? AppToolkit.fixDeliveryLot(totalLiqLot, tradePolicyDetail) : totalLiqLot; // AppToolkit.fixLot(totalLiqLot, false, tradePolicyDetail, this); BigDecimal totalLiqLot2 = totalLiqLot; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (this._isBuyForCurrent != relationOrder.get_IsBuy() || (this._isForDelivery && relationOrder.get_IsBuy())) { BigDecimal liqLot = relationOrder.get_LiqLot(); liqLot = totalLiqLot.compareTo(liqLot) > 0 ? liqLot : totalLiqLot; relationOrder.set_LiqLot(liqLot); totalLiqLot = totalLiqLot.subtract(liqLot); relationOrder.set_IsSelected(true); relationOrder.update(this._outstandingKey); if (totalLiqLot.compareTo(BigDecimal.ZERO) <= 0) break; } } if (this._isBuyForCurrent) { this._buyLot = totalLiqLot2; } else { this._sellLot = totalLiqLot2; } return totalLiqLot2; }
public BigDecimal getSumLiqLots() { BigDecimal sumLiqLots = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (relationOrder.get_IsSelected() && relationOrder.get_LiqLot() != null) { sumLiqLots = sumLiqLots.add(relationOrder.get_LiqLot()); } } return sumLiqLots; }
public BigDecimal getTotalCloseLotOfFullClose() { BigDecimal sumLiqLots = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (relationOrder.isFullClose()) { sumLiqLots = sumLiqLots.add(relationOrder.get_LiqLot()); } } return sumLiqLots; }
public BigDecimal getQuoteLotForDirectLiq(boolean isSpotTrade, Boolean isMakeLimitOrder) { BigDecimal quoteLot = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); quoteLot = quoteLot.add( relationOrder.get_OpenOrder().getAvailableLotBanlance(isSpotTrade, isMakeLimitOrder)); } return quoteLot; }
/* Remarks sum (SellLotBalance) = all confirmed order.Sell.LotBalance + unconfirmed order (stop).Sell.Lot + iif("MOC/MOO allow New" = False, unconfirmed order (MOO/MOC).Sell.Lot, 0) sum (BuyLotBalance) = all confirmed order.Buy.LotBalance + unconfirmed order (stop).Buy.Lot + iif("MOC/MOO allow New" = False, unconfirmed order (MOO/MOC).Buy.Lot, 0) */ public BigDecimal[] getSumLotBSForMakeStopOrder() { BigDecimal[] sumLot = new BigDecimal[] {BigDecimal.ZERO, BigDecimal.ZERO}; TradePolicyDetail tradePolicyDetail = this.getTradePolicyDetail(); HashMap<Guid, Transaction> accountInstrumentTransactions = this.getAccountInstrumentTransactions(); for (Iterator<Transaction> iterator = accountInstrumentTransactions.values().iterator(); iterator.hasNext(); ) { Transaction transaction = iterator.next(); if (transaction.get_Phase() == Phase.Executed) { for (Iterator<Order> iterator2 = transaction.get_Orders().values().iterator(); iterator2.hasNext(); ) { Order order = iterator2.next(); if (order.get_LotBalance().compareTo(BigDecimal.ZERO) > 0) { if (order.get_IsBuy()) { sumLot[0] = sumLot[0].add(order.get_LotBalance()); } else { sumLot[1] = sumLot[1].add(order.get_LotBalance()); } } } } else if (transaction.get_Phase() == Phase.Placing || transaction.get_Phase() == Phase.Placed) { for (Iterator<Order> iterator2 = transaction.get_Orders().values().iterator(); iterator2.hasNext(); ) { Order order = iterator2.next(); if (order.get_TradeOption() == TradeOption.Stop || (!tradePolicyDetail.get_IsAcceptNewMOOMOC() && (transaction.get_OrderType() == OrderType.MarketOnOpen || transaction.get_OrderType() == OrderType.MarketOnClose))) { if (order.get_IsBuy()) { sumLot[0] = sumLot[0].add(order.get_Lot()); } else { sumLot[1] = sumLot[1].add(order.get_Lot()); } } } } } return sumLot; }
public BuySellType GetBuySellForCloseAll() { boolean hasIsBuy = false; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (relationOrder.get_IsBuy()) { hasIsBuy = true; } else if (hasIsBuy) { return BuySellType.Both; } } return hasIsBuy ? BuySellType.Sell : BuySellType.Buy; }
public BigDecimal[] getSumLotBSForOpenOrder() { BigDecimal[] sumLot = new BigDecimal[] {BigDecimal.ZERO, BigDecimal.ZERO}; HashMap<Guid, Transaction> accountInstrumentTransactions = this.getAccountInstrumentTransactions(); for (Iterator<Transaction> iterator = accountInstrumentTransactions.values().iterator(); iterator.hasNext(); ) { Transaction transaction = iterator.next(); if (transaction.get_Phase() == Phase.Executed) { for (Iterator<Order> iterator2 = transaction.get_Orders().values().iterator(); iterator2.hasNext(); ) { Order order = iterator2.next(); if (order.get_LotBalance().compareTo(BigDecimal.ZERO) > 0) { if (order.get_IsBuy()) { sumLot[0] = sumLot[0].add(order.get_LotBalance()); } else { sumLot[1] = sumLot[1].add(order.get_LotBalance()); } } } } } return sumLot; }
public void cleanOutStandingTable(boolean closeAllSell) { ArrayList<Guid> toBeRemoved = new ArrayList<Guid>(); for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (relationOrder.get_OpenOrder().get_IsBuy() == closeAllSell) { toBeRemoved.add(relationOrder.get_OpenOrder().get_Id()); this._bindingSourceForOutstanding.remove(relationOrder); } } for (Guid id : toBeRemoved) { this._outstandingOrders.remove(id); } }
private HashMap<Guid, Transaction> getAccountInstrumentTransactions() { HashMap<Guid, Transaction> transactions = null; HashMap<Guid, Transaction> accountTransactions = this._account.get_Transactions(); HashMap<Guid, Transaction> instrumentTransactions = this._instrument.get_Transactions(); if (accountTransactions == null || instrumentTransactions == null) { return transactions; } transactions = new HashMap<Guid, Transaction>(); for (Iterator<Transaction> iterator = accountTransactions.values().iterator(); iterator.hasNext(); ) { Transaction accountTransaction = iterator.next(); Guid accountTransactionId = accountTransaction.get_Id(); if (instrumentTransactions.containsKey(accountTransactionId)) { transactions.put(accountTransactionId, accountTransaction); } } return transactions; }
public void setOutstandingOrdersForMakeLiquidationOrder( Instrument instrument, boolean forMakeOrderForm) { if (this._outstandingOrders.size() > 0) { return; } for (Iterator<Order> iterator = this._tradingConsole.get_OpenOrders().values().iterator(); iterator.hasNext(); ) { Order order = iterator.next(); if (!order.canClose()) continue; if (order.get_Transaction().get_Instrument() == instrument && order.get_Transaction().get_Account() == this._account) { if (!forMakeOrderForm || order.getAvailableLotBanlance(false, null).compareTo(BigDecimal.ZERO) > 0) { Guid orderId = order.get_Id(); RelationOrder outstandingOrder = new RelationOrder(this._tradingConsole, this._settingsManager, order); outstandingOrder.set_IsSelected(order.get_Close()); 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); } } } } } } } }