______________________________________________________________________
标题:“交易大厅人工智能模拟器” 表情符号📈" 颜色来源:蓝色 颜色To:绿色 sdk:毕业 sdk版本:“5.47.2” app_file:app.py 固定:false
交易大厅人工智能模拟器
一个代理交易大厅模拟器,多个人工智能交易员可以按计划进行研究、决策和交易。包括实时Gradio仪表板、本地帐户数据库和用于市场数据、帐户和推送通知的可插拔MCP服务器。
🚀 快速开始
本地开发
# Clone and install
git clone https://github.com/CarolinaCapilla/trader-floor-ai-simulator.git
cd trader-floor-ai-simulator
uv pip install -e .
# Set up environment variables (copy .env.example to .env)
# Add your API keys: OPENAI_API_KEY, POLYGON_API_KEY, etc.
# Run the UI
python app.py
# Or run the scheduler
python trading_floor.py部署到铁路(建议用于定期交易)
railway login
railway init
railway up看 铁路.md 有关完整的部署指南,请参阅:
- 通过卷持久化数据库
- 每日计划交易运行
- 环境变量设置
- 监控和故障排除
🏗️ 特性
- 人工智能驱动的交易循环:每位交易员研究、制定计划并执行交易
- 多代理组合:交易代理通过MCP利用专门的研究代理
- Web界面(Gradio):包含投资组合价值、图表、日志、持股和交易的实时仪表板
- 可插入的市场数据:使用Polygon MCP(付费或实时)或本地市场服务器
- 持久状态:SQLite支持的帐户和登录
accounts.db - 推送通知:交易后摘要的可选Pushover集成
- 可配置调度:连续运行或固定迭代次数
🏗️ 建筑
核心部件:
- 交易商代理 (
traders.Trader):使用工具协调研究和交易 - 研究员代理人:通过MCP服务器作为工具暴露给每个交易者
- MCP服务器 (
mcp_params.py):
- accounts_server.py 用于帐户工具和资源 - push_server.py 用于推送通知(可选) - 市场数据来源: - 多边形MCP(uvx --from git+https://github.com/polygon-io/mcp_polygon@v0.1.0 mcp_polygon)当配置时,或 - 本地 market_server.py
- 调度器 (
trading_floor.py):每N分钟运行一次所有交易者(或固定迭代次数) - 用户界面 (
app.py):Gradio仪表板轮询实时帐户数据和日志 - 数据库 (
database.py):SQLite表accounts,logs,以及market
📋 先决条件
- Python 3.12+(除非您设置了运行时,否则Hugging Face Spaces默认为Python 3.10。如果使用HF Spaces,则:
- 添加a runtime.txt 随着 python-3.12 或 - 删除需要更新stdlib行为的依赖项。)
uv用于快速安装/运行(或pip)- 可选:Polygon API密钥(用于市场数据MCP)
- 可选:Pushover凭据(用于通知)
🛠️ 安装
- 克隆存储库
git clone
cd trader-floor-ai-simulator- 安装依赖项
# with uv (recommended)
uv sync
# or with pip
pip install -r requirements.txt- 设置环境变量
创建一个 .env 在项目根目录中:
# Server and scheduling
RUN_EVERY_N_MINUTES=60
RUN_EVEN_WHEN_MARKET_IS_CLOSED=false
USE_MANY_MODELS=false
MAX_ITERATIONS=1
# Market data
POLYGON_API_KEY=
POLYGON_PLAN=free # free | paid | realtime
# Research tools
BRAVE_API_KEY=
# Model providers (use any you plan to call)
DEEPSEEK_API_KEY=
GOOGLE_API_KEY=
GROK_API_KEY=
OPENROUTER_API_KEY=
# Push notifications (optional)
PUSHOVER_USER=
PUSHOVER_TOKEN=🚀 用法
运行Gradio仪表板
uv run app.py- 在浏览器中打开仪表板。它会自动刷新日志(约0.5秒)和投资组合/图表/持股/交易(约120秒)。调整定时器
app.py如果需要的话。
按计划运行交易者
# run once (default MAX_ITERATIONS=1)
uv run trading_floor.py
# run N iterations
MAX_ITERATIONS=3 uv run trading_floor.py
# run continuously every N minutes
MAX_ITERATIONS=1000000 RUN_EVERY_N_MINUTES=60 uv run trading_floor.py- 连续运行时按Ctrl+C停止。
📁 项目结构
trader-floor-ai-simulator/
├── accounts.py # Account model and operations
├── accounts_client.py # MCP client for accounts server
├── accounts_server.py # MCP server exposing account tools/resources
├── account.db # SQLite database (ignored by git)
├── app.py # Gradio UI
├── database.py # SQLite setup and CRUD helpers
├── market.py # Market data integration (Polygon or fallback)
├── market_server.py # Local MCP server for market data
├── mcp_params.py # MCP server parameters (accounts, push, market)
├── push_server.py # Pushover MCP server (optional)
├── traders.py # Trader and Researcher agent glue
├── trading_floor.py # Scheduler to run traders periodically
├── requirements.txt / pyproject.toml
└── README.md🔧 配置
- 调度:
RUN_EVERY_N_MINUTES,MAX_ITERATIONS,RUN_EVEN_WHEN_MARKET_IS_CLOSED - 模型:切换
USE_MANY_MODELS使用多个模型后端运行交易者 - 市场数据:设置
POLYGON_PLAN到free,paid,或realtime;提供POLYGON_API_KEY - 推:提供
PUSHOVER_USER和PUSHOVER_TOKEN启用通知 - 存储器(MCP):本地内存DB是在以下位置创建的
memory/自动地
🤝 贡献
- 复刻仓库
- 创建要素分支:
git checkout -b feature/amazing-feature - 提交您的更改:
git commit -m 'Add amazing feature' - 推到分支:
git push origin feature/amazing-feature - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可——添加 LICENSE 文件如果丢失。
🐛 故障排除
常见问题
Failed to spawn: accounts_server.py:确保文件存在并且mcp_params.py参考文献accounts_server.pyUnable to open connection to local database ./memory/.db: 14:
- 确保 memory/ 文件夹已存在(应用程序现在会自动创建它) - 使用绝对值 LIBSQL_URL 如果在其他地方运行工具
- 多边形API错误:设置
POLYGON_API_KEY和POLYGON_PLAN - UI未更新:定时器较低
app.py或触发新的交易者挤兑
调试模式
根据需要在shell中启用其他日志记录(示例):
export MAX_ITERATIONS=1
export RUN_EVERY_N_MINUTES=1🔄 未来的增强功能
- \[\]将用户界面迁移到Vue.js/Nuxt.js
- \[\]导出报告(CSV/PDF)
📞 支持
- 打开一个包含日志、复制步骤和环境详细信息的问题。
