Sfoglia il codice sorgente

Mexc的提現手續費等信息維護

skyfffire 5 mesi fa
parent
commit
d6218db3d3
4 ha cambiato i file con 48 aggiunte e 6 eliminazioni
  1. 32 0
      as.py
  2. 14 5
      erc20_to_mexc.py
  3. 1 1
      submit_process_demo.py
  4. 1 0
      toto.readme

+ 32 - 0
as.py

@@ -80,6 +80,7 @@ mexc_data = {
     "account_info": {},
     "deposit_list": [],
     "withdraw_list": [],
+    "coin_info_map": {},                                # 處理過的幣種信息,coin_info_map[coin][network]
 }
 mexc_lock = threading.Lock()
 
@@ -287,11 +288,14 @@ def update_mexc_data_periodically():
     """
     global mexc_data
 
+    # 每60秒獲取一次coin_info
+    coin_info_get_delay = 60
     while True:
         try:
             new_account_info = None
             new_withdraw_list = None
             new_deposit_list = None
+            new_coin_info_list = None
 
             # 1. new_account_info
             try:
@@ -335,11 +339,39 @@ def update_mexc_data_periodically():
             except Exception as e:
                 logger.error(f"从 Mexc 获取 withdraw_list 失败: {e}, {new_withdraw_list}")
 
+            # 4. new_coin_info list
+            try:
+                if coin_info_get_delay >= 60:
+                    coin_info_get_delay = 0
+                    new_coin_info_list = mexc.wallet.get_coinlist()
+
+                    if not isinstance(new_coin_info_list, list):
+                        raise Exception("幣種信息獲取錯誤")
+
+
+                    # 處理幣種信息
+                    new_coin_info_map = {}
+                    for coin_info in new_coin_info_list:
+                        new_coin_info_map[coin_info['coin']] = {}
+
+                        for network in coin_info['networkList']:
+                            new_coin_info_map[coin_info['coin']][network['netWork']] = network
+
+                    with mexc_lock:
+                        mexc_data['coin_info_map'] = new_coin_info_map
+
+                        # logger.info(f'coin_info_map: {new_coin_info_map['USDT']}')
+            except Exception as e:
+                logger.error(f"从 Mexc 获取 withdraw_list 失败: {e}, {new_withdraw_list}")
+
         except Exception as e:
             # 捕获线程循环中的其他潜在错误
             logger.error(f"数据更新线程发生未知错误: {e}")
             traceback.print_exc()
         
+        # 幣種信息處理的delay
+        coin_info_get_delay = coin_info_get_delay + 1
+
         # 等待 1s
         time.sleep(1)
 

+ 14 - 5
erc20_to_mexc.py

@@ -28,7 +28,7 @@ class ArbitrageProcess:
             gas_limit_multiplier: gas limit倍数, 一般都不加倍
             gas_price_multiplier: gas price倍数, 可以提高交易成功率
         """
-        self.WITHDRAW_FEE = Decimal(2.02)                        # 提現手續費
+        self.NETWORK = 'ETH'
 
         tx.pop('gasPrice', None)
         tx.pop('value', None)
@@ -44,8 +44,21 @@ class ArbitrageProcess:
         self.mexc_data = mexc_data
         self.mexc_lock = mexc_lock
 
+        # symbol轉大寫
+        self.symbol = process_item['symbol'].upper()
+
+        self.coin = self.symbol.split('_')[0]
+        self.base_coin = self.symbol.split('_')[1]
+
         with self.core_lock:
             self.eth_price = self.core_data['eth_price']
+        
+        with self.mexc_lock:
+            self.withdraw_info = copy.deepcopy(self.mexc_data['coin_info_map'][self.base_coin][self.NETWORK])
+            self.WITHDRAW_FEE = Decimal(self.withdraw_info['withdrawFee']) # 提現手續費
+
+            withdraw_info_formated = pformat(self.withdraw_info, indent=2)
+            logger.info(f'提現信息識別, 手續費:{self.WITHDRAW_FEE}\n{withdraw_info_formated}')
 
         self.tx = tx
         
@@ -62,10 +75,6 @@ class ArbitrageProcess:
 
         self.user_exchange_wallet = process_item['userExchangeWallet']
         self.user_wallet = process_item['userWallet']
-        self.symbol = process_item['symbol']
-
-        self.coin = self.symbol.split('_')[0]
-        self.base_coin = self.symbol.split('_')[1]
         self.process_item = process_item
 
 

+ 1 - 1
submit_process_demo.py

@@ -50,7 +50,7 @@ def create_mock_arbitrage_data():
     # 构造提交给 arb_executor 的数据体
     data = {
         "tx": tx,
-        "profit": str(5),
+        "profit": str(0),
         "profitLimit": str(0),
         "symbol": MEXC_TARGET_PAIR_USDT,
         "fromToken": IN_TOKEN_ADDRESS,

+ 1 - 0
toto.readme

@@ -21,5 +21,6 @@
 [ ] Mexc的提現手續費等信息維護
 
 2025-06-10
+[ ] [可選優化]mexc使用ws接收行情信息
 [ ] 做另一個方向之前,需要先整理策略層架構,當前架構如何兼容多策略
 [ ] 另一個方向