using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace YLErp.DBModels { [Table("eod_trade_position")] public class eod_trade_position : EodTradePosition { } [Table("eod_trade_position_hedgevol")] public class eod_trade_position_hedgevol : EodTradePosition { } [Table("eod_trade_position_extend")] public class eod_trade_position_extend : EodTradePosition { } [Table("eod_trade_position_extend_s")] public class eod_trade_position_extend_s : EodTradePosition { } [Table("eod_trade_position_openvol")] public class eod_trade_position_openvol : EodTradePosition { } [Table("eod_trade_position_s")] public class eod_trade_position_s : EodTradePosition { } [Table("eod_trade_position_hedgevol_s")] public class eod_trade_position_hedgevol_s : EodTradePosition { } [Table("eod_trade_position_openvol_s")] public class eod_trade_position_openvol_s : EodTradePosition { } public class TradePositionBase : DBModelWithOperator { private double _cost; /// /// 记录估值日期 /// public DateTime ValueDate { get; set; } /// /// 对冲唯一编码 /// public string HedgeUniqueCode { get; set; } /// /// 场内期权合约编号 /// public string ExchangeOptionCode { get; set; } /// /// 交易类型 /// [Required] public string TradeType { get; set; } /// /// 持仓类型 /// public string PositionType { get; set; } /// /// 簿记账户信息Id /// [Required] public int BookId { get; set; } /// /// 标的代码Id /// public int UnderlyingId { get; set; } /// /// 标的代码 /// // 与数据库结构不一致,先注释掉 [Required] public string UnderlyingCode { get; set; } /// /// 交易类型(买入、卖出、多头开仓、多头平仓、空头开仓、空头平仓) /// public string BuySell { get; set; } /// /// 持仓数量 /// public double Amount { get; set; } /// /// 持仓成本 /// public double Cost { get => _cost; set => _cost = NumberHelper.Normalize(value); } /// /// 手续费 /// public double Commission { get; set; } } public class EodTradePosition : TradePositionBase { /// /// 客户ID /// public int ClientId { get; set; } /// /// 交易信息 /// public int TradeId { get; set; } /// /// 昨日价值 /// public double LastPv { get; set; } /// /// Pv /// public double Pv { get; set; } /// /// 四舍五入处理后的持仓市值 /// public double RoundedPv { get; set; } /// /// 当日盈亏 /// public double DailyPnL { get; set; } /// /// 持仓盈亏 /// public double PositionPnL { get; set; } /// /// 平仓盈亏 /// public double ClosedPnL { get; set; } /// /// 实现盈亏 /// [NotMapped] public double RealizedPnL { get => ClosedPnL; set => ClosedPnL = value; } /// /// 四舍五入处理后的持仓盈亏 /// public double RoundedPositionPnL { get; set; } /// /// 总盈亏 /// [DisplayName("总盈亏")] public double TotalPnL { get; set; } /// /// 预付金 /// public double Margin { get; set; } /// /// 持仓实现金额(目前指持仓时的票息和互换金额) /// [DisplayName("持仓实现盈亏")] public double PositionRelizedAmount { get; set; } /// /// 主交易ID(准备使用eodtrade表) /// public int ParentTradeId { get; set; } /// /// 期权结构类型(准备使用eodtrade表) /// public string StructureType { get; set; } /// /// 标的价格 /// public double? UnderlyingPrice { get; set; } /// /// 收益互换初始预付金 /// [DisplayName("收益互换初始预付金")] public double SwapInitMargin { get; set; } /// /// 收益互换交易盈亏 /// [DisplayName("收益互换交易盈亏")] public double SwapWinLoss { get; set; } /// /// 收益互换预付金容忍金额 /// [DisplayName("收益互换预付金容忍金额")] public double SwapUnMargin { get; set; } public override string ToString() { return $"tradeid:{TradeId}--{UnderlyingCode}--bookid:{BookId}--clientid:{ClientId}"; } public EodTradePosition Clone() { return (EodTradePosition)MemberwiseClone(); } } public class EodTradePositionAndRisk { public EodTradePositionAndRisk(EodTradePosition position, EodTradeRisk risk) { Risk = risk; Position = position ?? throw new ArgumentNullException(nameof(position)); } public EodTradePosition Position { get; } public EodTradeRisk Risk { get; } } }