前几天,一位读者问我:

有没有适合零基础的量化交易教程?最好能做成一个装在自己电脑上、可以自动运行的交易系统。这样的东西怎么做,AI 又能帮到什么程度?

如果只回答“可以”,那几乎等于什么也没说。

因为网上所谓的“量化系统”,可能指三种完全不同的东西:

  • 一段拿历史数据计算收益的回测代码
  • 一个只展示行情和信号的本地软件
  • 一套连接券商账户、能够自动下单并持续监控的真实交易系统

粉丝想要的,显然是第三种。

所以这一期,我不只想教你运行一段演示程序,而是想把整张地图摊开:

  • 量化交易究竟是什么?
  • 一套真实系统由哪些部分组成?
  • 怎样一步步部署到个人电脑?
  • AI 应该接在哪里?

真实可运行,不等于真实能赚钱。

我们可以把数据、策略、回测、模拟盘、券商 API、风控和 AI 真正连接起来,但任何系统都不能绕过市场风险,也不能凭一段代码承诺收益。

一、量化交易不是预测未来,而是把决定写成规则

人交易时常说:

这只股票最近挺强,我感觉还能涨。

但程序听不懂“挺强”。

这就像你不能只对一个第一次做饭的人说“盐放适量”。你必须把感觉换成清清楚楚、能够重复执行的条件:

  • 什么时候买?
  • 买多少?
  • 什么时候卖?
  • 最多允许亏多少?

例如:

  • 短期均线上穿长期均线时,产生买入信号
  • 单个标的最多使用账户资金的 10%
  • 亏损达到某个阈值时退出
  • 当日总亏损超过上限后,停止所有新交易

这种把交易想法写成明确条件的过程,专业上叫作策略规则化(Strategy Formalization)。

程序根据这些条件给出的“买、卖或不动”,叫作交易信号(Trading Signal)。

因此,量化交易的本质不是“让 AI 猜下一只牛股”,而是完成四件事:

  1. 把想法变成明确规则
  2. 用历史数据检验规则
  3. 在模拟环境中验证运行
  4. 通过券商官方接口执行,并用风控限制风险

真正的量化系统,绝不只是一个策略文件。

二、小白先认识这八个基本概念

在继续拆系统之前,先把后面会反复出现的几个词讲明白。

你不需要背定义,只要先知道它们分别在回答什么问题。

\1. K 线:把一段时间的价格压缩成一根“小蜡烛”

一只股票一天之内会不断变化。

如果把每一秒的价格全部摊开,很难一眼看懂。于是,人们把一天的信息压缩成几个关键数据:

  • 开盘时是多少
  • 最高到过哪里
  • 最低跌到哪里
  • 收盘时是多少
  • 当天成交了多少

这组数据叫作开盘价、最高价、最低价、收盘价和成交量,英文缩写是 OHLCV。

把这些数据画出来,就是常见的K 线(Candlestick)。

一根 K 线可以代表一分钟、一天或一周,所以写策略时必须先统一时间周期。

\2. 均线:给摇摆的价格画一条“大致方向”

价格每天上下跳,很像一个人走路时不断左右晃动。

把最近若干天的价格取平均,就能看出他整体在往哪边走。

这条平均价格线叫作移动平均线(Moving Average,MA)。

如果对最近 15 天的收盘价做简单平均,就是15 日简单移动平均线(SMA 15)。

短期均线从下向上穿过长期均线,叫作金叉;反方向则叫作死叉

但要注意:

金叉和死叉只是根据历史价格生成的信号,不是未来一定涨跌的保证。

\3. 仓位:不是只决定买不买,还要决定买多少

同样判断正确,一个人投入 100 元,另一个人押上全部积蓄,承担的风险完全不同。

因此,系统不能只给出“买入”,还必须规定这次使用多少资金。

资金投入的比例叫作仓位(Position Size)。

决定每次买多少、总共持有多少的规则,叫作仓位管理(Position Sizing)。

很多策略不是输在方向,而是输在一次押得太重。

\4. 止损和止盈:提前写好什么时候退出

如果买入以后才临时决定“再等等看”,人的贪婪和恐惧就会不断改变标准。

