|
|
@@ -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)
|