using YLErp.Modules; namespace YLErp.Model { public class trade_contract_group { public int id { get; set; } public trade trade { get; set; } public trade_cash trade_cash { get; set; } public trade_span trade_span { get; set; } /// /// 结算确认书 /// public trade_contract_r trade_contract_r { get; set; } /// /// 交易确认书 /// public trade_contract_r ConfirmContractR { get; set; } public underlying_manager underlying_manager { get; set; } public trade_contract_document trade_contract_document { get; set; } public string TradeType => trade?.TradeType; public string ContractCode { get; set; } public string ContractDocUrl { get; set; } public double? UnwindVol { get; set; } public string ClientName { get; set; } public string UnwindVolString { get { if (trade_cash?.Action == "系统操作-行权费") { return "----"; } return (UnwindVol ?? 0).OtcFormat(OtcFormatFlag.premiumRateP); } } private double? winloss; /// /// 实现盈亏(客户角度看的) /// public double WinLoss { get { if (winloss != null) { return winloss.Value; } return -(trade_cash.Amount + (trade.TradePrice ?? 0) * (trade_cash.UnwindPercentRate ?? 0) * ((trade.BuySell == "卖出" || trade.TradeType == "远期") ? 1 : -1)); } set => winloss = value; } public double? TradeOriginalAmount { get { if (trade != null) { var CountRatio = DataCacheProvider.GetUnderlyingDataSource().GetCountRatio(trade.UnderlyingCode); return PS.Config.IsUseDisplayNotional ? trade.TradeOriginalAmount * CountRatio : trade.TradeOriginalAmount; } else { return null; } } } public double TradeOriginalAmountV { get { if (trade != null && trade.OriginalNotional.HasValue) { double amount = 0; var CountRatio = DataCacheProvider.GetUnderlyingDataSource().GetCountRatio(trade.UnderlyingCode); if (trade.TradeType == "累计期权") { amount = trade.OriginalNotional.Value / CountRatio; } if (trade.SpotPrice.HasValue) { amount = trade.OriginalStockEqvNotional.Value / trade.SpotPrice.Value / CountRatio; } var annRate = trade.ParticipationRate * trade.AnnualizeFactor; amount = trade.OriginalNotional.Value / (annRate ?? 1) / CountRatio; return PS.Config.IsUseDisplayNotional ? amount * CountRatio : amount; } else { return 0; } } } /// /// 从客户角度看,方向转换 /// public string BuySell => trade != null ? trade.BuySell == "买入" ? "卖出" : "买入" : null; public double? TradePrice { get { if (trade != null) { if (trade.TradeType == "远期") { return trade.TradePrice * -1;//历史交易页面显示为 开仓总费用 } else { return trade.TradePrice * ("卖出".Equals(trade.BuySell) ? -1 : 1); } } else { return 0; } } } public string TradeMultipleType { get { if (trade?.TradeType == "自定义交易" && !string.IsNullOrWhiteSpace(trade.StructureType)) { return trade.StructureType; } return trade?.TradeMultipleType; } } public int CountRatio { get; set; } public string SealResult { get; set; } public string SealTime { get; set; } } public class trade_contract_group_simple { public int id { get; set; } public trade trade { get; set; } public trade_cash trade_cash { get; set; } public trade_span trade_span { get; set; } public underlying_manager underlying_manager { get; set; } public string TradeType => trade?.TradeType; public string ContractCode { get; set; } public string ContractDocUrl { get; set; } public double? UnwindVol { get; set; } public string ClientName { get; set; } public string UnwindVolString { get { if (trade_cash?.Action == "系统操作-行权费") { return "----"; } return (UnwindVol ?? 0).OtcFormat(OtcFormatFlag.premiumRateP); } } private double? winloss; /// /// 实现盈亏(客户角度看的) /// public double WinLoss { get { if (winloss != null) { return winloss.Value; } return -(trade_cash.Amount + (trade.TradePrice ?? 0) * (trade_cash.UnwindPercentRate ?? 0) * ((trade.BuySell == "卖出" || trade.TradeType == "远期") ? 1 : -1)); } set => winloss = value; } public double? TradeOriginalAmount { get { if (trade != null) { var CountRatio = DataCacheProvider.GetUnderlyingDataSource().GetCountRatio(trade.UnderlyingCode); return PS.Config.IsUseDisplayNotional ? trade.TradeOriginalAmount * CountRatio : trade.TradeOriginalAmount; } else { return null; } } } public double TradeOriginalAmountV { get { if (trade != null && trade.OriginalNotional.HasValue) { double amount = 0; var CountRatio = DataCacheProvider.GetUnderlyingDataSource().GetCountRatio(trade.UnderlyingCode); if (trade.TradeType == "累计期权") { amount = trade.OriginalNotional.Value / CountRatio; } if (trade.SpotPrice.HasValue) { amount = trade.OriginalStockEqvNotional.Value / trade.SpotPrice.Value / CountRatio; } var annRate = trade.ParticipationRate * trade.AnnualizeFactor; amount = trade.OriginalNotional.Value / (annRate ?? 1) / CountRatio; return PS.Config.IsUseDisplayNotional ? amount * CountRatio : amount; } else { return 0; } } } /// /// 从客户角度看,方向转换 /// public string BuySell => trade != null ? trade.BuySell == "买入" ? "卖出" : "买入" : null; public double? TradePrice { get { if (trade != null) { if (trade.TradeType == "远期") { return trade.TradePrice * -1;//历史交易页面显示为 开仓总费用 } else { if (trade.TradePrice == null) trade.TradePrice = 0; return trade.TradePrice * ("卖出".Equals(trade.BuySell) ? -1 : 1); } } else { return 0; } } } /// /// 某些情况下需要处理后显示的交易状态 /// public string TradeStatusShow { get; set; } public string TradeMultipleType { get { if (trade?.TradeType == "自定义交易" && !string.IsNullOrWhiteSpace(trade.StructureType)) { return trade.StructureType; } return trade?.TradeMultipleType; } } public Dictionary dic { get; set; } public int CountRatio { get; set; } /// /// 累计了结时相应的乘数(标准累计:看涨乘数,看跌乘数;三段式:乘数1,乘数2,乘数3) 当乘数为0不处理 /// public double ACCMultiplier { get; set; } /// /// 完整的标的代码:代码+点号+市场代码 /// public string UnderlyingCodeFull => string.IsNullOrEmpty(trade.UnderlyingCode) || string.IsNullOrEmpty(underlying_manager.MarketCode) ? trade.UnderlyingCode : trade.UnderlyingCode + "." + underlying_manager.MarketCode; //成交日 public string TradeDate => trade != null && trade.TradeDate != null ? trade.TradeDate.Value.ToString("yyyy-MM-dd") : ""; //到期日 public string ExerciseDate => trade != null && trade.ExerciseDate != null ? trade.ExerciseDate.Value.ToString("yyyy-MM-dd") : ""; //平仓日 // public string UnWindDate => trade != null && trade.UnWindDate != null ? trade.UnWindDate.Value.ToString("yyyy-MM-dd") : ""; //了结数量 public double? UnwindTradeAmount { get { if (trade_cash != null) { return OtcFormatExtensions.OtcFormatValue(PS.Config.IsUseDisplayNotional ? trade_cash.UnwindNotional : trade_cash.UnwindNotional / CountRatio, OtcFormatFlag.notional); } else { return null; } } } public double Strike => trade != null ? ((trade.IsMoneynessOptionData ? trade.Strike * trade.SpotPrice : trade.Strike) ?? 0) : 0; public string StrikeString => Strike.OtcFormatUmPrice(); //执行价 /// /// 宏源 A/B团队 /// public string UserGroup { get; set; } public string UserGroupStr { get { if (!string.IsNullOrWhiteSpace(UserGroup) && PS.Config.Is宏源) { return UserGroup == "A" ? "A团队" : "B团队"; } else { return null; } } } } public class trade_contract_groupGridSum { /// /// /// 名义本金合计 /// public double? StockEqvNotionalSum { get; set; } /// /// 交易总额合计 /// public double? TradePriceSum { get; set; } /// /// 了结总额合计 /// public double? MinusAmountSum { get; set; } /// /// 盈亏合计 /// public double? WinLossSum { get; set; } /// /// 盈亏合计(结算) /// public double? QuoteWinLossSum { get; set; } } }