| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.xcong.excoin.modules.okxNewPrice.celue.CaoZuoService; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.AccountWs; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.PositionsWs; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.TradeOrderWs; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.enums.CoinEnums; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.enums.OrderParamEnums; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.param.TradeRequestParam; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.wanggeList.WangGeListEnum; |
| | | import com.xcong.excoin.modules.okxNewPrice.okxWs.wanggeList.WangGeListService; |
| | | import com.xcong.excoin.modules.okxNewPrice.utils.SSLConfig; |
| | | import com.xcong.excoin.modules.okxNewPrice.utils.WsMapBuild; |
| | | import com.xcong.excoin.utils.RedisUtils; |
| | | import java.math.BigDecimal; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | */ |
| | | private void triggerQuantOperations(String markPx) { |
| | | try { |
| | | |
| | | markPx = String.valueOf(new BigDecimal(markPx).add(new BigDecimal("20"))); |
| | | // 1. 判断当前价格属于哪个网格 |
| | | WangGeListEnum gridByPriceNew = WangGeListEnum.getGridByPrice(new BigDecimal(markPx)); |
| | | if (gridByPriceNew == null) { |
| | |
| | | for (OkxQuantWebSocketClient client : clientManager.getAllClients()) { |
| | | String accountName = client.getAccountName(); |
| | | if (accountName != null) { |
| | | log.info("当前价格{}属于网格: {}-{}({}-{})", markPx, gridByPriceNew.getName(),gridByPriceNew.getFang_xiang(), gridByPriceNew.getJiage_xiaxian(), gridByPriceNew.getJiage_shangxian()); |
| | | log.error("当前价格{}属于网格: {}-{}({}-{})", markPx, gridByPriceNew.getName(),gridByPriceNew.getFang_xiang(), gridByPriceNew.getJiage_xiaxian(), gridByPriceNew.getJiage_shangxian()); |
| | | //处理历史网格信息 |
| | | String fangXiang = gridByPriceNew.getFang_xiang(); |
| | | String posSideOld = null; |
| | | if (CoinEnums.POSSIDE_LONG.getCode().equals(fangXiang)) { |
| | | posSideOld = CoinEnums.POSSIDE_SHORT.getCode(); |
| | | } |
| | | if (CoinEnums.POSSIDE_SHORT.getCode().equals(fangXiang)) { |
| | | posSideOld = CoinEnums.POSSIDE_LONG.getCode(); |
| | | } |
| | | |
| | | String positionAccountName = PositionsWs.initAccountName(accountName, posSideOld); |
| | | // 判断是否保证金超标 |
| | | if ( |
| | | PositionsWs.getAccountMap(positionAccountName).get("pos") != null |
| | | && PositionsWs.getAccountMap(positionAccountName).get("pos").compareTo(BigDecimal.ZERO) > 0 |
| | | ){ |
| | | BigDecimal avgPx = PositionsWs.getAccountMap(positionAccountName).get("avgPx"); |
| | | WangGeListEnum gridByPriceOld = WangGeListEnum.getGridByPrice(avgPx); |
| | | if (gridByPriceOld != null){ |
| | | String zhiSunDian = gridByPriceOld.getZhi_sun_dian(); |
| | | if (CoinEnums.POSSIDE_SHORT.getCode().equals(posSideOld)) { |
| | | boolean flag = new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) > 0; |
| | | log.error("{}历史网格方向{},当前价格大于止损点{}",gridByPriceOld.name(),posSideOld,flag); |
| | | if (flag){ |
| | | TradeRequestParam tradeRequestParam = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, posSideOld); |
| | | TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam); |
| | | |
| | | } |
| | | } |
| | | if (CoinEnums.POSSIDE_LONG.getCode().equals(posSideOld)) { |
| | | boolean flag = new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) < 0; |
| | | log.error("{}历史网格方向{},当前价格小于止损点{}",gridByPriceOld.name(),posSideOld,flag); |
| | | if (flag){ |
| | | TradeRequestParam tradeRequestParam = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, posSideOld); |
| | | TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //当前下单 |
| | | wangGeListService.initWangGe(markPx); |
| | | TradeRequestParam tradeRequestParam = caoZuoService.caoZuoHandler(accountName, markPx, gridByPriceNew.getFang_xiang()); |
| | | TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam); |