| | |
| | | package com.yami.trading.util; |
| | | |
| | | /** |
| | | * @program: trading-order-master |
| | | * @description: 强平价格计算 |
| | | * @create: 2025-01-15 15:56 |
| | | **/ |
| | | public class StrongLevelCalculationUtil { |
| | | |
| | | public static void main(String[] args) { |
| | | // 给定参数 |
| | | double marginBalance = 968.802; // 保证金余额 |
| | | double faceValue = 0.01; // 合约面值(固定面值不能调整) |
| | | double contractQuantity = 1; // 合约张数 张数=保证金/开仓均价*面值/杠杆 |
| | | double openingPrice = 96880.2; // 开仓均价 |
| | | double maintenanceMarginRate = 0.004; // 维持保证金率(固定不变) |
| | | double feeRate = 0.0005; // 手续费率 根据实际设置 |
| | | |
| | | // 计算强平价 |
| | | double liquidationPrice = calculateLiquidationPrice(marginBalance, faceValue, contractQuantity, |
| | | openingPrice, maintenanceMarginRate, feeRate); |
| | | |
| | | // 输出结果 |
| | | System.out.println("多仓预估强平价: " + liquidationPrice); |
| | | |
| | | // 计算空仓预估强平价 |
| | | double liquidationPrice2 = calculateEmptyLiquidationPrice(marginBalance, faceValue, contractQuantity, |
| | | openingPrice, maintenanceMarginRate, feeRate); |
| | | |
| | | // 输出结果 |
| | | System.out.println("空仓预估强平价: " + liquidationPrice2); |
| | | } |
| | | |
| | | /** |
| | | * 多仓强平价格计算 多仓预估强平价 =(保证金余额-面值 *|张数|*开仓均价)/(面值*张数|*(维持保证金率+手续费率 -1)); |
| | | * @param marginBalance 保证金余额 |
| | | * @param faceValue 合约面值 |
| | | * @param contractQuantity 合约张数 |
| | | * @param openingPrice 开仓均价 |
| | | * @param maintenanceMarginRate 维持保证金率 |
| | | * @param feeRate 手续费率 |
| | | * @return |
| | | */ |
| | | public static double calculateLiquidationPrice(double marginBalance, double faceValue, double contractQuantity, |
| | | double openingPrice, double maintenanceMarginRate, double feeRate){ |
| | | // 计算分子部分 |
| | | double numerator = marginBalance - (faceValue * contractQuantity * openingPrice); |
| | | |
| | | // 计算分母部分 |
| | | double denominator = faceValue * contractQuantity * (maintenanceMarginRate + feeRate - 1); |
| | | |
| | | // 计算强平价 |
| | | return numerator / denominator; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 空仓强平价格计算 空仓预估强平价 =(保证金余额+面值 *|张数|*开仓均价)/(面值*|张数|*(维持金率+王续费率 +1)) |
| | | * @param marginBalance 保证金余额 |
| | | * @param faceValue 合约面值 |
| | | * @param contractQuantity 合约张数 |
| | | * @param openingPrice 开仓均价 |
| | | * @param maintenanceMarginRate 维持保证金率 |
| | | * @param feeRate 手续费率 |
| | | * @return |
| | | */ |
| | | public static double calculateEmptyLiquidationPrice(double marginBalance, double faceValue, double contractQuantity, |
| | | double openingPrice, double maintenanceMarginRate, double feeRate){ |
| | | // 计算分子部分 |
| | | double numerator = marginBalance + (faceValue * contractQuantity * openingPrice); |
| | | |
| | | // 计算分母部分 |
| | | double denominator = faceValue * contractQuantity * (maintenanceMarginRate + feeRate + 1); |
| | | |
| | | // 计算空仓预估强平价 |
| | | return numerator / denominator; |
| | | } |
| | | } |
| | | //package com.yami.trading.util; |
| | | // |
| | | ///** |
| | | // * @program: trading-order-master |
| | | // * @description: 强平价格计算 |
| | | // * @create: 2025-01-15 15:56 |
| | | // **/ |
| | | //public class StrongLevelCalculationUtil { |
| | | // |
| | | // public static void main(String[] args) { |
| | | // // 给定参数 |
| | | // double marginBalance = 968.802; // 保证金余额 |
| | | // double faceValue = 0.01; // 合约面值(固定面值不能调整) |
| | | // double contractQuantity = 1; // 合约张数 可用保证金*杠杆倍数/(面值*最新成交价) |
| | | // double openingPrice = 96880.2; // 开仓均价 |
| | | // double maintenanceMarginRate = 0.004; // 维持保证金率(固定不变) |
| | | // double feeRate = 0.0005; // 手续费率 根据实际设置 |
| | | // |
| | | // // 计算强平价 |
| | | // double liquidationPrice = calculateLiquidationPrice(marginBalance, faceValue, contractQuantity, |
| | | // openingPrice, maintenanceMarginRate, feeRate); |
| | | // |
| | | // // 输出结果 |
| | | // System.out.println("多仓预估强平价: " + liquidationPrice); |
| | | // |
| | | // // 计算空仓预估强平价 |
| | | // double liquidationPrice2 = calculateEmptyLiquidationPrice(marginBalance, faceValue, contractQuantity, |
| | | // openingPrice, maintenanceMarginRate, feeRate); |
| | | // |
| | | // // 输出结果 |
| | | // System.out.println("空仓预估强平价: " + liquidationPrice2); |
| | | // } |
| | | // |
| | | // /** |
| | | // * 多仓强平价格计算 多仓预估强平价 =(保证金余额-面值 *|张数|*开仓均价)/(面值*张数|*(维持保证金率+手续费率 -1)); |
| | | // * @param marginBalance 保证金余额 |
| | | // * @param faceValue 合约面值 |
| | | // * @param contractQuantity 合约张数 |
| | | // * @param openingPrice 开仓均价 |
| | | // * @param maintenanceMarginRate 维持保证金率 |
| | | // * @param feeRate 手续费率 |
| | | // * @return |
| | | // */ |
| | | // public static double calculateLiquidationPrice(double marginBalance, double faceValue, double contractQuantity, |
| | | // double openingPrice, double maintenanceMarginRate, double feeRate){ |
| | | // // 计算分子部分 |
| | | // double numerator = marginBalance - (faceValue * contractQuantity * openingPrice); |
| | | // |
| | | // // 计算分母部分 |
| | | // double denominator = faceValue * contractQuantity * (maintenanceMarginRate + feeRate - 1); |
| | | // |
| | | // // 计算强平价 |
| | | // return numerator / denominator; |
| | | // } |
| | | // |
| | | // |
| | | // /** |
| | | // * 空仓强平价格计算 空仓预估强平价 =(保证金余额+面值 *|张数|*开仓均价)/(面值*|张数|*(维持金率+王续费率 +1)) |
| | | // * @param marginBalance 保证金余额 |
| | | // * @param faceValue 合约面值 |
| | | // * @param contractQuantity 合约张数 |
| | | // * @param openingPrice 开仓均价 |
| | | // * @param maintenanceMarginRate 维持保证金率 |
| | | // * @param feeRate 手续费率 |
| | | // * @return |
| | | // */ |
| | | // public static double calculateEmptyLiquidationPrice(double marginBalance, double faceValue, double contractQuantity, |
| | | // double openingPrice, double maintenanceMarginRate, double feeRate){ |
| | | // // 计算分子部分 |
| | | // double numerator = marginBalance + (faceValue * contractQuantity * openingPrice); |
| | | // |
| | | // // 计算分母部分 |
| | | // double denominator = faceValue * contractQuantity * (maintenanceMarginRate + feeRate + 1); |
| | | // |
| | | // // 计算空仓预估强平价 |
| | | // return numerator / denominator; |
| | | // } |
| | | //} |