From 5d0e6b7b45630f32100d23ca107a9c74df43db75 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 11 May 2026 11:58:04 +0800
Subject: [PATCH] refactor(gate): 移除账号标签配置和多账号支持功能

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java |   36 ++++++++++++++++++++++++++++++++++--
 1 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java
index 2a5317a..ca6446c 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfig.java
@@ -16,6 +16,7 @@
  *       .contract("XAU_USDT")
  *       .leverage("100")
  *       .gridRate(new BigDecimal("0.0035"))
+ *       .contractMultiplier("0.001")
  *       .isProduction(false)
  *       .build();
  *
@@ -26,13 +27,22 @@
  * <h3>默认值</h3>
  * <ul>
  *   <li>合约: BTC_USDT, 杠杆: 10x, 全仓, 双向持仓</li>
- *   <li>网格: 0.35%, 止盈: 0.5 USDT, 亏损: 7.5 USDT</li>
- *   <li>数量: 1 张, 环境: 测试网, 重试: 3 次</li>
+ *   <li>网格间距: 0.35%, 队列容量: 50, 保证金比例上限: 20%</li>
+ *   <li>止盈: 0.5 USDT, 亏损上限: 7.5 USDT</li>
+ *   <li>数量: 1 张, 合约乘数: 0.001, 环境: 测试网</li>
  * </ul>
  *
  * @author Administrator
  */
 public class GateConfig {
+
+    /** 未实现盈亏计价模式 */
+    public enum PnLPriceMode {
+        /** 按最新成交价计算 */
+        LAST_PRICE,
+        /** 按标记价格计算 */
+        MARK_PRICE
+    }
 
     /** Gate API v4 密钥 */
     private final String apiKey;
@@ -58,6 +68,14 @@
     private final boolean isProduction;
     /** 补仓最大重试次数 */
     private final int reopenMaxRetries;
+    /** 网格队列容量 */
+    private final int gridQueueSize;
+    /** 保证金占初始本金比例上限 */
+    private final BigDecimal marginRatioLimit;
+    /** 合约乘数(单张合约代表的基础资产数量,如 BTC_USDT=0.001, ETH_USDT=0.01) */
+    private final BigDecimal contractMultiplier;
+    /** 未实现盈亏计价模式:最新价 / 标记价格 */
+    private final PnLPriceMode unrealizedPnlPriceMode;
 
     private GateConfig(Builder builder) {
         this.apiKey = builder.apiKey;
@@ -72,6 +90,10 @@
         this.quantity = builder.quantity;
         this.isProduction = builder.isProduction;
         this.reopenMaxRetries = builder.reopenMaxRetries;
+        this.gridQueueSize = builder.gridQueueSize;
+        this.marginRatioLimit = builder.marginRatioLimit;
+        this.contractMultiplier = builder.contractMultiplier;
+        this.unrealizedPnlPriceMode = builder.unrealizedPnlPriceMode;
     }
 
     /**
@@ -112,6 +134,10 @@
     public String getQuantity() { return quantity; }
     public boolean isProduction() { return isProduction; }
     public int getReopenMaxRetries() { return reopenMaxRetries; }
+    public int getGridQueueSize() { return gridQueueSize; }
+    public BigDecimal getMarginRatioLimit() { return marginRatioLimit; }
+    public BigDecimal getContractMultiplier() { return contractMultiplier; }
+    public PnLPriceMode getUnrealizedPnlPriceMode() { return unrealizedPnlPriceMode; }
 
     public static Builder builder() {
         return new Builder();
@@ -133,6 +159,10 @@
         private String quantity = "1";
         private boolean isProduction = false;
         private int reopenMaxRetries = 3;
+        private int gridQueueSize = 50;
+        private BigDecimal marginRatioLimit = new BigDecimal("0.2");
+        private BigDecimal contractMultiplier = new BigDecimal("0.001");
+        private PnLPriceMode unrealizedPnlPriceMode = PnLPriceMode.LAST_PRICE;
 
         public Builder apiKey(String apiKey) { this.apiKey = apiKey; return this; }
         public Builder apiSecret(String apiSecret) { this.apiSecret = apiSecret; return this; }
@@ -146,6 +176,8 @@
         public Builder quantity(String quantity) { this.quantity = quantity; return this; }
         public Builder isProduction(boolean isProduction) { this.isProduction = isProduction; return this; }
         public Builder reopenMaxRetries(int reopenMaxRetries) { this.reopenMaxRetries = reopenMaxRetries; return this; }
+        public Builder contractMultiplier(BigDecimal contractMultiplier) { this.contractMultiplier = contractMultiplier; return this; }
+        public Builder unrealizedPnlPriceMode(PnLPriceMode mode) { this.unrealizedPnlPriceMode = mode; return this; }
 
         public GateConfig build() {
             return new GateConfig(this);

--
Gitblit v1.9.1