52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
namespace YLErp.Modules.TradeModule.OrderModule
|
|
{
|
|
partial class TradeSavePreHandler
|
|
{
|
|
private static void CheckSnowball(trade req)
|
|
{
|
|
var snowball = req.trade_snowball;
|
|
|
|
if (snowball.PrepaymentUsed)
|
|
{
|
|
if (snowball.SpreadStrikeAtMaturity1 == null)
|
|
{
|
|
throw new ServiceException("敲入执行价格 必须填写");
|
|
}
|
|
|
|
snowball.KOObservationDates = snowball.KOObservationDates?.Trim(new[] { ' ', ';' });
|
|
|
|
if (string.IsNullOrWhiteSpace(snowball.KOObservationDates))
|
|
{
|
|
throw new ServiceException("敲出观察频率 必须填写");
|
|
}
|
|
|
|
req.Strike = snowball.SpreadStrikeAtMaturity1;
|
|
|
|
snowball.IsAnnualized2 = false;
|
|
snowball.AnnualizeFactor2 = 1;
|
|
req.MetaDic[nameof(snowball.AnnualizeFactor2)] = "/";
|
|
|
|
snowball.KOPayoffType = KOPayoffTypeEnum.Rebate;
|
|
snowball.KIPayoffType = KIPayoffTypeEnum.Prepayment;
|
|
}
|
|
else
|
|
{
|
|
if (!snowball.IsAnnualized2 || !snowball.AnnualizeFactor2.HasValue)
|
|
{
|
|
snowball.AnnualizeFactor2 = 1;
|
|
req.MetaDic[nameof(snowball.AnnualizeFactor2)] = "/";
|
|
}
|
|
|
|
if (snowball.KIPayoffType == KIPayoffTypeEnum.None)
|
|
{
|
|
req.Strike = req.IsMoneynessOptionData ? 1 : req.SpotPrice;
|
|
}
|
|
else
|
|
{
|
|
req.Strike = snowball.SpreadStrikeAtMaturity1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|