97 lines
3.5 KiB
Python
97 lines
3.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Get MEXC Exchange Info for ETHUSDC
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
|
|
def get_mexc_exchange_info():
|
|
"""Get detailed MEXC exchange information for ETHUSDC"""
|
|
print("Getting MEXC Exchange Info for ETHUSDC...")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
# Get exchange info from MEXC public API
|
|
resp = requests.get('https://api.mexc.com/api/v3/exchangeInfo')
|
|
data = resp.json()
|
|
|
|
# Find ETHUSDC symbol
|
|
ethusdc_info = None
|
|
for symbol_info in data.get('symbols', []):
|
|
if symbol_info['symbol'] == 'ETHUSDC':
|
|
ethusdc_info = symbol_info
|
|
break
|
|
|
|
if not ethusdc_info:
|
|
print("❌ ETHUSDC symbol not found")
|
|
return
|
|
|
|
print("✅ Found ETHUSDC symbol information")
|
|
print(f"Symbol: {ethusdc_info['symbol']}")
|
|
print(f"Status: {ethusdc_info['status']}")
|
|
print(f"Base Asset: {ethusdc_info['baseAsset']}")
|
|
print(f"Quote Asset: {ethusdc_info['quoteAsset']}")
|
|
print(f"Base Precision: {ethusdc_info['baseAssetPrecision']}")
|
|
print(f"Quote Precision: {ethusdc_info['quoteAssetPrecision']}")
|
|
|
|
print("\nFilters:")
|
|
print("-" * 20)
|
|
|
|
lot_size_filter = None
|
|
min_notional_filter = None
|
|
|
|
for filter_info in ethusdc_info.get('filters', []):
|
|
filter_type = filter_info['filterType']
|
|
print(f"\n{filter_type}:")
|
|
|
|
if filter_type == 'LOT_SIZE':
|
|
lot_size_filter = filter_info
|
|
elif filter_type == 'MIN_NOTIONAL':
|
|
min_notional_filter = filter_info
|
|
|
|
for key, value in filter_info.items():
|
|
if key != 'filterType':
|
|
print(f" {key}: {value}")
|
|
|
|
# Analyze requirements
|
|
print("\n" + "=" * 50)
|
|
print("ANALYSIS:")
|
|
|
|
if lot_size_filter:
|
|
min_qty = float(lot_size_filter['minQty'])
|
|
step_size = lot_size_filter['stepSize']
|
|
|
|
print(f"Minimum Quantity: {min_qty} ETH")
|
|
print(f"Step Size: {step_size}")
|
|
|
|
# Check our test quantity
|
|
test_qty = 0.009871
|
|
print(f"\nOur quantity: {test_qty}")
|
|
print(f"Meets minimum?: {'✅ Yes' if test_qty >= min_qty else '❌ No'}")
|
|
|
|
# Check step size compliance
|
|
if '.' in step_size:
|
|
decimal_places = len(step_size.split('.')[-1].rstrip('0'))
|
|
properly_rounded = round(test_qty, decimal_places)
|
|
print(f"Required decimals: {decimal_places}")
|
|
print(f"Properly rounded: {properly_rounded}")
|
|
|
|
if min_notional_filter:
|
|
min_notional = float(min_notional_filter['minNotional'])
|
|
test_value = 0.009871 * 3031 # approximate price
|
|
print(f"\nMinimum Order Value: ${min_notional}")
|
|
print(f"Our order value: ${test_value:.2f}")
|
|
print(f"Meets minimum?: {'✅ Yes' if test_value >= min_notional else '❌ No'}")
|
|
|
|
print("\n💡 RECOMMENDATIONS:")
|
|
if lot_size_filter and min_notional_filter:
|
|
safe_qty = max(float(lot_size_filter['minQty']) * 1.1, min_notional / 3000)
|
|
print(f"Use quantity >= {safe_qty:.6f} ETH for safe trading")
|
|
print(f"This equals ~${safe_qty * 3031:.2f} USD")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
get_mexc_exchange_info() |