263 lines
6.3 KiB
C#
263 lines
6.3 KiB
C#
using System.ComponentModel.DataAnnotations.Schema;
|
|
using YLErp.DBModels.Enums;
|
|
|
|
namespace YLErp.DBModels
|
|
{
|
|
/// <summary>
|
|
/// 场内交易
|
|
/// </summary>
|
|
[Table("exchange_trade")]
|
|
public class ExchangeTrade : DBModelWithOperator, IDataTraceV2
|
|
{
|
|
/// <summary>
|
|
/// 成交日期
|
|
/// </summary>
|
|
public DateTime TradeDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易编号
|
|
/// </summary>
|
|
public string TradeNumber { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易类型
|
|
/// </summary>
|
|
public string TradeType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的代码
|
|
/// </summary>
|
|
public string UnderlyingCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的代码
|
|
/// </summary>
|
|
public int UnderlyingId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 买卖方向
|
|
/// </summary>
|
|
public string TradeSide { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易单份
|
|
/// </summary>
|
|
public double TradeSinglePrice { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易份额(手数*合约乘数)
|
|
/// 比如鸡蛋合约乘数是10,则1手为10份
|
|
/// </summary>
|
|
public double Notional { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易数量(手数*合约乘数/乘积因子)
|
|
/// 比如鸡蛋合约乘数是10,但交易单位为500kg每手,则1手为5吨的数量
|
|
/// </summary>
|
|
public double TradeAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易手数
|
|
/// </summary>
|
|
public double TradeLots { get; set; }
|
|
|
|
/// <summary>
|
|
/// 簿记账户
|
|
/// </summary>
|
|
public int AssetBookId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易员
|
|
/// </summary>
|
|
public int TraderId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易员
|
|
/// </summary>
|
|
public string TraderName { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的资产类型
|
|
/// </summary>
|
|
public string InstrumentType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 对冲账户
|
|
/// </summary>
|
|
public int ExchangeAccountId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 对冲账户
|
|
/// </summary>
|
|
public string ExchangeAccountCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 手续费
|
|
/// </summary>
|
|
public double Commission { get; set; }
|
|
|
|
/// <summary>
|
|
/// 手续费计算方式
|
|
/// </summary>
|
|
public CommissionType CommissionType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的或场内期权到期日
|
|
/// </summary>
|
|
public DateTime? MaturityDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 期权代码
|
|
/// </summary>
|
|
public string OptionCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 看涨看跌
|
|
/// </summary>
|
|
public string OptionType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 行权价
|
|
/// </summary>
|
|
public double? OptionStrike { get; set; }
|
|
|
|
/// <summary>
|
|
/// 行权方式
|
|
/// </summary>
|
|
public string ExerciseMode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否有效
|
|
/// </summary>
|
|
public bool IsValid { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// 交易来源
|
|
/// </summary>
|
|
public string TradeSource { get; set; }
|
|
|
|
/// <summary>
|
|
/// 备注
|
|
/// </summary>
|
|
public string Comments { get; set; }
|
|
|
|
/// <summary>
|
|
/// 创建时间
|
|
/// </summary>
|
|
public DateTime CreateTime { get; set; }
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{id},{UnderlyingCode},{TradeType}";
|
|
}
|
|
|
|
public ExchangeTrade Clone()
|
|
{
|
|
return (ExchangeTrade)MemberwiseClone();
|
|
}
|
|
|
|
public string GetDataTraceKeyId()
|
|
{
|
|
return id.ToString();
|
|
}
|
|
|
|
public string GetDataTraceKeyInfo()
|
|
{
|
|
return $"场内交易:{TradeDate:yyyyMMdd}{OptionCode.TrimToNull() ?? UnderlyingCode}";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 标的交易Dto
|
|
/// </summary>
|
|
[NotMapped]
|
|
public class ExchangeTradeDto : ExchangeTrade
|
|
{
|
|
/// <summary>
|
|
/// 簿记账户名称
|
|
/// </summary>
|
|
public string AssetBookName { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的代码
|
|
/// </summary>
|
|
public string UnderlyingName { get; set; }
|
|
|
|
public int CountRatio { get; set; }
|
|
|
|
|
|
public decimal SheetAmount
|
|
{
|
|
get
|
|
{
|
|
if (ConsTrade.BondTypeList.Contains(TradeType))
|
|
{
|
|
return ((decimal)this.TradeAmount / 100);
|
|
}
|
|
return (decimal)this.TradeAmount;
|
|
}
|
|
}
|
|
|
|
public decimal TradeSinglePriceForBond
|
|
{
|
|
get
|
|
{
|
|
if (ConsTrade.BondTypeList.Contains(TradeType))
|
|
{
|
|
return ((decimal)this.TradeSinglePrice * 100);
|
|
}
|
|
return (decimal)this.TradeSinglePrice;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 标的交易持仓记录Dto
|
|
/// </summary>
|
|
[NotMapped]
|
|
public class ExchangeTradePositionDto : DBModelBase
|
|
{
|
|
//需要展示的字段
|
|
public int BookId { get; set; }
|
|
|
|
public string TradeType { get; set; }
|
|
|
|
public DateTime ValueDate { get; set; }
|
|
|
|
public string UnderlyingCode { get; set; }
|
|
|
|
public string UnderlyingName { get; set; }
|
|
|
|
public string OptionCode { get; set; }
|
|
|
|
public string AssetBookName { get; set; }
|
|
|
|
//持仓手数,数量,名义本金,标的报价
|
|
public double Position { get; set; }
|
|
|
|
public double PositionCount { get; set; }
|
|
|
|
public string PositionType { get; set; }
|
|
|
|
public double PositionCost { get; set; }
|
|
|
|
public string UnderlyingPrice { get; set; }
|
|
|
|
public int CountRatio { get; set; }
|
|
|
|
|
|
public double SheetAmount
|
|
{
|
|
get
|
|
{
|
|
if (ConsTrade.BondTypeList.Contains(TradeType))
|
|
{
|
|
return PositionCount / 100;
|
|
}
|
|
return PositionCount;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|