| | |
| | | private int maxPositionPerSide; |
| | | /** 加仓启动阈值:前N次止损不触发加仓,默认 1 */ |
| | | private int addPositionStartThreshold; |
| | | /** 超额止盈开关:true=挂单成交后将超出基础仓位的部分挂止盈单,默认 false */ |
| | | private boolean placeExcessTakeProfit; |
| | | /** 止盈挂单模式:off=关闭 / concentrated=集中止盈 / dispersed=分散止盈,默认 off */ |
| | | private String placeExcessTakeProfit; |
| | | /** 自定义止损开关:true=启用自定义止损触发价,false=使用默认阶梯止损。null=未设置(默认false) */ |
| | | private Boolean dualStopLossEnabled; |
| | | /** 多仓自定义止损触发价(价格跌至该值触发平多),null=未设置 */ |
| | | private BigDecimal longStopLossPrice; |
| | | /** 空仓自定义止损触发价(价格涨至该值触发平空),null=未设置 */ |
| | | private BigDecimal shortStopLossPrice; |
| | | /** 止盈成交触发对向加仓开关:true=启用,false=禁用。null=未设置(默认false) */ |
| | | private Boolean tpTriggerOppositeAddEnabled; |
| | | /** 对向加仓挂单数量:止盈成交后在对向挂出的开仓张数,0=不启用 */ |
| | | private Integer tpTriggerOppositeAddQuantity; |
| | | /** 单格止盈张数:基础仓位止盈挂单时每个网格挂的止盈张数,支持小数,0=不启用 */ |
| | | private BigDecimal baseTakeProfitPerGrid; |
| | | /** 止盈网格数量:基础仓位止盈挂单的网格数量,0=不启用 */ |
| | | private Integer baseTakeProfitGridCount; |
| | | |
| | | /** |
| | | * 从 GateConfig 构建 DTO(不暴露 apiSecret)。 |
| | |
| | | .addPositionQuantity(config.getAddPositionQuantity()) |
| | | .maxPositionPerSide(config.getMaxPositionPerSide()) |
| | | .addPositionStartThreshold(config.getAddPositionStartThreshold()) |
| | | .placeExcessTakeProfit(config.isPlaceExcessTakeProfit()) |
| | | .placeExcessTakeProfit(config.getPlaceExcessTakeProfit()) |
| | | .dualStopLossEnabled(config.isDualStopLossEnabled()) |
| | | .longStopLossPrice(config.getLongStopLossPrice()) |
| | | .shortStopLossPrice(config.getShortStopLossPrice()) |
| | | .tpTriggerOppositeAddEnabled(config.isTpTriggerOppositeAddEnabled()) |
| | | .tpTriggerOppositeAddQuantity(config.getTpTriggerOppositeAddQuantity()) |
| | | .baseTakeProfitPerGrid(config.getBaseTakeProfitPerGrid()) |
| | | .baseTakeProfitGridCount(config.getBaseTakeProfitGridCount()) |
| | | .build(); |
| | | } |
| | | |
| | |
| | | m.put("maxPositionPerSide", maxPositionPerSide); |
| | | m.put("addPositionStartThreshold", addPositionStartThreshold); |
| | | m.put("placeExcessTakeProfit", placeExcessTakeProfit); |
| | | m.put("dualStopLossEnabled", dualStopLossEnabled); |
| | | m.put("longStopLossPrice", longStopLossPrice); |
| | | m.put("shortStopLossPrice", shortStopLossPrice); |
| | | m.put("tpTriggerOppositeAddEnabled", tpTriggerOppositeAddEnabled); |
| | | m.put("tpTriggerOppositeAddQuantity", tpTriggerOppositeAddQuantity); |
| | | m.put("baseTakeProfitPerGrid", baseTakeProfitPerGrid); |
| | | m.put("baseTakeProfitGridCount", baseTakeProfitGridCount); |
| | | return m; |
| | | } |
| | | |
| | |
| | | .priceScale(1) |
| | | .contractMultiplier(new BigDecimal("0.001")) |
| | | .unrealizedPnlPriceMode("LAST_PRICE") |
| | | .isProduction(true) |
| | | .isProduction(false) |
| | | .priceDriveEnabled(true) |
| | | .rounds(0) |
| | | .stopLossCountMode("dual") |
| | |
| | | .addPositionQuantity(1) |
| | | .maxPositionPerSide(0) |
| | | .addPositionStartThreshold(1) |
| | | .placeExcessTakeProfit(false) |
| | | .placeExcessTakeProfit("off") |
| | | .dualStopLossEnabled(false) |
| | | .longStopLossPrice(null) |
| | | .shortStopLossPrice(null) |
| | | .tpTriggerOppositeAddEnabled(false) |
| | | .tpTriggerOppositeAddQuantity(0) |
| | | .baseTakeProfitPerGrid(BigDecimal.ZERO) |
| | | .baseTakeProfitGridCount(0) |
| | | .build(); |
| | | } |
| | | } |