コード例 #1
0
        private List <TradeInstanceSecurity> GetTradingInstanceSecurities(int instanceId, List <ClosePositionSecurityItem> closeSecuItems)
        {
            List <TradeInstanceSecurity> tradeInstanceSecuItems = new List <TradeInstanceSecurity>();

            foreach (var item in closeSecuItems)
            {
                TradeInstanceSecurity tiSecuItem = new TradeInstanceSecurity
                {
                    InstanceId = instanceId,
                    SecuCode   = item.SecuCode
                };

                var findItem = SecurityInfoManager.Instance.Get(item.SecuCode, item.SecuType);
                if (findItem != null)
                {
                    tiSecuItem.SecuType = findItem.SecuType;
                }
                else
                {
                    tiSecuItem.SecuType = item.SecuType;
                }

                if (item.Selection)
                {
                    SetPreItem(tiSecuItem, item.EDirection, item.EntrustAmount);
                }

                tradeInstanceSecuItems.Add(tiSecuItem);
            }

            return(tradeInstanceSecuItems);
        }
コード例 #2
0
        public int Delete(TradeInstanceSecurity securityItem)
        {
            var dbCommand = _dbHelper.GetStoredProcCommand(SP_Delete);

            _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, securityItem.InstanceId);
            _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, securityItem.SecuCode);

            return(_dbHelper.ExecuteNonQuery(dbCommand));
        }
コード例 #3
0
        public int UpdatePreTrade(TradeInstanceSecurity securityItem)
        {
            var dbCommand = _dbHelper.GetStoredProcCommand(SP_ModifyPreTrade);

            _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, securityItem.InstanceId);
            _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, securityItem.SecuCode);
            _dbHelper.AddInParameter(dbCommand, "@InstructionPreBuy", System.Data.DbType.Int32, securityItem.InstructionPreBuy);
            _dbHelper.AddInParameter(dbCommand, "@InstructionPreSell", System.Data.DbType.Int32, securityItem.InstructionPreSell);

            return(_dbHelper.ExecuteNonQuery(dbCommand));
        }
コード例 #4
0
        public List <TradeInstanceSecurity> Get(int instanceId)
        {
            var dbCommand = _dbHelper.GetStoredProcCommand(SP_Get);

            _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, instanceId);

            List <TradeInstanceSecurity> items = new List <TradeInstanceSecurity>();
            var reader = _dbHelper.ExecuteReader(dbCommand);

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    TradeInstanceSecurity item = new TradeInstanceSecurity();
                    item.InstanceId   = (int)reader["InstanceId"];
                    item.SecuCode     = (string)reader["SecuCode"];
                    item.SecuType     = (SecurityType)reader["SecuType"];
                    item.PositionType = (PositionType)reader["PositionType"];

                    if (reader["InstructionPreBuy"] != null && reader["InstructionPreBuy"] != DBNull.Value)
                    {
                        item.InstructionPreBuy = (int)reader["InstructionPreBuy"];
                    }

                    if (reader["InstructionPreSell"] != null && reader["InstructionPreSell"] != DBNull.Value)
                    {
                        item.InstructionPreSell = (int)reader["InstructionPreSell"];
                    }

                    if (reader["PositionAmount"] != null && reader["PositionAmount"] != DBNull.Value)
                    {
                        item.PositionAmount = (int)reader["PositionAmount"];
                    }

                    item.BuyBalance  = (double)(decimal)reader["BuyBalance"];
                    item.SellBalance = (double)(decimal)reader["SellBalance"];
                    item.DealFee     = (double)(decimal)reader["DealFee"];
                    item.BuyToday    = (int)reader["BuyToday"];
                    item.SellToday   = (int)reader["SellToday"];
                    item.CreatedDate = (DateTime)reader["CreatedDate"];
                    if (reader["ModifiedDate"] != null && reader["ModifiedDate"] != DBNull.Value)
                    {
                        item.ModifiedDate = (DateTime)reader["ModifiedDate"];
                    }
                    item.LastDate = (DateTime)reader["LastDate"];

                    items.Add(item);
                }
            }
            reader.Close();
            _dbHelper.Close(dbCommand);

            return(items);
        }
