从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
using YLErp.BLL;
|
||||
using YLErp.Models;
|
||||
|
||||
namespace YLErp.Modules.VolatilityModule.ApiModule
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲面波动率提供(用于API服务)
|
||||
/// </summary>
|
||||
public class UnderlyingVolService : YLBaseService
|
||||
{
|
||||
public UnderlyingVolService(OptUserInfo userInfo) : base(userInfo)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// API获取波动率
|
||||
/// </summary>
|
||||
public List<UnderlyingVol> GetUnderlyingVolSurfaces(BatchVolatilityRequest2 request)
|
||||
{
|
||||
request.TradeVolWithBidAsk = true;
|
||||
|
||||
var vols = new VolatilityQueryService(this).GetVolatilities(request, false);
|
||||
|
||||
if (request.VolType != "交易")
|
||||
{
|
||||
return vols.Select(x => new UnderlyingVol()
|
||||
{
|
||||
VolTable = x.VolTable,
|
||||
UnderlyingCode = x.ContractCode
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
return vols.ToLookup(n => n.ContractCode).Select(n => new UnderlyingVol
|
||||
{
|
||||
UnderlyingCode = n.Key,
|
||||
VolTable = n.FirstOrDefault(y => y.VolType == "交易")?.VolTable,
|
||||
VolTableBid = n.FirstOrDefault(y => y.VolType == "报价Bid")?.VolTable,
|
||||
VolTableAsk = n.FirstOrDefault(y => y.VolType == "报价Ask")?.VolTable
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// API保存波动率
|
||||
/// </summary>
|
||||
public volatility SaveVolatility(volatility vol)
|
||||
{
|
||||
var targetUnderlying = underlying_managerBLL.GetByCode(vol.ContractCode);
|
||||
if (targetUnderlying != null)
|
||||
{
|
||||
vol.UnderlyingId = targetUnderlying.id;
|
||||
vol.ContractCode = targetUnderlying.UnderlyingCode;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(vol.Data))
|
||||
{
|
||||
throw new ServiceException("缺少VolTable");
|
||||
}
|
||||
|
||||
var vols = new VolatilitySaveService(this).SaveVol(vol);
|
||||
return vols.FirstOrDefault();
|
||||
}
|
||||
|
||||
public class UnderlyingVol
|
||||
{
|
||||
public string UnderlyingCode { get; set; }
|
||||
public List<SingleVol> VolTable { get; set; }
|
||||
public List<SingleVol> VolTableBid { get; set; }
|
||||
public List<SingleVol> VolTableAsk { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user