Selaa lähdekoodia

一个精度的修复

skyfffire 3 kuukautta sitten
vanhempi
commit
6c163b3415
2 muutettua tiedostoa jossa 14 lisäystä ja 3 poistoa
  1. 13 2
      s_erc20_to_mexc.py
  2. 1 1
      toto.readme

+ 13 - 2
s_erc20_to_mexc.py

@@ -509,7 +509,9 @@ class ArbitrageProcess:
                 add_state_flow_entry(self.process_item, self.current_state, msg, "success")
 
                 # 判斷快速二賣條件
-                diff = int(to_token_amount_human - self.exchange_sell_amount)
+                diff = to_token_amount_human - self.exchange_sell_amount
+                diff = diff.quantize(self.coin_asset_precision, rounding=ROUND_DOWN)
+
                 value = diff * self.sell_price
                 value = value.quantize(Decimal('1e-4'), rounding=ROUND_DOWN)
                 if value > 2:
@@ -517,11 +519,20 @@ class ArbitrageProcess:
                     logger.info(msg)
                     add_state_flow_entry(self.process_item, self.current_state, msg, "success")
 
+                    # 初始化 quantity 变量
+                    quantity_for_api = None
+                    # 用求余法判断是否是整数
+                    if diff % 1 == 0:
+                        # 如果是整数,转换为 int 类型。某些API可能只接受整数交易对的整数数量
+                        quantity_for_api = int(diff)
+                    else:
+                        # 如果是非整数,转换为 float 类型。这是最常见的API数量类型
+                        quantity_for_api = float(diff)
                     order_params = {
                         "symbol": self.symbol.replace('_', ''),
                         "side": "SELL",
                         "type": "MARKET",
-                        "quantity": int(diff),
+                        "quantity": quantity_for_api,
                     }
                     order_params_formated = pformat(order_params, indent=2)
                     exchange_sell_order = mexc.trade.post_order(order_params)

+ 1 - 1
toto.readme

@@ -70,7 +70,7 @@
 [-] 先不用超价单,而是连续市价单,直到仓位吃满为止
 
 2025-07-22
-[ ] 简易套利,双方向的测试
+[-] 简易套利,双方向的测试
 
 其它todo
 [ ] 等待下一次余额平衡失败,然后修复