本项目提供一个端到端的自动化交易流程示例,涵盖以下四个核心阶段:
- 每 3 分钟通过 Futu OpenAPI 采集行情与账户信息。
- 将原始数据整理成结构化的 Prompt 载荷。
- 将 Prompt 发送至兼容 DeepSeek 的大语言模型获取交易决策。
- 根据决策结果调用 Futu 交易接口自动下单。
免责声明: 本项目仅用于学习与技术验证,真实资金交易存在重大风险,请谨慎使用。
src/
├── main.py # 命令行入口,负责流程编排
└── trading_bot/
├── __init__.py # 包装对外可用的公共接口
├── data_fetcher.py # Futu 行情与账户数据采集逻辑
├── data_models.py # 组件间共享的 Pydantic 数据模型
├── indicators.py # 技术指标计算工具
├── llm_client.py # DeepSeek/OpenAI API 调用封装
├── order_executor.py # 下单与交易模式控制
└── scheduler.py # 异步调度器,协调周期性任务
-
在终端创建并激活 Python 3.10 及以上版本的虚拟环境:
python -m venv .venv # Linux / macOS source .venv/bin/activate # Windows PowerShell .\.venv\Scripts\Activate.ps1
-
安装项目依赖:
pip install -e . -
确保本地已启动并可访问 Futu OpenD 服务。
将 env.example 复制为 .env,并根据实际情况填写变量:
DEEPSEEK_API_KEY:DeepSeek 兼容接口的 API Key(若未设置则回退至OPENAI_API_KEY)。DEEPSEEK_API_BASE_URL:自定义 DeepSeek API 地址(可选)。FUTU_HOST:Futu OpenD 服务的主机名或 IP。FUTU_QUOTE_PORT/FUTU_TRADE_PORT:OpenD 暴露的行情与交易端口。FUTU_OPENAPI_APP_ID/FUTU_OPENAPI_APP_SECRET:富途牛牛提供的 OpenAPI 应用凭证。FUTU_TRADE_PASSWORD:解锁真实交易所需的交易密码(仅在实盘模式必填)。FUTU_TRADING_MODE:交易模式,paper表示模拟交易,live表示真实交易(默认paper)。FUTU_TRADING_MARKET:交易市场,支持hk(港股)、us(美股)和cn(A 股)。FUTU_ACCOUNT_ID:在存在多个交易账户时指定具体账户(可选)。POLL_INTERVAL_SECONDS:默认轮询周期(秒),当未通过 CLI 指定时使用。HK_SYMBOLS:逗号分隔的港股代码列表,例如HK.00700,HK.00005。CN_SYMBOLS:逗号分隔的 A 股代码列表,例如SH.000300,SZ.000001。US_SYMBOLS:逗号分隔的美股代码列表,例如US.AAPL,US.MSFT。
通过命令行运行交易循环,并指定需要跟踪的股票代码:
python -m trading_bot.main SH.000300常用命令行参数:
--interval:轮询周期(秒),默认 180。--language:Prompt 语言,可选en或zh。--host/--quote-port/--trade-port:Futu OpenD 连接参数。--trading-mode:paper或live,切换模拟/实盘环境。--trading-market:订单路由市场,支持hk、us、cn。--trade-password:交易密码(若未设置则回退至FUTU_TRADE_PASSWORD)。--account-id:指定使用的 Futu 账户 ID(若未设置则回退至FUTU_ACCOUNT_ID)。--log-level:日志等级。
当命令行未显式传入股票代码时,程序会依次读取环境变量 HK_SYMBOLS、CN_SYMBOLS 与 US_SYMBOLS 作为默认跟踪列表。
按下 Ctrl+C 可以安全退出循环。
- 通过继承
PromptFormatter自定义 Prompt 模板或语言风格。 - 在
OrderExecutor中加入风控或仓位管理策略以增强安全性。 - 扩展
TradingScheduler,将行情与决策结果落盘持久化或推送到外部系统。
安装开发依赖并运行自动化测试:
pip install -e .[dev]
pytest如只需验证语法,可执行:
python -m compileall src