保证金算法&资金计算
This commit is contained in:
@@ -489,7 +489,8 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
|
||||
{
|
||||
new EodCheckCurrency(_context).Execute();
|
||||
}
|
||||
|
||||
SetTaskStep("检查日终流水");
|
||||
new EodCheckSwapFlow(_context).Execute();
|
||||
tasks = new Task[3];
|
||||
|
||||
tasks[0] = Task.Run(() =>
|
||||
@@ -497,9 +498,6 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
|
||||
SetTaskStep("检查标的到期日");
|
||||
new EodCheckMaturityDate(_context).Execute();//t
|
||||
|
||||
SetTaskStep("合成篮子标的价格");
|
||||
new EodBasketPriceSaveService(_context).Execute();//t
|
||||
|
||||
if (PS.Config.ErpElement.SupportMultiCalendar)
|
||||
{
|
||||
SetTaskStep("为处于节假日的交易标的复制上日收盘价");
|
||||
@@ -508,121 +506,17 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
|
||||
|
||||
SetTaskStep("检查标的结算价格缺失");
|
||||
new EodCheckSettlePrice(_context).Execute();//t
|
||||
|
||||
if (PS.Config.Is厦门象屿)
|
||||
{
|
||||
SetTaskStep("检查标的参考价格缺失");
|
||||
new EodCheckReferencePrice(_context).Execute();//t
|
||||
}
|
||||
});
|
||||
|
||||
if (_request.IsSettleOtcTrades)
|
||||
{
|
||||
tasks[1] = Task.Run(() =>
|
||||
{
|
||||
//SetTaskStep("合成多空组合流水");
|
||||
//new EodHandleSwapFlowService(_context).Execute();
|
||||
|
||||
SetTaskStep("检查当日交易");
|
||||
new EodCheckNewTrade(_context).Execute();//t
|
||||
|
||||
SetTaskStep("日终结算检查");
|
||||
new EodCheckVolService(_context).Execute();//t
|
||||
|
||||
SetTaskStep("合成互换交易");
|
||||
new TradeSwapFlowMoreCheck(_context).Execute();//t
|
||||
});
|
||||
}
|
||||
|
||||
if (_request.IsSettleOtcTrades)
|
||||
{
|
||||
tasks[2] = Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("汇率收盘结算");
|
||||
new EodCurrencyRateService(_request.UserInfo).HandleAmountByCurrencyRate(_context.SettleDate, _context.Request.ClientIds);//t
|
||||
});
|
||||
}
|
||||
|
||||
WaitTasks(tasks);
|
||||
if (_request.IsSettleOtcTrades)
|
||||
{
|
||||
tasks = new[]
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("检查期权观察状态1");
|
||||
new EodCheckMonitoredTrade(_context).ExecuteTask1(SetTaskStep);//t
|
||||
}),
|
||||
Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("检查期权观察状态2");
|
||||
new EodCheckMonitoredTrade(_context).ExecuteTask2(SetTaskStep);//t
|
||||
}),
|
||||
// Task.Run(() =>
|
||||
//{
|
||||
// SetTaskStep("定期结算互换收益");
|
||||
// new EodCheckMonitoredTrade(_context).ExecuteBalanceSwapProfit(SetTaskStep);//t
|
||||
//})
|
||||
Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("定期归档收益互换");
|
||||
new EodCheckMonitoredTrade(_context).ExecuteEodSwapPosition(SetTaskStep);//t
|
||||
})
|
||||
};
|
||||
|
||||
WaitTasks(tasks);
|
||||
|
||||
SetTaskStep("自动延期结算");
|
||||
new EodDelaySettlementTrade(_context).Execute(_report.SetErrorTips);//t
|
||||
|
||||
SetTaskStep("检查当日交易");
|
||||
new EodCheckNewTrade(_context).Execute();//t
|
||||
SetTaskStep("检查当日到期交易");
|
||||
new EodCheckMaturityTrade(_context).Execute();//t
|
||||
SetTaskStep("定期归档收益互换");
|
||||
new EodCheckMonitoredTrade(_context).ExecuteEodSwapPosition(SetTaskStep);//t
|
||||
}
|
||||
new EodCheckMonitoredTrade(_context).CalculateMargin();
|
||||
new EodCheckMonitoredTrade(_context).ExecuteEodSwap();
|
||||
tasks = new Task[4];
|
||||
|
||||
if (_request.IsSettleExchangeTrades)
|
||||
{
|
||||
//tasks[0] = Task.Run(() =>
|
||||
//{
|
||||
// if (_context.Request.ClientIds == null)
|
||||
// {
|
||||
// SetTaskStep("场内期权结算");
|
||||
// new ExchangeOptionSettlementService(_context.UserInfo).Execute(_context.SettleDate); //t
|
||||
// }
|
||||
//});
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (_request.IsSettleOtcTrades)
|
||||
{
|
||||
tasks[0] = Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("备份场外交易");
|
||||
SaveEodTrade(_context, _cancellationTokenSource.Token);//t
|
||||
});
|
||||
tasks[1] = Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("检查权利金应付日");
|
||||
new EodCheckPremiumPayDate(_context).Execute();//t
|
||||
});
|
||||
|
||||
if (_context.SettlementConfig.CalcForwradMargin)
|
||||
{
|
||||
tasks[2] = Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("远期预付金成本结算");
|
||||
new EodForwardMarginSettlement(_context).Execute();//t
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//敏感数据计算
|
||||
|
||||
|
||||
WaitTasks(tasks);
|
||||
}
|
||||
|
||||
SetTaskStep("日终持仓结算");
|
||||
@@ -648,61 +542,7 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
|
||||
|
||||
SetTaskStep("结算客户资金");
|
||||
new EodClientBalanceCalc(_context).ClientBalanceCalc();
|
||||
|
||||
//客户资金买卖权分开算
|
||||
if (_context.SettlementConfig.CalcBuySell)
|
||||
{
|
||||
new EodClientBalanceCalcBS(_context.UserInfo).ClientBalanceByDay(_context.SettleDate, null);
|
||||
}
|
||||
_context.LogInfo("结束任务:结算客户资金");
|
||||
|
||||
if (PS.Config.ErpElement.UseSettleDataAcquisition)
|
||||
{
|
||||
SetTaskStep("配合数据采集,限额监控数据落地");
|
||||
var service = new QuotaMonitorService(_context.UserInfo);
|
||||
if (_context.IsCurrentDay)
|
||||
{
|
||||
service.EodSettlementExecute(_context.SettleDate);
|
||||
}
|
||||
|
||||
service.EodSensitiveDataCalc(_context);
|
||||
|
||||
_context.LogInfo("结束任务:限额监控数据落地");
|
||||
}
|
||||
|
||||
//todo:客户日终结算完成发送行权到期邮件提醒
|
||||
|
||||
tasks = new Task[2];
|
||||
|
||||
if (_request.IsSettleExchangeTrades)
|
||||
{
|
||||
tasks[0] = Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("准备次日数据");
|
||||
new EodDividenService(_context).Execute(eodPositionService.EodTradePositions);//t
|
||||
});
|
||||
}
|
||||
|
||||
if (_request.IsSettleOtcTrades)
|
||||
{
|
||||
tasks[1] = Task.Run(() =>
|
||||
{
|
||||
SetTaskStep("除权除息");
|
||||
var otcTrades = _context.OtcTrades.Where(t => !ConsTrade.TradeCompleteStatus.Contains(t.TradeStatus)).ToList();
|
||||
var tradeIds = otcTrades.Select(O => O.id);
|
||||
var parentTradeIds = otcTrades.Where(O => O.ParentTradeId > 0 && !tradeIds.Contains(O.ParentTradeId)).Select(O => O.ParentTradeId).ToHashSet();
|
||||
if (parentTradeIds.Any())
|
||||
{
|
||||
using var db = DbContextFactory.GetYLDbContext();
|
||||
var parentTrades = new TradeDalService(_context.UserInfo).GetTradeOrEodTrade(parentTradeIds, _context.SettleDate);
|
||||
otcTrades.AddRange(parentTrades);
|
||||
}
|
||||
new EodDividenService(_context).Execute(otcTrades);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
WaitTasks(tasks);
|
||||
}
|
||||
|
||||
_cancellationTokenSource.Token.ThrowIfCancellationRequested();
|
||||
@@ -711,32 +551,6 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
|
||||
//{
|
||||
AddOrUpdateEodStatus(_request);
|
||||
//}
|
||||
|
||||
//兴证日终持仓数据上传数据中心的FTP服务器
|
||||
if (PS.Config.Company == CompanyEnum.兴证 && _context.IsCurrentDay)
|
||||
{
|
||||
Task.Run(() => XingZhengService.EodExecute(_context));
|
||||
}
|
||||
|
||||
//日终数据采集
|
||||
if (PS.Config.Company == CompanyEnum.长江)
|
||||
{
|
||||
Task.Run(() => ChangJiangService.EodExecute(_context, _request.VolType, _request.UseClosePrice ? "收盘价" : "结算价"));
|
||||
}
|
||||
|
||||
//东证
|
||||
if (PS.Config.Company == CompanyEnum.润和)
|
||||
{
|
||||
Task.Run(() => DongZhengService.EodExecute(_context));
|
||||
}
|
||||
|
||||
|
||||
//广发商贸
|
||||
if (PS.Config.Company == CompanyEnum.广发商贸 && _request.VolType == "对冲" && _request.UseClosePrice)
|
||||
{
|
||||
Task.Run(() => GuangFaService.EodExecute(_context));
|
||||
}
|
||||
|
||||
sw.Stop();
|
||||
|
||||
elapsedMilliseconds = sw.ElapsedMilliseconds;
|
||||
|
||||
Reference in New Issue
Block a user