教程 · 单套解锁 量化编程 · 云量化

QuantConnectPro操作手册

使用手册 + 操作教程 共 27 章全部免费开放,一步一步把软件用起来;核心知识点 8 章,¥69 一次解锁讲透原理。

作者 枢汇安全课堂 更新 2026-10-12 阅读 56 收录 云量化 · 35 章
本课程 · 单套解锁
¥69¥104
单品永久解锁 · 会员可阅 · 一次购买终身使用
✓使用手册 + 操作教程 共 27 章全文免费 ✓核心知识点 8 章,¥69 一次解锁 ✓支持电脑 / 手机 · 永久免费更新
注册后解锁核心知识点
免费学习区 使用手册 + 操作教程 共 27 章全部免费开放 · 核心知识点 8 章为付费内容 ¥69 解锁核心知识点
PART ONE

使用手册

功能在哪 · 是什么 · 怎么调出来

一、软件定位与适用场景

量化研究 / 交易框架(Python / 云 / 券商 API),用于数据、回测、实盘。本文只讲软件功能与界面含义,不涉及任何交易方向建议。

二、使用前准备

  1. 准备 Python 环境或平台账号
  2. 订阅数据源
  3. 配置 API 密钥
  4. 准备策略代码

三、界面结构总览

手机端通常分为三个主区域:

  • 行情页:看品种价格、分时、K 线、盘口
  • 交易页:下单、持仓、挂单、资金
  • 账户页:账户信息、安全设置、业务办理、通知

四、数据页字段含义

  • 标的 / 周期 / 复权方式
  • 字段:OHLCV、因子
  • 起止范围与频率
独到见解:复权方式选错,回测结论全盘反转。

五、回测页要素

  • 起止时间 / 初始资金
  • 手续费与滑点设置
  • 绩效指标:夏普、最大回撤
  • 参数优化区间

六、实盘页常用功能

  • API 连接状态
  • 订单管理
  • 风控阈值
  • 日志与告警
  • 部署(云 / 本地)

七、〇、关于「Pro」的说明

需要先说明一件事:QuantConnect 官方公开产品线中,并没有一个正式命名为「Pro」的发行版。 该平台公开的形态是:

  • QuantConnect:云端策略开发与回测平台(免费账户 + 付费订阅)。
  • LEAN:开源算法交易引擎,开放源码,允许自行下载并扩展到商业用途。

本目录名为 QuantConnectPro,本文按照 QuantConnect 云端平台 + LEAN 开源引擎的公开机制 来整理操作路径。若你使用的确实是某个第三方打包或本地增强版本,请以该版本的官方说明为准,本文内容不能替代其厂商文档。

下文统一以「平台」指代云端 QuantConnect,以「LEAN」指代开源引擎。

八、认识一个项目的骨架

一个 QuantConnect 项目通常只有两三个文件:

文件作用
main.py策略主文件,含 initialize 与 on_data
research.ipynb可选的 Jupyter 研究笔记本
库文件放自己封装的工具函数

在项目列表中点击项目名即可进入编辑器;编辑器上方有 Backtest(回测)与 Live Trading(实盘)两个主入口,日常操作几乎都围绕这两个按钮展开。

九、添加标的与设置周期

不同资产类别用不同的添加方法,参数大同小异:

资产类别添加方法示例备注
美股self.add_equity("SPY", Resolution.DAILY)支持股票与 ETF
外汇self.add_forex("EURUSD", Resolution.MINUTE)需注意交易时段
加密货币self.add_crypto("BTCUSD", Resolution.MINUTE)全天连续交易
期货self.add_future(Futures.Indices.SP_500_E_MINI, Resolution.MINUTE)涉及连续合约与换月
期权self.add_option("SPY", Resolution.MINUTE)涉及合约链过滤
差价合约按平台支持的 CFD 标的添加视地区与账户而定

颗粒度选择: Resolution 支持 tick、second、minute、hour、daily。颗粒度越细,回测越慢、数据体积越大。低频策略不要用 tick 粒度回测,那是纯粹浪费时间与配额。

关于数据质量: 平台强调其数据为「无存活者偏差」数据,并自动处理拆股、分红与公司事件(退市、并购)。这一点在使用自定义数据时不再适用——自定义数据要自己负责。

PART TWO

操作教程

一步一步 · 跟着做完一件事

十、先分清两条路:云端还是本地

这是第一步就要做的选择,两条路的成本结构完全不同。

