fix(swap): 修复互换价格变动时盈亏计算错误

- 在后端计算逻辑中添加 longRatio 参数用于区分多空头寸类型
- 修改前端 JavaScript 代码中的盈亏计算公式,加入 longRatio 参与计算
- 更新单元测试,增加空头头寸价格上涨时亏损的测试用例
- 补充前端测试用例验证空头头寸计算逻辑的准确性
- 修复了空头头寸在价格上涨时显示盈利而非亏损的计算错误
This commit is contained in:
张名锐
2026-08-07 17:44:04 +08:00
parent 0672dbbcca
commit d78d1f48e7
5 changed files with 45 additions and 5 deletions
@@ -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,