| | |
| | | * @param currentPrice 当前点位 |
| | | */ |
| | | public void settle(ContractOrder order, String profit_loss, double currentPrice) { |
| | | |
| | | // (保证金*杠杆)= 仓位总价 |
| | | // (仓位总价/开仓价格)= 数量 |
| | | // (当前价格-开仓价格)* 数量 = 盈亏 |
| | | // (盈亏/保证金)*100 = 盈亏率 |
| | | logger.info("---------进入盈亏计算----------------"); |
| | | logger.info("---------order_close_line_type----------------"+order_close_line_type); |
| | | double mul = Arith.mul(order.getDeposit_open(), order.getLever_rate());//仓位 |
| | | double div = Arith.div(mul, order.getTrade_avg_price());//持有币的数量 |
| | | double amount = Arith.mul(div, Arith.sub(currentPrice, order.getTrade_avg_price())); |
| | |
| | | |
| | | } |
| | | } else { |
| | | logger.info("---------进入单个持仓----------------"); |
| | | logger.info("---------order.getProfit()----------------"+order.getProfit()); |
| | | logger.info("---------order.getDeposit()----------------"+order.getDeposit()); |
| | | logger.info("---------order_close_line----------------"+order_close_line); |
| | | if (order.getProfit() < 0 && (Arith.div(order.getDeposit(), Math.abs(order.getProfit())) <= Arith |
| | | .div(order_close_line, 100))) { |
| | | logger.info("---------进入强平了----------------"); |
| | | /** |
| | | * 低于系统默认平仓线,进行强平 |
| | | */ |
| | | this.contractOrderService.saveClose(order.getPartyId().toString(), order.getOrder_no()); |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |