Files
NewStock/qmt/run.py
2026-01-04 22:43:13 +08:00

65 lines
1.6 KiB
Python

# coding:utf-8
"""
QMT交易系统启动器
用于直接运行,避免包导入问题
"""
import sys
import os
# 将当前目录添加到Python路径
current_dir = os.path.dirname(os.path.abspath(__file__))
if current_dir not in sys.path:
sys.path.insert(0, current_dir)
# 导入模块
from qmt_engine import QMTEngine
from api_server import create_api_server
import threading
import uvicorn
def main():
"""主函数 - 启动QMT交易引擎和API服务器"""
print(">>> 系统正在启动...")
# 创建QMT引擎实例
engine = QMTEngine()
try:
# 初始化引擎
engine.initialize('config.json')
print("✅ QMT引擎初始化成功")
except Exception as e:
print(f"❌ QMT引擎初始化失败: {e}")
sys.exit(1)
# 启动交易线程
trading_thread = threading.Thread(target=engine.run_trading_loop, daemon=True)
trading_thread.start()
print("✅ 交易线程启动成功")
# 创建API服务器
app = create_api_server(engine)
print("✅ API服务器创建成功")
# 启动Web服务
print(">>> Web服务启动: http://localhost:8001")
try:
uvicorn.run(
app,
host="0.0.0.0",
port=8001,
log_level="warning",
access_log=False
)
except KeyboardInterrupt:
print("\n>>> 正在关闭系统...")
engine.stop()
print(">>> 系统已关闭")
if __name__ == '__main__':
# 使用 -u 参数运行是最佳实践: python -u run.py
# 但这里也在代码里强制 flush 了
main()