using YLErp.DBModels; using YLErp.DBModels.Consts; namespace YLErp.Modules.SwapModule; /// /// 平仓手续费计算——纯 static,无 this 依赖。 /// 从 SwapDealService 提取,零行为变更。 /// public static class TradingFeeCalc { public static decimal CalcInitTradingFee(swap_position oriPosition, UnwindData unwindData) { if (oriPosition == null || unwindData == null) { return 0; } if (oriPosition.PosiFeeType == 1) { return Math.Round(oriPosition.PosiTradingFeeUnit * unwindData.CloseQty, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero); } return Math.Round(oriPosition.PosiTradingFeeUnit / 100m * unwindData.CloseNotionalValue, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero); } public static decimal CalcInitTradingFeePending(swap_position oriPosition, swap_position position, UnwindData unwindData) { if (oriPosition == null || unwindData == null || oriPosition.PosiTradingFeeUnit == 0) { return position?.PosiTradingFeePending ?? 0; } var closeBase = oriPosition.PosiFeeType == 1 ? unwindData.CloseQty : unwindData.CloseNotionalValue; var originalBase = oriPosition.PosiFeeType == 1 ? unwindData.NotionalQty : unwindData.NotionalValue; if (originalBase <= 0) { return position?.PosiTradingFeePending ?? 0; } return Math.Round(oriPosition.PosiTradingFeePending * closeBase / originalBase, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero); } }