| | |
| | | DescBigDecimal kaiCang = queueKaiCang.peek(); |
| | | if (kaiCang != null && markPx.compareTo(kaiCang.getValue()) <= 0 && avgPx.compareTo(kaiCang.getValue()) >= 0) { |
| | | log.info("开始加仓...开仓队列价格大于当前价格{}>{}", kaiCang.getValue(), markPx); |
| | | WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice",String.valueOf(markPx)); |
| | | WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue()); |
| | | buyCntTimeEvent(avgPx,markPx); |
| | | boolean orderPriceFlag = WsMapBuild.saveStringToMap(OrderInfoWs.ORDERINFOWSMAP, "orderPrice", String.valueOf(markPx)); |
| | | boolean stateFlag = WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue()); |
| | | boolean buyCntTimeFlag = buyCntTimeEvent(avgPx, markPx); |
| | | if (orderPriceFlag && stateFlag && buyCntTimeFlag){ |
| | | log.info("加仓参数准备成功......"); |
| | | return OrderParamEnums.BUY.getValue(); |
| | | }else{ |
| | | log.error("加仓参数准备失败......"); |
| | | return null; |
| | | } |
| | | } else { |
| | | log.info("未触发加仓......,等待"); |
| | | return OrderParamEnums.HOLDING.getValue(); |
| | |
| | | } |
| | | } |
| | | |
| | | private void buyCntTimeEvent(BigDecimal avgPx, BigDecimal markPx){ |
| | | private boolean buyCntTimeEvent(BigDecimal avgPx, BigDecimal markPx){ |
| | | //判断当前价格和开仓价格直接间隔除以间距,取整,获取的数量是否大于等于0,如果大于0,则下单基础张数*倍数 |
| | | String buyCntTime = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.BUY_CNT_TIME.name()); |
| | | BigDecimal subtract = avgPx.subtract(markPx); |
| | | BigDecimal divide = subtract.divide(new BigDecimal(buyCntTime), 0, RoundingMode.DOWN).add(BigDecimal.ONE); |
| | | WsMapBuild.saveStringToMap(TradeOrderWs.TRADEORDERWSMAP, "buyCntTime",String.valueOf(divide)); |
| | | return WsMapBuild.saveStringToMap(TradeOrderWs.TRADEORDERWSMAP, "buyCntTime",String.valueOf(divide)); |
| | | } |
| | | |
| | | /** |