更可控的办法,是在交易发生前就写清楚:

  • 什么情况下认错?
  • 什么情况下收下利润?

亏损达到预设条件后退出,叫作止损(Stop Loss)。

盈利达到预设条件后退出,叫作止盈(Take Profit)。

它们能限制单次交易的结果,但不能保证一定在设定价格成交。市场发生跳空时,实际损失仍可能超过预期。

\5. 市价单和限价单:现在成交,还是等到我的价格

去菜市场买东西,你可以说:

按现在的价格,立刻给我。

也可以说:

降到 10 元,我才买。

交易中的订单也有类似区别。

希望尽快按照市场可以获得的价格成交,叫作市价单(Market Order)。

只接受指定价格或更优价格,叫作限价单(Limit Order)。

两者各有取舍:

  • 市价单更重视成交,但价格可能不理想
  • 限价单能够控制价格,却可能一直无法成交

\6. 手续费和滑点:屏幕上的价格不等于最终成本

程序看到价格是 10 元,不代表你一定能用 10 元买到。

交易需要支付佣金等费用,而且从发出订单到真正成交之间,价格可能已经发生变化。

佣金等费用叫作交易费用(Transaction Costs)。

理想价格和实际成交价格之间的差距,叫作滑点(Slippage)。

回测如果不计算手续费和滑点,就像算开店利润时忘了房租和运费,结果通常会比现实好看。

\7. 收益率和胜率:赢得多,不等于最后赚得多

假设十次交易中,有九次各赚 10 元,最后一次却亏了 200 元。

你的判断多数时候都对,但总结果仍然亏损。

赚钱交易占全部交易的比例,叫作胜率(Win Rate)。

资金相对起点增长或减少的比例,叫作收益率(Return)。

评价一套策略不能只看胜率,还要结合:

  • 平均盈利
  • 平均亏损
  • 整体收益
  • 最大回撤

\8. 流动性:你想买卖时,市场上有没有人接

热门商品很容易卖掉。

冷门商品即使标着价格,也不一定能够立刻找到买家。交易市场同样如此。

资产能否在不明显影响价格的情况下迅速成交,叫作流动性(Liquidity)。

资金越大、标的越冷门,真实成交与回测假设之间的差距通常越明显。

由订单本身推动价格变化而产生的成本,叫作市场冲击(Market Impact)。

理解这八个概念以后,再看量化系统就不会只剩下一堆缩写:

  • K 线提供信息
  • 均线生成一种可能的信号
  • 仓位决定押多少
  • 订单类型决定怎样成交
  • 手续费、滑点和流动性决定理想结果能否接近现实

三、一套真实系统,至少有七个部分

如果把一套量化系统想象成一家自动运转的餐厅:

  • 行情数据是送进厨房的食材
  • 策略是菜谱
  • 风控是食品安全员
  • 订单系统是传菜员
  • 券商接口是连接顾客的窗口
  • 日志是每一张小票
  • 报警系统是烟雾报警器

少了菜谱,厨房不知道做什么。

少了安全员,菜谱再好也可能出事。

没有小票和报警器,出了问题也没人知道发生过什么。

换成专业语言,这套结构叫作自动化交易系统架构(Automated Trading System Architecture)。

它的完整链路是:

行情数据 → 策略信号 → 风控检查 → 订单管理 → 券商 API → 成交回报 → 日志与报警

\1. 行情数据:系统的眼睛

行情数据告诉系统价格、成交量、时间和交易状态。

专业上,这些信息叫作市场数据(Market Data)。

研究阶段可以读取本地 CSV 文件;真实运行时,通常要使用券商或数据服务提供的实时行情。

数据一旦缺失、延迟或时间错位,后面再聪明的策略也没有意义。

\2. 策略引擎:系统的大脑

策略引擎只负责回答两个问题:

  • 现在是否出现交易信号?
  • 目标仓位是多少?

这一部分专业上叫作策略引擎(Strategy Engine)。

它不应该直接拿着账户密钥随意下单。

研究逻辑和交易执行分开,后面才能单独测试、替换和审计。

\3. 风控引擎:系统的刹车

风控引擎要在订单发出前再检查一次:

  • 单次买入是否过大
  • 总仓位是否超限
  • 当日亏损是否达到停止线
  • 是否出现重复订单
  • 数据是否已经过期
  • 市场是否处于可交易时间

