---
title: "开源 QQQ 0DTE 期权自动交易系统 — 部署指南"
type: "Topics"
locale: "en"
url: "https://longbridge.com/en/topics/40600851.md"
description: "上次开源了方案很多人不会用，这次直接把做好的系统源代码给你们随便用！ 手动做 0DTE 期权太累？我用 Python 搭了一套完整的 QQQ 零日到期期权自动交易系统，支持双路径突破信号检测、市场状态自适应、三阶段动态止盈。已开源到 GitHub，本文详细介绍系统设计和核心功能。为什么做这个系统？做 0DTE 期权交易的朋友都知道痛点：反应慢：期权价格每秒都在变..."
datetime: "2026-05-10T02:56:57.000Z"
locales:
  - [en](https://longbridge.com/en/topics/40600851.md)
  - [zh-CN](https://longbridge.com/zh-CN/topics/40600851.md)
  - [zh-HK](https://longbridge.com/zh-HK/topics/40600851.md)
author: "[热血青年](https://longbridge.com/en/profiles/17928542.md)"
---

# 开源 QQQ 0DTE 期权自动交易系统 — 部署指南

[上次开源了方案很多人不会用，这次直接把做好的系统源代码给你们随便用！](https://1797346220.github.io/boke/projects/)

> 手动做 0DTE 期权太累？我用 Python 搭了一套完整的 QQQ 零日到期期权自动交易系统，支持双路径突破信号检测、市场状态自适应、三阶段动态止盈。已开源到 GitHub，本文详细介绍系统设计和核心功能。

* * *

## 为什么做这个系统？

做 0DTE 期权交易的朋友都知道痛点：

-   **反应慢**：期权价格每秒都在变，手动操作永远跟不上
-   **情绪干扰**：该止损时心存侥幸，该止盈时贪心不足
-   **策略执行不一致**：明明有规则，一到关键时刻就手抖

所以我决定把策略写成代码——**信号检测、下单执行、止盈止损全自动**，人只需要负责监控和调参。

系统基于 **Longbridge OpenAPI** 构建，实时订阅 QQQ 行情，检测到突破信号后自动选择 0DTE 期权合约、下单、管理仓位。

* * *

## 系统架构

## 整个系统分为几层：

**技术栈：**

组件

技术选型

交易引擎

Python 3.14 + NumPy + SciPy

API 通信

Longbridge OpenAPI (WebSocket + REST)

桌面 GUI

Tkinter + pystray 系统托盘

Web 仪表盘

Python 内置 http.server，零依赖

通知

飞书 Webhook

打包

PyInstaller 单文件 EXE

* * *

## 核心策略：双路径突破

系统的核心是 **v6.2 双路径突破策略**，不是单一信号，而是根据市场节奏自动切换两种模式：

### Classic 模式（经典突破）

-   **突破窗口**：3 根 K 线（5 分钟级别）
-   **量能要求**：成交量 \> 20 日均量 × 0.8
-   **需要回踩确认**：突破后等回调再入场

**适用场景：** 趋势明确的行情，稳扎稳打。

### Accelerated 模式（加速突破）

-   **突破窗口**：2 根 K 线（更敏捷）
-   **量能要求**：成交量 \> 20 日均量 × 1.2
-   **近 3 根回踩检测**：快速确认后入场

**适用场景：** 急涨急跌行情，快速响应。

两种模式自动切换——系统会根据 K 线斜率和量能变化判断当前是趋势行情还是加速行情，选择最优路径。

* * *

## 信号过滤：多层确认机制

触发突破信号后，还要通过多层过滤才能真正下单：

### 预加载滤镜（6 取 4）

每根 K 线实时计算 6 个指标状态，信号触发时只需查询，不需重算：

滤镜

做多条件

做空条件

SMA20

价格 \> SMA20 且上升

价格 < SMA20 且下降

SMA50

价格 \> SMA50

价格 < SMA50

当日位置

< 85%（不在顶部做多）

\> 15%（不在底部做空）

趋势

最近 5 根 ≥ 3 阳

最近 5 根 ≥ 3 阴

VWAP

价格 \> VWAP

价格 < VWAP

MACD

MACD 柱 \> 0

MACD 柱 < 0

**6 个中至少过 4 个才允许入场。** 趋势行情下 MACD 降级为可选项（急涨初期 MACD 可能还没翻正）。

### 核心过滤（3 项全过）

过滤项

条件

成交量

当前量 \> 20 日均量 × 倍数

动量

K 线方向与信号方向一致

K 线实体

实体比例 \> 最小阈值

## 市场状态自适应：一套策略三种打法

这是系统最核心的设计——**不是一套参数打天下，而是根据市场状态动态调整所有参数。**

### 市场状态检测

系统每根 K 线自动检测三种市场状态：

-   **trending（趋势市）**：波动放大 + 方向一致 + 趋势强
-   **neutral（中性）**：标准参数
-   **choppy（震荡市）**：波动缩小 + 方向不一致 + 趋势弱

检测基于最近 20 根 K 线的 4 个维度：

1.  波动幅度比（当前 5 根 vs 前 15 根）
2.  方向一致性（同向 K 线比例）
3.  趋势强度（简化 ADX：连续创新高/低次数）
4.  价格位置（在 20 根范围中的位置）

### 参数自适应

参数

趋势市

中性

震荡市

突破窗口

3 根（等确认）

3 根

2 根（极速入场）

回踩确认

需要

不需要

不需要

预加载滤镜

6 取 3（放宽）

6 取 3

6 取 2（更放宽）

止盈平仓

100% 平半仓（让利润跑）

80% 平半仓

50% 平半仓（快进快出）

止损

25%

25%

30%（容忍震荡）

超时退出

不设超时

4 分钟

8 分钟

仓位

70%

40%（风险低）

80%

**核心理念：**

-   **趋势市**：顺势入场，让利润跑，不怕回撤
-   **震荡市**：极速入场，快进快出，小仓位
-   **中性**：保守操作，控制风险

* * *

## 风控系统

### 动态止盈（按市场状态调整）

`趋势市：盈利 100% → 平仓 30% 仓位 → 追踪最高点回撤全平 中性：  盈利 80%  → 平仓 30% 仓位 → 追踪最高点回撤全平 震荡市：盈利 50%  → 平仓 30% 仓位 → 追踪最高点回撤全平`

### 多层止损

止损类型

触发条件

说明

固定止损

亏损 \>\= 25%

立即全平

时间止损

超时（4~8 分钟）

按市场状态动态调整

日亏损上限

当日亏损 \>\= 25%

当日停止交易

连亏冷却

连续亏损后

暂停交易，允许反向信号

收盘强平

美东 15:50

0DTE 必须收盘前平仓

### 仓位管理

-   单笔仓位：总资金的 8%
-   期权选择：OTM 虚值$2 行权价
-   最大同时持仓：3 个
-   信号强度→仓位倍数（强/中/弱）

* * *

## Web 仪表盘

系统内置零依赖 Web 仪表盘，用 Python 内置的 `http.server` 实现，不需要 Flask。

**设计特点：**

-   深色主题，卡片式布局
-   实时更新（5 秒自动刷新）
-   移动端适配（手机浏览器也能用）
-   状态栏：引擎状态、连接状态、当前价格
-   信号过滤面板：6 个滤镜状态实时显示
-   交易记录表格：盈亏一目了然
-   事件日志：系统运行状态

启动后浏览器访问 `http://localhost:8080` 即可查看。

* * *

## 桌面应用

## 双击 `main_app.py` 启动，包含：

-   **Tkinter 桌面窗口**：系统托盘常驻，实时监控
-   **设置界面**：4 个 Tab 页（信号/风控/窗口/API），在线调整参数
-   **API 密钥管理**：首次运行弹出配置向导
-   **配置热重载**：修改 settings.json 后自动生效，无需重启

### PyInstaller 打包

`# 打包为单文件 EXE build.bat # 或 pyinstaller qqq_trading.spec`

打包后双击 EXE 即可运行，无需 Python 环境。

* * *

## 集成 Longbridge API

### 行情订阅

`# WebSocket 实时订阅 QQQ 1 分钟 K 线 # 自动聚合为交易信号检测所需的数据`

### 自动下单

信号触发后自动：

1.  根据正股价格 + $2 偏移 生成 OTM 虚值期权合约代码
2.  通过 Longbridge REST API 市价下单
3.  最多重试 2 次，间隔 500ms

### 期权合约生成

`# Call: strike = floor(stock + 2) → 确保 OTM # Put:  strike = ceil(stock - 2)  → 确保 OTM # 格式: QQQ260508C710000.US`

### 飞书通知

每笔交易关键节点推送飞书消息：

-   🟢 开仓信号：合约、方向、入场价
-   🔴 止盈止损：触发价格、盈亏比例
-   ⚠️ 异常告警：连亏、API 断连、心跳超时

* * *

## 时区处理（关键坑点）

**长桥 API 的时间戳是 HKT(UTC+8)，不是美东时间！**

系统内部统一使用美东时间（Eastern Time），自动处理夏令时/冬令时切换：

`TZ_ET = ZoneInfo("America/New_York")  # 自动 EDT/EST 切换 TZ_HKT = timezone(timedelta(hours=8)) # 交易窗口：美东 09:35-15:50 # 收盘强平：美东 15:50`

* * *

## 安全与稳定性

### 看门狗

`watchdog.py` 监控交易引擎：

-   进程崩溃后自动重启（最多 5 次）
-   所有输出记录到日志文件
-   优雅退出（SIGINT/SIGTERM）

### 状态持久化

-   原子写入：先写临时文件再替换，防止崩溃时文件损坏
-   交易记录：`records/` 目录按日期存储 JSON
-   状态文件：`state.json` 供仪表盘实时读取

* * *

## 快速开始

### 1\. 克隆项目

开源地址在我的博客：[https://1797346220.github.io/boke/projects/](https://1797346220.github.io/boke/projects/)

### 2\. 安装依赖

`pip install -r requirements.txt`

依赖列表：

-   numpy, scipy（技术指标计算）
-   longbridge（Longbridge SDK）
-   pystray, Pillow（系统托盘）
-   requests（飞书通知）

### 3\. 配置

首次运行会弹出 API 密钥配置向导，填入 Longbridge 的 App Key、App Secret、Access Token 即可。

也可以手动编辑 `settings.json` 调整所有参数，修改后自动热重载。

### 4\. 启动

`# 桌面版（推荐）python main_app.py # 或使用启动脚本 start.bat`

* * *

## 项目结构

├── main\_app.py # 主入口（Tkinter GUI + 系统托盘）  
├── live\_trader.py # 核心交易引擎 v6.2  
├── trader\_web.py # Web 仪表盘  
├── dashboard\_web.py # 轻量 Web 仪表盘（无依赖）  
├── dashboard\_tk.py # Tkinter 桌面仪表盘  
├── config\_manager.py # 配置管理器  
├── settings\_gui.py # 设置界面  
├── update\_gist.py # 交易记录同步到 GitHub Gist  
├── watchdog.py # 看门狗（崩溃自动重启）  
├── backtest\_v6.py # 回测引擎（Black-Scholes 定价）  
├── settings.json # 交易参数配置  
├── requirements.txt # Python 依赖  
└── .env.example # 环境变量模板

* * *

## 设计理念

### 1\. 不是一套参数打天下

市场在变，策略也要变。系统的核心创新是**市场状态自适应**——自动检测 trending/neutral/choppy 三种状态，动态调整所有参数。

### 2\. 信号多层确认

不是"触发就交易"，而是预加载滤镜（6 取 4）+ 核心过滤（3 项全过），层层筛选，确保信号质量。

### 3\. 风控是生命线

25% 止损、动态超时、日亏损熔断、连亏冷却——所有参数都经过严格测试。期权波动大，风控不能松。

### 4\. 开箱即用

首次运行有配置向导，参数修改自动热重载，PyInstaller 打包单文件 EXE——降低使用门槛。

* * *

## 免责声明

⚠️ **本系统仅供学习和研究，不构成投资建议。**

-   期权交易风险极高，可能损失全部本金
-   建议先用模拟账户充分测试
-   实盘使用前请仔细检查所有参数配置
-   系统依赖 Longbridge API，确保网络稳定

* * *

## 开源地址

[https://1797346220.github.io/boke/projects/](https://1797346220.github.io/boke/projects/)

欢迎 Star ⭐ 和 Fork 🔱，有问题提 Issue！

$Invesco QQQ Trust(QQQ.US) $XIAOMI-W(01810.HK) 

* * *

_热血青年交易所 — 用代码做交易，用策略管风险_

### Related Stocks

- [QQQ.US](https://longbridge.com/en/quote/QQQ.US.md)
- [SQQQ.US](https://longbridge.com/en/quote/SQQQ.US.md)
- [PSQ.US](https://longbridge.com/en/quote/PSQ.US.md)
- [BYTED.NA](https://longbridge.com/en/quote/BYTED.NA.md)
- [01810.HK](https://longbridge.com/en/quote/01810.HK.md)
- [81810.HK](https://longbridge.com/en/quote/81810.HK.md)
- [HXXD.SG](https://longbridge.com/en/quote/HXXD.SG.md)
- [XIACY.US](https://longbridge.com/en/quote/XIACY.US.md)

## Comments (23)

- **热血青年 · 2026-05-11T14:12:43.000Z · 👍 2**: Everyone, note that real-time K-line data acquisition should adopt the subscription push mode with a delay of around 100ms. Don't use polling; I used to poll all the time and there was a lot of delay 😅.$Invesco QQQ Trust(QQQ.US)
- **CJ.YAN · 2026-06-01T12:47:04.000Z**: Seeing many parameters in setting.json are hard-coded, will there be any improvements?
- **热血青年 · 2026-05-27T13:43:18.000Z · 👍 1**: Day two of live trading, is this the charm of quantitative trading? $Invesco QQQ Trust(QQQ.US)$XIAOMI-W(01810.HK)
  - **Seanyue** (2026-05-27T13:55:53.000Z): Awesome
- **不奋东西 · 2026-05-21T15:38:58.000Z**: Just saw your article update. It turns out the development path of the program is quite similar, I also divided the market into three types, made 3 types of parameters, and also did reversal and mean reversion, but breakout is still the most used. On range-bound days, you get hit from both sides, as
- **黎诗 · 2026-05-21T14:34:38.000Z**: A man of great righteousness
- **华语歌手 · 2026-05-21T14:34:37.000Z**: Learned first
- **图图要爆炸 · 2026-05-19T06:10:35.000Z**: Bro, I don't get how to use this, and the group's QR code has expired. Please show me the ropes! 🤩
- **左侧+耐心 · 2026-05-13T06:57:31.000Z**: Has anyone successfully reproduced it? My backtest results using Codex were a bit poor 🥹
  - **苏辂** (2026-05-19T07:27:03.000Z): Impossible high
  - **0xcbb** (2026-05-28T08:31:47.000Z): I backtested it and it didn't work out.
- **V震天 · 2026-05-12T21:46:01.000Z**: Thanks🙏🏻
- **大获全胜 · 2026-05-12T17:56:10.000Z**: Awesome, must star it.
- **看空不做空—蓝迪 · 2026-05-12T01:17:55.000Z**: Awesome, learning, I'm gonna give you a star.
- **热血青年 · 2026-05-11T16:52:15.000Z · 👍 1**: This round of laddered profit-taking was executed beautifully! $Invesco QQQ Trust(QQQ.US)
- **揽风追月 · 2026-05-11T15:01:03.000Z**: Bro, Longbridge's US stock 0-day option margin requirement increases significantly after 2 PM, how do you handle this? Can't even buy a few options with 100k USD 😂
  - **热血青年** (2026-05-11T15:22:45.000Z): I can't trade after 2 o'clock either.
  - **duriancat** (2026-05-14T19:35:06.000Z): No trading after 2 o'clock or selling the next day's
- **Seanyue · 2026-05-11T14:25:26.000Z**: Awesome awesome
- **经历 · 2026-05-11T12:47:16.000Z**: Support, learn first.