对比项云端平台本地 LEAN
运行环境浏览器 IDE,无需安装本机 Docker 环境运行
数据源平台自带数据集,付费可扩容需自备数据或通过 LEAN ToolBox 处理
算力来源平台提供的计算节点自己的机器
适合对象快速验证想法、不想维护基础设施数据保密要求高、想完全掌控代码
主要开销订阅费 + 云信用 IPQC/节点自己买数据、自己运维

操作建议:先用免费账户走通一次完整回测,再决定是否上付费或转本地。 不要一上来就买订阅——多数人卡在的不是算力,而是连不上数据或看不懂报错。

十一、两种写法:经典式与框架式

平台支持两种组织策略的方式,选择哪一种会影响后续所有操作。

写法特征适合
经典式继承 QCAlgorithm,所有逻辑写在 on_data单标的、进出场逻辑简单、需要精细控制每一笔单
框架式装配五个可插拔模块多标的、组合再平衡、排序打分、多因子风格

官方推荐在多数情况下使用框架式,理由是模块之间以明确的方式连接,可以互相替换、彼此复用。但对于「一个信号进场、一个信号出场」这类紧密耦合的逻辑,框架式并不顺手,因为它默认假设你希望长时间保持满仓,会把购买力全压给单个信号。

十二、一个最小可运行的经典式策略

步骤 1:新建项目。 在项目列表创建新项目,语言选 Python。

步骤 2:写入初始化。 粘贴以下代码框架:

from AlgorithmImports import *

class MyAlgorithm(QCAlgorithm):
    def initialize(self) -> None:
        # 设置回测区间与初始资金
        self.set_start_date(2020, 1, 1)
        self.set_end_date(2023, 12, 31)
        self.set_cash(100000)
        # 添加标的,返回对象中取 symbol 备用
        self.spy = self.add_equity("SPY", Resolution.DAILY).symbol
        # 预热若干根 K 线,避免使用未成熟的指标值
        self.set_warm_up(30, Resolution.DAILY)
        # 记录持有技术指标的变量
        self.fast = self.sma(self.spy, 10, Resolution.DAILY)
        self.slow = self.sma(self.spy, 30, Resolution.DAILY)

    def on_data(self, slice: Slice) -> None:
        # 预热期内不下单
        if self.is_warming_up:
            return
        # 本根 K 线没有该标的的数据则跳过
        if not slice.bars.contains_key(self.spy):
            return
        holdings = self.portfolio[self.spy].quantity
        # 金叉:快线上穿慢线
        if self.fast.current.value > self.slow.current.value and holdings <= 0:
            self.set_holdings(self.spy, 1.0)
        # 死叉:快线下穿慢线
        elif self.fast.current.value < self.slow.current.value and holdings > 0:
            self.liquidate(self.spy)

步骤 3:点击 Backtest。 等待编译与回测完成,右侧出现绩效图表与统计。

这段代码里有两个必须养成的习惯:一是 set_warm_up 预热,二是 is_warming_up 判断。没有预热时,指标前若干根 K 线的取值是不可信的,很多「回测完美」的假象就来自这一段。

十三、下单方式一览

方法含义典型场景
self.set_holdings("SPY", 0.5)调整到占净值 50% 的仓位组合调仓,最常用
self.market_order("SPY", 10)市价买卖指定股数明确数量的进出场
self.limit_order("SPY", 10, price)限价单不愿追价的挂单
self.stop_market_order("SPY", -10, stop)止损市价单硬性保护,注意滑点
self.stop_limit_order(...)止损限价单想控制止损成交价
self.market_on_open_order(...)开盘市价单按开盘价执行
self.market_on_close_order(...)收盘市价单按收盘价执行
self.liquidate("SPY")平掉指定标的出场、清仓
self.liquidate()全部平掉极端处置

重要提醒:set_holdings 是「目标仓位」语义,不是「加仓」语义。 传入 0.5 表示调到了 50%,而非再买 50%。反复误会这一点会导致仓位不断翻转。

十四、技术指标怎么用

平台内置上百种指标,注册后会自动随数据更新。常用写法:

self.rsi_ind = self.rsi(self.spy, 14, MovingAverageType.WILDERS, Resolution.DAILY)
self.macd_ind = self.macd(self.spy, 12, 26, 9, Resolution.DAILY)
self.bb_ind = self.bb(self.spy, 20, 2, Resolution.DAILY)
self.atr_ind = self.atr(self.spy, 14, MovingAverageType.SIMPLE, Resolution.DAILY)

