161 lines
6.2 KiB
C#
161 lines
6.2 KiB
C#
using System.Diagnostics;
|
||
|
||
namespace YLErp.Modules.TradeRiskCalcModule
|
||
{
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
class TradeRiskCalcTest
|
||
{
|
||
public void Execute(TradeRiskCalcTestRequest request)
|
||
{
|
||
AppContext.SetSwitch("DisableTradeRiskCalcTaskRunner", true);
|
||
|
||
if (string.IsNullOrWhiteSpace(request.VolType))
|
||
{
|
||
request.VolType = "对冲";
|
||
}
|
||
|
||
var request2 = new TradeRiskCalcTestRequest2
|
||
{
|
||
TradeType = request.TradeType,
|
||
UnderlyingCodes = (request.UnderlyingCode ?? string.Empty).Split(new[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries),
|
||
IncludeExchange = request.IncludeExchange
|
||
};
|
||
|
||
try
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(request.TradeNumber))
|
||
{
|
||
var trad = DbContextFactory.GetYLDbContext().trade.FirstOrDefault(n => n.TradeNumber == request.TradeNumber);
|
||
if (trad == null)
|
||
{
|
||
throw new ServiceException("没有找到交易数据,交易编号:" + request.TradeNumber);
|
||
}
|
||
request2 = new TradeRiskCalcTestRequest2
|
||
{
|
||
TradeId = trad.id,
|
||
ClientId = trad.ClientId,
|
||
AssetBookId = trad.AssetId,
|
||
UnderlyingCodes = new[] { trad.UnderlyingCode },
|
||
TradeType = trad.TradeType
|
||
};
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(request.ClientName))
|
||
{
|
||
var clientId = DataCacheProvider.GetClientDataSource().AsQueryable().Where(n => n.Name == request.ClientName)
|
||
.Select(n => (int?)n.id).FirstOrDefault() ?? 0;
|
||
if (clientId == 0)
|
||
{
|
||
Trace.WriteLine("[ERROR]未获取到ClientID:" + request.ClientName, "实时风险调试");
|
||
}
|
||
request2.ClientId = clientId;
|
||
}
|
||
}
|
||
|
||
var context = new TradeRiskCalcTestContext(request, request2);
|
||
var tradeDataSource = new TradeDataSource(request.ValueDate, request2) { Trace = context.Trace };
|
||
var service = new TradeRiskCalcService(context, request.Skip_TradeType);
|
||
var list = service.Calculate(tradeDataSource, null);
|
||
|
||
var riskReqModel = new TradingRiskReqModel
|
||
{
|
||
IncludeStock = true,
|
||
VolType = request.VolType,
|
||
AssetTypes = new[] { request2.TradeType },
|
||
BookIds = new List<int>() { request2.AssetBookId },
|
||
ClientIds = new List<int>() { request2.ClientId },
|
||
UnderlyingCodes = request2.UnderlyingCodes
|
||
};
|
||
|
||
riskReqModel.Normalize();
|
||
|
||
var result = TradingRiskReqService.GroupingResults(
|
||
new TradingRiskResult
|
||
{
|
||
ValueDate = context.ValueDate,
|
||
PreDate = context.PreSettleDate,
|
||
TradeRiskList = list,
|
||
}, riskReqModel);
|
||
|
||
context.Trace.WriteData(result, "执行结果数据");
|
||
|
||
context.Trace.WriteLine("结束!!!");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show("发生错误:" + ex.ToString());
|
||
}
|
||
}
|
||
|
||
//public void CompareWithOldVersion()
|
||
//{
|
||
// var trace = new TraceWrap("新旧版本风险比较");
|
||
// var request = new TradeRiskCalcTestRequest
|
||
// {
|
||
// VolType = "持仓",
|
||
// ValueDate = BLL.valuedateBLL.ValueDate
|
||
// };
|
||
// var request2 = new TradeRiskCalcTestRequest2
|
||
// {
|
||
// //TradeId= 113565
|
||
// };
|
||
// var context = new TradeRiskCalcTestContext(request, request2);
|
||
// var tradeDataSource = new TradeDataSource(request.ValueDate, request2) { Trace = context.Trace };
|
||
// var service1 = new TradeRiskCalcServiceOld(context);
|
||
// var list1 = service1.Calculate(tradeDataSource);
|
||
// Trace.WriteLine("旧版本计算结果条数:" + list1.Count());
|
||
|
||
// tradeDataSource = new TradeDataSource(request.ValueDate, request2) { Trace = context.Trace };
|
||
// var service2 = new TradeRiskCalcService(context);
|
||
// var list2 = service2.Calculate(tradeDataSource);
|
||
|
||
// trace.WriteLine("新版本计算结果条数:" + list2.Count());
|
||
|
||
// var dic2 = list2.ToDictionary(n => n.TradeId);
|
||
|
||
// CompareLogic compareLogic = new CompareLogic
|
||
// {
|
||
// Config = new ComparisonConfig
|
||
// {
|
||
// DoublePrecision = 1e-8,
|
||
// MaxDifferences = 100
|
||
// }
|
||
// };
|
||
|
||
// var checkset = new HashSet<int>();
|
||
|
||
// foreach (var item1 in list1)
|
||
// {
|
||
// if (dic2.TryGetValue(item1.TradeId, out var item2))
|
||
// {
|
||
// ComparisonResult result = compareLogic.Compare(item1, item2);
|
||
// if (result.Differences.Any())
|
||
// {
|
||
// trace.WriteData(item1, result.DifferencesString);
|
||
// }
|
||
// else
|
||
// {
|
||
// trace.WriteData(item1, $"{item1.TradeType}--{item1.TradeNumber}--{item1.ExchangeOptionCode??item1.UnderlyingCode}--相同");
|
||
// }
|
||
// checkset.Add(item1.TradeId);
|
||
// }
|
||
// else
|
||
// {
|
||
// trace.WriteData(item1, "未找到新版本数据");
|
||
// }
|
||
// }
|
||
|
||
// foreach (var item2 in list2)
|
||
// {
|
||
// if (checkset.Add(item2.TradeId))
|
||
// {
|
||
// trace.WriteData(item2, "未找到旧版本数据");
|
||
// }
|
||
// }
|
||
//}
|
||
}
|
||
}
|