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();
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }
Ejemplo n.º 4
0
 public void addClientOrder(SavedClientOrder order_)
 {
     this.trades.Add(order_);
 }