取值时用 .current.value;判断成熟用 .is_ready;短线策略还要加 volume/相关性一类指标。

历史窗口的写法: 需要保存过去若干个值时,用滚动窗口:

self.window = RollingWindow[float](5)
def on_data(self, slice: Slice) -> None:
    if self.is_warming_up:
        return
    self.window.add(self.rsi_ind.current.value)
    if not self.window.is_ready:
        return
    # 此时窗口已满,可以比较窗口内的值

滚动窗口的索引语义是 [0] 表示最新,下标越大越旧,方向与 Backtrader 的 line 索引一致,初上手容易搞反。

十五、框架式的五个模块怎么拼装

框架式策略的数据流是一条责任链,每一步的产物是下一步的输入:

Universe Selection 选出标的集合
        ↓
Alpha 生成 Insight(交易观点)
        ↓
Portfolio Construction 把 Insight 变成 PortfolioTarget(目标仓位)
        ↓
Risk Management 修正/过滤这些目标
        ↓
Execution 落实为真实订单

最小装配示例:

class MyFrameworkAlgorithm(QCAlgorithm):
    def initialize(self) -> None:
        self.set_start_date(2020, 1, 1)
        self.set_end_date(2023, 12, 31)
        self.set_cash(100000)
        self.set_universe_selection(EmaCrossUniverseSelectionModel())
        self.add_alpha(RsiAlphaModel())
        self.set_portfolio_construction(EqualWeightingPortfolioConstructionModel())
        self.set_execution(ImmediateExecutionModel())
        self.set_risk_management(MaximumDrawdownPercentPerSecurity(0.03))
模块常用内置模型各自负责
Universe SelectionEmaCrossUniverseSelectionModel、QC500UniverseSelectionModel、FineFundamentalUniverseSelectionModel、ScheduledUniverseSelectionModel决定关注哪些标的
AlphaRsiAlphaModel、MacdAlphaModel、EmaCrossAlphaModel、ConstantAlphaModel、HistoricalReturnsAlphaModel生成观点
Portfolio ConstructionEqualWeightingPortfolioConstructionModel、MeanVariance...、BlackLitterman...、最大夏普类决定每份多少
Risk ManagementMaximumDrawdownPercentPerSecurity、MaximumSectorExposureRiskManagementModel、追踪止损类压住风险
ExecutionImmediateExecutionModel、SpreadExecutionModel、StandardDeviationExecutionModel、VWAP 类决定怎么成交

实操顺序建议:先用全部内置模型跑通一遍,确认链路没问题,再逐层替换成自己的实现。 一次替换五层,出了错无处排除。

十六、Insight(观点)怎么写

Insight 是 Alpha 模块的输出,也是贯穿后三层的对象。核心要素:

insights = [
    Insight.price("SPY", timedelta(days=5), InsightDirection.UP,
                  magnitude=0.02, confidence=0.6)
]
字段含义设定不当的后果
Symbol针对哪个标的组合层算错对象
Period观点有效期过期则被系统撤下、自动平仓
Direction方向(涨/跌/持平)方向写反直接亏钱
Magnitude预期幅度影响部分组合模型的权重
Confidence置信度影响加权方式
Weight / SourceModel权重与来源标记便于事后归因

关于平仓: 框架式策略高度依赖 Period 到期来管理出场。若你的策略出场条件与技术信号强耦合(比如某个形态结束就走),官方给出了四条替代路径:一是发出短周期观点并持续续期;二是动态更新观点的到期时间;三是把出场本身做成一个独立的 Alpha 信号;四是用风险模型(如最大回撤、追踪止损)接管出场。四种都不完美,这正是框架式不适合紧密耦合信号的原因。

十七、历史数据的查询方式

需要在盘中取一段历史做计算时:

hist = self.history(self.spy, 100, Resolution.DAILY)
hist2 = self.history(self.securities.keys(), 30, Resolution.DAILY)
df = self.history(self.spy, timedelta(days=30), Resolution.MINUTE)

返回结果是便于直接做计算的表格结构。注意:

  • 不要在 on_data 里高频调用历史查询,这是回测最常见的性能杀手。
  • 若需要「截至上一根」的数据,务必注意当前这根是否已包含在内,避免引入未来信息。
  • 取多个标的时,一次批量取比逐个取快得多。

十八、定时任务怎么设

不想每根 K 线都跑逻辑时,用调度器:

