策略回测与图表

策略写出来后,先别急着实盘——先做历史回测,看看它在过去到底能不能赚钱、胜率多高。金字塔的两套交易引擎正好对应两种用法:图表交易天然适合回测,后台交易适合实盘执行。本章讲清两者的区别、回测怎么做、统计指标怎么看。

一、图表交易 vs 后台交易

这是用金字塔必须分清的核心概念:

对比项图表交易后台交易
持仓依据历史 K 线算出的理论持仓真实账户持仓
信号标注在 K 线图上静默执行
下单函数BUY/SELL/BUYSHORT/SELLSHORTTBUY/TSELL/...
资金ASSET(虚拟,默认 100 万)TASSET(真实账户)
回测支持不支持(部分函数回测无效)
适用策略验证、回测实盘批量执行

图表交易的逻辑:金字塔从第一根 K 线开始,逐根执行你的公式,根据买卖信号维护一个「理论持仓」,并在图表上画出开平仓标记和资金曲线。这就是回测的基础。

二、图表交易怎么跑

  1. 在 K 线图上加载你的策略公式(右键 → 选择指标,或拖入策略)。
  2. 设置公式属性:初始资金、手续费、滑点、保证金比例等。
  3. 金字塔自动从历史数据开始逐根计算,画出入场出场标记、持仓和资金曲线。
  4. 在「测试报告」窗口查看详细统计。

一个完整的图表策略框架:

RUNMODE:0;                          { 逐 K 线模式 }
MA5  := MA(CLOSE, 5);
MA20 := MA(CLOSE, 20);

{ 开平仓 }
BUY(CROSS(MA5, MA20) AND HOLDING=0, 1, MARKET);
SELL(CROSS(MA20, MA5) AND HOLDING>0, 0, MARKET);

{ 输出持仓和资金便于观察 }
持仓: HOLDING, COLORGRAY, LINETHICK0;
资产: ASSET, NOAXIS, COLORGRAY;

三、交易统计函数

回测跑完后,金字塔提供丰富的统计函数,你也可以在公式里直接引用它们做动态判断:

函数含义
PERCENTWIN胜率(0~1)
TOTALTRADE总交易次数
AVGWIN / AVGLOSS平均盈利 / 平均亏损
PayoffRate盈亏比 = 平均盈利 ÷ 平均亏损
PROFITFACTOR总盈利 ÷ 总亏损
MaxDrawDown / MaxDrawDownPct最大回撤金额 / 百分比
RETURNRATE / ANNUALRETURNRATE收益率 / 年化收益率
SHARPRATE夏普比率

期望收益 = 胜率 × 盈亏比 − 败率,正期望才有戏。胜率 90% 但亏起来很猛的系统,未必比胜率 40%、盈亏比 3:1 的好。

四、图表到后台的转换

策略在图表上验证通过后,转成后台版本有几条机械规则:

  1. 下单函数加 TBUYTBUYSELLTSELL
  2. 委托类型改缩写:MARKETMKTLIMITLMT
  3. 持仓函数替换:HOLDINGTHOLDINGASSETTASSET
  4. 多空分开管理:用 TBUYHOLDING(1) / TSELLHOLDING(1) 分别读多头和空头。
{ 后台版 }
TBUY(CROSS(MA5,MA20) AND TBUYHOLDING(1)=0, 1, MKT);
TSELL(CROSS(MA20,MA5) AND TBUYHOLDING(1)>0, 0, MKT);

后台调试没有图表标记,用 DEBUGFILE 把变量写到日志文件:

DEBUGFILE('D:\LOG.TXT', '资产='&NUMTOSTR(TASSET,2), 0);

五、回测常见陷阱

  1. 未来函数ZIG/PEAK/TROUGHREFX 等会事后修正,历史回测完美、实盘失效。回测前确认公式无未来函数。
  2. 过拟合:参数和历史调得太贴合,换段(样本外)再测一遍才可信。
  3. 忽略成本:手续费、滑点、冲击成本必须设,频繁交易会被成本吃光利润。
  4. 复权数据:股票有分红送股的要用复权数据,否则信号错位。
  5. 后台函数回测无效TACCOUNTVOLTCANCELID 等部分后台函数在回测中不生效。

小结

图表交易用 BUY/SELL 维护理论持仓,天然适合回测;后台交易用 TBUY/TSELL 操作真实账户,适合实盘。 回测看胜率、盈亏比、最大回撤、夏普;警惕未来函数、过拟合和成本。下一步学 账户与股票池,掌握实盘的资金与品种管理。