コード例 #5
0
        public int UpdateSellToday(TradeInstanceSecurity securityItem)
        {
            var dbCommand = _dbHelper.GetStoredProcCommand(SP_ModifySellToday);

            _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, securityItem.InstanceId);
            _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, securityItem.SecuCode);
            _dbHelper.AddInParameter(dbCommand, "@SellAmount", System.Data.DbType.Int32, securityItem.SellToday);
            _dbHelper.AddInParameter(dbCommand, "@SellBalance", System.Data.DbType.Decimal, securityItem.SellBalance);
            _dbHelper.AddInParameter(dbCommand, "@DealFee", System.Data.DbType.Decimal, securityItem.DealFee);

            return(_dbHelper.ExecuteNonQuery(dbCommand));
        }
コード例 #6
0
        private int UpdateSellToday(int commandId, string secuCode, int sellAmount, double sellBalance, double dealFee)
        {
            var tradeItem = _tradeCommandBLL.GetTradeCommand(commandId);

            var secuItem = new TradeInstanceSecurity
            {
                InstanceId  = tradeItem.InstanceId,
                SecuCode    = secuCode,
                SellToday   = sellAmount,
                SellBalance = sellBalance,
                DealFee     = dealFee,
            };

            return(_tradeinstsecudao.UpdateSellToday(secuItem));
        }
コード例 #7
0
        private void SetPreItem(TradeInstanceSecurity tiSecuItem, EntrustDirection direction, int entrustAmount)
        {
            switch (tiSecuItem.SecuType)
            {
            case SecurityType.Stock:
            {
                if (direction == EntrustDirection.BuySpot)
                {
                    tiSecuItem.InstructionPreBuy = entrustAmount;
                    tiSecuItem.PositionType      = PositionType.SpotLong;
                }
                else if (direction == EntrustDirection.SellSpot)
                {
                    tiSecuItem.InstructionPreSell = entrustAmount;
                    tiSecuItem.PositionType       = PositionType.SpotShort;
                }
            }
            break;

            case SecurityType.Futures:
            {
                if (direction == EntrustDirection.SellOpen)
                {
                    tiSecuItem.InstructionPreBuy = entrustAmount;
                    tiSecuItem.PositionType      = PositionType.FuturesShort;
                }
                else if (direction == EntrustDirection.BuyClose)
                {
                    tiSecuItem.InstructionPreSell = entrustAmount;
                    tiSecuItem.PositionType       = PositionType.FuturesLong;
                }
            }
            break;

            default:
                break;
            }
        }
コード例 #8
0
        public string Create(TradeInstanceSecurity securityItem)
        {
            var dbCommand = _dbHelper.GetStoredProcCommand(SP_Create);

            _dbHelper.AddInParameter(dbCommand, "@InstanceId", System.Data.DbType.Int32, securityItem.InstanceId);
            _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, securityItem.SecuCode);
            _dbHelper.AddInParameter(dbCommand, "@SecuType", System.Data.DbType.Int32, (int)securityItem.SecuType);
            _dbHelper.AddInParameter(dbCommand, "@PositionType", System.Data.DbType.Int32, (int)securityItem.PositionType);
            _dbHelper.AddInParameter(dbCommand, "@InstructionPreBuy", System.Data.DbType.Int32, securityItem.InstructionPreBuy);
            _dbHelper.AddInParameter(dbCommand, "@InstructionPreSell", System.Data.DbType.Int32, securityItem.InstructionPreSell);

            _dbHelper.AddOutParameter(dbCommand, "@RowId", System.Data.DbType.String, 20);

            int ret = _dbHelper.ExecuteNonQuery(dbCommand);

            string rowId = string.Empty;

            if (ret > 0)
            {
                rowId = (string)dbCommand.Parameters["@RowId"].Value;
            }

            return(rowId);
        }
