namespace YLErp.Web.Models { /// /// 设置观察价格 /// 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"); /// /// 观察前状态 /// public string PreObStatus { get; private set; } /// /// 是否显示观察前状态 /// public bool ShowPreObStatus { get; private set; } /// /// /// public string SetObservationDate { get; set; } /// /// /// public double SetObservationPrice { get; set; } /// /// 敲出障碍价格 /// public string KOBarrier { get; set; } } }