Browse Source

mexc contract v1

skyffire 6 tháng trước cách đây
mục cha
commit
34f5f08be9
1 tập tin đã thay đổi với 10 bổ sung11 xóa
  1. 10 11
      price_checker.py

+ 10 - 11
price_checker.py

@@ -69,27 +69,26 @@ def get_openocean_price_vs_base_currency(chain_name, in_token_addr, out_token_ad
         return {"error": f"OO({chain_name})请求错误: {e}"}
 
 
-# MEXC 现货 (获取 目标代币/USDT 价格)
-def get_mexc_spot_price_usdt(pair_symbol):
-    # MEXC API v3: https://mxcdevelop.github.io/apidocs/spot_v3_en/#ticker-price
-    # pair_symbol should be like 'BTCUSDT', 'ETHUSDT', 'MOODENUSDT'
-    url = "https://api.mexc.com/api/v3/ticker/price"
-    params = {'symbol': pair_symbol.replace('_', '')}  # MEXC uses 'BTCUSDT' not 'BTC_USDT'
+# MEXC 获取价格
+def get_mexc_contract_price_usdt(pair_symbol):
+    url = "https://contract.mexc.com/api/v1/contract/ticker"
+    params = {'symbol': pair_symbol}
     try:
         r = requests.get(url, params=params, proxies=proxies, timeout=10);
         r.raise_for_status();
         data = r.json()
+        data = data['data']
         # MEXC an array of tickers if no symbol is provided, or a single object if symbol is specific
-        if isinstance(data, dict) and data.get('symbol') == params['symbol'] and 'price' in data:
-            return {"price_target_usdt": decimal.Decimal(data['price'])}
+        if isinstance(data, dict) and data.get('symbol') == params['symbol'] and 'ask1' in data:
+            return {"price_target_usdt": decimal.Decimal(data['ask1'])}
         elif isinstance(data, list) and len(data) == 1 and data[0].get('symbol') == params['symbol'] and 'price' in \
                 data[0]:  # Sometimes it returns a list with one item
             return {"price_target_usdt": decimal.Decimal(data[0]['price'])}
         else:
             error_msg = data.get('msg', '未知MEXC错误或交易对不存在') if isinstance(data, dict) else 'MEXC响应格式不正确'
-            return {"error": f"MEXC现货({pair_symbol}) API错误: {error_msg}"}
+            return {"error": f"MEXC合约({pair_symbol}) API错误: {error_msg}"}
     except Exception as e:
-        return {"error": f"MEXC现货({pair_symbol})请求错误: {e}"}
+        return {"error": f"MEXC合约({pair_symbol})请求错误: {e}"}
 
 
 # Binance (获取 基础货币/USDT 价格, e.g., ETH/USDT)
@@ -162,7 +161,7 @@ def update_data_for_plotly_and_table():
                                                        AMOUNT_TO_QUERY_OPENOCEAN_IN_ETH)
 
         # MEXC: TARGET_ASSET / USDT (e.g., MOODEN/USDT)
-        mexc_target_usdt_data = get_mexc_spot_price_usdt(MEXC_TARGET_SPOT_PAIR_USDT)
+        mexc_target_usdt_data = get_mexc_contract_price_usdt(MEXC_TARGET_SPOT_PAIR_USDT)
 
         # Binance: BASE_CURRENCY / USDT (e.g., ETH/USDT)
         binance_base_usdt_data = get_binance_base_currency_price_usdt(BINANCE_BASE_CURRENCY_PAIR_USDT)