这套独立检查机制叫作交易前风控(Pre-trade Risk Control)。

策略说“买”,不代表系统一定会买。风控应该拥有最终否决权。

\4. 订单管理:系统的管家

真实订单并不是按下买入以后就结束了。

一笔订单可能处于不同状态:

  • 已提交
  • 部分成交
  • 全部成交
  • 已撤单
  • 被拒绝

负责追踪这些状态的部分,专业上叫作订单管理系统(Order Management System,OMS)。

它还要避免程序断线重连后重复买入。

\5. 券商接口:系统伸向真实市场的手

券商接口是本地程序与真实账户之间的桥梁。

它负责:

  • 查询账户资金
  • 查询持仓
  • 提交订单
  • 撤销订单
  • 接收成交结果

专业上,这种接口叫作券商 API(Broker API)。

把不同券商的接口翻译成系统统一格式的代码,叫作适配器(Adapter)。

不同券商的接口、权限和市场规则并不通用,因此不存在一份适用于所有账户的万能代码。

\6. 数据库与日志:系统的黑匣子

系统至少应该保存:

  • 交易信号
  • 风控结果
  • 订单编号
  • 成交结果
  • 持仓快照
  • 异常信息

这叫作日志记录与审计追踪(Logging and Audit Trail)。

否则系统出错以后,你连“它为什么买了这笔”都回答不了。

\7. 监控和报警:系统的值班员

监控系统负责发现:

  • 行情停止更新
  • 券商连接中断
  • 订单连续被拒
  • 持仓出现异常
  • 程序意外退出

专业上,这部分叫作监控与告警(Monitoring and Alerting)。

出现严重异常时,系统应该停止新交易,并立刻通知你。

这七个部分连接起来,才接近一套真实可操作的量化交易系统。

四、我先在本地跑通了第一站

为了确认整条路线不是停留在概念上,我先让程序拿着同一套规则回到过去,假设当时就这样买卖,再看看结果。

这种“用历史数据重放策略”的方法,专业上叫作回测(Backtesting)。

这次实验使用了开源框架 Backtrader,并在电脑上完成了最小回测。

实验使用官方示例中的甲骨文(ORCL)历史日线数据,具体条件如下:

  • 起始资金:1000
  • 每次固定交易:10 股
  • 均线周期:15 天
  • 手续费:每次成交金额的 0.1%

我设计了两种相反的规则:

  • **策略 A:追热闹。**价格高于均线时买入,低于均线时卖出。
  • **策略 B:捡便宜。**价格低于均线时买入,高于均线时卖出。

实验结果

2000 年

  • 策略 A(追热闹):1000 → 961.95,最大回撤约 15%
  • 策略 B(捡便宜):1000 → 1024.11,最大回撤约 14%

2001 年

  • 策略 A(追热闹):1000 → 942.67,最大回撤约 9%
  • 策略 B(捡便宜):1000 → 888.28,最大回撤约 16%

以上均为计入 0.1% 手续费后的期末资金。

这些数字只是教学回测,不是真实收益,而且还没有计算滑点。

但结果非常有代表性:

2000 年表现更好的策略 B,换到 2001 年反而亏得更多。

这说明,回测真正要验证的不是“能不能找到一组赚钱数字”,而是这套规则换一段行情以后还能不能活下来。

用一段数据调整策略,再换一段没有参与调整的数据检验,专业上叫作样本外测试(Out-of-sample Testing)。

表格中的“最大回撤”,可以理解成账户从阶段最高点往下掉得最深的一次。

专业上,这叫作最大回撤(Maximum Drawdown)。

最终收益告诉你可能赚多少,最大回撤则告诉你途中可能有多难熬。

以后再看到一条漂亮的收益曲线,可以先问四个问题:

  • 算手续费了吗?
  • 算滑点了吗?
  • 最深跌过多少?
  • 换一段行情还有效吗?

本地回测是整套系统的第一站,但绝不是终点。

五、真正部署到电脑,需要走完六个阶段

新车不可能刚装好方向盘,就直接开上高速。

它要先在电脑里测试,再进入封闭场地,确认刹车、仪表和报警都正常,最后才允许载人上路。

