从山证v2.3.0拷贝
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user