fix(swap): 修复互换价格变动时盈亏计算错误
- 在后端计算逻辑中添加 longRatio 参数用于区分多空头寸类型 - 修改前端 JavaScript 代码中的盈亏计算公式,加入 longRatio 参与计算 - 更新单元测试,增加空头头寸价格上涨时亏损的测试用例 - 补充前端测试用例验证空头头寸计算逻辑的准确性 - 修复了空头头寸在价格上涨时显示盈利而非亏损的计算错误
This commit is contained in:
@@ -258,6 +258,31 @@ namespace YLErp.Modules.SwapModule
|
||||
AssertDecimalEqual(5355000m, result.FloatPnlSum, 0.01m, "income FloatPnlSum包含分红");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void 收取空头_价格上涨_应为亏损()
|
||||
{
|
||||
var input = new UnwindInput
|
||||
{
|
||||
Multiplier = 100,
|
||||
PosiGrossPrice = 1.01654321m,
|
||||
TradingAmountAvg = 101.754321m,
|
||||
PositionQty = 50000000m,
|
||||
ContractSize = 1m,
|
||||
CloseNotionalValue = 50827160.5m,
|
||||
CloseQty = 0m,
|
||||
PayDirection = 1,
|
||||
PositionType = 2,
|
||||
TradingFee = "0",
|
||||
TradingFeePending = "0",
|
||||
DividendIn = "-90400"
|
||||
};
|
||||
|
||||
var result = FrontendCalcReference.CalcIncome(input);
|
||||
|
||||
AssertDecimalEqual(-50000m, result.MarkClosePnl, 0.01m, "收取空头价格上涨=盯市亏损");
|
||||
AssertDecimalEqual(-140400m, result.FloatPnlSum, 0.01m, "盯市亏损加分红");
|
||||
}
|
||||
|
||||
private static void AssertDecimalEqual(decimal expected, decimal actual, decimal tolerance, string message = "")
|
||||
{
|
||||
Assert.IsTrue(Math.Abs(expected - actual) <= tolerance,
|
||||
|
||||
Reference in New Issue
Block a user