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); }
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)); }
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)); }
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); }
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)); }
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)); }
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; } }
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); }
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); }
public ArchiveTradeInstanceSecurity(TradeInstanceSecurity security) : base(security) { }
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); }