从山证v2.3.0拷贝

This commit is contained in:
吴方海
2024-05-09 14:06:26 +08:00
parent 566ff33259
commit f9d8a256a6
4471 changed files with 1203456 additions and 9 deletions
@@ -0,0 +1,60 @@
using Qdp.Foundation.Implementations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YLErp.Abstract.DataProviders;
using YLErp.Modules.DictionaryModule;
using YLErp.Modules.TradeModule.AccumulatorOptionModule;
namespace YLErp.Modules.TradeModule
{
[TestClass]
public class TradeAccumulatorServiceTest
{
[TestMethod]
public void TestConvertForward()
{
var dictionarySerivice = new DictionarySerivice();
var dic = dictionarySerivice.GetForwardDateDic();
var dicModel = dic.FirstOrDefault(l => l.Value == "标的交割月前一交易日");
var basedb = DbContextFactory.GetErpBaseContext();
var date = new DateTime(2023, 5, 17);
DateTime exerciseDate = default;
if (dicModel.Value != null)
{
var model = basedb.DictionaryItems.Find(dicModel.Key);
var lastMonth = Convert.ToInt32(model.Name);
if (model.ShortName.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Any())
{
var lastDay = Convert.ToInt32(model.ShortName.Split(",")[0]);
var typeEnum = (ForwardDateTypeEnum)Convert.ToInt32(model.ShortName.Split(",")[1]);
var isbefore = true;
if (Convert.ToInt32(model.ShortName.Split(",")[1]) > 0)
{
isbefore = model.ShortName.Split(",")[2] == "0";
}
exerciseDate = dictionarySerivice.GetForwardDateType(date, lastMonth, lastDay, typeEnum, isbefore);
}
}
Assert.AreEqual(exerciseDate, new DateTime(2023, 4, 18));
}
[TestMethod]
public void TestConvertForward2()
{
var db = DbContextFactory.GetYLDbContext();
var td = db.trade.FirstOrDefault(n => n.TradeNumber == "CW20230002OP230320002X");
Assert.IsNotNull(td);
var tdAcc = db.trade_accumulator_option.FirstOrDefault(n => n.TradeId == td.id);
Assert.IsNotNull(tdAcc);
var valueDate = new DateTime(2023, 03, 21);
var result = TradeAccumulatorService.CheckAccumulatorPayoff(td, tdAcc, valueDate, -300, tdAcc.AccumuTradeAmount);
Assert.IsNotNull(result.ForwardTrade);
}
}
}
@@ -0,0 +1,99 @@
using YLErp.Modules.TradeModule.ApiModule;
using YLErp.Modules.TradeModule.BaseModels;
using YLErp.Modules.TradeModule.QueryModule;
namespace YLErp.Modules.TradeModule
{
[TestClass]
public class TradeDetailQueryApiServiceTest
{
[TestMethod]
public void TestDetailQueryApiV1()
{
var request = new TradeDetailQueryApiModel
{
PageIndex = 1,
PageSize = 20,
AssetBookNames = new List<string>
{
"dafashi"
},
//request.ClientNames = new List<string>
//{
// "浙江永武资本管理有限公司",
// "浙江北华资本管理有限公司"
//};
//request.ClientNumbers = new List<string>
//{
// "CW20160001",
// "CW20160003"
//};
//request.UnderlyingCodes = new List<string>
//{
// "AG2105",
// "000001.SZ",
// "A00"
//};
BuySell = "卖出",
TradeStatus = new List<string>
{
"确认成交",
"已平仓",
"已到期"
}
};
//detailQueryApiModel.TraderNames = new[] { "wangjiankang" };
//detailQueryApiModel.SettlementDate = Convert.ToDateTime("2021-05-28");
//detailQueryApiModel.TradeDate = Convert.ToDateTime("2021-04-29");
//detailQueryApiModel.ExerciseDate = Convert.ToDateTime("2021-05-28");
var list = new TradeDetailQueryApiService(OptUserInfo.UnitTestUser).TradeDetailPageList(request);
Assert.IsTrue(list.Any());
}
[TestMethod]
public void TestDetailQueryApiV2()
{
var request = new TradeDetailQueryApiV2Request
{
//request.ClientNames = new List<string>
//{
// "浙江永武资本管理有限公司",
// "浙江北华资本管理有限公司"
//};
//request.ClientNumbers = new List<string>
//{
// "CW20160001",
// "CW20160003"
//};
//request.UnderlyingCodes = new List<string>
//{
// "AG2105",
// "000001.SZ",
// "A00"
//};
TradeStatus = new List<string>
{
"确认成交",
"已平仓",
"已到期"
},
OptDate = new DateTime(2022, 9, 1)
};
var list = new TradeDetailQueryApiV2Service(OptUserInfo.UnitTestUser).GetList(request);
Assert.IsTrue(list.Any());
}
}
}
@@ -0,0 +1,37 @@
using Qdp.Pricing.Library.Options.Products.Autocall.Snowball;
using YLErp.Modules.CalculationModule;
namespace YLErp.Modules.TradeModule
{
[TestClass]
public class TradeSnowballBLLTest : UnitTestBase
{
[TestMethod]
public void Test1()
{
var db = DbContextFactory.GetYLDbContext();
var tradeObj = db.trade.AsNoTracking().FirstOrDefault(n => n.TradeNumber == "CW20180051OP220701049X");
if (tradeObj == null)
{
throw new ServiceException("没有找到交易数据");
}
BLL.tradeBLL.SetFieldsByTradeType(tradeObj);
var optionTrade = QdpTradeBuilder.GetSnowballOptionTrade(tradeObj, tradeObj.trade_snowball
, new OptionTradeParamRequest(BLL.valuedateBLL.SysRiskFreeRate())
{
});
var snowball = (SimpleSnowball)optionTrade.Instrument;
var CouponPayment = snowball.CouponPayment(tradeObj.ExerciseDate.Value,
includeStartDate: tradeObj.trade_snowball.CouponIncludeStartDate == true && tradeObj.trade_snowball.CouponDayCount != "Monthly");
Assert.AreEqual(CouponPayment, 1.1, 0.1);
}
}
}