add
This commit is contained in:
153
test/_test_mt5_fixed.py
Normal file
153
test/_test_mt5_fixed.py
Normal file
@@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 添加 ccxt 路径
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from ccxt import mt5 as mt5_sync
|
||||
from ccxt.async_support import mt5 as mt5_async
|
||||
|
||||
# 配置日志
|
||||
logging.basicConfig(level=logging.INFO, format='%(message)s')
|
||||
logger = logging.getLogger('MT5-Fixed-Test')
|
||||
|
||||
# 测试配置 - 使用你的配置
|
||||
TEST_CONFIG = {
|
||||
'apiKey': '76888962',
|
||||
'secret': 'LZ-trade666888',
|
||||
'hostname': '43.167.188.220:5000',
|
||||
'host': '18.163.85.196',
|
||||
'port': 443,
|
||||
'sandbox': True,
|
||||
'verbose': True,
|
||||
}
|
||||
|
||||
|
||||
def test_url_fix():
|
||||
"""测试 URL 修复"""
|
||||
logger.info("🔧 测试 URL 修复...")
|
||||
|
||||
try:
|
||||
exchange = mt5_sync(TEST_CONFIG)
|
||||
|
||||
# 检查 URLs 配置
|
||||
logger.info("检查 URLs 配置:")
|
||||
logger.info(f" Public API: {exchange.urls['api']['public']}")
|
||||
logger.info(f" Private API: {exchange.urls['api']['private']}")
|
||||
|
||||
# 测试连接
|
||||
logger.info("\n测试连接...")
|
||||
token = exchange.get_token()
|
||||
logger.info(f"✅ 连接成功! Token: {token}")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"❌ 测试失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
|
||||
async def test_async_url_fix():
|
||||
"""测试异步 URL 修复"""
|
||||
logger.info("\n🔧 测试异步 URL 修复...")
|
||||
|
||||
exchange = None
|
||||
try:
|
||||
exchange = mt5_async(TEST_CONFIG)
|
||||
|
||||
# 检查 URLs 配置
|
||||
logger.info("检查异步 URLs 配置:")
|
||||
logger.info(f" Public API: {exchange.urls['api']['public']}")
|
||||
logger.info(f" Private API: {exchange.urls['api']['private']}")
|
||||
|
||||
# 测试连接
|
||||
logger.info("\n测试异步连接...")
|
||||
token = await exchange.get_token()
|
||||
logger.info(f"✅ 异步连接成功! Token: {token}")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"❌ 异步测试失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
finally:
|
||||
if exchange:
|
||||
await exchange.close()
|
||||
|
||||
|
||||
def test_direct_connection():
|
||||
"""测试直接连接"""
|
||||
logger.info("\n🔧 测试直接连接...")
|
||||
|
||||
try:
|
||||
# 使用 requests 直接测试连接
|
||||
import requests
|
||||
|
||||
url = "http://43.167.188.220:5000/Connect"
|
||||
params = {
|
||||
'user': '76888962',
|
||||
'password': 'LZ-trade666888',
|
||||
'host': '18.163.85.196',
|
||||
'port': 443,
|
||||
'connectTimeoutSeconds': 30
|
||||
}
|
||||
|
||||
logger.info(f"测试直接请求: {url}")
|
||||
response = requests.get(url, params=params, timeout=30)
|
||||
|
||||
logger.info(f"状态码: {response.status_code}")
|
||||
logger.info(f"响应内容: {response.text}")
|
||||
|
||||
if response.status_code == 200:
|
||||
logger.info("✅ 直接连接成功!")
|
||||
return True
|
||||
else:
|
||||
logger.error(f"❌ 直接连接失败: {response.status_code}")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"❌ 直接连接测试失败: {e}")
|
||||
return False
|
||||
|
||||
|
||||
async def main():
|
||||
"""运行修复测试"""
|
||||
print("🚀 MT5 URL 修复测试")
|
||||
print("="*50)
|
||||
|
||||
# 测试直接连接
|
||||
direct_success = test_direct_connection()
|
||||
|
||||
# 测试同步版本
|
||||
sync_success = test_url_fix()
|
||||
|
||||
# 测试异步版本
|
||||
async_success = await test_async_url_fix()
|
||||
|
||||
print("\n" + "="*50)
|
||||
print("📊 修复测试结果")
|
||||
print(f"直接连接: {'✅ 通过' if direct_success else '❌ 失败'}")
|
||||
print(f"同步版本: {'✅ 通过' if sync_success else '❌ 失败'}")
|
||||
print(f"异步版本: {'✅ 通过' if async_success else '❌ 失败'}")
|
||||
|
||||
if direct_success and sync_success and async_success:
|
||||
print("🎉 所有修复测试通过!")
|
||||
else:
|
||||
print("\n⚠️ 如果直接连接失败,请检查:")
|
||||
print(" 1. 网络连接是否正常")
|
||||
print(" 2. 服务器地址是否正确")
|
||||
print(" 3. 防火墙设置")
|
||||
print(" 4. 服务器状态")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user