在量化交易里,这种由研究逐步走向真实交易的过程,专业上叫作研究—模拟—实盘部署流程(Research-to-Production Pipeline)。

比较稳妥的路线,是让同一套策略逐级通过六道门。

阶段一:搭建本地研究环境

电脑上需要准备:

  • Python
  • 项目虚拟环境
  • 代码编辑器
  • Git

所有依赖应该写入项目配置,不要把软件包散装进系统 Python。

项目目录可以从一开始就分开:

  • quant-system/:项目根目录

  • data/:历史数据

  • strategies/:策略规则

  • backtests/:回测程序

  • broker/:券商 API 适配

  • risk/:风控规则

  • logs/:运行日志

  • config/:非敏感配置

  • main.py

    :启动入口

API 密钥不要写进代码,也不要上传到 GitHub。

它们应该放在本机环境变量或专门的密钥管理工具中。

阶段二:完成可复现回测

先选择一个框架,把第一套简单策略跑通:

  • Backtrader:适合学习事件驱动回测
  • VectorBT:适合快速分析大量参数
  • VeighNa:更接近国内常见的实盘架构
  • Qlib:偏向 AI 量化研究

第一期没必要全部安装。

框架选一个,先把这些信息记录完整:

  • 使用的数据
  • 策略规则
  • 手续费
  • 滑点
  • 仓位
  • 交易次数
  • 最大回撤
  • 最终收益

每次运行还要保存使用的数据范围、参数、代码版本和最终结果。

否则今天得到的漂亮曲线,明天可能连你自己都无法复现。

阶段三:接入模拟盘

模拟盘就像正式演出前的带妆彩排:

舞台、灯光和流程都尽量接近真实,只是不承担真钱损失。

专业上,这叫作模拟交易(Paper Trading)。

这一阶段使用实时或接近实时的行情,但不动真钱。

它的目的不是继续调出更高收益,而是测试系统工程:

  • 开盘后能不能正常收到行情
  • 信号会不会重复触发
  • 订单被拒时怎样处理
  • 断线重连后会不会重复下单
  • 本地持仓与券商持仓是否一致
  • 收盘后能不能生成交易报告

回测里不会出现的麻烦,大多会在这里第一次出现。

阶段四:接入券商官方 API

先根据自己要交易的市场,选择支持程序化交易的券商,再申请接口权限和模拟账户。

接入顺序也不要反过来:

  1. 实现只读功能,查询账户、资金和持仓
  2. 实现下单与撤单
  3. 处理订单状态和成交回报
  4. 在模拟账户中逐项验证

如果涉及 A 股等受监管市场,还应该提前向持牌券商确认:

  • 程序化交易报告要求
  • 接口权限
  • 账户要求
  • 适用的交易规则

合规不是系统做完后的补充项,而是决定系统能否上线的前置条件。

阶段五:加上风控、监控和自动启动

准备长期运行时,要让程序具备“出错时自动停手”的能力。

最低限度应该包括:

  • 单笔金额上限
  • 单个标的仓位上限
  • 每日亏损上限
  • 数据过期保护
  • 重复订单保护
  • 一键停止开关

不同系统可以使用不同的自动启动方式:

  • Mac:launchd
  • Windows:任务计划程序
  • Linux:systemd

这些工具可以让交易程序按照计划启动,并留下运行记录。

但自动重启不能覆盖所有情况。

如果退出原因不明,系统更安全的行为通常是停止下单并发出报警,而不是盲目恢复交易。

阶段六:极小资金上线

只有当回测、样本外测试和模拟盘都通过,日志、风控与报警也能正常工作,才进入真钱阶段。

开始时应该使用自己能够完全承受损失的极小资金,并给系统设置比理论策略更严格的限制。

把策略正式放入真实运行环境,专业上叫作生产部署(Production Deployment)。

使用极小资金逐步验证,可以理解为小规模实盘验证(Small-scale Live Validation)。

放大资金的依据不应该是某一天赚钱,而应该是系统经过足够长时间后,真实成交、风险和预期基本一致。

六、AI 应该怎样接进这套系统?

AI 可以接入,但最好分成两层。

第一层:开发和研究助手

