185 lines
4.8 KiB
C#
185 lines
4.8 KiB
C#
using YLErp.Modules.SystemModule;
|
|
using YLErp.Modules.TradeRiskCalcModule;
|
|
|
|
namespace YLErp.Web.Models
|
|
{
|
|
/// <summary>
|
|
/// 风险对冲视图模型
|
|
/// </summary>
|
|
public class RiskHedgingViewModel : BasicViewModel
|
|
{
|
|
public RiskHedgingViewModel(UserInfo userInfo) : base(userInfo)
|
|
{
|
|
var index = 0;
|
|
VolTpes = new string[3];
|
|
if (AppHelper.IsSupportVolTypeOnRiskCalc("对冲"))
|
|
{
|
|
VolTpes[index++] = "对冲";
|
|
}
|
|
if (AppHelper.IsSupportVolTypeOnRiskCalc("持仓"))
|
|
{
|
|
VolTpes[index++] = "持仓";
|
|
}
|
|
if (AppHelper.IsSupportVolTypeOnRiskCalc("交易曲面"))
|
|
{
|
|
VolTpes[index++] = "交易曲面";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 支持的波动率类型集合
|
|
/// </summary>
|
|
public string[] VolTpes { get; }
|
|
|
|
/// <summary>
|
|
/// 实时风险查询对象
|
|
/// </summary>
|
|
public TradingRiskReqModel ReqModel { get; set; }
|
|
|
|
/// <summary>
|
|
/// 未参与排序的品种
|
|
/// </summary>
|
|
public IEnumerable<Variety> UnsortVarieties { get; set; }
|
|
|
|
/// <summary>
|
|
/// 参与排序的品种
|
|
/// </summary>
|
|
public IEnumerable<Variety> SortVarieties { get; set; }
|
|
|
|
/// <summary>
|
|
/// 自动对冲规则
|
|
/// </summary>
|
|
public IEnumerable<TradeAutoRule> AutoRules { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否主视图
|
|
/// </summary>
|
|
public bool IsMainView { get; set; }
|
|
|
|
/// <summary>
|
|
/// 用户配置项
|
|
/// </summary>
|
|
public RiskHedgingUserConfig UserConfig { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否权益类页面
|
|
/// </summary>
|
|
public bool IsStock { get; set; }
|
|
|
|
/// <summary>
|
|
/// 上一个收盘日
|
|
/// </summary>
|
|
public DateTime PreSettleDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 上一个交易日
|
|
/// </summary>
|
|
public DateTime PreTradingDate { get; set; }
|
|
|
|
public List<UnderlyingPriceChangeLimition> OutRangedUms { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的价格阈值
|
|
/// </summary>
|
|
public IEnumerable<Modules.TradeRiskCalcModule.UnderlyingPriceChangeLimition> UnderlyingAlerts { get; set; }
|
|
|
|
/// <summary>
|
|
/// 获取波动率类型
|
|
/// </summary>
|
|
public string GetVolType()
|
|
{
|
|
return ReqModel?.VolType.TrimToNull() ?? VolTpes[0] ?? "无";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取参与排序的品种代码
|
|
/// </summary>
|
|
public IEnumerable<string> GetSortVarietyCodes()
|
|
{
|
|
if (SortVarieties == null)
|
|
{
|
|
return Enumerable.Empty<string>();
|
|
}
|
|
return SortVarieties.Select(n => n.VarietyCode).ToArray();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public class UnderlyingPriceChangeLimition
|
|
{
|
|
public string UnderlyingCode { get; set; }
|
|
|
|
public double basePrice { get; set; }
|
|
|
|
public double nowPrice { get; set; }
|
|
|
|
public double priceIncreaseRate { get; set; }
|
|
|
|
public double priceDecreaseRate { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委托下单
|
|
/// </summary>
|
|
public class RiskHedgingOrderModel
|
|
{
|
|
public string Sign { get; set; }
|
|
|
|
public string Token { get; set; }
|
|
|
|
public string UserId { get; set; }
|
|
|
|
//-------------------------------
|
|
// 以下来自请求
|
|
//-------------------------------
|
|
|
|
/// <summary>
|
|
/// 来自请求
|
|
/// </summary>
|
|
public string InstType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 来自请求
|
|
/// </summary>
|
|
public IEnumerable<RiskHedgingOrderItem> Items { get; set; }
|
|
|
|
/// <summary>
|
|
/// 获取交易方向
|
|
/// </summary>
|
|
public string GetBuySell(bool deltaGreaterThanZero)
|
|
{
|
|
if (InstType.Equals("Stock", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return deltaGreaterThanZero ? "卖出" : "买入";
|
|
}
|
|
return deltaGreaterThanZero ? "空头开仓" : "多头开仓";
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return InstType;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 委托下单项目
|
|
/// </summary>
|
|
public class RiskHedgingOrderItem
|
|
{
|
|
/// <summary>
|
|
/// 来自请求
|
|
/// </summary>
|
|
public string UnderlyingCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 来自请求
|
|
/// </summary>
|
|
public double DeltaInLots { get; set; }
|
|
|
|
public override string ToString()
|
|
{
|
|
return UnderlyingCode + "--" + DeltaInLots;
|
|
}
|
|
}
|
|
} |