feat: 添加新闻监控、持仓管理、系统日志等功能

- 新增新闻爬取和监控模块 (news_crawler, news_monitor)
- 新增 LLM 分析模块 (llm_analyzer)
- 新增持仓管理和交易历史存储
- 新增系统日志功能
- 新增前端页面: News, Positions, Settings, SystemLog
- 更新路由和 API 接口
- 更新 .gitignore 排除敏感文件
This commit is contained in:
guaiwoluo2020
2026-03-17 11:32:37 +08:00
parent 51b2f30748
commit a705593955
33 changed files with 10667 additions and 948 deletions
+36 -7
View File
@@ -6,6 +6,7 @@
import sys
import os
import asyncio
import uvloop
import uvicorn
from fastapi import FastAPI
@@ -13,7 +14,6 @@ from fastapi.middleware.cors import CORSMiddleware
# 使用 uvloop 加速
asyncio_policy = uvloop.EventLoopPolicy()
import asyncio
asyncio.set_event_loop_policy(asyncio_policy)
from server import TradingServer
@@ -21,14 +21,16 @@ from routes_ea import create_ea_routes
from routes_trader import create_trader_routes
from routes_system import create_system_routes
from routes_market import create_market_routes
from routes_position import create_position_routes
from routes_news import create_news_routes
def create_app():
"""创建并配置 FastAPI 应用"""
# 初始化服务
server = TradingServer()
# 创建 FastAPI 应用
app = FastAPI(
title="高频交易服务 (HFT Trading Service)",
@@ -53,7 +55,7 @@ def create_app():
""",
version="2.0.0"
)
# 添加 CORS 中间件
app.add_middleware(
CORSMiddleware,
@@ -62,7 +64,7 @@ def create_app():
allow_methods=["*"],
allow_headers=["*"],
)
# 注册路由
app.include_router(create_ea_routes(server))
app.include_router(create_trader_routes(server))
@@ -72,9 +74,36 @@ def create_app():
server.pivot_detector,
server.pivot_monitor,
server.trend_analyzer,
server.pending_orders
server.pending_orders,
server.llm_analyzer
))
app.include_router(create_position_routes())
app.include_router(create_news_routes())
# 启动时设置事件循环
@app.on_event("startup")
async def startup_event():
loop = asyncio.get_running_loop()
server.llm_analyzer.set_event_loop(loop)
server.pivot_monitor.set_event_loop(loop)
# 设置系统日志的事件循环
from market.system_log import get_system_log
system_log = get_system_log()
system_log.set_event_loop(loop)
# 记录系统启动日志
system_log.add_log("system_startup", message="服务已启动")
# 启动新闻监控后台任务
from market.news_monitor import get_news_monitor
news_monitor = get_news_monitor()
news_monitor.set_event_loop(loop)
asyncio.create_task(news_monitor.run())
print("[Startup] 事件循环已设置")
print("[Startup] 新闻监控已启动")
return app