self.schedule.on(
    self.date_rules.every_day("SPY"),
    self.time_rules.before_market_close("SPY", 30),
    self.rebalance
)
配置维度常用选项
日期规则每天、每周指定日、每月指定日、每日
时间规则开盘后若干分钟、收盘前若干分钟、午夜、每 N 分钟
回调自定义函数名

在收盘前几分钟调仓,是低频策略最常见的落地方式,可以避开开盘的剧烈波动,同时保留一定的执行空间。

十九、把回测做“贵”一点:成本与成交模型

不建模成本的回测没有参考意义。至少要做三件事:

def initialize(self) -> None:
    # 设定券商模型,会影响费率、保证金与撮合假设
    self.set_brokerage_model(BrokerageName.INTERACTIVE_BROKERS_BROKERAGE,
                             AccountType.MARGIN)
    self.set_security_initializer(self.custom_initializer)
    self.set_benchmark("SPY")

def custom_initializer(self, security) -> None:
    # 为不同资产设置不同的手续费与滑点假设
    security.set_fee_model(InteractiveBrokersFeeModel())
    security.set_slippage_model(VolumeShareSlippageModel())
建模项不做的后果
手续费高频换手策略收益虚高
滑点短线、大资金策略失真最严重
保证金模型杠杆水位算错,可能出现不可能实现的仓位
成交量假设回测成交价与实际完全脱钩
结算规则现金账户的重复买入可能被判定违规

检验方法: 把手续费与滑点各放大一倍看结果是否崩塌。若崩塌,说明策略的安全边际不足以覆盖真实交易摩擦。

二十、回测报告看什么

右侧统计面板指标很多,建议按以下顺序看,而不是先盯总收益:

顺序指标为什么先看它
1最大回撤先确认自己能不能扛得住,收益才有意义
2交易笔数与换手笔数太少可能是偶然,太多则成本敏感
3年度/月度拆收益看收益是否集中在极少数几天
4夏普比率在前面都过关后才有参考价值
5与基准对比跑不赢简单基准就该反思
6持仓与杠杆曲线检查是否出现不可接受的仓位峰值

一个常用判据:剔除表现最好的若干天后收益是否大幅缩水。 若缩水严重,说明收益高度依赖极端行情,不可依赖。

二十一、参数优化与样本外检验

平台支持对参数区间做扫描式优化。操作流程:

  1. 在策略中把待调参数定义为可配置项。
  2. 设置扫描取值范围与步长。
  3. 运行优化任务,查看参数平面上各组合的表现。
  4. 观察参数平原是否成片——只有孤立的尖峰通常是拟合出来的。

防过拟合的三段式做法:

阶段用途禁忌
样本内初步筛选不要把结果当结论
样本外验证稳健性不要用样本外结果回头改参数
滚动前推模拟真实使用不要忽视交易成本变化

要害在于:样本外一旦用过,它就变成了样本内。 反复用同一段样本外数据调参,等于把整套数据都拟合了一遍。

二十二、Research(研究环境)怎么用

云端提供 Jupyter 笔记本环境,用途是把「探索」与「落地」分开:

  • 在笔记本里查历史数据、画分布、做统计检验。
  • 验证某个信号是否有区分度后再写进策略。
  • 把验证通过的单个逻辑封装成模块,供框架式调用。

推荐先做「信号有效性验证」再做「策略回测」。 直接跑完整回测去找信号,等于用极其昂贵的方式做探索。

二十三、本地 LEAN 与 LEAN CLI 的工作流

需要本地开发时的基本链路:

  1. 安装 Docker 环境。
  2. 拉取 LEAN 引擎源码或镜像。
  3. 用命令行工具初始化项目、拉取/整理数据、本地回测。
  4. 用 VS Code 等本地编辑器编码。
  5. 需要时把本地项目推送到云端执行,或者反向拉取云端项目到本地。

本地方式的优势是数据与代码都在自己手里;代价是数据整理与运维全部自理。 平台提供了 ToolBox 工具来处理各类数据源的导入,这部分的工作量容易被严重低估。

二十四、实盘部署的操作顺序

从回测走到实盘,建议严格按以下顺序自查:

  1. 退出 PDF 报告或详细统计,确认成交明细与预期一致。
  2. 检查每一笔异常成交,确认是否由撮合假设造成。
  3. 先在 Paper Trading(模拟交易) 运行至少一个完整周期。
  4. 接入券商时,确认账户类型(现金账户/保证金账户)与策略所需一致。
  5. 确认交易品种权限已经开通(期权、期货往往需要单独申请)。
  6. 部署后设置通知(邮件/即时消息/自定义回调),不要靠手动盯盘。
  7. 记录每次部署的版本与参数,保证出问题可回溯。