コード例 #9
0
        public int Transfer(Model.UI.TradeInstance dest, Model.UI.TradeInstance src, List <SourceHoldingItem> transferItems)
        {
            List <TradeInstanceSecurity>       srcNewItems  = new List <TradeInstanceSecurity>();
            List <TradeInstanceSecurity>       destNewItems = new List <TradeInstanceSecurity>();
            List <TradeInstanceAdjustmentItem> adjustItems  = new List <TradeInstanceAdjustmentItem>();

            //获取src中所有的持仓
            var srcItems = Get(src.InstanceId);

            //获取dest中所有的持仓
            var destItems = Get(dest.InstanceId);

            //对于src,减去划转部分
            //对于dest,加入划转部分
            foreach (var transferItem in transferItems)
            {
                //对源实例中的证券进行更新
                TradeInstanceSecurity srcOutItem = new TradeInstanceSecurity
                {
                    SecuCode   = transferItem.SecuCode,
                    SecuType   = transferItem.SecuType,
                    InstanceId = src.InstanceId,
                };

                var srcOldItem = srcItems.Find(p => p.SecuCode.Equals(transferItem.SecuCode) && p.SecuType == transferItem.SecuType);
                if (srcOldItem != null)
                {
                    srcOutItem.PositionAmount = srcOldItem.PositionAmount - transferItem.TransferedAmount;
                    srcOutItem.PositionType   = srcOldItem.PositionType;
                    srcOutItem.SellToday      = srcOldItem.SellToday;
                    srcOutItem.SellBalance    = srcOldItem.SellBalance;
                    srcOutItem.DealFee        = srcOldItem.DealFee;
                }
                else
                {
                    //TODO:
                }

                srcNewItems.Add(srcOutItem);

                //对目标实例中的证券进行更新
                TradeInstanceSecurity destInItem = new TradeInstanceSecurity
                {
                    SecuCode     = transferItem.SecuCode,
                    SecuType     = transferItem.SecuType,
                    PositionType = transferItem.PositionType,
                    InstanceId   = dest.InstanceId,
                };

                var destOldItem = destItems.Find(p => p.SecuCode.Equals(transferItem.SecuCode) && p.SecuType == transferItem.SecuType);
                if (destOldItem != null)
                {
                    destInItem.PositionAmount = destOldItem.PositionAmount + transferItem.TransferedAmount;
                    destInItem.PositionType   = destOldItem.PositionType;
                    destInItem.SellToday      = destOldItem.SellToday;
                    destInItem.SellBalance    = destOldItem.SellBalance;
                    destInItem.DealFee        = destOldItem.DealFee;
                }
                else
                {
                    destInItem.PositionAmount = transferItem.TransferedAmount;
                    //TODO:
                    if (transferItem.SecuType == Model.SecurityInfo.SecurityType.Stock)
                    {
                        destInItem.PositionType = PositionType.SpotLong;
                    }
                    else if (transferItem.SecuType == Model.SecurityInfo.SecurityType.Futures)
                    {
                        destInItem.PositionType = PositionType.FuturesShort;
                    }
                }

                destNewItems.Add(destInItem);

                //对调整做记录
                TradeInstanceAdjustmentItem adjustItem = new TradeInstanceAdjustmentItem
                {
                    SourceInstanceId         = src.InstanceId,
                    SourcePortfolioCode      = src.PortfolioCode,
                    DestinationInstanceId    = dest.InstanceId,
                    DestinationPortfolioCode = dest.PortfolioCode,
                    SecuCode     = transferItem.SecuCode,
                    SecuType     = transferItem.SecuType,
                    PositionType = PositionType.SpotLong,
                    Price        = transferItem.TransferedPrice,
                    Amount       = transferItem.TransferedAmount,
                    AdjustType   = AdjustmentType.Transfer,
                };

                adjustItems.Add(adjustItem);
            }

            int        result = -1;
            List <int> idList = _tradeInstanceAdjustBLL.CreateTran(adjustItems);

            if (idList.Count > 0 && idList.Count == adjustItems.Count)
            {
                //更新数据库,指向要更新变化部分即可,通过提交事务
                result = _tradeinstsecudao.Transfer(destNewItems, srcNewItems);
            }

            return(result);
        }
コード例 #10
0
 public ArchiveTradeInstanceSecurity(TradeInstanceSecurity security)
     : base(security)
 {
 }
