操作手册
⚠ 重要声明(请先阅读)
- 本手册及系统内的策略说明,均为 AI 对公开学术论文与文献的总结整理,可能存在偏差或过时,仅供参考。
- 本平台仅用于学习因子投资与量化交易:内置的因子筛选与策略模板是教学参考模版,不是经过实盘验证的有效交易策略,不构成任何投资建议。
- 历史回测收益不代表未来表现。实际交易策略需要您自行研究、回测、验证并承担全部风险;模板只是您研究策略的起点。
第一次使用?按下面 3 步即可完成一次完整的选股:
- 选市场 — 页面顶部点选「美股 / 港股 / 日股」标签
- 选因子 + 点筛选 — 新手推荐选 风险调整动量,Top N 填 30,直接点「筛选」
- 看结果 — 表格按因子得分排序,点击任意行可展开个股详情(走势图、财务指标)
想要更精确的结果?展开「高级过滤」,参考下方推荐值设置负面筛选条件。
1. 工具概述
RelayAi Quant 是本地量化因子选股工具。它读取本地历史价格数据,用学术验证的因子策略对全市场股票打分排名,帮你快速缩小候选范围。
- 因子 — 可以理解为「选股指标」。例如「动量因子」就是选过去涨得好的股票,学术研究表明这类股票往往会继续涨
- 负面筛选 — 先把明显不好的股票排除掉(成交太少买不到的、波动太大风险太高的、短期暴涨可能要回调的)
- 复合评分 — 不只看一个指标,把动量、质量、价值等多个维度加权求和,避免单一指标选出偏科生
2. 因子策略详解
2.1 价格因子 即时计算
只需本地价格数据,无需联网,通常 1-5 秒出结果。
动量 ÷ 波动率。涨得多且涨得稳的排前面,相当于夏普比率思路。
原理:不只看涨了多少,还看涨得稳不稳。同样涨 50%,平稳上涨的比大起大落的排名更高。这是最均衡的单因子策略。
过去一年涨了多少(跳过最近1个月,避免短期噪音)。
原理:学术上「动量效应」是最稳健的异象之一——过去一年表现强的股票,未来3-12个月大概率继续强。跳过最近1个月是为了规避短期反转效应。
和 12-1 动量类似,但只看半年。对中期趋势变化更敏感,换手更快。
适合中期波段操作。与 12-1 动量搭配使用效果更好(动量质量复合已自动包含两者)。
过去一年价格波动最小的股票,按波动率从低到高排列。
原理:「低波动异象」——学术研究发现低波动股票长期收益反而不低于高波动股票,但回撤(最大亏损幅度)小得多。适合追求稳健、讨厌坐过山车的投资者。熊市表现尤其好。
选最近一个月跌幅最大的股票,赌它们反弹。按跌幅从大到小排列。
原理:短期超跌反弹。但风险很高——跌得多的可能是基本面出了问题,继续跌。必须搭配 F-Score 和 Z-Score 过滤,排除掉真正有问题的公司。
当前价格离过去一年最高价有多近(0~1之间,越接近1越强)。
原理:接近历史新高的股票处于强势区间,突破新高后往往有进一步上涨空间。适合追踪趋势突破的投资者。
近5天平均成交量是60天平均的几倍。放量通常预示着市场关注度突然增加。
原理:成交量异常放大可能意味着主力资金介入、重大消息刺激或趋势启动。但也可能是出货信号,需结合价格方向判断。适合短线关注,不建议作为唯一选股依据。
2.2 基本面因子 需调用 API
需要联网调用 yfinance 获取财务数据,首次约 1-2 分钟。结果更全面但速度较慢。
四合一:40%长期动量 + 20%中期动量 + 20%质量 + 20%价值/低波。
原理:不依赖单一维度。动量确保趋势向好,质量确保公司经营健康,价值确保估值合理,低波确保风险可控。是本工具最全面的策略。
9 项财务体检打分:盈利能力(ROA、现金流)+ 杠杆安全(负债率、流动性)+ 经营效率(利润率、周转率)。
0-9分。8-9分=财务非常健康,5-7分=正常,0-3分=有财务隐患。适合作为「安全网」——从别的因子选出的股票里,再用 F-Score 排除财务差的。
预测公司未来2年破产概率的经典模型。>2.99=安全,1.81~2.99=灰色区,<1.81=危险。
主要用途不是选股,而是排雷。建议作为其他策略的辅助过滤器(勾选「排除 Z-Score 危险区」)而不是单独使用。
Joel Greenblatt 的「神奇公式」:同时找 ROIC(资本回报率)高且估值低的公司。
原理:ROIC 高意味着公司赚钱能力强,估值低意味着市场价格便宜。两者兼具 = 好公司 + 好价格。适合中长期价值投资。
综合三个估值指标:1/PE(市盈率倒数)+ 1/PB(市净率倒数)+ 股息率。三者越高越便宜。
原理:单看 PE 可能有偏差(周期股 PE 低不一定便宜),综合三个维度更稳健。适合巴菲特式的「用好价格买好公司」。
综合 ROE(净资产收益率)+ ROA(总资产收益率)+ 利润率。找经营质量最好的公司。
原理:高 ROE + 高 ROA = 公司用股东的钱和借来的钱都能高效赚钱。高利润率 = 产品或服务有竞争力。适合长期持有高质量白马股。
2.3 动量质量复合 — 算法说明
- 先用「风险调整动量」预选出约 150 只候选股(动量+稳定性初筛)
- 对这 150 只调用 yfinance 获取财务数据,算出质量分和价值分
- 在候选池内对每个维度做 0~1 的百分位排名
- 加权求和:
0.40×动量12M + 0.20×动量6M + 0.20×质量 + 0.20×(价值+低波)/2
建议搭配「排除近1月涨幅 > 0.3」,可以有效过滤掉短期暴涨的过热股票。
3. 负面筛选参数 — 推荐设置
负面筛选 = 先排除不要的,再从剩下的里面选好的。所有参数填 0 表示不启用该过滤。
| 参数 | 是什么 | 为什么要设 | 推荐值 |
|---|---|---|---|
| 最低股价 | 排除股价低于此值的股票 | 低价股(仙股)波动大、流动性差,容易踩雷 |
美股:5
港股:1
日股:100
填 0 = 不限制 |
| 最低日均成交额 | 排除 20 日平均成交额低于此值的股票 | 成交额太低 = 买卖困难,价差大,实际操作成本高 |
美股:5000000(500万美元)
港股:3000000(300万港币)
日股:100000000(1亿日元)
这是最重要的过滤器之一,强烈建议设置 |
| 最高年化波动率 | 排除年化波动率超过此值的股票 | 波动率太高 = 风险太大,持有体验差 |
建议:0.8(80%年化波动)
正常股票在 0.2~0.5,超过 0.8 的通常是投机性很强的标的 |
| 最少交易天数 | 排除上市不足此天数的股票 | 新上市股票数据不足,因子计算不准确 |
建议:252(1年)
保持默认即可。252 个交易日 ≈ 1 个自然年 |
| 排除 F-Score 低于 | 排除财务健康评分低于此值的股票 | 财务差的公司即使趋势好也可能暴雷 |
建议:4
F-Score 满分 9,4 分以下基本面较差。仅对基本面因子生效 |
| 排除 Z-Score 危险区 | 排除 Altman Z-Score < 1.81 的公司 | Z-Score 低于 1.81 意味着有较高的破产风险 |
建议:排除
仅对基本面因子生效。使用价格因子时此项不起作用 |
| 排除近1月涨幅超过 | 排除最近 21 个交易日涨幅超过此比例的股票 | 短期暴涨的股票往往面临回调风险,动量因子容易选到这类「过热股」 |
建议:0.3(即 30%)
这是动量策略的关键保护参数。设为 0.3 表示排除近1月涨超 30% 的股票 |
4. 推荐使用组合
以下是经过验证的策略组合,可以直接使用。推荐程度用星级表示。
找过去涨得好且涨得稳的股票,同时排除短期过热和财务差的公司。新手最推荐。
| 因子 | 风险调整动量 |
| Top N | 30 |
| 最低日均成交额 | 按市场设置(见上方推荐) |
| 最高波动率 | 0.8 |
| 近1月涨幅上限 | 0.3 |
| F-Score 下限 | 4(可选) |
最全面的策略,价格趋势+财务质量+估值三重保障。需要等待 API,但结果最可靠。
| 因子 | 动量质量复合 |
| Top N | 30 |
| 最低日均成交额 | 按市场设置 |
| 近1月涨幅上限 | 0.3 |
| Z-Score 危险区 | 排除 |
找被市场低估且财务健康的公司。适合耐心持有、等待价值回归的投资者。
| 因子 | 价值复合因子 |
| Top N | 30 |
| F-Score 下限 | 5 |
| Z-Score 危险区 | 排除 |
选波动最低的股票,适合熊市或不确定性高的阶段。长期收益率不低,但回撤小得多。
| 因子 | 低波动 |
| Top N | 30 |
| 最低日均成交额 | 按市场设置 |
| 最低股价 | 按市场设置 |
选近期跌幅最大的股票赌反弹。风险高,建议搭配 F-Score 过滤避开基本面有问题的票。
| 因子 | 反转因子 |
| Top N | 20 |
| 最低日均成交额 | 按市场设置 |
| F-Score 下限 | 5 |
| Z-Score 危险区 | 排除 |
捕捉近期成交量异常放大的股票,可能是主力资金介入信号。适合短线关注。
| 因子 | 放量突破 |
| Top N | 20 |
| 最低日均成交额 | 按市场设置 |
| 最高波动率 | 0.8 |
4.1 手把手教程:动量质量复合策略
以下以最推荐的「动量质量复合」为例,按步骤教你怎么设置。三个市场的具体填值都列出来了。
页面顶部有「美股 / 港股 / 日股」标签,点击你想筛选的市场。
Step 2:选因子「因子策略」下拉框 → 拉到下面的「基本面因子」分组 → 选择 「动量质量复合」。
Step 3:设置 Top N填 30(默认值,不用改)。表示最终展示排名前 30 的股票。
Step 4:展开高级过滤点击「高级过滤 & 负面筛选」展开面板,按下表填入各参数:
| 参数 | 日股 (TSE) | 美股 (USA) | 港股 (HKEX) |
|---|---|---|---|
| 最低股价 | 100 | 5 | 1 |
| 最低日均成交额 | 100000000 (1亿日元) | 5000000 (500万美元) | 3000000 (300万港币) |
| 最高年化波动率 | 0.8 (三个市场通用) | ||
| 最少交易天数 | 252 (默认值,不用改) | ||
| 排除 F-Score 低于 | 4 (排除财务较差的公司) | ||
| 排除 Z-Score 危险区 | 排除 (下拉选「排除」,过滤破产风险) | ||
| 排除近1月涨幅超过 | 0.3 (排除近1月涨超 30% 的过热股,关键参数) | ||
因为是基本面因子,系统会调用 yfinance API 获取财务数据,请等待 1-2 分钟,进度条走完后结果会自动展示在下方表格中。
Step 6:查看结果结果表按复合得分从高到低排列。点击任意行可展开个股详情(走势图、财务指标)。如需保存,点右上角「下载 CSV」。
4.2 手把手教程:风险调整动量(快速版)
如果不想等 API,用这个策略 秒出结果:
| 参数 | 日股 | 美股 | 港股 |
|---|---|---|---|
| 因子策略 | 风险调整动量(价格因子分组内) | ||
| Top N | 30 | ||
| 最低股价 | 100 | 5 | 1 |
| 最低日均成交额 | 100000000 | 5000000 | 3000000 |
| 最高年化波动率 | 0.8 | ||
| 排除近1月涨幅超过 | 0.3 | ||
这个组合只用价格数据,不需要联网,点筛选后 1-5 秒出结果。日常快速扫描首选。
5. Dashboard 持仓管理
- 注册 & 登录 — 点击右上角「注册」,等管理员审核通过后即可使用全部功能
- 添加自选股 — 在筛选结果表格中,点击每行左侧的「+」按钮,输入买入价和数量
- 查看 Dashboard — 顶部导航点「Dashboard」,查看:
- 总投入金额 vs 当前市值
- 总盈亏(金额和百分比)
- 持仓分布饼图
- 个股盈亏柱状图
- 刷新价格 — 点击「刷新价格」按钮获取最新行情
6. 结果字段说明
价格因子结果列
| 列名 | 含义 | 怎么看 |
|---|---|---|
| 代码 | 股票代码 | 点击可展开详情 |
| 公司名 | 公司名称 | 首次加载可能需几秒获取 |
| 最新价 | 最近收盘价 | — |
| 因子值 | 当前所选因子的计算结果 | 排序依据,越靠前越好 |
| 日涨幅 | 最近 1 个交易日涨跌幅 | 正数=涨,负数=跌 |
| 月涨幅 | 最近 21 个交易日涨跌幅 | 反映近一个月趋势 |
| 季涨幅 | 最近 63 个交易日涨跌幅 | 反映近一个季度趋势 |
| 52周高/低 | 过去一年的最高价和最低价 | 判断当前价格在什么位置 |
| 波动率 | 252日年化波动率 | 0.3=低,0.5=中,>0.8=高 |
| mom_12_1 | 12-1 动量原始值 | 过去12月(跳过近1月)的涨幅 |
| mom_6_1 | 6-1 动量原始值 | 过去6月(跳过近1月)的涨幅 |
基本面因子额外列
| 列名 | 含义 | 怎么看 |
|---|---|---|
| F-Score | Piotroski 财务健康评分 | 0-9 分,≥7 优秀,≤3 较差 |
| Z-Score | Altman 破产预测分数 | >2.99 安全,<1.81 危险 |
| P/E | 市盈率 | 越低越便宜,负数=亏损 |
| P/B | 市净率 | <1 可能被低估 |
| ROE | 净资产收益率 | >15% 优秀 |
| 股息率 | 年化股息率 | >3% 算高股息 |
7. 常见问题
A: 这是动量策略的常见问题。解决方法:启用「排除近1月涨幅超过」,设为 0.3(30%),可以有效过滤掉短期暴涨的过热股。也可以直接用「动量质量复合」因子,它自带基本面过滤。
A: 风险调整动量只看价格数据,速度快(秒出结果),适合快速筛选。动量质量复合额外引入了财务质量和价值因子,需要调 API(约1-2分钟),但结果更全面可靠。
建议:日常快速扫描用前者,认真选股时用后者。
A: 因为需要逐个调用 yfinance API 获取每家公司的财务报表。约 150 只候选股需要 1-2 分钟,请耐心等待进度条。
A: 美股=美元,港股=港币,日股=日元。例如美股填 5000000 表示日均成交额不低于 500 万美元。
A: 包含表格中所有列,含 mom_12_1 和 mom_6_1 动量原始值。文件编码为 UTF-8 BOM,Excel 可直接打开。
A: 因子值本身的绝对大小不重要,重要的是排名。排在前面的就是当前策略下最优的候选。不同因子的数值范围不同,不要跨因子比较数字大小。
8. 买入评分 (Buy Score)
买入评分(0-100)是系统对每只筛选结果的综合推荐度评估,分数越高表示综合指标越优秀。
| 分数区间 | 含义 | 显示颜色 |
|---|---|---|
| 80-100 | 强烈推荐 — 多维度指标均优秀 | 绿色 |
| 50-79 | 值得关注 — 部分指标良好 | 黄色 |
| 0-49 | 谨慎考虑 — 需结合其他信息判断 | 红色 |
- 动量得分 — 基于 12-1 和 6-1 动量排名
- 基本面得分(仅基本面因子)— F-Score、Z-Score、ROE 等财务指标
- 风险调整 — 波动率越低,加分越高
买入评分仅作为参考,不构成投资建议。请结合个股详情页的完整信息做出决策。
9. 卖出信号 (Sell Signal)
在 Dashboard 持仓列表中可以看到每只股票的卖出信号评分(0-100),0 表示安全持有,100 表示强烈建议卖出。
四维度评估| 维度 | 权重 | 说明 |
|---|---|---|
| 动量衰减 | 30% | 12个月动量转负或大幅下降时触发 |
| 回撤止损 | 25% | 从持仓最高价回撤幅度越大,信号越强 |
| 基本面恶化 | 25% | F-Score 降至3以下,或Z-Score进入危险区 |
| 集中度风险 | 20% | 单只持仓占比超过30%时触发警告 |
卖出信号基于量化模型自动计算。信号值 ≥70 时建议认真考虑减仓,40-69 保持关注,<40 可安心持有。
10. 会员等级 & 筛选次数
系统采用 1-5 星会员等级制度,不同等级对应不同的每日筛选次数上限。
| 等级 | 默认每日筛选次数 |
|---|---|
| ★ Tier 1(新用户) | 5 次 |
| ★★ Tier 2 | 20 次 |
| ★★★ Tier 3 | 50 次 |
| ★★★★ Tier 4 | 200 次 |
| ★★★★★ Tier 5 | 不限 |
管理员可在「设置」页面自定义各等级的筛选次数上限。每日零点重置计数。
页面顶部用户名旁的星标显示您的当前等级。如需升级请联系管理员。
11. 社区持仓
社区功能允许用户公开分享自己的持仓信息,包括持仓明细和购买证明。
发布流程- 在筛选结果中点击 + 将股票添加到自选股,输入买入价和数量
- 进入 Dashboard → 找到目标持仓 → 点击「发布到社区」
- 上传购买证明截图(jpg/png/webp,≤5MB)
- 发布成功后其他用户可在「社区」页面看到您的持仓
- 热门持仓排名 — 按持有人数和总持有量排序的热门股票
- 用户持仓 — 各用户的公开持仓详情,含买入价、数量、购买证明
购买证明用于建立社区信任。仅上传了证明的持仓会在社区页面展示。
12. 股票搜索与对比
在筛选页面顶部的搜索框中输入股票代码(支持部分匹配),系统会实时显示匹配结果。搜索不消耗筛选次数。
- 搜索结果显示代码、公司名、最新价、行业
- 点击搜索结果可直接打开个股详情页
- 搜索范围为当前选中市场的所有股票
在搜索结果中点击 + 按钮将股票添加到对比列表(最多10只),然后点击「开始对比」。
- 对比表格展示:当前价、P/E、P/B、ROE、股息率、F-Score、Z-Score、市值、ROIC等12项指标
- 每次对比消耗 1 次筛选额度(因为需要调用 API 获取财务数据)
- 对比完成后可继续添加/移除股票重新对比
搜索功能仅在登录后可见。对比适合在筛选缩小范围后,对少量候选股做深入对比分析。
13. 走势图 & 实时盯盘
导航栏 "走势图"(路径 /chart):moomoo App 风格的 K 线工具,支持 9 档时间粒度、9 种指标、缩放拖拽、十字光标、实时更新。
- 时间粒度:1 分 / 3 分 / 5 分 / 15 分 / 30 分 / 60 分 / 日 / 周 / 月。每切一档就重新拉一段历史。
- 主图指标:MA / EMA / BOLL / SAR / BBI(多选叠加,默认 MA)。
- 副图指标:成交量 / MACD / KDJ / RSI(多选叠加,默认成交量)。
- 实时刷新:右上角开关。开启时每 2.5 秒拉一次最新 1-2 根 K 线,调用
chart.updateData()只增量更新最后那根(不整图重绘)。切到别的浏览器 tab 自动暂停(省 API 配额)。 - 数据源:US/HK 走 moomoo(实时),JP 走 Yahoo Finance(约 15 分钟延迟)。状态栏右侧的徽章会清楚标示。
右上角 "应用策略 →" 按钮会带着当前 ticker / market / ktype 跳到 §14 回测页,自动预填配置。
14. 策略回测
导航栏 "回测"(路径 /backtest)。4 种策略来源:
- 内置模板:15 个(9 个波段/趋势 + 6 个日内),详见 14.1
- 自定义代码:写一个
def on_bar(bar, ctx): return Action.BUY/SELL/CLOSE/HOLD(详见 14.5) - 已保存策略:之前命名保存的,一键复用
- 网格搜索:参数笛卡尔积自动跑一遍,找出最优组合(详见 14.6)
14.1 内置策略模板详解
① MA Cross — 双均线金叉死叉
逻辑:当快线(默认 5)从下方穿越慢线(默认 20)→ 买入;快线从上方穿越慢线 → 卖出。
背后假设:价格趋势有惯性,"短期均线翻越长期均线"是趋势启动/反转的信号。
能赚钱的市场:单边趋势行情(牛市初段、熊市初段)。不能赚钱的市场:横盘震荡(连续假突破,俗称"打脸"),损耗手续费 + 反复止损。
参数选择:
ma_fast快线:典型 5 / 10 / 13。越小越敏感,假信号越多。ma_slow慢线:典型 20 / 50 / 100。越大越迟钝,趋势确认晚但更稳。- 常见组合:5/20(短线)、20/50(中线)、50/200(长线,也叫"死亡交叉"判据)。
典型陷阱:在大牛股(如 AAPL 长期上涨)上 MA 金叉策略往往跑输 buy & hold —— 因为每次回调它会"卖出止损",错过后面的反弹。这是趋势策略的固有代价。
② RSI Oversold — 相对强弱指标的超卖反弹
逻辑:RSI(14) < 30(超卖区)→ 买入;RSI > 70(超买区)→ 卖出。
背后假设:价格短期偏离均值后会"回归均值",超卖意味着便宜。
能赚钱的市场:横盘震荡 / 慢牛回调。不能赚钱的市场:单边大跌(一只股从 100 跌到 30,RSI 全程超卖也救不回来)。
参数选择:
rsi_period:默认 14(行业标准)。改 7 更激进,改 21 更保守。oversold:默认 30。改 20 信号更稀少但更靠谱;改 40 信号多但假信号多。overbought:默认 70。同理。
典型陷阱:单纯 RSI 超卖买入是抄底策略,遇到 2008、2020 这种暴跌会接连吃止损。建议配合"趋势过滤":只有当 MA50 仍然向上时才接 RSI 超卖信号。
③ Bollinger Breakout — 布林带突破
逻辑:价格突破上轨(mid + 2σ)→ 买入;跌破下轨(mid - 2σ)→ 卖出。
背后假设:突破 ±2σ 是"非随机的强势事件",趋势启动概率大。
能赚钱的市场:低波动期之后的爆发性突破(盘整后的暴涨)。不能赚钱的市场:宽幅震荡市(频繁假突破)。
参数选择:
boll_period:默认 20。改 10 反应快,假突破多;改 50 反应慢,错过早期。std_mult:默认 2.0(包含约 95% 数据的统计意义)。改 1.5 更激进,2.5 更保守。
典型陷阱:单纯 BOLL 突破极易在震荡市连吃止损。建议配合"成交量过滤"——突破当日成交量必须 ≥ 60 日均量 × 1.5 才确认。
④ MACD Cross — 指数平滑异同平均线金叉
逻辑:MACD 线(EMA12 − EMA26)上穿信号线(MACD 的 EMA9)→ 买入;下穿 → 卖出。
背后假设:双重平滑后的动量变化比原始价格更能过滤噪音,柱状图翻正代表多头动能确立。
适用市场:中期趋势行情。失效场景:横盘时金叉死叉频繁交替("缠绕")。
参数:fast/slow/signal 默认 12/26/9(Appel 原版)。日内可试 6/13/5 提高灵敏度。
陷阱:MACD 是滞后指标,暴涨暴跌后金叉往往出现在半山腰;建议结合成交量或趋势过滤。
⑤ Donchian Breakout — 海龟通道突破
逻辑:价格创 N 日新高(默认 20)→ 买入;跌破 M 日新低(默认 10)→ 卖出。著名的"海龟交易法则"核心。
背后假设:创新高本身就是强势证据,趋势会自我延续。
适用市场:大级别单边趋势(商品、动量股)。失效场景:区间震荡反复假突破。
参数:入场周期越长信号越少越可靠;经典组合 20/10、55/20。
陷阱:胜率通常只有 35-45%,靠"小亏大赚"盈利——心理上要能承受连续止损。
⑥ Triple MA — 三均线系统
逻辑:快线 > 中线 > 慢线(默认 5/10/20 多头排列)→ 买入;快线跌破中线 → 卖出。
背后假设:三线共振比双均线更严格,过滤掉一部分假突破。
适用市场:趋势清晰的主升段。失效场景:宽幅震荡(三线反复缠绕)。
参数:5/10/20(短),10/20/60(中),20/60/120(长)。
陷阱:条件更严格意味着进场更晚、出场也更晚,趋势末端回撤明显。
⑦ Pullback Buy — 趋势回调买入
逻辑:长期均线(默认 MA50)向上的前提下,价格回踩短期均线(默认 MA10)附近 → 买入;跌破长期均线 → 卖出。
背后假设:"牛市回调是上车机会"——趋势内的回撤大概率被修复。
适用市场:慢牛、结构性牛市。失效场景:趋势反转初期(把崩盘当回调接)。
陷阱:必须严格执行"跌破长均线离场",否则一次趋势反转会吞掉多次回调盈利。
⑧ Volume Breakout — 放量突破
逻辑:价格突破 N 日高点且成交量 ≥ 均量 × 倍数(默认 1.5)→ 买入;缩量或跌破支撑 → 卖出。
背后假设:量是价的先行确认,放量突破的真突破概率显著高于缩量突破。
适用市场:题材启动、财报后跳空延续。失效场景:高位放量(可能是出货)。
陷阱:放量也可能是恐慌抛售的对手盘,高位放量突破需谨慎。
⑨ Momentum — N 日动量
逻辑:过去 N 日(默认 20)涨幅超过阈值 → 买入持有;动量转负 → 卖出。学术界最著名的"动量异象"(Jegadeesh & Titman, 1993)。
背后假设:强者恒强,过去 3-12 个月表现好的资产短期继续跑赢。
适用市场:动量因子长期有效的市场(美股)。失效场景:动量崩溃(momentum crash,如 2009 年 3 月反转)。
陷阱:动量策略回撤极深,学术数据也显示偶发 -40% 以上的月度崩溃。
以下 6 个为日内(Day-Trading)模板:只在分钟级 K 线(1m/3m/5m/15m)上有意义,共同特征是收盘强平、绝不隔夜、限制单日进场次数。日线上运行会自动不作为。
⑩ ORB Intraday — 开盘区间突破(日内)
逻辑:开盘后前 N 根 K 线(默认 6 根)的高低点构成"开盘区间";突破区间上沿 → 买入;跌回区间下沿 → 止损;收盘前强制平仓。
背后假设:开盘 30-60 分钟聚集了隔夜信息的消化过程,突破开盘区间往往定下全天方向。
参数:range_bars 区间 K 线数、正盘开始时间(美股 9:30,日股可改 9:00)、强平时间、单日最大进场次数。
陷阱:区间日(开盘冲高回落全天震荡)会连续止损;配合放量确认可过滤一部分。
⑪ VWAP Pullback — VWAP 回踩反弹(日内)
逻辑:以当日 VWAP(成交量加权均价)为"公允价值锚";价格跌破 VWAP 后重新收复 → 买入;显著跌破 VWAP(默认 -0.5%)→ 止损;收盘强平。
背后假设:机构算法大量以 VWAP 为基准执行,价格围绕 VWAP 的收复/跌破有真实资金含义。
陷阱:单边下跌日 VWAP 持续压制价格,"收复"信号全是假的——需先判断当天是否趋势日。
⑫ RSI Scalp — RSI 日内抢反弹(日内)
逻辑:短周期 RSI(默认 7)< 25(恐慌超卖)→ 买入;RSI 回升 > 55 → 止盈离场;收盘强平。均值回归型,与趋势型互补。
背后假设:分钟级的恐慌抛售常常过度,几分钟到几十分钟内会部分修复。
陷阱:遇到真利空(新闻、财报)的持续下杀会连续接刀;单日进场次数上限是保命参数。
⑬ Gap & Go — 跳空缺口动量(日内)
逻辑:开盘相对昨收跳空 ≥ 阈值(默认 +2%),且突破开盘第一根 K 线高点 → 顺势买入;跌破第一根 K 线低点(缺口衰竭)→ 止损;收盘强平。
背后假设:显著跳空代表隔夜重大信息,配合早盘突破往往形成"开盘冲刺"(opening drive)。
陷阱:低流动性小盘股跳空后极易"缺口回补",本模板更适合放量的大中盘。
⑭ EMA 9/20 Pullback — 均线回踩(日内)
逻辑:EMA9 > EMA20 定义日内上升趋势;价格回落到 EMA9 下方后重新收复 → 买入;收盘价跌破 EMA20 → 离场;收盘强平。日内交易员最常用的"9/20 组合"。
背后假设:日内趋势中的浅回调大多在快线附近获得支撑。
陷阱:横盘期两线频繁交叉,信号质量急剧下降;建议只在早盘趋势确立后启用。
⑮ Bollinger Reversion — 布林带回归(日内)
逻辑:价格收盘跌破下轨(超卖拉伸)→ 买入;回到中轨(均值)→ 止盈;跌破入场价一定比例(默认 -1%)→ 止损;收盘强平。
背后假设:±2σ 之外是统计极端,日内大概率向均值回归(与 ③ 的"突破追涨"正好相反——同一指标两种用法)。
陷阱:趋势日"沿着下轨走"(band walking)时会连续买在半山腰;止损纪律是该策略的全部。
⚠ 再次提醒:以上 15 个模板均为 AI 基于公开文献整理的教学参考,未经实盘验证,不构成投资建议。请先在回测和虚拟盘中充分检验、形成自己的参数与规则后,再考虑任何实际操作。
14.2 风险管理(高级配置)
所有模板和自定义策略都会自动应用以下 4 道风控(在折叠的 "⚙ 高级配置" 区块设置):
| 字段 | 含义 | 推荐值 |
|---|---|---|
| 止损 % stop_loss_pct | 低于入场价 N% 时强制平仓 | 3-5%(短线);8-10%(中线) |
| 止盈 % take_profit_pct | 高于入场价 N% 时强制平仓 | 不必配,趋势策略让 trailing stop 跑利润;震荡策略可配 3-5% |
| 移动止损 % trailing_stop_pct | 从持仓期间最高价回撤 N% 时平仓 | 5-8%(让利润奔跑的核心机制) |
| 最大持仓根数 max_holding_bars | 持仓超过 N 根 K 线强制平仓(避免被动套牢) | 日线 30-60;分钟级看策略时间尺度 |
实战建议:止损必配(哪怕 -10% 也比无止损好),移动止损强烈推荐(最大化盈利策略),止盈选配(容易"过早平仓错过大行情"),max_holding 防御性配置。
14.3 仓位模式(4 种)
| 模式 | 逻辑 | 适用场景 |
|---|---|---|
| 全仓买入 all_in | 每次买入用掉全部可用现金 | 仅回测验证用,实盘绝对不要(一笔大亏直接报销) |
| 固定金额 fixed_dollar | 每单固定 N 美元(默认 10000) | 新手最佳。简单、可控、便于跨股票比较 |
| 固定比例 fixed_pct | 每单占当前净值 N%(默认 100%) | 赚钱后越买越多(复利),亏钱后越买越少(防爆仓) |
| 固定风险 fixed_risk ⭐ | 每单亏损不超过净值 N%(默认 1%)。配合止损反推 qty | 专业级风控。需配止损 ≥ 1%。100 次连错只亏 ~63% 净值(数学上抗得住) |
选择建议:第一次回测用 fixed_dollar 1万(看清楚交易笔数 + 单笔盈亏)→ 验证策略后切 fixed_risk 1%(实盘前必做)。all_in 只用来"测试上限收益",不可作为运行模式。
14.4 13 张统计卡含义详解
| 指标 | 定义 | 判读阈值 |
|---|---|---|
| 总收益 | 期末净值 / 初始资金 - 1 | 越高越好,但要看 Buy & Hold 对比 |
| Buy & Hold | 同期单纯持有标的的收益(含手续费) | 策略要跑赢这个才有意义 |
| Alpha | 总收益 - Buy & Hold(超额收益) | 正数才说明策略本身赚钱。负 alpha = 不如躺平 |
| 年化 | 按交易日历换算到 1 年 | 跑赢同期 SPY 才算合格 |
| 期末净值 | 最后一根 K 收盘时的总资产 | 看绝对值 |
| 最大回撤 | 历史峰值到后续谷底的最大跌幅 | < 15% 可接受 / 15-30% 心理压力大 / > 30% 多数人会割肉 |
| 夏普 Sharpe | 年化收益 / 收益波动率 | > 1 良好 / > 2 优秀 / < 0.5 平庸 |
| Sortino | 用下行波动率替代总波动率(只惩罚亏损) | 比 Sharpe 更适合非对称收益策略。> 1.5 健康 |
| Calmar | 年化收益 / 最大回撤 | 量化最爱的指标。> 1 = 一年赚的>最大跌幅,> 3 顶级 |
| 胜率 | 盈利交易 / 总交易 | 趋势策略 40-50% 也能赚钱(靠盈亏比);震荡策略需 > 55% |
| 盈/总 | 盈利笔数 / 总笔数 | 看绝对数量,< 5 笔不够样本 |
| 盈亏比 Profit Factor | 总盈利 / 总亏损 | > 1.5 健康,> 2 优秀 |
| 出场原因 | S=信号/SL=止损/TP=止盈/TR=移动止损/TO=超时 | 看止损 vs 信号比例。SL/S 高 → 止损过严或策略不准 |
看回测结果的优先级:① Alpha 是否正(首要) → ② 最大回撤(你心理能否承受) → ③ Calmar 综合性价比 → ④ 盈亏比 + 胜率组合 → ⑤ 总收益。千万不要只看总收益。
14.5 自定义代码策略
切换到 "代码" 模式,写一个 on_bar 函数:
def on_bar(bar, ctx):
closes = [b.close for b in ctx.bars]
if len(closes) < 50:
return Action.HOLD
# 趋势过滤:只在长期上涨时考虑买入
ma50 = sma(closes, 50)
if closes[-1] < ma50:
return Action.HOLD
# 入场:RSI 超卖
r = rsi(closes, 14)
if r < 30 and ctx.position.is_flat:
return Action.BUY
# 出场:RSI 超买
if r > 70 and not ctx.position.is_flat:
return Action.CLOSE
return Action.HOLD
可用对象:
bar.open / high / low / close / volume / time:当前 K 线ctx.bars:从开始到现在所有 K 线(list of Bar)ctx.position.qty / avg_price / is_flat:当前持仓ctx.cash / equity:现金 + 总净值ctx.params:策略参数 dict(如果有)
可用函数(无需 import):sma(values, period)、ema(values, period)、rsi(values, period)、bollinger(values, period, std_mult)、macd(values, fast, slow, signal)、atr(highs, lows, closes, period)、donchian(highs, lows, period)、math 模块。
沙箱限制:import / open / eval / exec / globals / __* 等危险操作全部禁止。沙箱用 AST 在编译期检查,违规 → 加载失败有具体报错。
14.6 Walk-Forward 样本外测试
勾选 "样本外测试" 复选框,设置训练集比例(默认 70%)。回测自动把数据拆两段:
- 训练集(前 70%):用来"假装"调参的样本
- 测试集(后 30%):模拟"未来未见数据",独立跑一遍
怎么读结果:
- 训练 +20% / 测试 +18% → ✅ 健康,策略对参数不敏感
- 训练 +30% / 测试 -5% → ⚠️ 过度拟合警告(系统自动标红)。参数是"喂出来"的,未来不可信
- 训练 -5% / 测试 +10% → 巧合,再换样本试试,可能就是噪声
真量化的金科玉律:永远不在你想"上实盘"的那段数据上调参。先 walk-forward 至少跑 3 个不同时段都正收益,再考虑实盘。
14.7 网格搜索(参数寻优)
选 "网格搜索" 模式 → 模板下选一个 → 每个参数填一组值(逗号分隔,如 3,5,8,13) → 运行。
系统自动跑笛卡尔积(如 4×4=16 组合),按你选的指标(Sharpe / 总收益 / Calmar / Sortino)排序,显示 top-10。点结果行的 "应用此组参数" 自动填回模板回测一次细看。
- 组合上限 200:超过自动拒绝(防 CPU 烧坏)
- 排序指标推荐 Calmar 而非 Sharpe(量化更看重"回撤调整后收益")
陷阱:网格搜索本质是"在历史上挑最好的参数",几乎肯定会过拟合。每次找到 top-10 后必须 walk-forward 验证——top-1 在测试集还能正收益的,才算真的有效。
14.8 图表与交易明细
主图(K 线):绿色 BUY / 红色 SELL 标签是策略实际触发点。下方净值曲线:含两条线 —— 你的策略(实线)+ Buy & Hold 基准(灰色虚线)。两线交叉处是 alpha 由正转负的瞬间。
底部交易明细表:每笔的入场/出场时间、价格、数量、绝对盈亏 + 收益率%。
避免过度拟合的 4 个铁律:①参数在 3-5 只不同股票上跑都正才信;②walk-forward 测试集也要正;③不要每次只调"一个最优参数",要看 top-10 整体表现是否稳定;④参数越少越好(2 个参数比 5 个参数靠谱十倍)。
15. 下单
📌 开发中(Phase 2)。功能完成后这里会补全:moomoo 账号下单 UI(限价/市价/止损)、订单簿、成交记录、风控(每单上限、日内亏损上限、Kill Switch)。
当前安全地基已就绪(trade_safety.py + trade_provider.py),所有真实下单都会经过 check_order_allowed() 安全门,并强制写入 order_audit 审计表。
16. 策略自动执行
📌 开发中(Phase 3)。功能完成后这里会补全:从 §14 保存的策略一键启用为实盘自动执行(含心跳、订阅 K 线推送、按规则下单、止损、Kill Switch 联动)。
启用前会强制提示:真金白银,需输入 moomoo 交易密码 + 二次确认。
17. OpenD 连接管理
moomoo OpenD 是本地网关程序,运行在你电脑上,负责:
- 连接 moomoo 服务器(行情 / 交易)
- 暴露本地 TCP 接口(默认
127.0.0.1:11111)给 Python SDK
RelayAi Quant 不直接连 moomoo 云端,而是通过 OpenD。所以"美港股实时行情、交易"等功能要先把 OpenD 跑起来 + 登录。
登录流程(管理员页面 /admin/opend)
- 输入 moomoo 账号(邮箱 / 手机带国家代码 / 用户 ID)+ 密码
- 点 "启动 OpenD 并登录",后端写入临时配置文件并启动 OpenD 进程
- 如需图形验证码 → 后端读取 OpenD 生成的 PNG 显示在网页 → 你输入 → 提交
- 如需短信验证码 → moomoo 向绑定手机发短信 → 你输入 → 提交
- 状态变绿 "✓ 已登录",美港股 API 可用
关于密码安全
- 密码到达后端后立刻调
moomoo.unlock_trade(),50 毫秒内从 Python 内存丢弃 - 不写日志、不存 DB、不在 API 响应里返回
- 会话 TTL 2 小时,闲置自动重锁;浏览器关闭也会重锁
- FutuOpenD.xml 配置文件登录成功后会被立即清空
<login_pwd>字段
常见错误
| 提示 | 原因 | 解决 |
|---|---|---|
| 账号或密码错误 | moomoo 服务端拒绝 | 核对账号 + 密码(去 moomoo App 试一下) |
| 需要图形验证码 | moomoo 风控触发 | 看图填,区分大小写 |
| 需要短信验证码 | 新设备 / 长时间未登录 | 看手机短信填 6 位数字 |
| OpenD 未运行 | 进程被杀 / 配置错误 | 重新点"启动 OpenD" |
| JP 股票"Unknown stock" | moomoo OpenAPI 不支持日股现货 | 系统已自动 fallback 到 yfinance(可正常使用,但延迟 ~15 分钟) |
18. 量化思路(推荐版)
这一章不是"中立陈述",是我的具体建议。你可以反对,但起码有个起点。
18.1 趋势跟随 vs 均值回归 — 不要押单一学派
两种策略在不同市况下分别赚钱:
- 趋势跟随:MA 金叉、52 周新高、突破 20 日箱体。牛市大赚,熊市无股可选,持仓周期几天到几周。
- 均值回归:RSI 超卖回弹、布林下轨买入。震荡市赚钱,趋势市持续踩坑,持仓几小时到几天。
建议分桶:
- 资金 70% 给趋势跟随(用 §2 的动量质量复合 / 风险调整动量做候选池)
- 30% 给均值回归(用 §14 的 RSI 超卖 / BOLL 突破回测验证后跑)
- 市场宽度开关:当 SPY 跌破 200 日均线时,趋势桶自动减仓 50%(避免熊市强行做多)
18.2 过夜持仓 vs 日内平仓 — 选过夜
除非你做的是真正的日内高频(需要 Tick 数据 + 低延迟基础设施),否则建议过夜持仓。理由:
- 频繁进出 = 手续费 + 滑点叠加,每笔 0.05% × 100 笔 = 5% 直接吃掉收益
- 美股短期持有(< 1 年)按 ordinary income 计税,长期 (> 1 年) 走 long-term capital gains,税率差别巨大
- 大多数因子策略和技术指标的有效时间尺度本身就是几天到几周(你按分钟交易反而是噪音)
- RelayAi Quant 回测默认包含 5 bps/侧手续费,更换粒度时记得调整(高频换手的策略要把手续费拉到 10-15 bps 才接近真实)
18.3 横截面因子 vs 时间序列触发 — 缺哪一块
RelayAi Quant 现有 7 个价格因子 + 6 个基本面因子,覆盖了 5 个维度(动量、反转、低波、新高、放量、风险调整、价值、质量),都属于横截面打分——告诉你"长期值得关注哪些股",但不告诉你"此刻何时入场"。
缺的是时间序列触发型扫描,下面列举三个值得加的(已规划,等下单和自动策略落地后实现):
- 突破扫描:收盘价 = 最近 20 日最高 + 当日成交量 ≥ 60 日均量 × 1.5 + MACD DIF 上穿 DEA
- 回调买入扫描:收盘 > MA20(仍在趋势中)+ RSI(14) < 40(短期超卖)
- 板块轮动:算 11 个 SPDR 板块的 20 日收益率,取领涨前 3 个,板块内按风险调整动量取前 10
实操建议:先用 §2 的因子筛选拉出"长期关注名单"(约 20-30 只),再用 §13 走势图检查每只的具体形态,确认买点(MA 金叉 / 突破 / 回调),最后用 §14 回测同一组参数在这些股票上的表现,全部正收益的策略再上实盘。