#EQD-6947 国联民生-保证金计算整体改造-实现第一版盯市规则(不支持同一客户多部门)(1)保证金规则的设置 阶段1,开放v2

This commit is contained in:
锦麟 王
2026-08-12 15:38:55 +08:00
parent c86633479d
commit ab90712255
21 changed files with 486 additions and 48 deletions
@@ -164,6 +164,10 @@ namespace YLErp.DBModels
{
return MarginRuleTypeEnum.1.ToString();
}
else if (RuleType == (int)MarginRuleTypeEnum.)
{
return MarginRuleTypeEnum..ToString();
}
return "";
}
@@ -16,6 +16,8 @@
SPAN = 11,
1 = 12,
1 = 13,
//otcdms 的 14 为 Delta计算规则,本系统不使用,区间追保结构从 15 开始避免与 otcdms 编号冲突
= 15,
= 98,
= 99
}
@@ -15,6 +15,10 @@ namespace YLErp.Enums
/// <summary>
/// 按自定义权益分类
/// </summary>
CustomStock = 1
CustomStock = 1,
/// <summary>
/// 按资产类型分类(区间追保结构使用,分类取值见 UnderlyingTypeEnum 中 ConsGlobal.InstrumentType 对应的标志位)
/// </summary>
CustomInstrumentType = 2
}
}
@@ -31,6 +31,137 @@ namespace YLErp.Enums
/// </summary>
Other = 1 << 3,
/// <summary>
/// 利率债(按标的资产类型分类,对应 ConsGlobal.InstrumentType.TBonds
/// </summary>
TBonds = 1 << 4,
/// <summary>
/// 信用债(对应 ConsGlobal.InstrumentType.CreditBonds
/// </summary>
CreditBonds = 1 << 5,
/// <summary>
/// 其它债券(对应 ConsGlobal.InstrumentType.OtherBonds
/// </summary>
OtherBonds = 1 << 6,
//以下为"按资产类型分类"的其余资产类型,取值与 ConsGlobal.InstrumentType 一一对应
/// <summary>
/// 股票
/// </summary>
Stock = 1 << 7,
/// <summary>
/// 股指
/// </summary>
StockIndex = 1 << 8,
/// <summary>
/// 股指期货
/// </summary>
StockIF = 1 << 9,
/// <summary>
/// 商品期货
/// </summary>
CommodityFutures = 1 << 10,
/// <summary>
/// 商品现货
/// </summary>
CommoditySpot = 1 << 11,
/// <summary>
/// 新三板挂牌股票
/// </summary>
NewOtcStock = 1 << 12,
/// <summary>
/// 香港股票
/// </summary>
HKStock = 1 << 13,
/// <summary>
/// 香港股指
/// </summary>
HKStockIndex = 1 << 14,
/// <summary>
/// 基金及基金专户
/// </summary>
Fund = 1 << 15,
/// <summary>
/// 黄金期货
/// </summary>
GoldFutures = 1 << 16,
/// <summary>
/// 国债期货
/// </summary>
TBFutures = 1 << 17,
/// <summary>
/// 其他期货
/// </summary>
OtherFutures = 1 << 18,
/// <summary>
/// 黄金现货
/// </summary>
GoldSpot = 1 << 19,
/// <summary>
/// 其他现货
/// </summary>
OtherSpot = 1 << 20,
/// <summary>
/// 境外期货
/// </summary>
AbroadFutures = 1 << 21,
/// <summary>
/// 境外现货
/// </summary>
AbroadSpot = 1 << 22,
/// <summary>
/// 境外股票
/// </summary>
AbroadStock = 1 << 23,
/// <summary>
/// 境外股指
/// </summary>
AbroadStockIndex = 1 << 24,
/// <summary>
/// 汇率
/// </summary>
ExRate = 1 << 25,
/// <summary>
/// Shibor
/// </summary>
Shibor = 1 << 26,
/// <summary>
/// 银行间回购定盘
/// </summary>
FixingRepoRate = 1 << 27,
/// <summary>
/// 利率收益率
/// </summary>
RateYield = 1 << 28,
/// <summary>
/// 债券指数
/// </summary>
BondIndex = 1 << 29,
/// <summary>
/// 全部
/// </summary>
@@ -59,14 +190,66 @@ namespace YLErp.Enums
return "个股/ETF-非核准制发行";
case UnderlyingTypeEnum.Other:
return "其他";
case UnderlyingTypeEnum.TBonds:
return "利率债";
case UnderlyingTypeEnum.CreditBonds:
return "信用债";
case UnderlyingTypeEnum.OtherBonds:
return "其它债券";
case UnderlyingTypeEnum.Stock:
return "股票";
case UnderlyingTypeEnum.StockIndex:
return "股指";
case UnderlyingTypeEnum.StockIF:
return "股指期货";
case UnderlyingTypeEnum.CommodityFutures:
return "商品期货";
case UnderlyingTypeEnum.CommoditySpot:
return "商品现货";
case UnderlyingTypeEnum.NewOtcStock:
return "新三板挂牌股票";
case UnderlyingTypeEnum.HKStock:
return "香港股票";
case UnderlyingTypeEnum.HKStockIndex:
return "香港股指";
case UnderlyingTypeEnum.Fund:
return "基金及基金专户";
case UnderlyingTypeEnum.GoldFutures:
return "黄金期货";
case UnderlyingTypeEnum.TBFutures:
return "国债期货";
case UnderlyingTypeEnum.OtherFutures:
return "其他期货";
case UnderlyingTypeEnum.GoldSpot:
return "黄金现货";
case UnderlyingTypeEnum.OtherSpot:
return "其他现货";
case UnderlyingTypeEnum.AbroadFutures:
return "境外期货";
case UnderlyingTypeEnum.AbroadSpot:
return "境外现货";
case UnderlyingTypeEnum.AbroadStock:
return "境外股票";
case UnderlyingTypeEnum.AbroadStockIndex:
return "境外股指";
case UnderlyingTypeEnum.ExRate:
return "汇率";
case UnderlyingTypeEnum.Shibor:
return "Shibor";
case UnderlyingTypeEnum.FixingRepoRate:
return "银行间回购定盘";
case UnderlyingTypeEnum.RateYield:
return "利率收益率";
case UnderlyingTypeEnum.BondIndex:
return "债券指数";
default:
break;
}
var nt = (int)type;
var list = new List<string>(4);
var list = new List<string>(8);
for (var i = 0; i <= 3; i++)
for (var i = 0; i <= 29; i++)
{
if ((nt & (1 << i)) > 0)
{
+4
View File
@@ -78,6 +78,10 @@ namespace YLErp.Model
{
return MarginRuleTypeEnum.1.ToString();
}
else if (MarginRuleType == (int)MarginRuleTypeEnum.)
{
return MarginRuleTypeEnum..ToString();
}
return "";
}
+4
View File
@@ -84,6 +84,10 @@ namespace YLErp.Model
{
return MarginRuleTypeEnum..ToString();
}
else if (MarginRuleType == (int)MarginRuleTypeEnum.)
{
return MarginRuleTypeEnum..ToString();
}
return "";
}
@@ -11,21 +11,19 @@ namespace YLErp.Modules.SwapModule
public static SwapMarginTemplateConfig GetConfig()
{
using var db = new ErpBaseContext();
var dictionaryId = db.Dictionaries
.Where(item => item.Name == DictionaryName)
.Select(item => item.Id)
.FirstOrDefault();
var items = db.DictionaryItems
.Where(item => item.DictId == dictionaryId && !string.IsNullOrWhiteSpace(item.Name))
.OrderBy(item => item.IndexNum)
//保证金模板V2迁移:交易页"保证金模板"下拉的选项改为"预付金模板V2"页面维护的模板(自定义+全局默认,存模板名称),不再使用数据字典
using var db = new YLErp.BLL.YLContext();
var items = db.margin_template_v2
.Where(item => !item.IsForClient && item.IsValid)
.OrderBy(item => item.IsDefault).ThenBy(item => item.id)
.Select(item => new SelectItem { Text = item.Name, Value = item.Name })
.ToArray();
return new SwapMarginTemplateConfig
{
options = items,
defaultValue = items.FirstOrDefault()?.Value
//不再默认选中任何模板,由用户在交易上显式选择;未选择则不绑定模板
defaultValue = null
};
}
}
@@ -113,6 +113,8 @@ namespace YLErp.Modules.SwapModule
new SalesCommissionDetailDataService(this).RemoveTradeCommissionDetail(dbTrade.id);
}
}
//保证金模板V2迁移:按交易页选择的保证金模板(MarginTemplateName 存模板V2名称)维护交易模板绑定
SyncTradeMarginTemplate(dbTrade);
trans.Commit();
}
finally
@@ -123,6 +125,37 @@ namespace YLErp.Modules.SwapModule
return dbTrade;
}
/// <summary>
/// 保证金模板V2迁移:按交易上选择的保证金模板(MarginTemplateName 存预付金模板V2的名称)维护 trade_margin_template 绑定。
/// 未选择或名称匹配不到有效自定义模板时仅清除旧绑定,不新增(保持无预付金占用的现状)。
/// </summary>
private void SyncTradeMarginTemplate(trade dbTrade)
{
var olds = DbContext.trade_margin_template.Where(x => x.TradeId == dbTrade.id).ToList();
DbContext.trade_margin_template.RemoveRange(olds);
if (!string.IsNullOrWhiteSpace(dbTrade.MarginTemplateName))
{
//匹配自定义+全局默认模板(重名时优先自定义)
var template = DbContext.margin_template_v2
.Where(x => x.Name == dbTrade.MarginTemplateName && !x.IsForClient && x.IsValid)
.OrderBy(x => x.IsDefault)
.FirstOrDefault();
if (template != null)
{
DbContext.trade_margin_template.Add(new trade_margin_template()
{
TradeId = dbTrade.id,
ValueDate = new DateTime(2000, 1, 1),
MarginTemplateId = template.id,
IsLatest = true,
OptId = UserId,
OptName = UserName,
OptDate = DateTime.Now
});
}
}
DbContext.SaveChanges();
}
/// <summary>
/// 单标的生成开仓事件
/// </summary>
/// <param name="td"></param>
+3
View File
@@ -42,6 +42,7 @@
<FunctionSub Name="变更记录" Title="变更记录" Note="变更记录 "></FunctionSub>
<FunctionSub Name="收益凭证" Title="收益凭证"></FunctionSub>
<FunctionSub Name="凭证审批" Title="凭证审批"></FunctionSub>
<FunctionSub Name="交易预付金配置" Title="交易预付金配置" Note="交易上绑定/换绑预付金模板"></FunctionSub>
</FunctionParent>
<FunctionParent Name="风险控制" Title="风险管理">
<FunctionSub Name="风险对冲" Title="风险对冲"></FunctionSub>
@@ -149,6 +150,7 @@
<FunctionSub Name="资信评级" Title="资信评级"></FunctionSub>
<FunctionSub Name="授信修改" Title="授信修改" Type="Operate" Note="是否可以修改授信(控制新增、修改、删除的 操作权限)"></FunctionSub>
<FunctionSub Name="资信等级有效期修改" Title="资信评级修改" Type="Operate" Note="是否可以修改用户资信评级(控制新增、修改权限)"></FunctionSub>
<FunctionSub Name="客户预付金配置" Title="客户预付金配置" Note="客户/客户等级绑定预付金模板"></FunctionSub>
</FunctionParent>
<FunctionParent Name="互换簿记预设" Title="互换簿记预设">
<FunctionSub Name="TRS用簿记账户设置" Title="TRS用簿记账户设置"></FunctionSub>
@@ -186,6 +188,7 @@
<FunctionSub Name="除权除息交易" Title="除权除息交易"></FunctionSub>
<FunctionSub Name="设置货币" Title="设置货币"></FunctionSub>
<FunctionSub Name="设置货币修改" Title="设置货币修改" Type="Operate" Note="修改设置货币"></FunctionSub>
<FunctionSub Name="预付金模板V2" Title="预付金模板V2" Note="预付金模板维护(自定义/全局/客户规则)"></FunctionSub>
</FunctionParent>
<FunctionParent Name="系统管理" Title="系统管理">
<FunctionSub Name="角色管理" Title="角色权限"></FunctionSub>
+5 -1
View File
@@ -66,12 +66,15 @@
{Name:"授信管理",Rights:["客户管理-授信管理"],Url:"credit/creditList"},
{Name:"资信评级",Rights:["客户管理-资信评级"],Url:"client_rating/List"},
{Name:"机构账号设置",Rights:["客户管理-机构账号设置"],Url:"v3/client/account"}
//保证金模板在交易页直接选择,客户预付金配置入口不展示(页面代码保留)
//{Name:"客户预付金配置",Rights:["客户管理-客户预付金配置"],Url:"client_margin_template/client_margin_templateList"},
]
},
{Name:"互换簿记预设",Rights:["互换簿记预设"],Icon:"menu-icon iconfour"
,SubItems:[
{Name:"TRS用簿记账户设置",Rights:["互换簿记预设-TRS用簿记账户设置"],Url:"EtradingRule/Index"},
{Name:"互换预付金率维护",Rights:["互换簿记预设-互换预付金率维护"],Url:"ClientMarginConfig/ClientMarginConfigList"},
//保证金模板V2迁移:互换预付金率维护入口下线,功能由"数据管理-预付金模板V2"替代,代码保留不删除
//{Name:"互换预付金率维护",Rights:["互换簿记预设-互换预付金率维护"],Url:"ClientMarginConfig/ClientMarginConfigList"},
{Name:"阶梯费率",Rights:["互换簿记预设-阶梯费率"],Url:"SwapRate"},
{Name:"浮动利率",Rights:["互换簿记预设-浮动利率"],Url:"SwapFloatRate"},
{Name:"簿记账户与衡泰关系",Rights:["互换簿记预设-簿记账户与衡泰关系"],Url:"EtradeAccount/Index"},
@@ -87,6 +90,7 @@
{Name:"交易市场",Rights:["基础参数管理-交易市场"],Url:"market/marketList"},
{Name:"变更记录",Rights:["基础参数管理-变更记录"],Url:"Datatrace/ClientInfoChange"},
{Name:"设置货币",Rights:["基础参数管理-设置货币"],Url:"Currency/setCurrency"},
{Name:"预付金模板V2",Rights:["基础参数管理-预付金模板V2"],Url:"margin_template_v2/margin_template_v2List"},
]
},
{Name:"系统管理",Rights:["系统管理"],Icon:"menu-icon iconten"
+7 -6
View File
@@ -256,12 +256,13 @@ namespace YLErp.Web.Controllers
{
return ShowError("没有找到交易数据");
}
var marginTemplateConfig = SwapMarginTemplateConfigService.GetConfig();
if (string.IsNullOrWhiteSpace(tradeObj.MarginTemplateName)
|| !marginTemplateConfig.options.Any(item => item.Value == tradeObj.MarginTemplateName))
{
tradeObj.MarginTemplateName = marginTemplateConfig.defaultValue;
}
//保证金模板V2迁移:不再把非模板的历史值回退为默认值,MarginTemplateName 原样展示
//var marginTemplateConfig = SwapMarginTemplateConfigService.GetConfig();
//if (string.IsNullOrWhiteSpace(tradeObj.MarginTemplateName)
// || !marginTemplateConfig.options.Any(item => item.Value == tradeObj.MarginTemplateName))
//{
// tradeObj.MarginTemplateName = marginTemplateConfig.defaultValue;
//}
TradeViewModel model;
model = new TradeViewModel(tradeObj)
@@ -119,7 +119,10 @@ namespace YLErp.Web.Controllers
{
return View(new margin_template_v2() { ValueDate = new DateTime(2020, 1, 1), RuleType = (int)MarginRuleTypeEnum., Comments = "考虑了14种场景下的Span算法与Delta算法比较的通用预付金规则,该规则可以调整Span涨跌幅度", IsValid = true });
}
return View(new margin_template_v2() { ValueDate = new DateTime(2020, 1, 1), RuleType = (int)MarginRuleTypeEnum.1, Comments = "预付金占用为成交名义本金的固定比例,加标的跌幅的市值(跌幅达到一定条件触发)", IsValid = true });
//预付金模板V2迁移:本部署(TRS)可选规则只有 无预付金/区间追保结构,新模板默认无预付金。
//原始代码如下(如需恢复,用注释行整行替换下面的 return):
//return View(new margin_template_v2() { ValueDate = new DateTime(2020, 1, 1), RuleType = (int)MarginRuleTypeEnum.触发条件预付金规则1, Comments = "预付金占用为成交名义本金的固定比例,加标的跌幅的市值(跌幅达到一定条件触发)", IsValid = true });
return View(new margin_template_v2() { ValueDate = new DateTime(2020, 1, 1), RuleType = (int)MarginRuleTypeEnum., Comments = "预付金占用为零。", IsValid = true });
}
@@ -447,6 +450,19 @@ namespace YLErp.Web.Controllers
}
else
{
//预付金模板V2迁移:本部署(TRS)预付金规则只开放 无预付金 和 区间追保结构 两种(2026-08 按业务要求)。
//原"其他公司显示完整规则列表"的代码以块注释形式保留在下方,如需恢复取消注释即可。
ruleTypeList.Add(new SelectListItem()
{
Text = MarginRuleTypeEnum..ToString(),
Value = ((int)MarginRuleTypeEnum.).ToString()
});
ruleTypeList.Add(new SelectListItem()
{
Text = MarginRuleTypeEnum..ToString(),
Value = ((int)MarginRuleTypeEnum.).ToString()
});
/* 原完整规则列表(保留备查):
ruleTypeList.AddRange(new List<SelectListItem>(){
new SelectListItem()
{
@@ -513,7 +529,8 @@ namespace YLErp.Web.Controllers
Text = MarginRuleTypeEnum.卖出自动赎回规则1.ToString(),
Value = ((int)MarginRuleTypeEnum.卖出自动赎回规则1).ToString()
}
});
});
*/
}
if (PS.Config.Company == CompanyEnum.)
{
+7 -1
View File
@@ -15,7 +15,12 @@
var jsClient = canChangeClient && Model.ClientId > 0 ? jsClients.FirstOrDefault(n => n.id == Model.ClientId) : null;
var jsAssetUnits = JsDataModel.GetAssetUnits(CurUser);
var tradeMarginTemplates = new tradeController().GetMarginTemplates();
var swapMarginTemplateItems = SwapMarginTemplateConfigService.GetConfig().options;
var swapMarginTemplateItems = SwapMarginTemplateConfigService.GetConfig().options.ToList();
//保证金模板V2迁移:存量交易的保证金模板可能是历史文本值(如字典配置的"现金保证金"),不在模板V2选项中时追加显示,避免编辑保存时被静默清空
if (!string.IsNullOrWhiteSpace(Model.MarginTemplateName) && !swapMarginTemplateItems.Any(n => n.Value == Model.MarginTemplateName))
{
swapMarginTemplateItems.Add(new YLErp.Models.SelectItem { Text = Model.MarginTemplateName + "(历史值)", Value = Model.MarginTemplateName });
}
var tradeMarginTemplateItems = new tradeController().GetMarginTemplateItems();
var jsAssetUnit = Model.AssetId > 0 ? jsAssetUnits.FirstOrDefault(n => n.id == Model.AssetId) : null;
var assetunits = JsDataModel.GetAssetUnits(CurUser);
@@ -277,6 +282,7 @@
<div class="form-group">
<label class="formlabel half">保证金模板</label>
<select v-model="trade.MarginTemplateName">
<option value="">请选择</option>
<option v-for="item in page.swapMarginTemplateItems" :key="item.Value" :value="item.Value">
{{ item.Text }}
</option>
@@ -101,25 +101,29 @@
<div class="border">
<div class="form-group">
<label class="formlabel">预付金规则</label>
@if (PS.Config.Company != CompanyEnum.厦门象屿)
@if (PS.Config.Company == CompanyEnum.厦门象屿)
{
@*厦门象屿原本就不渲染此下拉,保持原样*@
}
else if (PS.Config.Company == CompanyEnum.广发商贸)
{
<select v-model="marginTemplate.RuleType" v-bind:disabled="!isAdd" v-on:change="changeRuleType()">
@if(PS.Config.Company == CompanyEnum.广发商贸){
<option value="@((int)MarginRuleTypeEnum.默认预付金规则)">@MarginRuleTypeEnum.默认预付金规则.ToString()</option>
}
else{
@*<option value="@((int)MarginRuleTypeEnum.无预付金)">@MarginRuleTypeEnum.无预付金.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.按固定利率)">@MarginRuleTypeEnum.按固定利率.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.按浮动盈亏)">@MarginRuleTypeEnum.按浮动盈亏.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.类香草预付金规则)">@MarginRuleTypeEnum.类香草预付金规则.ToString()</option>*@
<option value="@((int)MarginRuleTypeEnum.触发条件预付金规则1)">@MarginRuleTypeEnum.触发条件预付金规则1.ToString()</option>
@*<option value="@((int)MarginRuleTypeEnum.触发条件预付金规则2)">@MarginRuleTypeEnum.触发条件预付金规则2.ToString()</option>*@
<option value="@((int)MarginRuleTypeEnum.触发条件预付金规则3)">@MarginRuleTypeEnum.触发条件预付金规则3.ToString()</option>
@*<option value="@((int)MarginRuleTypeEnum.含赔付预付金计算规则)">@MarginRuleTypeEnum.含赔付预付金计算规则.ToString()</option>*@
}
<option value="@((int)MarginRuleTypeEnum.默认预付金规则)">@MarginRuleTypeEnum.默认预付金规则.ToString()</option>
</select>
}
else
{
@*预付金模板V2迁移:本部署(TRS)只开放 无预付金 和 区间追保结构 两种规则(2026-08 按业务要求)。
原该分支显示 触发条件预付金规则1/触发条件预付金规则3 两个选项,以注释形式保留备查。*@
<select v-model="marginTemplate.RuleType" v-bind:disabled="!isAdd" v-on:change="changeRuleType()">
<option value="@((int)MarginRuleTypeEnum.无预付金)">@MarginRuleTypeEnum.无预付金.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.区间追保结构)">@MarginRuleTypeEnum.区间追保结构.ToString()</option>
</select>
<!-- 原选项(保留备查):
<option value="5">触发条件预付金规则1</option>
<option value="9">触发条件预付金规则3</option>
-->
}
</div>
<div class="form-group">
@@ -132,9 +136,10 @@
{
<div class="form-group">
<label class="formlabel">是否按标的分类设置参数</label>
<select v-model="marginTemplate.UnderlyingSeperateType" v-on:change="changeUnderlyingSeperateType()" v-bind:disabled="marginTemplate.RuleType != @((int)MarginRuleTypeEnum.按固定利率) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.标准SPAN) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.卖出自动赎回规则1)">
<select v-model="marginTemplate.UnderlyingSeperateType" v-on:change="changeUnderlyingSeperateType()" v-bind:disabled="marginTemplate.RuleType != @((int)MarginRuleTypeEnum.按固定利率) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.标准SPAN) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.卖出自动赎回规则1) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.区间追保结构)">
<option value="@((int)UnderlyingSeperateTypeEnum.None)">不区分</option>
<option value="@((int)UnderlyingSeperateTypeEnum.CustomStock)">按自定义权益分类</option>
<option v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.区间追保结构)" value="@((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)">按资产类型分类</option>
</select>
</div>
<div class="form-group">
@@ -197,6 +202,48 @@
</select>
</div>
</template>
<template v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.区间追保结构)">
<div class="form-group" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)">
<label class="formlabel">当标的资产类型为</label>
<select class="chosen-select" :id="'UnderlyingType'+index" multiple>
<option value="16" :selected="(detail.UnderlyingType & 16)>0?true:false">利率债</option>
<option value="32" :selected="(detail.UnderlyingType & 32)>0?true:false">信用债</option>
<option value="64" :selected="(detail.UnderlyingType & 64)>0?true:false">其它债券</option>
<option value="128" :selected="(detail.UnderlyingType & 128)>0?true:false">股票</option>
<option value="256" :selected="(detail.UnderlyingType & 256)>0?true:false">股指</option>
<option value="512" :selected="(detail.UnderlyingType & 512)>0?true:false">股指期货</option>
<option value="1024" :selected="(detail.UnderlyingType & 1024)>0?true:false">商品期货</option>
<option value="2048" :selected="(detail.UnderlyingType & 2048)>0?true:false">商品现货</option>
<option value="4096" :selected="(detail.UnderlyingType & 4096)>0?true:false">新三板挂牌股票</option>
<option value="8192" :selected="(detail.UnderlyingType & 8192)>0?true:false">香港股票</option>
<option value="16384" :selected="(detail.UnderlyingType & 16384)>0?true:false">香港股指</option>
<option value="32768" :selected="(detail.UnderlyingType & 32768)>0?true:false">基金及基金专户</option>
<option value="65536" :selected="(detail.UnderlyingType & 65536)>0?true:false">黄金期货</option>
<option value="131072" :selected="(detail.UnderlyingType & 131072)>0?true:false">国债期货</option>
<option value="262144" :selected="(detail.UnderlyingType & 262144)>0?true:false">其他期货</option>
<option value="524288" :selected="(detail.UnderlyingType & 524288)>0?true:false">黄金现货</option>
<option value="1048576" :selected="(detail.UnderlyingType & 1048576)>0?true:false">其他现货</option>
<option value="2097152" :selected="(detail.UnderlyingType & 2097152)>0?true:false">境外期货</option>
<option value="4194304" :selected="(detail.UnderlyingType & 4194304)>0?true:false">境外现货</option>
<option value="8388608" :selected="(detail.UnderlyingType & 8388608)>0?true:false">境外股票</option>
<option value="16777216" :selected="(detail.UnderlyingType & 16777216)>0?true:false">境外股指</option>
<option value="33554432" :selected="(detail.UnderlyingType & 33554432)>0?true:false">汇率</option>
<option value="67108864" :selected="(detail.UnderlyingType & 67108864)>0?true:false">Shibor</option>
<option value="134217728" :selected="(detail.UnderlyingType & 134217728)>0?true:false">银行间回购定盘</option>
<option value="268435456" :selected="(detail.UnderlyingType & 268435456)>0?true:false">利率收益率</option>
<option value="536870912" :selected="(detail.UnderlyingType & 536870912)>0?true:false">债券指数</option>
</select> 时,
</div>
<div class="form-group">
<label class="formlabel">初始预付金率x</label>
<vue-number-input v-model="detail.MarginRatio1" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group">
<label class="formlabel">维持预付金率y</label>
<vue-number-input v-model="detail.MarginRatio2" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.类香草预付金规则)">
<div class="form-group">
<label class="formlabel">初始预付金率</label>
@@ -376,12 +423,12 @@
</template>
</div>
<div class="col-auto" v-show="index + 1 == marginTemplate.Details.length">
<button class="delBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock)" v-on:click="deleteDetail(index)">- 刪除</button>
<button class="delBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock) || marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)" v-on:click="deleteDetail(index)">- 刪除</button>
</div>
</div>
</div>
</template>
<button class="addBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock)" v-on:click="addDetail()" v-bind:disabled="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.无预付金) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.自动赎回买入预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.保底预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.含赔付预付金计算规则)">+ 新增参数组</button>
<button class="addBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock) || marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)" v-on:click="addDetail()" v-bind:disabled="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.无预付金) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.自动赎回买入预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.保底预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.含赔付预付金计算规则)">+ 新增参数组</button>
</div>
</div>
<div class="form-buttons">
@@ -419,6 +466,16 @@
</select>
</div>
</template>
<template v-if="ruleType == @((int)MarginRuleTypeEnum.区间追保结构)">
<div class="form-group">
<label class="formlabel">初始预付金率x</label>
<vue-number-input v-model="detail.MarginRatio1" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group">
<label class="formlabel">维持预付金率y</label>
<vue-number-input v-model="detail.MarginRatio2" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-if="ruleType == @((int)MarginRuleTypeEnum.类香草预付金规则)">
<div class="form-group">
<label class="formlabel">初始预付金率</label>
@@ -21,6 +21,7 @@
标准SPAN: "11",
买入自动赎回规则1: "12",
卖出自动赎回规则1: "13",
区间追保结构: "15",
默认预付金规则: "99"
};
@@ -105,6 +106,9 @@
else if (cellValue == MarginRuleTypeEnum.默认预付金规则){
return "默认预付金规则";
}
else if (cellValue == MarginRuleTypeEnum.区间追保结构) {
return "区间追保结构";
}
return "";
}
@@ -103,9 +103,20 @@
<div class="form-group">
<label class="formlabel">预付金规则</label>
@if (PS.Config.Company != CompanyEnum.厦门象屿)
@if (PS.Config.Company == CompanyEnum.厦门象屿)
{
<select v-model="marginTemplate.RuleType" @*v-bind:disabled="!isAdd"*@ v-on:change="changeRuleType()">
@*厦门象屿原本就不渲染此下拉,保持原样*@
}
else
{
@*预付金模板V2迁移:本部署(TRS)只开放 无预付金 和 区间追保结构 两种规则(2026-08 按业务要求)。
原"其他公司显示完整规则列表"的代码以注释形式保留在下方,如需恢复取消注释即可。*@
<select v-model="marginTemplate.RuleType" v-on:change="changeRuleType()">
<option value="@((int)MarginRuleTypeEnum.无预付金)">@MarginRuleTypeEnum.无预付金.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.区间追保结构)">@MarginRuleTypeEnum.区间追保结构.ToString()</option>
</select>
@* 原完整规则列表(保留备查):
<select v-model="marginTemplate.RuleType" v-on:change="changeRuleType()">
<option value="@((int)MarginRuleTypeEnum.无预付金)">@MarginRuleTypeEnum.无预付金.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.按固定利率)">@MarginRuleTypeEnum.按固定利率.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.按浮动盈亏)">@MarginRuleTypeEnum.按浮动盈亏.ToString()</option>
@@ -118,6 +129,7 @@
<option value="@((int)MarginRuleTypeEnum.买入自动赎回规则1)">@MarginRuleTypeEnum.买入自动赎回规则1.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.卖出自动赎回规则1)">@MarginRuleTypeEnum.卖出自动赎回规则1.ToString()</option>
</select>
*@
}
</div>
@@ -129,9 +141,10 @@
<div class="form-group">
<label class="formlabel">是否按标的分类设置参数</label>
<select v-model="marginTemplate.UnderlyingSeperateType" v-on:change="changeUnderlyingSeperateType()" v-bind:disabled="marginTemplate.RuleType != @((int)MarginRuleTypeEnum.按固定利率) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.标准SPAN) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.卖出自动赎回规则1)">
<select v-model="marginTemplate.UnderlyingSeperateType" v-on:change="changeUnderlyingSeperateType()" v-bind:disabled="marginTemplate.RuleType != @((int)MarginRuleTypeEnum.按固定利率) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.标准SPAN) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.卖出自动赎回规则1) && marginTemplate.RuleType != @((int)MarginRuleTypeEnum.区间追保结构)">
<option value="@((int)UnderlyingSeperateTypeEnum.None)">不区分</option>
<option value="@((int)UnderlyingSeperateTypeEnum.CustomStock)">按自定义权益分类</option>
<option v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.区间追保结构)" value="@((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)">按资产类型分类</option>
</select>
</div>
<div class="form-group">
@@ -169,6 +182,48 @@
</select>
</div>
</template>
<template v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.区间追保结构)">
<div class="form-group" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)">
<label class="formlabel">当标的资产类型为</label>
<select class="chosen-select" :id="'UnderlyingType'+index" multiple>
<option value="16" :selected="(detail.UnderlyingType & 16)>0?true:false">利率债</option>
<option value="32" :selected="(detail.UnderlyingType & 32)>0?true:false">信用债</option>
<option value="64" :selected="(detail.UnderlyingType & 64)>0?true:false">其它债券</option>
<option value="128" :selected="(detail.UnderlyingType & 128)>0?true:false">股票</option>
<option value="256" :selected="(detail.UnderlyingType & 256)>0?true:false">股指</option>
<option value="512" :selected="(detail.UnderlyingType & 512)>0?true:false">股指期货</option>
<option value="1024" :selected="(detail.UnderlyingType & 1024)>0?true:false">商品期货</option>
<option value="2048" :selected="(detail.UnderlyingType & 2048)>0?true:false">商品现货</option>
<option value="4096" :selected="(detail.UnderlyingType & 4096)>0?true:false">新三板挂牌股票</option>
<option value="8192" :selected="(detail.UnderlyingType & 8192)>0?true:false">香港股票</option>
<option value="16384" :selected="(detail.UnderlyingType & 16384)>0?true:false">香港股指</option>
<option value="32768" :selected="(detail.UnderlyingType & 32768)>0?true:false">基金及基金专户</option>
<option value="65536" :selected="(detail.UnderlyingType & 65536)>0?true:false">黄金期货</option>
<option value="131072" :selected="(detail.UnderlyingType & 131072)>0?true:false">国债期货</option>
<option value="262144" :selected="(detail.UnderlyingType & 262144)>0?true:false">其他期货</option>
<option value="524288" :selected="(detail.UnderlyingType & 524288)>0?true:false">黄金现货</option>
<option value="1048576" :selected="(detail.UnderlyingType & 1048576)>0?true:false">其他现货</option>
<option value="2097152" :selected="(detail.UnderlyingType & 2097152)>0?true:false">境外期货</option>
<option value="4194304" :selected="(detail.UnderlyingType & 4194304)>0?true:false">境外现货</option>
<option value="8388608" :selected="(detail.UnderlyingType & 8388608)>0?true:false">境外股票</option>
<option value="16777216" :selected="(detail.UnderlyingType & 16777216)>0?true:false">境外股指</option>
<option value="33554432" :selected="(detail.UnderlyingType & 33554432)>0?true:false">汇率</option>
<option value="67108864" :selected="(detail.UnderlyingType & 67108864)>0?true:false">Shibor</option>
<option value="134217728" :selected="(detail.UnderlyingType & 134217728)>0?true:false">银行间回购定盘</option>
<option value="268435456" :selected="(detail.UnderlyingType & 268435456)>0?true:false">利率收益率</option>
<option value="536870912" :selected="(detail.UnderlyingType & 536870912)>0?true:false">债券指数</option>
</select> 时,
</div>
<div class="form-group">
<label class="formlabel">初始预付金率x</label>
<vue-number-input v-model="detail.MarginRatio1" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group">
<label class="formlabel">维持预付金率y</label>
<vue-number-input v-model="detail.MarginRatio2" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.类香草预付金规则)">
<div class="form-group">
<label class="formlabel">初始预付金率</label>
@@ -348,12 +403,12 @@
</template>
</div>
<div class="col-auto" v-show="index + 1 == marginTemplate.Details.length">
<button class="delBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock)" v-on:click="deleteDetail(index)">- 刪除</button>
<button class="delBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock) || marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)" v-on:click="deleteDetail(index)">- 刪除</button>
</div>
</div>
</div>
</template>
<button class="addBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock)" v-on:click="addDetail()" v-bind:disabled="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.无预付金) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.自动赎回买入预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.保底预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.含赔付预付金计算规则)">+ 新增参数组</button>
<button class="addBtn" v-show="marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomStock) || marginTemplate.UnderlyingSeperateType == @((int)UnderlyingSeperateTypeEnum.CustomInstrumentType)" v-on:click="addDetail()" v-bind:disabled="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.无预付金) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.自动赎回买入预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.保底预付金规则) || marginTemplate.RuleType == @((int)MarginRuleTypeEnum.含赔付预付金计算规则)">+ 新增参数组</button>
</div>
</div>
<div class="form-buttons">
@@ -395,6 +450,16 @@
</select>
</div>
</template>
<template v-if="ruleType == @((int)MarginRuleTypeEnum.区间追保结构)">
<div class="form-group">
<label class="formlabel">初始预付金率x</label>
<vue-number-input v-model="detail.MarginRatio1" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group">
<label class="formlabel">维持预付金率y</label>
<vue-number-input v-model="detail.MarginRatio2" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-if="ruleType == @((int)MarginRuleTypeEnum.类香草预付金规则)">
<div class="form-group">
<label class="formlabel">初始预付金率</label>
@@ -21,6 +21,7 @@
标准SPAN: "11",
买入自动赎回规则1: "12",
卖出自动赎回规则1: "13",
区间追保结构: "15",
};
var g_grid = {};
@@ -113,6 +114,9 @@
else if (cellValue == MarginRuleTypeEnum.卖出自动赎回规则1) {
return "卖出自动赎回规则1";
}
else if (cellValue == MarginRuleTypeEnum.区间追保结构) {
return "区间追保结构";
}
return "";
}
@@ -80,6 +80,13 @@
}
else
{
@*预付金模板V2迁移:本部署(TRS)只开放 无预付金 和 区间追保结构 两种规则(2026-08 按业务要求)。
原"其他公司显示完整规则列表"的代码以注释形式保留在下方,如需恢复取消注释即可。*@
<select v-model="marginTemplate.RuleType" v-bind:disabled="!isAdd" v-on:change="changeRuleType()">
<option value="@((int)MarginRuleTypeEnum.无预付金)">@MarginRuleTypeEnum.无预付金.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.区间追保结构)">@MarginRuleTypeEnum.区间追保结构.ToString()</option>
</select>
@* 原完整规则列表(保留备查):
<select v-model="marginTemplate.RuleType" v-bind:disabled="!isAdd" v-on:change="changeRuleType()">
<option value="@((int)MarginRuleTypeEnum.无预付金)">@MarginRuleTypeEnum.无预付金.ToString()</option>
<option value="@((int)MarginRuleTypeEnum.按固定利率)">@MarginRuleTypeEnum.按固定利率.ToString()</option>
@@ -99,6 +106,7 @@
<option value="@((int)MarginRuleTypeEnum.单独计算规则)">@MarginRuleTypeEnum.单独计算规则.ToString()</option>
}
</select>
*@
}
</div>
@@ -127,6 +135,16 @@
</select>
</div>
</template>
<template v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.区间追保结构)">
<div class="form-group">
<label class="formlabel">初始预付金率x</label>
<vue-number-input v-model="detail.MarginRatio1" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group">
<label class="formlabel">维持预付金率y</label>
<vue-number-input v-model="detail.MarginRatio2" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-if="marginTemplate.RuleType == @((int)MarginRuleTypeEnum.类香草预付金规则)">
<div class="form-group">
<label class="formlabel">初始预付金率</label>
@@ -306,6 +324,16 @@
</select>
</div>
</template>
<template v-if="ruleType == @((int)MarginRuleTypeEnum.区间追保结构)">
<div class="form-group">
<label class="formlabel">初始预付金率x</label>
<vue-number-input v-model="detail.MarginRatio1" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
<div class="form-group">
<label class="formlabel">维持预付金率y</label>
<vue-number-input v-model="detail.MarginRatio2" v-bind:format="inputFormatPercent"></vue-number-input>
</div>
</template>
<template v-if="ruleType == @((int)MarginRuleTypeEnum.类香草预付金规则)">
<div class="form-group">
<label class="formlabel">初始预付金率</label>
@@ -26,6 +26,7 @@
标准SPAN: "11",
买入自动赎回规则1: "12",
卖出自动赎回规则1: "13",
区间追保结构: "15",
};
var g_grid = {};
@@ -119,6 +120,9 @@
else if (cellValue == MarginRuleTypeEnum.卖出自动赎回规则1) {
return "卖出自动赎回规则1";
}
else if (cellValue == MarginRuleTypeEnum.区间追保结构) {
return "区间追保结构";
}
else if (cellValue == MarginRuleTypeEnum.单独计算规则) {
return "单独计算规则";
}
@@ -1,4 +1,4 @@
//定价格式化(来自配置)
//定价格式化(来自配置)
const inputFormatPercent = Object.freeze({ precision: 2, append: '%' });
const inputFormatPercentNegative = Object.freeze({ precision: 2, append: '%', negative: true });
const inputFormatNegative = Object.freeze({ precision: 2, negative: true });
@@ -18,12 +18,14 @@ const MarginRuleTypeEnum = {
标准SPAN: "11",
买入自动赎回规则1: "12",
卖出自动赎回规则1: "13",
区间追保结构: "15",
默认预付金规则: "99"
};
const UnderlyingSeperateTypeEnum = {
None: "0",//不区分
CustomStock: "1"//按自定义权益分类
CustomStock: "1",//按自定义权益分类
CustomInstrumentType: "2"//按资产类型分类
};
const vue = new Vue({
@@ -92,6 +94,9 @@ const vue = new Vue({
case MarginRuleTypeEnum.卖出自动赎回规则1:
this.marginTemplate.Comments = "名义本金*Maxx,y-0.5*虚值比例)+ Flag*Max(0,PV)\n其中虚值比例 = max(0, P - 执行价)/期初价格,当计算日为成交日时,Flag = 0,P = 期初价格,当计算日不为成交日时,Flag = 1,P = 标的现价;\n若勾选了“取与保底金额孰小”,则取较小的一个;\n保底金额 =ABS(执行价格 - 保底价格)* ABS(交易数量)。";
break;
case MarginRuleTypeEnum.区间追保结构:
this.marginTemplate.Comments = "预付金占用为名义本金的固定比例。支持按标的资产类型(利率债/信用债/其它债券/股票/股指等全部资产类型)分别设置初始预付金率x、维持预付金率y;以期初净价为基准,按(x-y)逐档推算预警线/平仓线,标的价格触及档位线时触发追保或平仓。";
break;
case MarginRuleTypeEnum.默认预付金规则:
this.marginTemplate.Comments = "考虑了14种场景下的Span算法与Delta算法比较的通用预付金规则,该规则可以调整Span涨跌幅度";
break;
@@ -108,6 +113,8 @@ const vue = new Vue({
if (this.marginTemplate.UnderlyingSeperateType == UnderlyingSeperateTypeEnum.None) {
this.marginTemplate.UnderlyingSeperateComments = "无论挂钩标的代码为何,都采用同一套参数";
} else if (this.marginTemplate.UnderlyingSeperateType == UnderlyingSeperateTypeEnum.CustomInstrumentType) {
this.marginTemplate.UnderlyingSeperateComments = "按标的的资产类型分类:在每组参数中选择适用的资产类型(利率债/信用债/其它债券/股票/股指/商品期货等全部资产类型),按标的资产类型匹配对应参数组的初始预付金率x、维持预付金率y。";
} else {
this.marginTemplate.UnderlyingSeperateComments = "把所有标的根据代码所属区间段自动分为4类:\n【1-指数】沪深指数;\n【2-个股/ETF-核准制发行】主板股票、非科创版ETF;\n【3-个股/ETF-非核准制发行】科创版股票、科创版ETF、创业板股票;\n【4-其他】所有不满足以上分类的。";
}
@@ -127,6 +134,7 @@ const vue = new Vue({
needDetailRules.push(MarginRuleTypeEnum.标准SPAN);
needDetailRules.push(MarginRuleTypeEnum.买入自动赎回规则1);
needDetailRules.push(MarginRuleTypeEnum.卖出自动赎回规则1);
needDetailRules.push(MarginRuleTypeEnum.区间追保结构);
needDetailRules.push(MarginRuleTypeEnum.默认预付金规则);
if (needDetailRules.indexOf(that.marginTemplate.RuleType.toString()) >= 0) {
new Promise((reslove) => {
@@ -1,4 +1,4 @@
//定价格式化(来自配置)
//定价格式化(来自配置)
const inputFormatPercent = Object.freeze({ precision: 2, append: '%' });
const inputFormatPercentNegative = Object.freeze({ precision: 2, append: '%', negative: true });
const inputFormatNegative = Object.freeze({ precision: 2, negative: true });
@@ -18,6 +18,7 @@ const MarginRuleTypeEnum = {
标准SPAN: "11",
买入自动赎回规则1: "12",
卖出自动赎回规则1: "13",
区间追保结构: "15",
单独计算规则: "98"
};
@@ -79,6 +80,9 @@ const vue = new Vue({
case MarginRuleTypeEnum.卖出自动赎回规则1:
this.marginTemplate.Comments = "名义本金*Maxx,y-0.5*虚值比例)+ Flag*Max(0,PV)\n其中虚值比例 = max(0, P - 执行价)/期初价格,当计算日为成交日时,Flag = 0,P = 期初价格,当计算日不为成交日时,Flag = 1,P = 标的现价;\n若勾选了“取与保底金额孰小”,则取较小的一个;\n保底金额 =ABS(执行价格 - 保底价格)* ABS(交易数量)。";
break;
case MarginRuleTypeEnum.区间追保结构:
this.marginTemplate.Comments = "预付金占用为名义本金的固定比例。以期初净价为基准,按(初始预付金率x-维持预付金率y)逐档推算预警线/平仓线,标的价格触及档位线时触发追保或平仓。";
break;
case MarginRuleTypeEnum.单独计算规则:
this.marginTemplate.Comments = "基于宏源定制的预付金规则,用于计算单笔交易,不参与Span预付金规则的轧差。";
break;
@@ -108,6 +112,7 @@ const vue = new Vue({
needDetailRules.push(MarginRuleTypeEnum.标准SPAN);
needDetailRules.push(MarginRuleTypeEnum.买入自动赎回规则1);
needDetailRules.push(MarginRuleTypeEnum.卖出自动赎回规则1);
needDetailRules.push(MarginRuleTypeEnum.区间追保结构);
needDetailRules.push(MarginRuleTypeEnum.单独计算规则1);
if (needDetailRules.indexOf(that.marginTemplate.RuleType.toString()) >= 0) {
new Promise((reslove) => {