فهرست منبع

一些bug的修复。

skyfffire 5 ماه پیش
والد
کامیت
a4d2d581a3
4فایلهای تغییر یافته به همراه17 افزوده شده و 13 حذف شده
  1. 4 3
      arbitrage_process.py
  2. 1 1
      as.py
  3. 10 7
      mexc_client.py
  4. 2 2
      price_checker_ok.py

+ 4 - 3
arbitrage_process.py

@@ -211,6 +211,7 @@ class ArbitrageProcess:
                 msg = f"链上剩余{self.base_coin}: {from_token_balance}, 需要使用:{self.arbitrage_details["chain_usdt_use"]}, 余额不足,不能触发交易。"
                 logging.info(msg)
                 add_state_flow_entry(self.process_item, self.current_state, msg, "fail")
+                self._set_state(self.STATE_FAILED)
                 return
             msg = f"链上剩余{self.base_coin}: {from_token_balance}, 需要使用:{self.arbitrage_details["chain_usdt_use"]}, 余额充足。"
             logging.info(msg)
@@ -228,7 +229,7 @@ class ArbitrageProcess:
                 msg = f"交易所现货卖出下单失败:{exchange_sell_order}"
                 logging.error(msg)
                 add_state_flow_entry(self.process_item, self.current_state, msg, "fail")
-                self._set_state("FAILED")
+                self._set_state(self.STATE_FAILED)
 
                 return
 
@@ -242,7 +243,7 @@ class ArbitrageProcess:
             self._set_state(self.STATE_WAITING_SELL_CONFIRM)
         except Exception as e:
             logging.error(f"交易所现货卖出下单失败:{e}")
-            self._set_state("FAILED")
+            self._set_state(self.STATE_FAILED)
 
     def _wait_sell_confirm(self):
         """
@@ -369,7 +370,7 @@ class ArbitrageProcess:
         add_state_flow_entry(self.process_item, self.current_state, msg, "pending")
         try:
             # 使用预提现数量进行回滚
-            pseudo_amount_to_buy = self.arbitrage_details["exchange_withdraw_amount"]
+            pseudo_amount_to_buy = Decimal(self.arbitrage_details["exchange_withdraw_amount"])
             # 处理精度
             pseudo_amount_to_buy = pseudo_amount_to_buy.quantize(Decimal('1'), rounding=ROUND_DOWN)
 

+ 1 - 1
as.py

@@ -22,7 +22,7 @@ USER_EXCHANGE_WALLET = '0xc71835a042F4d870B0F4296cc89cAeb921a9f3DA' # 用户在
 
 # 该代币最后一次执行套利的区块信息 (如果需要防止过于频繁的同类套利,不然变成砸盘、拉盘的了)
 last_process_info = {} # 示例: {"RATO_USDT": 0}
-MIN_BLOCKS_BETWEEN_ARB = decimal.Decimal(1) # 在重试相同交易对之前等待1个区块
+MIN_BLOCKS_BETWEEN_ARB = decimal.Decimal(2) # 在重试相同交易对之前等待几个区块
 
 # --- 全局状态和锁 ---
 processing_list = [] # 正在处理的任务列表

+ 10 - 7
mexc_client.py

@@ -485,8 +485,8 @@ if __name__ == '__main__':
             #     "symbol": "RATOUSDT",  # 使用常见的交易对,如 MXUSDT 或 BTCUSDT
             #     "side": "SELL",
             #     "type": "MARKET",
-            #     "quantity": "451261",   # 根据交易对的最小名义价值/数量调整数量
-            #     # "price": "0.1"     # 调整价格以便于测试
+            #     "quantity": "525945",   # 根据交易对的最小名义价值/数量调整数量
+            #     # "price": "0.0000290"     # 调整价格以便于测试
             # }
             # print(f"  测试订单参数: {test_order_params}")
             # test_order_response = client.trade.post_order(params=test_order_params)
@@ -500,6 +500,7 @@ if __name__ == '__main__':
             #      print(f"  post_order_test 响应指示潜在问题或特定消息: {test_order_response}")
 
 
+
             # 批量下单示例
             # print("\n测试批量下单 (POST /batchOrders)...")
             # sample_batch_orders = [
@@ -525,11 +526,13 @@ if __name__ == '__main__':
 
             # 测试获取挂单示例
             # print("\n获取 BTCUSDT 当前挂单 (如有)...")
-            # open_orders = client.trade.get_openorders(params={"symbol": "BTCUSDT"})
+            # open_orders = client.trade.get_openorders(params={"symbol": "RATOUSDT"})
             # if isinstance(open_orders, list):
             #     print(f"  找到 {len(open_orders)} 个 BTCUSDT 的挂单。")
-            #     # for order in open_orders:
-            #     #     print(f"    - 订单 ID: {order.get('orderId')}, 价格: {order.get('price')}")
+            #     for order in open_orders:
+            #         print(f"    - 订单 ID: {order.get('orderId')}, 价格: {order.get('price')}")
+
+            #         # print(client.trade.delete_order(params={"symbol": "RATOUSDT", "orderId": order.get('orderId')}))
             # else:
             #     print(f"  挂单响应: {open_orders}")
 
@@ -565,7 +568,7 @@ if __name__ == '__main__':
             #     'coin': 'USDT',
             #     'netWork': 'ETH',
             #     'address': '0xb1f33026db86a86372493a3b124d7123e9045bb4',
-            #     'amount': 257
+            #     'amount': 301.5
             # }
             # withdraw_rst = client.wallet.post_withdraw(withdraw_params)
             # print(f"  提笔响应:{withdraw_rst}")
@@ -574,7 +577,7 @@ if __name__ == '__main__':
             # print("\n获取提币历史信息...")
             # withdraw_list = client.wallet.get_withdraw_list()
             # print("历史信息:")
-            # print(f"  {withdraw_list}")
+            # print(f"  {withdraw_list[0]}")
         except requests.exceptions.RequestException as e:
             print(f"  私有 API 请求期间出错: {e}")
             if e.response is not None:

+ 2 - 2
price_checker_ok.py

@@ -20,8 +20,8 @@ ARB_EXECUTOR_URL = "http://localhost:5002/submit_process"
 
 # --- 配置部分 ---
 IN_AMOUNT_TO_QUERY = decimal.Decimal('350')
-EXCHANGE_OUT_AMOUNT = decimal.Decimal('10000000')
-PROFIT_LIMIT = 0.015                                                # 1.5%利润才触发交易,稳妥模式
+EXCHANGE_OUT_AMOUNT = decimal.Decimal('5000000')
+PROFIT_LIMIT = 0.03                                                 # 触发交易的利润阈值
 IN_TOKEN_ADDRESS = '0xdAC17F958D2ee523a2206206994597C13D831ec7'     # USDT on Ethereum
 IN_TOKEN_DECIMALS = 6
 OUT_TOKEN_ADDRESS = '0xf816507E690f5Aa4E29d164885EB5fa7a5627860'    # RATO on Ethereum