249 lines
6.1 KiB
C#
249 lines
6.1 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// 记录估值日期
|
|
/// </summary>
|
|
public DateTime ValueDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 对冲唯一编码
|
|
/// </summary>
|
|
public string HedgeUniqueCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 场内期权合约编号
|
|
/// </summary>
|
|
public string ExchangeOptionCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易类型
|
|
/// </summary>
|
|
[Required]
|
|
public string TradeType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 持仓类型
|
|
/// </summary>
|
|
public string PositionType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 簿记账户信息Id
|
|
/// </summary>
|
|
[Required]
|
|
public int BookId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的代码Id
|
|
/// </summary>
|
|
public int UnderlyingId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的代码
|
|
/// </summary>
|
|
// 与数据库结构不一致,先注释掉 [Required]
|
|
public string UnderlyingCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易类型(买入、卖出、多头开仓、多头平仓、空头开仓、空头平仓)
|
|
/// </summary>
|
|
public string BuySell { get; set; }
|
|
|
|
/// <summary>
|
|
/// 持仓数量
|
|
/// </summary>
|
|
public double Amount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 持仓成本
|
|
/// </summary>
|
|
public double Cost { get => _cost; set => _cost = NumberHelper.Normalize(value); }
|
|
|
|
/// <summary>
|
|
/// 手续费
|
|
/// </summary>
|
|
public double Commission { get; set; }
|
|
}
|
|
|
|
public class EodTradePosition : TradePositionBase
|
|
{
|
|
/// <summary>
|
|
/// 客户ID
|
|
/// </summary>
|
|
public int ClientId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易信息
|
|
/// </summary>
|
|
public int TradeId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 昨日价值
|
|
/// </summary>
|
|
public double LastPv { get; set; }
|
|
|
|
/// <summary>
|
|
/// Pv
|
|
/// </summary>
|
|
public double Pv { get; set; }
|
|
|
|
/// <summary>
|
|
/// 四舍五入处理后的持仓市值
|
|
/// </summary>
|
|
public double RoundedPv { get; set; }
|
|
|
|
/// <summary>
|
|
/// 当日盈亏
|
|
/// </summary>
|
|
public double DailyPnL { get; set; }
|
|
|
|
/// <summary>
|
|
/// 持仓盈亏
|
|
/// </summary>
|
|
public double PositionPnL { get; set; }
|
|
|
|
/// <summary>
|
|
/// 平仓盈亏
|
|
/// </summary>
|
|
public double ClosedPnL { get; set; }
|
|
|
|
/// <summary>
|
|
/// 实现盈亏
|
|
/// </summary>
|
|
[NotMapped]
|
|
public double RealizedPnL { get => ClosedPnL; set => ClosedPnL = value; }
|
|
|
|
/// <summary>
|
|
/// 四舍五入处理后的持仓盈亏
|
|
/// </summary>
|
|
public double RoundedPositionPnL { get; set; }
|
|
|
|
/// <summary>
|
|
/// 总盈亏
|
|
/// </summary>
|
|
[DisplayName("总盈亏")]
|
|
public double TotalPnL { get; set; }
|
|
|
|
/// <summary>
|
|
/// 预付金
|
|
/// </summary>
|
|
public double Margin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 持仓实现金额(目前指持仓时的票息和互换金额)
|
|
/// </summary>
|
|
[DisplayName("持仓实现盈亏")]
|
|
public double PositionRelizedAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 主交易ID(准备使用eodtrade表)
|
|
/// </summary>
|
|
public int ParentTradeId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 期权结构类型(准备使用eodtrade表)
|
|
/// </summary>
|
|
public string StructureType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的价格
|
|
/// </summary>
|
|
public double? UnderlyingPrice { get; set; }
|
|
|
|
/// <summary>
|
|
/// 收益互换初始预付金
|
|
/// </summary>
|
|
[DisplayName("收益互换初始预付金")]
|
|
public double SwapInitMargin { get; set; }
|
|
|
|
/// <summary>
|
|
/// 收益互换交易盈亏
|
|
/// </summary>
|
|
[DisplayName("收益互换交易盈亏")]
|
|
public double SwapWinLoss { get; set; }
|
|
|
|
/// <summary>
|
|
/// 收益互换预付金容忍金额
|
|
/// </summary>
|
|
[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; }
|
|
}
|
|
} |