关于通知: 平台对不同订阅层级有每小时通知条数限制,超出部分按云信用计费。设计告警策略时应避免「每笔成交都发一条」的粗放做法,否则很容易在剧烈行情中刷爆额度。

二十五、资产覆盖、可见提醒与常见限制

项目说明
支持资产股票、外汇、期权、期货、加密货币、差价合约,可在同一组合中同时持有
颗粒度tick / 秒 / 分钟 / 小时 / 日,细粒度通常需付费层级
单次文件大小免费账户有较小的文件体积上限,付费层级逐级提高
团队规模免费层级仅单人,协作功能在付费层级提供
计算节点免费层级资源有限,付费可从数个节点扩展到不限节点
高级数据基本面、另类数据在不同层级开放程度不同,部分需额外付费
自托管部署仅机构类层级提供本地化部署选项
上表中的额度类信息随官方定价调整而变动,付费前请以官网实时页面为准。

二十六、常见坑清单

现象常见原因处理
回测收益惊人,实盘毫无表现未建模滑点与手续费加上成本模型重跑
策略只交易了几天数据缺失或标的选择过窄检查数据集区间与标的池
指标前几十根输出异常未预热加 set_warm_up 并判断 is_warming_up
买卖方向反了混淆 set_holdings 目标语义明确目标仓位而非增减仓
回测极慢用了过细粒度或频繁查历史降粒度、批量取数
出现不可能的杠杆未设置保证金模型设定 set_brokerage_model 与账户类型
参数优化结果不可复现随机种子/版本变动锁定版本与随机种子
实盘与回测下单不一致撮合假设差异调整填充模型保守度
框架式策略仓位过度集中内置等权模型全仓给单一信号自定义组合构建模型
通知被刷爆每笔成交都推送合并、分级、限频
自定义数据回测报错时间时区/字段缺失先做单标的短区间验证

二十七、注意事项

  1. 工具不产生盈利能力。 平台提供的是执行与记账基础设施,策略本身的成败完全取决于使用者。
  2. 回测的作用是证伪,不是证明。 一条漂亮的资金曲线首先应当引发怀疑,而不是信心。
  3. 不要用 tick 数据去跑日线策略。 粒度必须与实盘决策频率一致。
  4. 上线前必须经过模拟交易。 至少要覆盖一段趋势行情与一段震荡行情。
  5. 「Pro」这个名字不构成任何能力承诺。 若你用的是第三方打包版本,请以该版本厂商文档为准,对其声称的功能保持审慎。
  6. 本文仅在介绍工具操作,不构成投资建议,不推荐任何产品与平台。
金融产品有风险,入场前请务必确认自身风险承受能力;交易决策请自行判断,据此操作风险自负。
付费专享 · 核心知识点 8 章

继续阅读:核心知识点,搞懂原理

QuantConnectPro操作手册 — 共 35 章,已免费阅读 27 章,剩余 8 章核心知识点讲透「为什么这样、点了会怎样」。

二十八、数据源与频率
二十九、回测引擎原理
三十、滑点与手续费建模
三十一、参数优化与过拟合
三十二、风险控制模块
三十三、绩效评价指标
…等共 8 章核心内容
✍️ 注册后扫码购买 🔐 已有账号,去登录 单套 ¥69 永久 · 会员可阅
SERVICE & PRICING
服务收费说明 · 明码标价,无隐藏收费
全部课程统一 ¥39-69,买一套永久使用。以下为购买与使用的完整流程。
01先免费试读

每套教程的「使用手册」部分均可免费阅读,先确认内容是否适合自己再决定,不必盲买。

02扫码付款

选定课程后点「立即解锁」,页面展示收款二维码与客服微信,扫码转账即可,无需注册海外支付。

03获取卡密

付款完成后客服第一时间发送卡密号与卡密密码,站内消息与微信同步通知。

04兑换解锁

在用户中心「兑换卡密」输入卡密号与密码,系统即时解锁全部章节,无需二次付款。

一次付费,终身可用 · 解锁后课程永久留在账号里,不限次数、不限时间阅读 持续免费更新 · 平台改版、规则变化时课程同步修订
RECOMMEND
相关教程推荐 · 同栏目更多上手机会

💬 用户评价 (0)

🔒 登录并成为会员后可发表评价
还没有评价 · 成为第一个评价的人吧 🎯