公式评测与回测
公式评测(也叫「系统测试」或「回测」)是把交易系统公式丢给历史数据,模拟买卖,看这套规则在过去能赚多少、亏多少、最大回撤多大。本章把回测的设置、运行、报告解读讲清。
交易系统公式
回测的对象是交易系统公式,用 BK / SK / SP / BP 等指令发出买卖信号:
| 指令 | 含义 |
|---|---|
BK | 买开(多头开仓) |
SK | 卖开(空头开仓) |
SP | 多头平仓(卖平) |
BP | 空头平仓(买平) |
BPK | 平多反手开空 |
SPK | 平空反手开多 |
股票只做多,所以基本只用 BK(买入)和 SP(卖出)。
{ 双均线交易系统 }
MA5 := MA(CLOSE, 5);
MA20 := MA(CLOSE, 20);
BK(CROSS(MA5, MA20)); { 5 上穿 20,买开 }
SP(CROSS(MA20, MA5)); { 5 下穿 20,卖平 }
A 股只能做多且 T+1,回测要在系统设置里选「单向」+「T+1」,否则结果会偏离实盘。
打开公式评测
菜单 分析 → 公式评测(部分版本叫「系统测试」),打开评测向导。
主要步骤:
- 选公式:选一个交易系统公式(带 BK/SK/SP/BP 的)。
- 选股票 / 板块 / 周期:单股票、自定义板块、全市场;日 K / 周 K / 分钟 K。
- 设时间区间:起止日期,建议至少 3~5 年覆盖牛熊。
- 设交易参数:开仓手数、信号生效方式、滑点、手续费、T+1 / T+0。
- 运行 → 出报告。
关键交易参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 信号生效 | 收盘价 / 次日开盘价 | 收盘价模型偏乐观;次日开盘价更接近实盘 |
| 滑点 | 1~2 个最小变动价位 | 实盘成交价比信号价差 |
| 手续费 | 0.025%~0.03% 双边 | 券商佣金,部分场景还要加印花税 0.1%(卖方) |
| 印花税 | 卖出 0.05% | 2023 年起下调为 0.05%,回测要以最新规则为准 |
| T+1 | 开启 | A 股当日买不能当日卖 |
| 开仓资金 | 总资金的 50%~100% | 看自己的仓位管理规则 |
滑点和手续费是新手最容易忽略的——回测里少设这两项,结果会比实盘好 30%~50%。
报告核心指标
同花顺评测报告里最重要的几列:
| 指标 | 含义 | 看法 |
|---|---|---|
| 总收益率 | 区间内总盈亏百分比 | 必须为正,且高于沪深 300 同期 |
| 年化收益率 | 折算到年的复利收益 | 长期 > 15% 算不错 |
| 最大回撤 | 历史最高点到后续最低点的跌幅 | < 20% 比较健康 |
| 胜率 | 盈利交易数 / 总交易数 | 不是越高越好,看盈亏比 |
| 盈亏比 | 平均盈利 / 平均亏损 | > 1.5 算理想 |
| 交易次数 | 区间内总交易次数 | 太少(< 30)样本不足;太多(> 500)手续费吞噬利润 |
| 夏普比率 | 风险调整后收益 | > 1 算可接受,> 2 优秀 |
详细资金曲线
评测报告里有资金曲线(资金随时间的变化),是判断策略稳健性的最重要图表:
- 平稳上行:好策略。
- 阶梯式跳升:依赖少数几次大盈利,运气成分大。
- 剧烈波动:风险大,可能扛不住实盘心理压力。
- 长期横盘:策略失效或参数过紧。
把同一策略在 2018(熊)、2019~2020(牛)、2022(熊)、2023(震荡)都跑一遍,看曲线在不同市场环境下是否稳定。
参数敏感性测试
把关键参数(如均线周期 N)在一个范围内扫一遍,看收益和回撤怎么变化:
{ 参数:N 5 60 20 }
MA_N := MA(CLOSE, N);
BK(CROSS(CLOSE, MA_N));
SP(CROSS(MA_N, CLOSE));
- N = 5/10/20/30/60 各跑一次,记录年化和最大回撤。
- 如果 N 稍稍变化收益剧烈波动(比如 N=20 收益 50%,N=21 收益 -10%),说明过拟合,未来大概率失效。
- 选「参数附近都稳定赚钱」的参数区间,而不是「单点最优」的参数。
常见回测陷阱
- 未来函数:用
ZIG / PEAK / TROUGH / BACKSET / REF(X, -1)等会让回测神准。本书所有示例都避开这些函数。 - 收盘价模型:用收盘价信号 + 收盘价成交的回测最乐观,实盘要切到「次日开盘价」更接近真实。
- 未设手续费:年化 50% 的策略,加上 0.1% 双边成本可能直接变负。
- 过拟合参数:在历史数据上挑出最优参数,未来大概率失效。看参数附近的稳定性,不看单点最优。
- 样本不足:3 个月回测的「年化 200%」毫无意义,至少要 3 年以上覆盖牛熊。
- 幸存者偏差:回测当下的沪深 300 成分股,是过去涨上来的票,已退市的票不在内——结果会偏乐观。
实战:双均线策略完整回测
{ 公式名:双均线交易系统 }
{ 参数:快线 1 60 5;慢线 10 120 20 }
MA快 := MA(CLOSE, 快线);
MA慢 := MA(CLOSE, 慢线);
BK(CROSS(MA快, MA慢)); { 金叉买 }
SP(CROSS(MA慢, MA快)); { 死叉卖 }
评测设置:
- 标的:沪深 300 ETF(510300)或个股
- 周期:日 K
- 区间:2018-01-01 ~ 2024-12-31(7 年覆盖牛熊)
- 信号生效:次日开盘价
- 手续费:0.03% 双边 + 印花税 0.05%
- T+1:开启
跑完后看:
- 总收益率 vs 沪深 300 同期 → 是否有超额
- 最大回撤 → < 25% 算可接受
- 交易次数 → 30~100 算合理
- 资金曲线 → 是否平稳
把快线从 5 扫到 20,看收益和回撤怎么变化——稳定性比单点收益更重要。
评测通过后的下一步
- 模拟盘跑 1~3 个月:用模拟资金实盘下单,验证信号触发是否符合回测。
- 小资金实盘 3~6 个月:1~2 万本金实盘,验证滑点、流动性、心理压力。
- 逐步加仓:模拟 + 小资金都验证通过,再上更大资金。
回测只能证明「过去」,不能保证未来。任何策略上线后都要持续监控,遇到失效立刻停。
读完本章,同花顺公式开发从入门到回测的闭环就齐了。后续可结合本书其他平台章节,迁移到 通达信、文华 WT8 等环境,或转向 PTrade 这类 Python 量化平台,做更复杂的策略。