public void addAnClientOrder(SavedClientOrder order_) { orderCount++; sliceCount += order_.getSliceCount(); turnover += order_.getTurnover(); slipage += order_.getSlipage() * order_.getTurnover(); //string symbol = order_.getSymbol(); //if (StoredProcMgr.MANAGER.isRepo(symbol)) //{ // int multiplier = StoredProcMgr.MANAGER.getMultiplier(symbol); // turnover += multiplier * order_.getCumQty(); //} //else //{ // turnover += order_.getCumQty() * order_.getAvgPrice(); //} //slipage += order_.getSlipage() * order_.getCumQty() * order_.getAvgPrice(); }
/// <summary> /// Build lines and merge orders. Same orders are merged first. /// Since reporting merged orders is not supported anymore, this line is to be deleted. /// </summary> /// <param name="orders_"></param> /// <param name="client_"></param> /// <returns>Lines to add to the tab.</returns> /// This method is not used anymore. All orders are listed seperatedly. private List <LineContent> buildExcelLinesMergeOrder(List <SavedClientOrder> orders_, Client client_) { Dictionary <SavedClientOrder, List <SavedClientOrder> > orderMap = this.getGroupedOrders(orders_); List <LineContent> lines = new List <LineContent>(); decimal avgPrice = 0; decimal vwSlipage = 0; decimal volume = 0; decimal turnover = 0; foreach (var order in orderMap) { SavedClientOrder orderKey = order.Key; List <SavedClientOrder> orderList = order.Value; decimal tmpAvgPrice = 0; decimal tmpAvgSlipage = 0; decimal tmpVWSlipage = 0; decimal tmpVolume = 0; decimal tmpTurnover = 0; foreach (SavedClientOrder tmpOrder in orderList) { tmpAvgSlipage += tmpOrder.getSlipage(); tmpVWSlipage += tmpOrder.getSlipage() * tmpOrder.getCumQty(); tmpAvgPrice += tmpOrder.getAvgPrice() * tmpOrder.getCumQty(); tmpVolume += tmpOrder.getCumQty(); tmpTurnover += tmpOrder.getTurnover(); } avgPrice = tmpAvgPrice / tmpVolume; vwSlipage = tmpVWSlipage / tmpVolume; volume = tmpVolume; turnover = tmpTurnover; lines.Add( new LineContent(client_.getAccountId(), orderKey.getSymbol(), orderKey.getStockName(), orderKey.getSide().ToString(), orderKey.getMarginType().ToString(), avgPrice, volume, vwSlipage, orderKey.getParticipation(), orderKey.getTradingDay(), turnover)); } return(lines); }
public override void parseQueryResult(Client client_, SqlDataReader reader_) { while (reader_.Read()) { string acct = reader_["accountId"].ToString(); string orderId = reader_["orderId"].ToString(); string symbol = reader_["symbol"].ToString(); string stockName = reader_["stockName"].ToString(); MarginType marginType = (MarginType)Int32.Parse(reader_["marginType"].ToString()); decimal participation = MathUtil.round((decimal)reader_["participationRate"]); OrderAlgo algo = (OrderAlgo)Int32.Parse(reader_["algo"].ToString()); OrderSide side = (OrderSide)Int32.Parse(reader_["side"].ToString()); decimal avgPrice = MathUtil.round((decimal)reader_["avgPrice"]); decimal slipageInBps = MathUtil.round((decimal)reader_["slipageInBps"]); decimal cumQty = (decimal)reader_["cumQty"]; string tradingDay = reader_["tradingDay"].ToString(); string effectiveTime = reader_["effectiveTime"].ToString(); string expireTime = reader_["expireTime"].ToString(); int sliceCount = Int32.Parse(reader_["SliceCount"].ToString()); int cancelCount = Int32.Parse(reader_["cancelCount"].ToString()); int sentQty = Int32.Parse(reader_["totalSentQty"].ToString()); int filledQty = Int32.Parse(reader_["totalFilledQty"].ToString()); int filledCount = Int32.Parse(reader_["filledCount"].ToString()); SecurityType securityType = (SecurityType)Int32.Parse(reader_["securityType"].ToString()); SavedClientOrder order = new SavedClientOrder(acct, orderId, symbol, stockName, marginType, participation, algo, side, avgPrice, slipageInBps, cumQty, tradingDay, effectiveTime, expireTime, sliceCount, cancelCount, filledCount, sentQty, filledQty, securityType); // If configed to include orders with zero cumQty if (ConfigParser.CONFIG.getRunTimeConfig().reportZeroQtyOrders()) { client_.addClientOrder(order); } else if (order.getCumQty() > 0) { // Only include orders with positive cumQty client_.addClientOrder(order); } } }
public void addClientOrder(SavedClientOrder order_) { this.trades.Add(order_); }