这是当前最实用,也最适合普通人的用法。

你可以让 Codex 或其他编程智能体帮助你:

  • 安装和检查本地环境
  • 阅读开源框架文档
  • 把自然语言策略写成 Python
  • 补充手续费、滑点和风控
  • 批量运行不同年份和不同标的数据
  • 测试代码
  • 修复报错
  • 分析运行日志
  • 生成回测或模拟交易报告

这一层的 AI 不直接掌握真钱账户。

它帮助你建造系统,但关键代码和运行结果仍然由你审核。

这种使用方式可以叫作人机协同开发(Human-in-the-loop Development):

AI 负责执行和建议,人负责检查与批准。

第二层:系统中的 AI 模块

如果要让 AI 成为量化系统的一部分,可以让它处理传统规则不擅长的信息,例如:

  • 把公告或新闻整理成结构化标签
  • 对研究资料进行分类
  • 发现日志中的异常模式
  • 生成盘后解释
  • 生成风险报告

但大模型的输出具有随机性,也可能产生事实错误。

这类不完全稳定、每次可能略有不同的输出,专业上叫作非确定性输出(Non-deterministic Output)。

因此,AI 给出的内容应该先转成结构化结果,再经过固定规则检查。

比较稳妥的关系是:

  1. AI 提供研究结果或候选信号
  2. 确定性策略进行计算
  3. 硬编码风控决定是否放行
  4. 券商官方 API 执行订单

AI 可以参与判断,但不应该绕过风控,直接拥有下单权。

更不建议使用视觉 AI 操作交易软件的鼠标。

界面变化、弹窗和网络延迟都可能让点击位置出错,而且整个过程很难审计。

真实系统应该使用官方 API,让每个订单都能够被记录和追踪。

七、第一版系统应该做成什么样?

零基础的第一个最小可行产品(MVP),不需要预测股价,也不需要同时支持多个市场。

可以只设定一个目标:

在自己的电脑上,让一套简单策略读取历史数据完成回测;通过后接入一个券商模拟账户;每天自动启动、读取行情、生成信号,经过仓位与亏损限制后提交模拟订单,并把结果记录到日志中。AI 负责协助开发、解释结果和检查异常,不直接绕过规则下单。

当这条链能够稳定运行,你就已经拥有了一个真正可操作的量化系统雏形。

它不一定赚钱,但至少:

  • 数据是真的
  • 订单流程是真的
  • 运行中遇到的问题也是真的

你可以在这个基础上继续修改策略、更换数据源、增加市场,或者接入更复杂的 AI 模块。

反过来,如果连模拟盘的断线、拒单和日志都没有处理,就算回测收益再漂亮,也只能算一段研究代码。

写在最后

AI 时代,写出一段策略代码正在变得越来越容易。

难的是把它变成一套可靠的系统:

  • 数据从哪里来?
  • 策略为什么下单?
  • 风控怎样拦截?
  • 订单如何追踪?
  • 程序出错后谁会知道?
  • 每一次结果能不能复现?

所以这期最想讲清楚的,不是“我找到了一个自动赚钱的模型”,而是:

普通人已经可以借助 AI,把一套真实的量化系统部署到自己的电脑上;但 AI 降低的是开发门槛,不是市场风险,更不是责任门槛。

真正值得追求的第一步,不是让机器替你赚钱,而是让它按照你能理解、能检查、能停止的规则运行。

当你能分清回测、模拟盘与真实交易,理解策略、风控和券商 API 各自负责什么,也知道 AI 应该被放在哪一层,这篇文章的目的就达到了。

至于是否真的要把它部署到电脑上,先别急着问“能不能自动赚钱”。

先确定三件事:

  1. 自己要交易什么市场
  2. 使用哪家券商
  3. 系统需要做到回测、模拟盘还是实盘

然后,再判断这套系统需要走到哪一步。

技术可以把规则自动执行,却不能替任何人消除风险。

真正可靠的系统,不是永远不会出错,而是它的每一步都能被理解、被记录、被限制,也能在出现异常时被及时停下来。

本文仅用于技术学习和量化系统工程介绍,不构成投资建议、收益承诺或法律意见。涉及真实交易前,请确认所在地监管要求及券商规则。

参考资料