Skip to content

jjckson/1

Repository files navigation

量化交易自动化流水线

本项目提供一个端到端的自动化交易流程示例,涵盖以下四个核心阶段:

  1. 每 3 分钟通过 Futu OpenAPI 采集行情与账户信息。
  2. 将原始数据整理成结构化的 Prompt 载荷。
  3. 将 Prompt 发送至兼容 DeepSeek 的大语言模型获取交易决策。
  4. 根据决策结果调用 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       # 异步调度器,协调周期性任务

安装

  1. 在终端创建并激活 Python 3.10 及以上版本的虚拟环境:

    python -m venv .venv
    # Linux / macOS
    source .venv/bin/activate
    # Windows PowerShell
    .\.venv\Scripts\Activate.ps1
  2. 安装项目依赖:

    pip install -e .
  3. 确保本地已启动并可访问 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 语言,可选 enzh
  • --host / --quote-port / --trade-port:Futu OpenD 连接参数。
  • --trading-modepaperlive,切换模拟/实盘环境。
  • --trading-market:订单路由市场,支持 hkuscn
  • --trade-password:交易密码(若未设置则回退至 FUTU_TRADE_PASSWORD)。
  • --account-id:指定使用的 Futu 账户 ID(若未设置则回退至 FUTU_ACCOUNT_ID)。
  • --log-level:日志等级。

当命令行未显式传入股票代码时,程序会依次读取环境变量 HK_SYMBOLSCN_SYMBOLSUS_SYMBOLS 作为默认跟踪列表。

按下 Ctrl+C 可以安全退出循环。

扩展方向

  • 通过继承 PromptFormatter 自定义 Prompt 模板或语言风格。
  • OrderExecutor 中加入风控或仓位管理策略以增强安全性。
  • 扩展 TradingScheduler,将行情与决策结果落盘持久化或推送到外部系统。

测试

安装开发依赖并运行自动化测试:

pip install -e .[dev]
pytest

如只需验证语法,可执行:

python -m compileall src

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages