#EQD-6947 国联民生-保证金计算整体改造-实现第一版盯市规则(不支持同一客户多部门)(1)保证金规则的设置 阶段1,开放v2
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -78,6 +78,10 @@ namespace YLErp.Model
|
||||
{
|
||||
return MarginRuleTypeEnum.卖出自动赎回规则1.ToString();
|
||||
}
|
||||
else if (MarginRuleType == (int)MarginRuleTypeEnum.区间追保结构)
|
||||
{
|
||||
return MarginRuleTypeEnum.区间追保结构.ToString();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.宏源)
|
||||
{
|
||||
|
||||
@@ -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 = "名义本金*Max(x,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 = "名义本金*Max(x,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) => {
|
||||
|
||||
Reference in New Issue
Block a user