Files
zszq-trs/YLErpWeb/Models/SetObservationViewModel.cs
2024-05-09 14:06:26 +08:00

110 lines
4.7 KiB
C#

namespace YLErp.Web.Models
{
/// <summary>
/// 设置观察价格
/// </summary>
public class SetObservationViewModel
{
public SetObservationViewModel(trade td)
{
trade = td ?? throw new ArgumentNullException(nameof(td));
if (td.IsMoneynessOptionData)
{
switch (td.TradeType)
{
case "障碍期权":
td.trade_barrier_option.BarrierPrice = (td.SpotPrice??0) * td.trade_barrier_option.BarrierPrice;
td.trade_barrier_option.UpperBarrierPrice = td.SpotPrice * td.trade_barrier_option.UpperBarrierPrice;
break;
case "二元期权":
td.trade_binary_option.UpperBarrier = td.SpotPrice * td.trade_binary_option.UpperBarrier;
break;
case "双鲨期权":
td.trade_double_sharkfin_option.BarrierHigh = (td.SpotPrice ?? 0) * td.trade_double_sharkfin_option.BarrierHigh;
td.trade_double_sharkfin_option.BarrierLow = (td.SpotPrice ?? 0) * td.trade_double_sharkfin_option.BarrierLow;
break;
case "区间累积期权":
td.trade_rangeaccrual.LowerRange = (td.SpotPrice ?? 0) * td.trade_rangeaccrual.LowerRange;
td.trade_rangeaccrual.UpperRange = (td.SpotPrice ?? 0) * td.trade_rangeaccrual.UpperRange;
break;
case "凤凰期权":
td.trade_autocall.KIBarrier = (td.SpotPrice ?? 0) * td.trade_autocall.KIBarrier;
td.trade_autocall.KOBarrier = (td.SpotPrice ?? 0) * td.trade_autocall.KOBarrier;
td.trade_autocall.CouponBarrier = (td.SpotPrice ?? 0) * td.trade_autocall.CouponBarrier;
break;
case "雪球期权":
td.trade_snowball.KIBarrier = (td.SpotPrice ?? 0) * td.trade_snowball.KIBarrier;
td.trade_snowball.KOBarrier = (td.SpotPrice ?? 0) * td.trade_snowball.KOBarrier;
td.trade_snowball.SpreadStrikeAtKO = td.SpotPrice * td.trade_snowball.SpreadStrikeAtKO;
break;
case "气囊结构":
td.trade_airbag.Barrier = (td.SpotPrice ?? 0) * td.trade_airbag.Barrier;
break;
case "累计期权":
td.trade_accumulator_option.KOBarrier = (td.SpotPrice ?? 0) * td.trade_accumulator_option.KOBarrier;
break;
}
}
ShowPreObStatus = true;
switch (td.TradeType)
{
case "障碍期权":
PreObStatus = td.trade_barrier_option.KnockInOutStatusCn;
break;
case "双鲨期权":
PreObStatus = td.trade_double_sharkfin_option.KnockInOutStatusCn;
break;
case "凤凰期权":
PreObStatus = td.trade_autocall.KnockInOutStatusCn;
KOBarrier = td.trade_autocall.KOBarrier.OtcFormatFlex(0);
break;
case "雪球期权":
PreObStatus = td.trade_snowball.KnockInOutStatusCn;
KOBarrier = td.trade_snowball.KOBarrier.OtcFormatFlex(0);
break;
case "累计期权":
ShowPreObStatus = false;
PreObStatus = td.trade_accumulator_option.KnockInOutStatusCn;
KOBarrier = td.trade_accumulator_option.KOBarrier.OtcFormatFlex(0);
break;
default:
ShowPreObStatus = false;
break;
}
}
public trade trade { get; private set; }
public string TradeDate => trade?.TradeDate?.ToString("yyyy-MM-dd");
public string ExerciseDate => trade?.ExerciseDate?.ToString("yyyy-MM-dd");
/// <summary>
/// 观察前状态
/// </summary>
public string PreObStatus { get; private set; }
/// <summary>
/// 是否显示观察前状态
/// </summary>
public bool ShowPreObStatus { get; private set; }
/// <summary>
///
/// </summary>
public string SetObservationDate { get; set; }
/// <summary>
///
/// </summary>
public double SetObservationPrice { get; set; }
/// <summary>
/// 敲出障碍价格
/// </summary>
public string KOBarrier { get; set; }
}
}