瀏覽代碼

快速提現判斷,提高資金利用率

skyfffire 5 月之前
父節點
當前提交
0b10aa83c9
共有 4 個文件被更改,包括 53 次插入9 次删除
  1. 46 2
      arbitrage_process.py
  2. 3 3
      mexc_client.py
  3. 1 1
      price_checker_ok.py
  4. 3 3
      price_view.py

+ 46 - 2
arbitrage_process.py

@@ -538,8 +538,52 @@ class ArbitrageProcess:
         try:
             is_arrived = False
 
+            # 先進行快速提現判斷,如果不滿足條件就走後面的等待充值模式,雙模,這個步驟最多等待10分鐘
+            waiting_times = 10
+            while waiting_times > 0:
+                time.sleep(60)
+                deposit_list = mexc.wallet.get_deposit_list()
+
+                # 是否已經在列表中了,抹茶識別充值會稍微有點慢,所以要耐心等
+                is_list = False
+                # pending中的數量
+                pending_amount = Decimal(0)
+                for deposit in deposit_list:
+                    # 不屬于該路徑需要監聽的代幣
+                    if deposit['coin'] != self.coin:
+                        continue
+
+                    # 處理pending數量
+                    pending_amount = pending_amount + Decimal(deposit['amount'])
+
+                    # 檢查到沒到列表中
+                    if deposit['transHash'] != self.arbitrage_details['chain_buy_tx_hash']:
+                        continue
+                    is_list = True
+                
+                # 檢查是否滿足快速提現的條件
+                if is_list == True:
+                    # 交易所代幣余额判断
+                    balances = mexc.trade.get_account_info()['balances']
+                    asset_balance = 0
+                    for balance in balances:
+                        if balance['asset'] == self.coin:
+                            asset_balance = Decimal(balance['free'])
+                    
+                    # 最終判斷
+                    if asset_balance > pending_amount:
+                        msg = f"【flash】资产可以進行快速提現。{last_deposit_state}"
+                        logging.info(msg)
+                        add_state_flow_entry(self.process_item, self.current_state, msg, "success")
+
+                        self._set_state(self.STATE_TRANSFERRING_TO_CHAIN)
+                        return
+                
+                logging.info(f"正在檢查快速提現條件...({waiting_times}/10)")
+                waiting_times = waiting_times - 1
+
             # 最多等待30分钟
-            waiting_times = 60
+            waiting_times = 30
             last_deposit_state = None
             while waiting_times > 0:
                 deposit_list = mexc.wallet.get_deposit_list()
@@ -561,7 +605,7 @@ class ArbitrageProcess:
                     self._set_state(self.STATE_TRANSFERRING_TO_CHAIN)
                     return
                 
-                time.sleep(30)
+                time.sleep(60)
                 waiting_times = waiting_times - 1
 
             msg = f"等待充值到账超时(超过30分钟): {last_deposit_state}"

+ 3 - 3
mexc_client.py

@@ -471,7 +471,7 @@ if __name__ == '__main__':
 
 
             # params = {
-            #     'coin': 'USDT',
+            #     'coin': 'RATO',
             #     'netWork': 'ETH',
             # }
             # # print(client.wallet.post_deposit_address(params))
@@ -549,7 +549,7 @@ if __name__ == '__main__':
             #     "symbol": "RATOUSDT",  # 使用常见的交易对,如 MXUSDT 或 BTCUSDT
             #     "side": "SELL",
             #     "type": "MARKET",
-            #     "quantity": "190000",   # 根据交易对的最小名义价值/数量调整数量
+            #     "quantity": "770000",   # 根据交易对的最小名义价值/数量调整数量
             #     # "price": "0.0000290"     # 调整价格以便于测试
             # }
             # print(f"  测试订单参数: {test_order_params}")
@@ -561,7 +561,7 @@ if __name__ == '__main__':
             #     'coin': 'USDT',
             #     'netWork': 'ETH',
             #     'address': '0xb1f33026db86a86372493a3b124d7123e9045bb4',
-            #     'amount': 462
+            #     'amount': 495
             # }
             # withdraw_rst = client.wallet.post_withdraw(withdraw_params)
             # print(f"  提笔响应:{withdraw_rst}")

+ 1 - 1
price_checker_ok.py

@@ -27,7 +27,7 @@ ARB_EXECUTOR_URL = "http://localhost:5002/submit_process"
 # --- 配置部分 ---
 IN_AMOUNT_TO_QUERY = decimal.Decimal('350')
 EXCHANGE_OUT_AMOUNT = decimal.Decimal('30000000')
-PROFIT_LIMIT = 0.04                                                 # 触发交易的利润阈值
+PROFIT_LIMIT = 0.02                                                 # 触发交易的利润阈值
 IN_TOKEN_ADDRESS = '0xdAC17F958D2ee523a2206206994597C13D831ec7'     # USDT on Ethereum
 IN_TOKEN_DECIMALS = 6
 OUT_TOKEN_ADDRESS = '0xf816507E690f5Aa4E29d164885EB5fa7a5627860'    # RATO on Ethereum

+ 3 - 3
price_view.py

@@ -26,15 +26,15 @@ ARB_EXECUTOR_URL = "http://localhost:5002/submit_process"
 
 # --- 配置部分 ---
 IN_AMOUNT_TO_QUERY = decimal.Decimal('350')
-EXCHANGE_OUT_AMOUNT = decimal.Decimal('7000')
+EXCHANGE_OUT_AMOUNT = decimal.Decimal('350')
 PROFIT_LIMIT = 0.04                                                 # 触发交易的利润阈值
 IN_TOKEN_ADDRESS = '0xdAC17F958D2ee523a2206206994597C13D831ec7'     # USDT on Ethereum
 IN_TOKEN_DECIMALS = 6
-OUT_TOKEN_ADDRESS = '0x26E550AC11B26f78A04489d5F20f24E3559f7Dd9'    # out on Ethereum
+OUT_TOKEN_ADDRESS = '0x2e44f3f609ff5aA4819B323FD74690f07C3607c4'    # out on Ethereum
 USER_WALLET = '0xb1f33026Db86a86372493a3B124d7123e9045Bb4'
 USER_EXCHANGE_WALLET = '0xc71835a042F4d870B0F4296cc89cAeb921a9f3DA'
 SLIPPAGE = 1
-MEXC_TARGET_PAIR_USDT = 'KEKIUS_USDT'                                 # MEXC 现货交易对
+MEXC_TARGET_PAIR_USDT = 'PIN_USDT'                                 # MEXC 现货交易对
 CHAIN_ID = 1
 
 proxies = None # {'http': 'http://proxy_url:port', 'https': 'http://proxy_url:port'}