1496 lines
75 KiB
Plaintext
1496 lines
75 KiB
Plaintext
@model TradeViewModel
|
|
@using YLErp.Modules.CalculationModule
|
|
@{
|
|
Layout = null;
|
|
var tradeModel = Model.Trade;
|
|
var isPremiumRate = tradeModel.IsUsePremiumRate == true;
|
|
var isMoneyness = tradeModel.IsMoneynessOption == "是";
|
|
var rebatFmt = isPremiumRate ? OtcFormatFlag.premiumRateP : OtcFormatFlag.tradeSinglePrice;
|
|
var volFmt = PS.Config.IsTradeVol && PS.Config.ErpElement.VolMoreAccurate ? OtcFormatFlag.percent4 : OtcFormatFlag.percent;
|
|
var salesNames = String.Join(",", Model.SalesCommission.Select(n => n.SalesmanName).ToArray());
|
|
|
|
var isJd = tradeModel.UnderlyingCode?.Trim().ToUpper().StartsWith("JD") ?? false;
|
|
tradeModel.TradeUnit = PS.Config.IsUseDisplayNotional ? (tradeModel.QuoteUnit == "500千克" ? "半吨" : (isJd ? "吨" : tradeModel.QuoteUnit)) : tradeModel.TradeUnit;
|
|
}
|
|
|
|
<div id="optionVueDiv">
|
|
<div class="tabbable">
|
|
<ul id="myTab" class="nav nav-tabs nav-main">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" href="#baseInfo" data-toggle="tab">成交</a>
|
|
</li>
|
|
@if (Model.autoCallObsercationList != null && Model.autoCallObsercationList.Any())
|
|
{
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#autoCallObsercationInfo" data-toggle="tab">@(tradeModel.TradeType == "累计期权" ? "累计收益" : "累积票息")</a>
|
|
</li>
|
|
}
|
|
@if (Model.unWindTradeCashList != null && Model.unWindTradeCashList.Any())
|
|
{
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#terminationInfo" data-toggle="tab">提前终止</a>
|
|
</li>
|
|
}
|
|
@if (Model.maturityTradeCash != null)
|
|
{
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#maturityInfo" data-toggle="tab">到期</a>
|
|
</li>
|
|
}
|
|
@if (ConsTrade.TradeStatusAfterConfirmed.Contains(Model.Trade.TradeStatus))
|
|
{
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#ClientCashinCashout" data-toggle="tab">资金记录</a>
|
|
</li>
|
|
}
|
|
@if (Model.tradeMarginTemplates != null && Model.tradeMarginTemplates.Any())
|
|
{
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#tradeMarginTemplatesInfo" data-toggle="tab">预付金模板</a>
|
|
</li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
<div class="tab-content">
|
|
<div id="baseInfo" class="tab-pane in active">
|
|
|
|
<table @*id="baseTable"*@ class="table table-bordered">
|
|
<tr>
|
|
<td class="tdRight">簿记账户</td>
|
|
<td>@(tradeModel.AssetBookName)</td>
|
|
@if (isPremiumRate)
|
|
{
|
|
<td class="tdRight">期权费率</td>
|
|
<td>
|
|
@(tradeModel.PremiumRate.OtcFormat(OtcFormatFlag.premiumRateP))
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">权利金</td>
|
|
<td>
|
|
@(tradeModel.TradeSinglePrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))
|
|
@if (tradeModel.TradeSinglePrice != null)
|
|
{
|
|
@(tradeModel.QuoteUnitSingle)
|
|
}
|
|
</td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">交易员</td>
|
|
<td>@(tradeModel.TraderName)</td>
|
|
<td class="tdRight">有效成交数量</td>
|
|
<td>@(tradeModel.TradeOriginalAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional)) @(tradeModel.TradeUnit)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">交易对手方</td>
|
|
<td>@(tradeModel.ClientName)</td>
|
|
<td class="tdRight">成交数量</td>
|
|
<td>@(TradeCalcHelper.GetTradeAmountV(tradeModel).OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional)) @(tradeModel.TradeUnit)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">交易编号</td>
|
|
<td>@(tradeModel.TradeNumber)</td>
|
|
<td class="tdRight">成交总额</td>
|
|
<td>@(tradeModel.TradePrice.OtcFormatMoney())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">交易方向</td>
|
|
<td>@(tradeModel.BuySell)</td>
|
|
<td class="tdRight">名义本金</td>
|
|
<td>@(tradeModel.OriginalStockEqvNotionalV2.OtcFormat(OtcFormatFlag.StockEqvNotional))</td>
|
|
</tr>
|
|
@if (!string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
|
|
{
|
|
<tr>
|
|
<td class="tdRight">名义本金(结算币种)</td>
|
|
|
|
@if (!string.IsNullOrEmpty(tradeModel.QuoteCurrency) && tradeModel.QuoteCurrency.ToLower() == "usd(cent)")
|
|
{
|
|
<td>@(double.Parse(Model.OriginalStockEqvNotionalV2MultipleExchangeRate)/100)</td>
|
|
}else{
|
|
<td>@Model.OriginalStockEqvNotionalV2MultipleExchangeRate</td>
|
|
}
|
|
|
|
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<td class="tdRight">期权类型</td>
|
|
@if (tradeModel.TradeType == "凤凰期权")
|
|
{
|
|
<td>
|
|
<a class="link-tradetype" href="#extendTradeInfo">@(tradeModel.TradeType == "凤凰期权" ? ("凤凰" + tradeModel.OptionType) : tradeModel.TradeType)</a>
|
|
</td>
|
|
}
|
|
else if (tradeModel.TradeType == "雪球期权")
|
|
{
|
|
<td>
|
|
<a class="link-tradetype" href="#extendTradeInfo">@(tradeModel.TradeType.Replace("期权", ""))</a>@(tradeModel.OptionType)
|
|
</td>
|
|
}
|
|
else if (tradeModel.TradeType == "累计期权")
|
|
{
|
|
<td>
|
|
<a class="link-tradetype" href="#extendTradeInfo">@(tradeModel.OptionType == "看涨" ? "累购" : "累沽")</a>
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>
|
|
@(tradeModel.ExerciseModeCn)
|
|
<a class="link-tradetype" href="#extendTradeInfo">@(tradeModel.TradeType.Replace("期权", ""))</a>@(tradeModel.OptionType)
|
|
</td>
|
|
}
|
|
<td class="tdRight">有效持仓数量</td>
|
|
<td>@(tradeModel.TradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">标的代码</td>
|
|
<td>
|
|
@if (tradeModel.TradeType == "合成价差期权")
|
|
{
|
|
<a href="javascript:void(0)" class="selftooltip" style="z-index:10000000" data-toggle="tooltip" title="@(tradeModel.SyntheticUnderlyingTipsInfo)">@(tradeModel.UnderlyingCode)</a>
|
|
}
|
|
else
|
|
{
|
|
<span>@(tradeModel.UnderlyingCode)</span>
|
|
}
|
|
</td>
|
|
<td class="tdRight">持仓数量</td>
|
|
<td>@(TradeCalcHelper.GetTradeAmountV(tradeModel, tradeModel.Notional).OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">期初标的价格</td>
|
|
<td>@(tradeModel.SpotPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
<td class="tdRight">@(tradeModel.TradeType == "累计期权" && tradeModel.trade_accumulator_option?.AccumulatorStructureType == AccumulatorStructureTypeEnum.Segmented ? "执行价格1":"执行价格")</td>
|
|
@if (tradeModel.trade_asian_option?.StrikeType == "Floating")
|
|
{
|
|
<td></td>
|
|
}
|
|
else
|
|
{
|
|
<td>@(tradeModel.StrikeToShow)</td>
|
|
}
|
|
</tr>
|
|
@if (tradeModel.TradeType == "累计期权" && tradeModel.trade_accumulator_option?.AccumulatorStructureType == AccumulatorStructureTypeEnum.Segmented)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">执行价格2</td>
|
|
<td>@(tradeModel.trade_accumulator_option?.Strike2.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">执行价格3</td>
|
|
<td>@(tradeModel.trade_accumulator_option?.Strike3.OtcFormatUmPrice(isMoneyness))</td>
|
|
</tr>
|
|
}
|
|
|
|
@if (PS.Config.IsTradeVol)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">成交波动率</td>
|
|
<td>@(tradeModel.TradeOpenVolatility.OtcFormat(volFmt))</td>
|
|
<td class="tdRight">目标波动率</td>
|
|
<td>@(tradeModel.TradeCloseVolatility.OtcFormat(volFmt))</td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<td class="tdRight">成交日期</td>
|
|
<td>@(tradeModel.TradeDate.OtcFormatDate())</td>
|
|
@if (PS.Config.IsTradeVol)
|
|
{
|
|
<td class="tdRight">平滑过渡天数</td>
|
|
<td>@(tradeModel.NumOfSmoothingDays)</td>
|
|
}
|
|
else
|
|
{
|
|
<td></td>
|
|
<td></td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">权利金应付日</td>
|
|
<td>@(tradeModel.PremiumPayDate.OtcFormatDate())</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">保底收益</td>
|
|
<td>
|
|
@if (isPremiumRate)
|
|
{
|
|
@(tradeModel.PrincipalRateWrite.OtcFormatPercent())
|
|
}
|
|
else
|
|
{
|
|
@(tradeModel.SinglePrincipalWrite.OtcFormatMoney())
|
|
if (tradeModel.TradeSinglePrice != null)
|
|
{
|
|
@(tradeModel.QuoteUnitSingle)
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight">保底收益总额</td>
|
|
<td>@(tradeModel.OriginalPrincipalSum.OtcFormatMoney())</td>
|
|
</tr>
|
|
|
|
@if (PS.Config.Is浙期 && tradeModel.ActualExerciseDate != null){
|
|
<tr>
|
|
<td class="tdRight">实际到期日期</td>
|
|
<td>@(tradeModel.ActualExerciseDate.OtcFormatDate())</td>
|
|
<td class="tdRight">到期日期</td>
|
|
<td>@(tradeModel.ExerciseDate.OtcFormatDate())</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">结算日期</td>
|
|
<td>@(tradeModel.SettlementDate.OtcFormatDate())</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">无风险利率</td>
|
|
<td>@(tradeModel.NoRiskRate.OtcFormatPercent())</td>
|
|
|
|
<td class="tdRight">分红率</td>
|
|
<td>@(tradeModel.DividendRate.OtcFormatPercent())</td>
|
|
</tr>
|
|
}
|
|
else{
|
|
<tr>
|
|
<td class="tdRight">到期日期</td>
|
|
<td>@(tradeModel.ExerciseDate.OtcFormatDate())</td>
|
|
<td class="tdRight">无风险利率</td>
|
|
<td>@(tradeModel.NoRiskRate.OtcFormatPercent())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">结算日期</td>
|
|
<td>@(tradeModel.SettlementDate.OtcFormatDate())</td>
|
|
<td class="tdRight">分红率</td>
|
|
<td>@(tradeModel.DividendRate.OtcFormatPercent())</td>
|
|
</tr>
|
|
}
|
|
|
|
<tr>
|
|
<td class="tdRight">参与率</td>
|
|
<td>@(tradeModel.ParticipationRate.OtcFormatPercent())</td>
|
|
<td class="tdRight">收益结算</td>
|
|
<td>@(tradeModel.SettlementTypeDesc)</td>
|
|
</tr>
|
|
@if (tradeModel.TradeType == "雪球期权")
|
|
{
|
|
tradeModel.MetaDic.TryGetValue("AnnualizeFactor2", out var factor);
|
|
<tr>
|
|
<td class="tdRight">期权年化</td>
|
|
<td>@(tradeModel.trade_snowball != null && tradeModel.trade_snowball.IsAnnualized2 ? '是' : '否')</td>
|
|
<td class="tdRight">年化系数</td>
|
|
<td>@(factor)</td>
|
|
</tr>
|
|
}
|
|
else if (tradeModel.TradeType == "凤凰期权")
|
|
{
|
|
tradeModel.MetaDic.TryGetValue("AnnualizeFactor2", out var factor);
|
|
<tr>
|
|
<td class="tdRight">期权年化</td>
|
|
<td>@(tradeModel.trade_autocall.IsAnnualized2 ? '是' : '否')</td>
|
|
<td class="tdRight">年化系数</td>
|
|
<td>@(factor)</td>
|
|
</tr>
|
|
}
|
|
else
|
|
{
|
|
tradeModel.MetaDic.TryGetValue("AnnualizeFactor", out var factor);
|
|
<tr>
|
|
<td class="tdRight">期权年化</td>
|
|
<td>@(tradeModel.IsAnnualized ? '是' : '否')</td>
|
|
<td class="tdRight">年化系数</td>
|
|
<td>@(factor)</td>
|
|
</tr>
|
|
}
|
|
|
|
<tr>
|
|
<td class="tdRight">交易状态</td>
|
|
<td>@(tradeModel.TradeStatus)</td>
|
|
<td class="tdRight">有效名义本金</td>
|
|
<td>@(tradeModel.StockEqvNotionalReal.OtcFormat(OtcFormatFlag.StockEqvNotional))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">预付金模板</td>
|
|
<td>@tradeModel.MarginTemplateName</td>
|
|
<td class="tdRight">预付金算法</td>
|
|
<td>@(YLErp.Helpers.EnumHelper.GetDescriptionByName<MarginTypeEnum>(tradeModel.MarginType))</td>
|
|
</tr>
|
|
@if (!string.IsNullOrEmpty(tradeModel.QuoteCurrency) && tradeModel.QuoteCurrency != "CNY")
|
|
{
|
|
<tr>
|
|
<td class="tdRight">计价币种</td>
|
|
<td>@tradeModel.QuoteCurrency</td>
|
|
<td class="tdRight">汇率</td>
|
|
<td>@(tradeModel.MetaDic.ContainsKey("ExchangeRate") ? tradeModel.MetaDic["ExchangeRate"] : "")</td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<td class="tdRight">初始预付金率</td>
|
|
<td>@(tradeModel.MarginType <= MarginTypeEnum.NONE ? "" : tradeModel.MarginRate.OtcFormat(OtcFormatFlag.marginRateP))</td>
|
|
<td class="tdRight">持仓预付金率</td>
|
|
<td>@(tradeModel.MarginType == MarginTypeEnum.FIXED || tradeModel.MarginType == MarginTypeEnum.FLOATP ? tradeModel.PositionMarginRate.OtcFormat(OtcFormatFlag.marginRateP) : "")</td>
|
|
</tr>
|
|
@if (PS.Config.Company == CompanyEnum.国海)
|
|
{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.CCR_K, out var ccr_k);
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.ignoreRiskExposure, out var ignoreRiskExposure);
|
|
<tr>
|
|
<td class="tdRight">CCR指标k值</td>
|
|
<td>@ccr_k</td>
|
|
<td class="tdRight">信用风险敞口</td>
|
|
<td>@(ignoreRiskExposure != "1" ? "参与计算" : "忽略")</td>
|
|
</tr>
|
|
}
|
|
@if (Model.showInitialMargin)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">初始预付金</td>
|
|
<td>@(tradeModel.InitialMargin.OtcFormatMoney())</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
}
|
|
@if (PS.Config.Is润和)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">Mid Vol</td>
|
|
<td>
|
|
@if (tradeModel.MetaDic.ContainsKey("MidVol") && double.TryParse(tradeModel.MetaDic["MidVol"], out double midvol))
|
|
{
|
|
@(midvol.OtcFormatPercent())
|
|
}
|
|
</td>
|
|
<td class="tdRight">Day1 Pnl</td>
|
|
<td>@(tradeModel.MetaDic.ContainsKey("Day1Pnl") ? tradeModel.MetaDic["Day1Pnl"] : "")</td>
|
|
</tr>
|
|
}
|
|
@if (AppHelper.UseFutureVersion("销售提成", "V2"))
|
|
{
|
|
<tr>
|
|
<td class="tdRight">
|
|
@(PS.Config.ErpElement.SaleMode == YLErp.Configuration.Enums.SaleMode.SaleMen ? "销售员" : "客户经理")
|
|
</td>
|
|
<td>@(salesNames)</td>
|
|
<td class="tdRight">销售提成</td>
|
|
<td>@(Model.SalesCommission.FirstOrDefault()?.CommissionString())</td>
|
|
</tr>
|
|
}
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.ClearingAgency, out var clearingAgency);
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.TradingPlace, out var tradingPlace);
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.MainProtocolCode, out var mainProtocolCode);
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.SupProtocolCode, out var supProtocolCode);
|
|
}
|
|
|
|
@if (!PS.Config.Is润和)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">交易场所</td>
|
|
<td>@(tradingPlace)</td>
|
|
<td class="tdRight">清算机构</td>
|
|
<td>@(clearingAgency)</td>
|
|
</tr>
|
|
}
|
|
|
|
@if (PS.Config.ErpElement.SecuritiesEnvironment)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">主协议编号</td>
|
|
<td>@(mainProtocolCode)</td>
|
|
<td class="tdRight">补充协议编号</td>
|
|
<td>@(supProtocolCode)</td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<td class="tdRight">是否有效</td>
|
|
<td>@(tradeModel.ValidState == "InValid" ? "否" : "是")</td>
|
|
@if (!PS.Config.Is润和)
|
|
{
|
|
<td class="tdRight">交易对手方</td>
|
|
<td>@(tradeModel.OpponentRole ?? "乙方")</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
}
|
|
</tr>
|
|
|
|
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">中央对手方清算</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.IsCentralClearing, out var isCentralClearing);
|
|
}
|
|
@(isCentralClearing == "Y" ? "是" : isCentralClearing == "I" ? "计划中央对手方清算" : "否")
|
|
</td>
|
|
<td class="tdRight">中央清算平台</td>
|
|
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.CentralClearingPaltform, out var centralClearingPaltform);
|
|
}
|
|
@centralClearingPaltform
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">交易平台</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.TradingPaltform, out var tradingPaltform);
|
|
}
|
|
@tradingPaltform
|
|
</td>
|
|
|
|
@if (tradeModel.TradeType != "凤凰期权" && tradeModel.TradeType != "雪球期权")
|
|
{
|
|
<td class="tdRight">报送观察频率</td>
|
|
if (tradeModel.TradeType == "累计期权")
|
|
{
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.koObservationRate, out var koObservationRate);
|
|
@(!string.IsNullOrEmpty(koObservationRate) && koObservationRate.IndexOf("|") > 0 ?
|
|
koObservationRate.Substring(koObservationRate.IndexOf('|') + 1).Replace("DAIL", " 日度").Replace("WEEK", " 周度").Replace("MNTH", " 月度").Replace("YEAR", " 年度").Replace("OTHER", "其他") : "1 日度")
|
|
}
|
|
</td>
|
|
}
|
|
else
|
|
{
|
|
<td>
|
|
|
|
|
|
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.kiObservationRate, out var kiObservationDate);
|
|
@(!string.IsNullOrEmpty(kiObservationDate) && kiObservationDate.IndexOf("|") > 0 ?
|
|
kiObservationDate.Substring(kiObservationDate.IndexOf('|') + 1).Replace("DAIL", " 日度").Replace("WEEK", " 周度").Replace("MNTH", " 月度").Replace("YEAR", " 年度").Replace("OTHER", "其他") : "1 日度")
|
|
}
|
|
</td>
|
|
}
|
|
|
|
|
|
}
|
|
</tr>
|
|
|
|
if (tradeModel.TradeType == "凤凰期权" || tradeModel.TradeType == "雪球期权")
|
|
{
|
|
<tr>
|
|
<td class="tdRight">敲出报送观察频率</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.koObservationRate, out var koObservationRate);
|
|
@(!string.IsNullOrEmpty(koObservationRate) && koObservationRate.IndexOf("|") > 0 ?
|
|
koObservationRate.Substring(koObservationRate.IndexOf('|') + 1).Replace("DAIL", " 日度").Replace("WEEK", " 周度").Replace("MNTH", " 月度").Replace("YEAR", " 年度").Replace("OTHER", "其他") : "1 月度")
|
|
}
|
|
</td>
|
|
|
|
<td class="tdRight">敲入报送观察频率</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.kiObservationRate, out var kiObservationDate);
|
|
@(!string.IsNullOrEmpty(kiObservationDate) && kiObservationDate.IndexOf("|") > 0 ?
|
|
kiObservationDate.Substring(kiObservationDate.IndexOf('|') + 1).Replace("DAIL", " 日度").Replace("WEEK", " 周度").Replace("MNTH", " 月度").Replace("YEAR", " 年度").Replace("OTHER", "其他") : "1 日度")
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
|
|
}
|
|
|
|
<tr>
|
|
<td class="tdRight">备注</td>
|
|
<td colspan="3">
|
|
@if (tradeModel.RemarkInfo != null && tradeModel.RemarkInfo.StartsWith("http://"))
|
|
{
|
|
<a href="@(tradeModel.RemarkInfo)" style="text-decoration:underline;" target="_blank">@(tradeModel.RemarkInfo)</a>
|
|
}
|
|
else
|
|
{
|
|
@(tradeModel.RemarkInfo)
|
|
}
|
|
</td>
|
|
</tr>
|
|
@if (CurUser.交易管理_交易标签查看权限)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">标签</td>
|
|
<td colspan="3">
|
|
<div class="tag-context" style="width:100%;display:inline-block;line-height:36px;text-align:left;">
|
|
@if (Model.Tags != null && Model.Tags.Any())
|
|
{
|
|
foreach (var tag in Model.Tags)
|
|
{
|
|
<span class="tag-item" data-id="@tag.Id" data-name="@tag.Name">
|
|
<span class="tag-text" data-value="@tag.Id">@tag.Name</span>
|
|
@if (CurUser.交易管理_交易标签调整权限)
|
|
{
|
|
<span class="tag-remove" onclick="DeleteTag('@tag.Name')">x</span>
|
|
}
|
|
</span>
|
|
}
|
|
}
|
|
@if (CurUser.交易管理_交易标签调整权限)
|
|
{
|
|
<span class="tag-add">+</span>
|
|
}
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
|
|
|
|
@if (tradeModel.Propertys != null)
|
|
{
|
|
var i = 0;
|
|
var length = tradeModel.Propertys.Count;
|
|
var preProperty = new ExtendInfoModel();
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
@foreach (var property in tradeModel.Propertys)
|
|
{
|
|
i++;
|
|
if (i % 2 == 1)
|
|
{
|
|
preProperty = property;
|
|
if (i == length)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">@property.name</td>
|
|
<td>@property.value</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<tr>
|
|
<td class="tdRight">@preProperty.name</td>
|
|
<td>@preProperty.value</td>
|
|
<td class="tdRight">@property.name</td>
|
|
<td>@property.value</td>
|
|
</tr>
|
|
}
|
|
}
|
|
</table>
|
|
}
|
|
|
|
|
|
<a id="extendTradeInfo"></a>
|
|
@if (tradeModel.TradeType == "合成价差期权")
|
|
{
|
|
var sulist = YLErp.DBModels.Helpers.TradeHelper.GetSyntheticPriceModel(tradeModel)?.SuList;
|
|
if (sulist != null)
|
|
{
|
|
var suItems = sulist.Select(n => n.UnderlyingCode + "," + n.Price.ToString("F3")).Concat(new string[] { null, null }).ToArray();
|
|
<table class="table table-bordered table-exotic">
|
|
@for (var i = 0; i < suItems.Length; i += 2)
|
|
{
|
|
if ((suItems[i]) == null)
|
|
{
|
|
break;
|
|
}
|
|
<tr>
|
|
<td class="tdRight">标的@(i + 1)</td>
|
|
<td>@(suItems[i])</td>
|
|
<td class="tdRight">标的@(i + 2)</td>
|
|
<td>@(suItems[i + 1])</td>
|
|
</tr>
|
|
if ((suItems[i + 1]) == null)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
</table>
|
|
}
|
|
}
|
|
else if (tradeModel.TradeType == "亚式期权")
|
|
{
|
|
var asian = tradeModel.trade_asian_option;
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">执行价类型</td>
|
|
<td>@(asian.StrikeTypeCn)</td>
|
|
<td class="tdRight">均价起算日</td>
|
|
<td>@(asian.AveragingPeriodStartDate.OtcFormatDate())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">均价起算方式</td>
|
|
<td>@(asian.PayoffTypeCn)</td>
|
|
<td class="tdRight">杠杆率</td>
|
|
<td>@(asian.StrikeGearingFactor.OtcFormatPercent())</td>
|
|
</tr>
|
|
@if (asian.PayoffTypeCn.Contains("增强"))
|
|
{
|
|
<tr>
|
|
<td class="tdRight">结算类型</td>
|
|
<td>@(asian.SettleMode == "AtEnd" ? "递延" : "立即")</td>
|
|
@if (asian.StrikeType == "Fixed")
|
|
{
|
|
var enhancedPrice = asian.EnhancedPrice.OtcFormatUmPrice();
|
|
if (tradeModel.IsMoneynessOptionData)
|
|
|
|
{
|
|
enhancedPrice = asian.EnhancedPrice.OtcFormatPercent();
|
|
}
|
|
<td class="tdRight">增强价格</td>
|
|
<td>@enhancedPrice</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
}
|
|
|
|
</tr>
|
|
}
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "障碍期权")
|
|
{
|
|
var barrier = tradeModel.trade_barrier_option;
|
|
var barrierRebat = isPremiumRate ? barrier.RebateRate : barrier.Rebate;
|
|
var barrierRebateHigh = isPremiumRate ? barrier.RebateHighRate : barrier.RebateHigh;
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">障碍类型</td>
|
|
<td>@(barrier.BarrierType)</td>
|
|
<td class="tdRight">观察方式</td>
|
|
<td>@(barrier.Discrete)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">障碍价格</td>
|
|
<td>@(barrier.BarrierPrice.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">补偿方式</td>
|
|
<td>@(barrier.RebateTypeCn)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">高障碍价格</td>
|
|
<td>@(barrier.UpperBarrierPrice.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">障碍偏移</td>
|
|
<td>@(barrier.BarrierShift)</td>
|
|
</tr>
|
|
<tr>
|
|
|
|
<td class="tdRight">敲入敲出状态</td>
|
|
<td>@(barrier.KnockInOutStatusCn)</td>
|
|
<td class="tdRight">敲入敲出日期</td>
|
|
<td>@(barrier.KnockInOutDate.OtcFormatDate())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">补偿按敲出日年化</td>
|
|
<td>@(barrier.RebateAnnualizedAtKO ? "是" : "否")</td>
|
|
<td class="tdRight">补偿计息规则</td>
|
|
<td>@(barrier.RebateDayCount)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">补偿金额</td>
|
|
<td>@(barrierRebat.OtcFormat(rebatFmt))</td>
|
|
<td class="tdRight">高障碍补偿金额</td>
|
|
<td>@(barrierRebateHigh.OtcFormat(rebatFmt))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!barrier.ObservationDates.IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "['日期']";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "观察信息", colInfos, barrier.ObservationDates))
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight">观察频率</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.kiObservationRate, out var kiObservationDate);
|
|
@(!string.IsNullOrEmpty(kiObservationDate) ?
|
|
kiObservationDate.IndexOf("|") > 0 ?
|
|
"每" + kiObservationDate.Substring(0, kiObservationDate.IndexOf('|')).Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "每" + kiObservationDate.Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "")
|
|
}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "二元期权")
|
|
{
|
|
var binary = tradeModel.trade_binary_option;
|
|
var isTouch = binary.PayoffType.Contains("Touch");
|
|
var CashOrNothingAmount = isPremiumRate ? binary.CashOrNothingAmountRate : binary.CashOrNothingAmount;
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">二元类型</td>
|
|
<td>@(binary.PayoffType)</td>
|
|
@if (isTouch)
|
|
{
|
|
<td class="tdRight">是否离散观察</td>
|
|
<td>@(binary.IsDiscreteMonitored ? "是" : "否")</td>
|
|
}
|
|
else
|
|
{
|
|
<td></td>
|
|
<td></td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">补偿金额</td>
|
|
<td>@(CashOrNothingAmount.OtcFormat(rebatFmt))</td>
|
|
@if (isTouch)
|
|
{
|
|
<td class="tdRight">补偿方式</td>
|
|
<td>@(binary.RebateTypeCn)</td>
|
|
}
|
|
else
|
|
{
|
|
<td></td>
|
|
<td></td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">补偿按敲出日年化</td>
|
|
<td>@(binary.RebateAnnualizedAtKO ? "是" : "否")</td>
|
|
<td class="tdRight">补偿计息规则</td>
|
|
<td>@(binary.RebateDayCount)</td>
|
|
</tr>
|
|
@if (binary.PayoffType.Contains("Double"))
|
|
{
|
|
var CashOrNothingAmountHigh = isPremiumRate ? binary.CashOrNothingAmountHighRate : binary.CashOrNothingAmountHigh;
|
|
<tr>
|
|
<td class="tdRight">高障碍价格</td>
|
|
<td>@(binary.UpperBarrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">高障碍补偿金额</td>
|
|
<td>@(CashOrNothingAmountHigh.OtcFormat(rebatFmt))</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "双鲨期权")
|
|
{
|
|
var dshark = tradeModel.trade_double_sharkfin_option;
|
|
var dsharkRebate = isPremiumRate ? dshark.RebateRate : dshark.Rebate;
|
|
var dsharkRebateHigh = isPremiumRate ? dshark.RebateHighRate : dshark.RebateHigh;
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">高障碍价格</td>
|
|
<td>@(dshark.BarrierHigh.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">低障碍价格</td>
|
|
<td>@(dshark.BarrierLow.OtcFormatUmPrice(isMoneyness))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">高行权价</td>
|
|
<td>@(dshark.StrikeHigh.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">低行权价</td>
|
|
<td>@(tradeModel.StrikeToShow)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">补偿金额</td>
|
|
<td>@(dsharkRebate.OtcFormat(rebatFmt))</td>
|
|
<td class="tdRight">高障碍补偿金额</td>
|
|
<td>@(dsharkRebateHigh.OtcFormat(rebatFmt))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">高参与率</td>
|
|
<td>@(dshark.CallParticipationRate.OtcFormatPercent())</td>
|
|
<td class="tdRight">低参与率</td>
|
|
<td>@(dshark.PutParticipationRate.OtcFormatPercent())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">敲入敲出状态</td>
|
|
<td>@(dshark.KnockInOutStatusCn)</td>
|
|
<td class="tdRight">敲入敲出日期</td>
|
|
<td>@(dshark.KnockInOutDate.OtcFormatDate())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">观察类型</td>
|
|
<td>@(dshark.Discrete)</td>
|
|
<td class="tdRight">观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!dshark.ObservationDates.IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "['日期']";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "观察信息", colInfos, dshark.ObservationDates))
|
|
}
|
|
}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "凤凰期权")
|
|
{
|
|
var autocall = tradeModel.trade_autocall;
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">敲出观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!autocall.KOObservationDates.IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "[{name:'日期',type:'text'},{name:'障碍价格',type:'" + (tradeModel.IsMoneynessOptionData ? "percent" : "number") + "'}]";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "敲出观察信息", colInfos, autocall.KOObservationDates))
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight">敲出观察频率</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.koObservationRate, out var koObservationRate);
|
|
@(!string.IsNullOrEmpty(koObservationRate) ?
|
|
koObservationRate.IndexOf("|") > 0 ?
|
|
"每" + koObservationRate.Substring(0, koObservationRate.IndexOf('|')).Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "每" + koObservationRate.Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "")
|
|
|
|
}
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="tdRight">敲入观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!autocall.ObservationDates.IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "['日期']";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "敲入观察信息", colInfos, autocall.ObservationDates))
|
|
}
|
|
}
|
|
|
|
</td>
|
|
<td class="tdRight">敲入观察频率</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.kiObservationRate, out var kiObservationDate);
|
|
@(!string.IsNullOrEmpty(kiObservationDate) ?
|
|
kiObservationDate.IndexOf("|")>0?
|
|
"每" + kiObservationDate.Substring(0, kiObservationDate.IndexOf('|')).Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "每" + kiObservationDate.Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "")
|
|
}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!autocall.KOObservationDates.IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "[{name:'日期',type:'text'},{name:'票息障碍价格',type:'" + (tradeModel.IsMoneynessOptionData ? "percent" : "number") + "'},{name:'票息',type:'percent'}]";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "票息观察信息", colInfos, autocall.CouponObservation))
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight">票息率</td>
|
|
<td>@(autocall.Coupon.OtcFormat(OtcFormatFlag.premiumRateP))</td>
|
|
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息是否年化</td>
|
|
<td>@(autocall.IsFixedCoupon ? "否" : "是")</td>
|
|
<td class="tdRight">票息日历规则</td>
|
|
<td>@(autocall.CouponDayCount)</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息包含首日</td>
|
|
<td>@(autocall.CouponIncludeStartDate == true ? "是" : "否")</td>
|
|
<td class="tdRight">票息障碍价格</td>
|
|
<td>@(autocall.CouponBarrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息结算方式</td>
|
|
<td>@(autocall.CouponPayTypeDesc())</td>
|
|
<td class="tdRight">敲出障碍价格</td>
|
|
<td>@(autocall.KOBarrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">敲入障碍价格</td>
|
|
<td>@(autocall.KIBarrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">敲入到期是否支付票息</td>
|
|
<td>@(autocall.IncludeCouponAfterKI ? "是" : "否")</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">敲入到期支付类别</td>
|
|
<td>@(autocall.KIPayoffTypeDesc())</td>
|
|
<td class="tdRight">敲入行权价</td>
|
|
<td>@(autocall.SpreadStrike1.OtcFormatUmPrice(isMoneyness))</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">封顶/封底行权价</td>
|
|
<td>@(autocall.SpreadStrike.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">敲入敲出状态</td>
|
|
<td>@(autocall.KnockInOutStatusCn)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">敲入敲出日期</td>
|
|
<td>@(autocall.KnockInOutDate.OtcFormatDate())</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "雪球期权")
|
|
{
|
|
@await Html.PartialAsync("_tradeview/snowball")
|
|
}
|
|
else if (tradeModel.TradeType == "彩虹期权")
|
|
{
|
|
var rainbow = tradeModel.trade_rainbow_option;
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">标的资产2</td>
|
|
<td>@(rainbow.UnderlyingAssetCode2)</td>
|
|
<td class="tdRight">行权价2</td>
|
|
<td>@(rainbow.Strike2)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">彩虹类型</td>
|
|
<td>@(rainbow.RainbowType)</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "区间累积期权")
|
|
{
|
|
var rangeacc = tradeModel.trade_rangeaccrual;
|
|
|
|
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!rangeacc.ObservationDates.IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "['日期']";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "观察信息", colInfos, rangeacc.ObservationDates))
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">区间上限</td>
|
|
<td>@(rangeacc.UpperRange.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">区间收益</td>
|
|
<td>@(rangeacc.BonusRate.OtcFormatPercent(4))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">区间下限</td>
|
|
<td>@(rangeacc.LowerRange.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "气囊结构")
|
|
{
|
|
var airbag = tradeModel.trade_airbag;
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">敲入障碍价</td>
|
|
<td>@(airbag.Barrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">收益封顶</td>
|
|
<td>@(airbag.HasPayoffLimit ? "是" : "否")</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">是否离散观察</td>
|
|
<td>@(airbag.IsDiscreteMonitored ? "是" : "否")</td>
|
|
<td class="tdRight">收益封顶价格</td>
|
|
<td>@(airbag.HighStrike.OtcFormatUmPrice(isMoneyness))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">敲入参与率</td>
|
|
<td>@(airbag.KIParticipationRate.OtcFormatPercent())</td>
|
|
<td class="tdRight">敲入敲出状态</td>
|
|
<td>@(airbag.KnockInOutStatusCn)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">敲入敲出日期</td>
|
|
<td>@(airbag.KnockInOutDate.OtcFormatDate())</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "收益增强结构")
|
|
{
|
|
var enhance = tradeModel.trade_underlying_enhance;
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">年化增强收益</td>
|
|
<td>@(enhance.AnnualizedEnhanceRate.OtcFormatPercent(4))</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
else if (tradeModel.TradeType == "累计期权")
|
|
{
|
|
var ext = tradeModel.trade_accumulator_option;
|
|
|
|
|
|
<table class="table table-bordered table-exotic">
|
|
<tr>
|
|
<td class="tdRight">敲出观察信息</td>
|
|
<td>
|
|
@{
|
|
if (!(ext?.KOObservationDates).IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "[{name:'日期',type:'text'},{name:'障碍价格',type:'" + (tradeModel.IsMoneynessOptionData ? "percent" : "number") + "'}]";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "敲出观察信息", colInfos, ext.KOObservationDates))
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight">敲出观察频率</td>
|
|
<td>
|
|
@{
|
|
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.koObservationRate, out var koObservationRate);
|
|
@(!string.IsNullOrEmpty(koObservationRate) ?
|
|
koObservationRate.IndexOf("|") > 0 ?
|
|
"每" + koObservationRate.Substring(0, koObservationRate.IndexOf('|')).Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "每" + koObservationRate.Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年')
|
|
: "")
|
|
}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">结算日信息</td>
|
|
<td>
|
|
@{
|
|
if (!(ext?.KOObservationSettleDates).IsNullOrWhiteSpace())
|
|
{
|
|
var colInfos = "['日期']";
|
|
@MyControls.Btn("查看", string.Format("showObservationInfos('{0}',{1},'{2}')", "结算信息", colInfos, ext.KOObservationSettleDates))
|
|
}
|
|
}
|
|
</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
@if (ext?.AccumulatorStructureType != AccumulatorStructureTypeEnum.Segmented)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">敲出障碍价格</td>
|
|
<td>@(ext?.KOBarrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">累计类型</td>
|
|
<td>@(ext?.AccumuType)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">结算方式</td>
|
|
<td>@(ext?.GetSettlementModeDesc())</td>
|
|
<td class="tdRight">上端收益类型</td>
|
|
<td>@(ext?.PayoffType)</td>
|
|
</tr>
|
|
@if (ext?.PayoffType == "固定")
|
|
{
|
|
<tr>
|
|
<td class="tdRight">票息年化</td>
|
|
<td>@(ext == null ? "" : ext.IsFixedCoupon ? "否" : "是")</td>
|
|
<td class="tdRight">票息金额</td>
|
|
<td>@(ext?.Coupon.OtcFormat(ext.CouponPercent ? OtcFormatFlag.premiumRateP : OtcFormatFlag.tradePrice))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息日历规则</td>
|
|
<td>@(ext?.CouponDayCount)</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
}
|
|
@if (PS.Config.ErpElement.AccumulatorShowMultiplier1)
|
|
{
|
|
<tr>
|
|
<td class="tdRight">@(tradeModel.OptionType == "看涨" ? "看涨乘数" : "看跌乘数")</td>
|
|
<td>@((tradeModel.OptionType == "看涨" ? ext?.CallMultiplier : ext?.PutMultiplier)?.ToString("F2"))</td>
|
|
<td class="tdRight">杠杆倍数</td>
|
|
<td>@((tradeModel.OptionType == "看涨" ? ext?.PutMultiplier : ext?.CallMultiplier)?.ToString("F2"))</td>
|
|
</tr>
|
|
}
|
|
else
|
|
{
|
|
<tr>
|
|
<td class="tdRight">看涨乘数</td>
|
|
<td>@(ext?.CallMultiplier.ToString("F2"))</td>
|
|
<td class="tdRight">看跌乘数</td>
|
|
<td>@(ext?.PutMultiplier.ToString("F2"))</td>
|
|
</tr>
|
|
}
|
|
@if (ext?.SettlementMode == "实物交割" || ext?.SettlementMode == "现金实物合并结算")
|
|
{
|
|
<tr>
|
|
<td class="tdRight">远期期初价类型</td>
|
|
<td>@(ext?.ForwardPriceType)</td>
|
|
<td class="tdRight">远期到期日类型</td>
|
|
<td>@(ext?.ForwardDateType)</td>
|
|
</tr>
|
|
}
|
|
|
|
<tr>
|
|
<td class="tdRight">敲出是否终止</td>
|
|
<td>@(ext == null ? "" : ext.EarlyTerminate ? "是" : "否")</td>
|
|
<td class="tdRight"></td>
|
|
<td></td>
|
|
</tr>
|
|
}
|
|
else
|
|
{
|
|
<tr>
|
|
<td class="tdRight">敲出障碍价格</td>
|
|
<td>@(ext?.KOBarrier.OtcFormatUmPrice(isMoneyness))</td>
|
|
<td class="tdRight">累计结构类型</td>
|
|
<td>三段式</td>
|
|
</tr>
|
|
|
|
@if (ext?.PayoffType == "固定")
|
|
{
|
|
<tr>
|
|
<td class="tdRight">上端收益类型</td>
|
|
<td>@(ext?.PayoffType)</td>
|
|
<td class="tdRight">票息1</td>
|
|
<td>@(ext?.Coupon.OtcFormat(ext.CouponPercent ? OtcFormatFlag.premiumRateP : OtcFormatFlag.tradePrice))</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息2</td>
|
|
<td>@(ext?.Coupon2.OtcFormat(ext.CouponPercent ? OtcFormatFlag.premiumRateP : OtcFormatFlag.tradePrice))</td>
|
|
<td class="tdRight">票息年化</td>
|
|
<td>@(ext == null ? "" : ext.IsFixedCoupon ? "否" : "是")</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">票息日历规则</td>
|
|
<td>@(ext?.CouponDayCount)</td>
|
|
<td class="tdRight">乘数</td>
|
|
<td>@(tradeModel.OptionType == "看涨"?(ext?.Multiplier):ext?.Multiplier3)</td>
|
|
</tr>
|
|
}
|
|
else
|
|
{
|
|
<tr>
|
|
<td class="tdRight">上端收益类型</td>
|
|
<td>@(ext?.PayoffType)</td>
|
|
<td class="tdRight">乘数1</td>
|
|
<td>@(ext?.Multiplier)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">乘数2</td>
|
|
<td>@(ext?.Multiplier2)</td>
|
|
<td class="tdRight">乘数3</td>
|
|
<td>@(ext?.Multiplier3)</td>
|
|
</tr>
|
|
|
|
}
|
|
|
|
<tr>
|
|
<td class="tdRight">敲出是否终止</td>
|
|
<td>@(ext == null ? "" : ext.EarlyTerminate ? "是" : "否")</td>
|
|
<td class="tdRight">结算方式1</td>
|
|
<td>@(ext?.GetSettlementModeDesc())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">远期期初价类型1</td>
|
|
<td>@(ext?.SettlementMode=="现金当日"?"":ext?.ForwardPriceType)</td>
|
|
<td class="tdRight">远期到期日类型1</td>
|
|
<td>@(ext?.SettlementMode=="现金当日"?"":ext?.ForwardDateType)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">结算方式2</td>
|
|
<td>@(ext?.SettlementMode2=="现金当日"?"现金结算(当日)":ext?.SettlementMode2)</td>
|
|
<td class="tdRight">远期期初价类型2</td>
|
|
<td>@(ext?.SettlementMode2=="现金当日"?"":ext?.ForwardPriceType2)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">远期到期日类型2</td>
|
|
<td>@(ext?.SettlementMode2=="现金当日"?"":ext?.ForwardDateType2)</td>
|
|
<td class="tdRight">结算方式3</td>
|
|
<td>@(ext?.SettlementMode3=="现金当日"?"现金结算(当日)":ext?.SettlementMode3)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">远期期初价类型3</td>
|
|
<td>@(ext?.SettlementMode3=="现金当日"?"":ext?.ForwardPriceType3)</td>
|
|
<td class="tdRight">远期到期日类型3</td>
|
|
<td>@(ext?.SettlementMode3=="现金当日"?"":ext?.ForwardDateType3)</td>
|
|
</tr>
|
|
}
|
|
<tr>
|
|
<td class="tdRight">是否敲出</td>
|
|
<td>@(ext == null ? "" : ext.KnockOutDate.HasValue ? "是" : "观察中")</td>
|
|
<td class="tdRight">敲出日期</td>
|
|
<td>@(ext?.KnockOutDate?.OtcFormatDate())</td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
</div>
|
|
@if (Model.autoCallObsercationList != null)
|
|
{
|
|
<div id="autoCallObsercationInfo" class="tab-pane">
|
|
@await Html.PartialAsync(tradeModel.TradeType == "累计期权" ? "_tradeview/autoCallObsercationListAccumulator" : "_tradeview/autoCallObsercationList")
|
|
</div>
|
|
}
|
|
|
|
@if (Model.unWindTradeCashList != null)
|
|
{
|
|
var index = 1;
|
|
<div id="terminationInfo" class="tab-pane">
|
|
@foreach (var tradeCash in Model.unWindTradeCashList)
|
|
{
|
|
if (tradeCash.Action == "系统操作-行权费")
|
|
{
|
|
<table class="table table-bordered">
|
|
<tr>
|
|
<td class="tdRight">提前终止序号</td>
|
|
<td>@(index++)</td>
|
|
@if (isPremiumRate)
|
|
{
|
|
<td class="tdRight">行权比例</td>
|
|
<td>@(tradeCash.NotionalPercent.OtcFormatPercent())</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">行权数量</td>
|
|
<td>@(tradeCash.TradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">行权日期</td>
|
|
<td>@(tradeCash.ValueDate.OtcFormatDate())</td>
|
|
<td class="tdRight">收益总额</td>
|
|
<td>@(tradeCash.Amount.OtcFormatMoney())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">行权收益</td>
|
|
<td>@(tradeCash.SingleWinPrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
|
|
<td class="tdRight">实现盈亏</td>
|
|
<td>@(tradeCash.WinLoss)</td>
|
|
</tr>
|
|
<tr>
|
|
@if (tradeModel.TradeType == "亚式期权")
|
|
{
|
|
<td class="tdRight">行权标的价格</td>
|
|
<td>@(tradeCash.SpotPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
<td class="tdRight">行权标的均价</td>
|
|
<td>@(tradeCash.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">行权标的价格</td>
|
|
<td>@(tradeCash.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
<td></td>
|
|
<td></td>
|
|
}
|
|
</tr>
|
|
</table>
|
|
}
|
|
else
|
|
{
|
|
<table class="table table-bordered">
|
|
<tr>
|
|
<td class="tdRight">提前终止序号</td>
|
|
<td>@(index++)</td>
|
|
@if (isPremiumRate)
|
|
{
|
|
<td class="tdRight">平仓单价</td>
|
|
<td>@(tradeCash.UnwindPricePercentRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">平仓单价</td>
|
|
<td>@(tradeCash.UnwindPrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">平仓日期</td>
|
|
<td>@(tradeCash.ValueDate.OtcFormatDate())</td>
|
|
@if (isPremiumRate)
|
|
{
|
|
<td class="tdRight">平仓比例</td>
|
|
<td>@(tradeCash.UnwindPercentRate.OtcFormatPercent())</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">平仓数量</td>
|
|
<td>@(tradeCash.UnwindTradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">平仓标的价格</td>
|
|
<td>@(tradeCash.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
<td class="tdRight">平仓总额</td>
|
|
<td>@(tradeCash.Amount.OtcFormatMoney())</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">平仓波动率</td>
|
|
<td>@(tradeCash.UnwindVol.OtcFormat(volFmt))</td>
|
|
<td class="tdRight">实现盈亏</td>
|
|
<td>@(tradeCash.WinLoss)</td>
|
|
</tr>
|
|
</table>
|
|
}
|
|
}
|
|
</div>
|
|
}
|
|
|
|
@if (Model.maturityTradeCash != null)
|
|
{
|
|
var mtc = Model.maturityTradeCash;
|
|
var asianStrikeType = tradeModel.TradeType != "亚式期权" ? string.Empty : (tradeModel.trade_asian_option?.StrikeType == "Floating" ? "Floating" : "Fixed");
|
|
<div id="maturityInfo" class="tab-pane">
|
|
<table class="table table-bordered">
|
|
<tr>
|
|
<td class="tdRight">到期日期</td>
|
|
<td>@(mtc.ValueDateString)</td>
|
|
@if (tradeModel.TradeType == "累计期权")
|
|
{
|
|
<td></td>
|
|
<td></td>
|
|
}
|
|
else if (isPremiumRate)
|
|
{
|
|
<td class="tdRight">到期比例</td>
|
|
<td>@(mtc.NotionalPercent.OtcFormatPercent())</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">到期数量</td>
|
|
<td>@(mtc.TradeAmount.OtcFormatNotional(tradeModel.CountRatio, PS.Config.IsUseDisplayNotional))</td>
|
|
}
|
|
</tr>
|
|
<tr>
|
|
@if (isPremiumRate && mtc.Action != "系统操作-行权费")
|
|
{
|
|
<td class="tdRight">到期收益</td>
|
|
<td>@(mtc.SingleWinPricePercent.OtcFormat(OtcFormatFlag.premiumRateP))</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">到期收益</td>
|
|
<td>@(mtc.SingleWinPrice.OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
|
|
}
|
|
<td class="tdRight">实现盈亏</td>
|
|
<td>@(mtc.WinLoss)</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="tdRight">@(asianStrikeType == "Fixed" ? "到期标的均价" : "到期标的价格")</td>
|
|
<td>@(mtc.FinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
<td class="tdRight">收益总额</td>
|
|
<td>@(mtc.Amount.OtcFormatMoney())</td>
|
|
</tr>
|
|
@if (!string.IsNullOrEmpty(asianStrikeType))
|
|
{
|
|
<tr>
|
|
@if (asianStrikeType == "Fixed")
|
|
{
|
|
<td class="tdRight">到期标的价格</td>
|
|
<td>@(mtc.SpotPrice.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="tdRight">浮动行权价</td>
|
|
<td>@(mtc.Strike.OtcFormat(OtcFormatFlag.umprice))</td>
|
|
}
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
</div>
|
|
}
|
|
@if (Model.tradeMarginTemplates != null && Model.tradeMarginTemplates.Any())
|
|
{
|
|
<div id="tradeMarginTemplatesInfo" class="tab-pane">
|
|
<table class="table table-bordered">
|
|
<tr>
|
|
<th>模板名称</th>
|
|
<th>预付金规则</th>
|
|
<th>规则类型</th>
|
|
<th>生效日期</th>
|
|
<th>操作时间</th>
|
|
<th>规则说明</th>
|
|
</tr>
|
|
@foreach (var tradeMarginTemplate in Model.tradeMarginTemplates)
|
|
{
|
|
<tr>
|
|
<td>@(tradeMarginTemplate.MarginTemplateName)</td>
|
|
<td>@(tradeMarginTemplate.MarginRuleTypeName)</td>
|
|
<td>@(tradeMarginTemplate.MarginTypeName)</td>
|
|
<td>@(tradeMarginTemplate.ValueDate.ToString("yyyy-MM-dd"))</td>
|
|
<td>@(tradeMarginTemplate.OptDate)</td>
|
|
<td>@(tradeMarginTemplate.Comments)</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
</div>
|
|
}
|
|
@if (ConsTrade.TradeStatusAfterConfirmed.Contains(Model.Trade.TradeStatus))
|
|
{
|
|
<div id="ClientCashinCashout" class="tab-pane">
|
|
<div style="display:inline;right:100px;">
|
|
@if (CurUser.交易管理_交易资金维护 && (!Model.IsOnlyCloseButton || Context.Request.Query["fromZiJinMingXi"] == "1"))
|
|
{
|
|
<button id="" class="btn btn-primary " type="button" onclick="Addentryexit(0,@Model.Trade.id);return false;">
|
|
新增
|
|
</button>
|
|
}
|
|
@if ((CurUser.交易管理_交易资金维护 || CurUser.交易管理_已确认交易资金维护) && (!Model.IsOnlyCloseButton || Context.Request.Query["fromZiJinMingXi"] == "1"))
|
|
{
|
|
<button id="" class="btn btn-primary " type="button" onclick="setExcute();return false;">
|
|
确认
|
|
</button>
|
|
<button id="" class="btn btn-primary " type="button" onclick="setReject();return false;">
|
|
拒绝
|
|
</button>
|
|
}
|
|
</div>
|
|
<div style="min-width: 1000px;" id="entryexitEditPopInner"></div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="myCommentsModal" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<!-- 模态框头部 -->
|
|
<div class="modal-header">
|
|
<h4 class="modal-title">修改备注</h4>
|
|
<button type="button" class="close" v-on:click="closeModal()">×</button>
|
|
</div>
|
|
|
|
<!-- 模态框主体 -->
|
|
<div class="modal-body">
|
|
<lable>备注</lable>
|
|
<input v-model="Comments" />
|
|
<input hidden v-model="EncryptId" />
|
|
</div>
|
|
|
|
<!-- 模态框底部 -->
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn" v-on:click="saveModal()">保存</button>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div> |