package com.xcong.excoin.modules.gateApi;
|
|
import lombok.AllArgsConstructor;
|
import lombok.Builder;
|
import lombok.Data;
|
import lombok.NoArgsConstructor;
|
|
import java.math.BigDecimal;
|
|
/**
|
* Gate 策略配置 DTO,用于 Web 控制面板参数传递。
|
* apiSecret 不暴露给前端。
|
*/
|
@Data
|
@Builder
|
@NoArgsConstructor
|
@AllArgsConstructor
|
public class GateConfigDTO {
|
|
/** API Key */
|
private String apiKey;
|
/** 合约名称,如 ETH_USDT */
|
private String contract;
|
/** 杠杆倍数 */
|
private String leverage;
|
/** 保证金模式:cross / isolated */
|
private String marginMode;
|
/** 持仓模式:single / dual */
|
private String positionMode;
|
/** 网格间距比例 */
|
private BigDecimal gridRate;
|
/** 预期收益(USDT) */
|
private BigDecimal expectedProfit;
|
/** 最大亏损(USDT) */
|
private BigDecimal maxLoss;
|
/** 基底开仓张数 */
|
private String baseQuantity;
|
/** 每次下单张数 */
|
private String quantity;
|
/** 最大持仓张数(单方向),0=不限制 */
|
private int maxPositionSize;
|
/** 止损阶梯次数,0=禁用 */
|
private int stopLossCount;
|
/** 策略重启跨度阈值,0=禁用 */
|
private int restartGridSpan;
|
/** 价格精度 */
|
private int priceScale;
|
/** 合约乘数 */
|
private BigDecimal contractMultiplier;
|
/** 未实现盈亏计价模式:LAST_PRICE / MARK_PRICE */
|
private String unrealizedPnlPriceMode;
|
/** 是否为生产环境 */
|
private boolean isProduction;
|
|
/**
|
* 从 GateConfig 构建 DTO(不暴露 apiSecret)。
|
*/
|
public static GateConfigDTO from(GateConfig config) {
|
return GateConfigDTO.builder()
|
.apiKey(config.getApiKey())
|
.contract(config.getContract())
|
.leverage(config.getLeverage())
|
.marginMode(config.getMarginMode())
|
.positionMode(config.getPositionMode())
|
.gridRate(config.getGridRate())
|
.expectedProfit(config.getExpectedProfit())
|
.maxLoss(config.getMaxLoss())
|
.baseQuantity(config.getBaseQuantity())
|
.quantity(config.getQuantity())
|
.maxPositionSize(config.getMaxPositionSize())
|
.stopLossCount(config.getStopLossCount())
|
.restartGridSpan(config.getRestartGridSpan())
|
.priceScale(config.getPriceScale())
|
.contractMultiplier(config.getContractMultiplier())
|
.unrealizedPnlPriceMode(config.getUnrealizedPnlPriceMode() != null
|
? config.getUnrealizedPnlPriceMode().name() : "LAST_PRICE")
|
.isProduction(config.isProduction())
|
.build();
|
}
|
}
|