110 lines
4.7 KiB
C#
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; }
|
|
}
|
|
} |