コード例 #11
0
        private int UpdateItem(CommandManagementItem cmdMngItem, List <ModifySecurityItem> modifiedSecuItems, DateTime startDate, DateTime endDate, string notes)
        {
            //var oldInstance = _tradeInstanceBLL.GetInstance(cmdMngItem.InstanceId);
            //if (oldInstance == null || oldInstance.InstanceId != cmdMngItem.InstanceId)
            //{
            //    return -1;
            //}

            //TODO: add the StartDate, EndDate
            TradeCommand cmdItem = new TradeCommand
            {
                CommandId      = cmdMngItem.CommandId,
                ECommandStatus = Model.EnumType.CommandStatus.Modified,
                DStartDate     = startDate,
                DEndDate       = endDate,
                ModifiedDate   = DateTime.Now,
                Notes          = !string.IsNullOrEmpty(notes)?notes: cmdMngItem.Notes,
            };

            List <TradeCommandSecurity> tradeModifiedSecuItems = new List <TradeCommandSecurity>();
            List <TradeCommandSecurity> tradeCancelSecuItems   = new List <TradeCommandSecurity>();
            var selectedModifiedSecuItems = modifiedSecuItems.Where(p => p.Selection).ToList();

            foreach (var secuItem in selectedModifiedSecuItems)
            {
                TradeCommandSecurity tradeSecuItem = new TradeCommandSecurity
                {
                    CommandId     = cmdItem.CommandId,
                    SecuCode      = secuItem.SecuCode,
                    SecuType      = secuItem.SecuType,
                    EDirection    = secuItem.EDirection,
                    CommandAmount = secuItem.NewCommandAmount,
                    CommandPrice  = secuItem.NewCommandPrice,
                    CurrentPrice  = secuItem.LastPrice,
                };

                if (secuItem.Selection)
                {
                    tradeModifiedSecuItems.Add(tradeSecuItem);
                }
                else
                {
                    tradeCancelSecuItems.Add(tradeSecuItem);
                }
            }

            int result = _tradeCommandBLL.Update(cmdItem, tradeModifiedSecuItems, tradeCancelSecuItems);

            if (result > 0)
            {
                //TODO: add more parameters
                TradeInstance tradeInstance = new TradeInstance
                {
                    InstanceId      = cmdMngItem.InstanceId,
                    InstanceCode    = cmdMngItem.InstanceCode,
                    FuturesContract = cmdMngItem.BearContract,
                    //MonitorUnitId = oldInstance.MonitorUnitId,
                    //StockDirection = oldInstance.StockDirection,
                    //FuturesDirection = oldInstance.FuturesDirection,
                    //FuturesPriceType = oldInstance.FuturesPriceType,
                };

                List <TradeInstanceSecurity> modifiedInstSecuItems = new List <TradeInstanceSecurity>();
                List <TradeInstanceSecurity> cancelInstSecuItems   = new List <TradeInstanceSecurity>();
                foreach (var secuItem in selectedModifiedSecuItems)
                {
                    int modifiedAmount = secuItem.NewCommandAmount - secuItem.OriginCommandAmount;

                    TradeInstanceSecurity tradeInstSecuItem = new TradeInstanceSecurity
                    {
                        SecuCode           = secuItem.SecuCode,
                        SecuType           = secuItem.SecuType,
                        InstructionPreBuy  = 0,
                        InstructionPreSell = 0,
                    };

                    //TODO::::::how to handle the case???
                    switch (secuItem.EDirection)
                    {
                    case Model.EnumType.EntrustDirection.BuySpot:
                    {
                        tradeInstSecuItem.InstructionPreBuy = modifiedAmount;
                    }
                    break;

                    case Model.EnumType.EntrustDirection.SellSpot:
                    {
                        tradeInstSecuItem.InstructionPreSell = modifiedAmount;
                    }
                    break;

                    case Model.EnumType.EntrustDirection.SellOpen:
                    {
                        tradeInstSecuItem.InstructionPreSell = modifiedAmount;
                    }
                    break;

                    case Model.EnumType.EntrustDirection.BuyClose:
                    {
                        tradeInstSecuItem.InstructionPreBuy = modifiedAmount;
                    }
                    break;
                    }

                    if (secuItem.Selection)
                    {
                        modifiedInstSecuItems.Add(tradeInstSecuItem);
                    }
                    else
                    {
                        cancelInstSecuItems.Add(tradeInstSecuItem);
                    }
                }

                result = _tradeInstanceBLL.Update(tradeInstance, modifiedInstSecuItems, cancelInstSecuItems);
            }

            return(result);
        }