fix: 统一互换部分平仓交易费用与待结算费用的分摊舍入
This commit is contained in:
@@ -34,10 +34,12 @@ namespace YLErp.Modules.SwapModule
|
||||
var position = new swap_position
|
||||
{
|
||||
PosiFeeType = 0,
|
||||
PosiTradingFeeUnit = 0.1234m
|
||||
PosiTradingFeeUnit = 0.1234m,
|
||||
PosiTradingFeePending = 1234.00m
|
||||
};
|
||||
var unwindData = new UnwindData
|
||||
{
|
||||
NotionalValue = 1_000_000m,
|
||||
CloseNotionalValue = 1_000_000m,
|
||||
CloseQty = 8888m
|
||||
};
|
||||
@@ -53,10 +55,12 @@ namespace YLErp.Modules.SwapModule
|
||||
var position = new swap_position
|
||||
{
|
||||
PosiFeeType = 1,
|
||||
PosiTradingFeeUnit = 1.235m
|
||||
PosiTradingFeeUnit = 1.235m,
|
||||
PosiTradingFeePending = 12.35m
|
||||
};
|
||||
var unwindData = new UnwindData
|
||||
{
|
||||
NotionalQty = 10m,
|
||||
CloseNotionalValue = 1_000_000m,
|
||||
CloseQty = 10m
|
||||
};
|
||||
@@ -106,6 +110,30 @@ namespace YLErp.Modules.SwapModule
|
||||
Assert.AreEqual(450m, fee);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PartialCloseTradingFeeAndPendingFeeUseTheSameRoundedOriginalFeeAllocation()
|
||||
{
|
||||
var oriPosition = new swap_position
|
||||
{
|
||||
PosiFeeType = 0,
|
||||
PosiTradingFeeUnit = 1.1234m,
|
||||
PosiTradingFeePending = 113.46m
|
||||
};
|
||||
var unwindData = new UnwindData
|
||||
{
|
||||
NotionalValue = 10098m,
|
||||
CloseNotionalValue = 4039.2m,
|
||||
NotionalQty = 10000m,
|
||||
CloseQty = 4000m
|
||||
};
|
||||
|
||||
var tradingFee = InvokeCalcInitTradingFee(oriPosition, unwindData);
|
||||
var pendingFee = InvokeCalcInitTradingFeePending(oriPosition, new swap_position(), unwindData);
|
||||
|
||||
Assert.AreEqual(45.38m, tradingFee);
|
||||
Assert.AreEqual(45.38m, pendingFee);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void LegacyPendingFeeKeepsCurrentPositionValueWhenNoBaseRateIsConfigured()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user