交易系统 XtradingTime

Excel 统计交易的公式怎么写:可直接粘贴的十四条,含用滚动最大值算的真回撤

Excel 统计交易的公式怎么写:可直接粘贴的十四条,含用滚动最大值算的真回撤
本文目录(7 节)

统计交易这件事,卡住绝大多数人的不是不会写公式,是表格的列位没定死,写一半发现要插一列,前面的公式全乱。所以这篇先把列位固定下来,再给公式。另外要先说一个网上流传最广的错误:最大回撤不能用最高权益减最低权益。只要最低点出现在最高点之前,这个算法算出来的数字会比真实回撤大一倍以上,文末的验算里有一个具体例子,真值 5%,错误算法给出 10.38%。

一、先把列位定死

新建一个工作表,第 1 行写表头,数据从第 2 行开始。下面所有公式都按数据填到第 201 行(也就是 200 笔)来写,笔数更多就把 201 改成更大的数字。

手工录入区(A 到 H 列):

表头填什么
A日期平仓日期
B品种代码或名称
C方向多 或 空
D开仓价实际成交价
E平仓价实际成交价
F数量股数、手数或张数
G盈亏金额净额,已经扣掉手续费和税
H计划风险金额开仓时算的(开仓价 − 止损价)× 数量

G 列是整张表的地基,两个细节必须做对。

G 列填净额。 手续费、过户费、印花税全部先扣掉再填。A股印花税自 2023 年 8 月 28 日起按 0.05% 单边收取(卖出时收),此前是 0.1%。填毛利的人算出来的期望值一定是正的,因为交易成本刚好被藏在了小数点后面,而它恰恰是大部分人由盈转亏的那部分。

H 列是「计划的」风险,不是实际亏损。 它在开仓那一刻就确定了,之后不管止损有没有守住都不改。这一列的价值在下一节。

公式区(I 到 O 列),统计区(P 到 Q 列):

Q1 这个单元格填初始资金(比如 100000),P1 写上「初始资金」四个字做标签。Q1 必须先填,不填后面一半公式会报 #DIV/0!。

二、七条辅助列公式,写在第 2 行然后下拉

这一组每条都写在对应列的第 2 行,写完选中单元格,鼠标移到右下角小方块,双击或者往下拖到第 201 行。

I2(R 倍数):

=IFERROR(G2/H2,"")

算出来是这笔赚了或亏了几倍的计划风险。凡是这一列小于 −1 的行,都是止损没守住,是执行问题不是行情问题。 这是整张表里诊断价值最高的一列。

J2(累计权益):

=$Q$1+SUM($G$2:G2)

注意 $G$2:G2 这个写法,起点锚死、终点不锚,下拉之后会变成 $G$2:G3$G$2:G4,这样才是累计。两个都锚死或者都不锚,结果就全错了。

K2(历史最高权益,滚动最大值):

=MAX($Q$1,$J$2:J2)

这条是全文最关键的一行。 它算的是「截至这一笔为止,权益曾经到过的最高点」,而不是整段历史的最高点。写法和上一条一样,起点锚死、终点跟着往下走。

公式里为什么要带上 $Q$1:如果第一笔就亏钱,权益从 100000 掉到 97000,此时曾经的最高点是 100000(开始交易之前的初始资金),不是 97000。漏掉 $Q$1 的话,第一笔亏损的回撤会被算成 0。

L2(回撤金额):

=K2-J2

M2(回撤比例):

=IFERROR(L2/K2,0)

M 列要设成百分比格式,否则显示成 0.05 而不是 5%。

N2 和 N3(连亏计数器):

第 2 行单独写一条,因为它上面是表头没法引用:

=IF(G2<0,1,0)

第 3 行写下面这条,然后从 N3 往下拉:

=IF(G3<0,N2+1,0)

这一列的含义是「截至这一笔,已经连亏了几笔」,赢一笔就归零。

O2 和 O3(连赢计数器): 同样的写法,把符号反过来。O2 填 =IF(G2>0,1,0),O3 填 =IF(G3>0,O2+1,0) 然后下拉。

关于空行:公式可以放心拖到第 201 行,没有记录的行不会污染统计。原因是空单元格在 SUM 里按 0 算,而 空<0 在 Excel 里判定为 FALSE,所以连亏计数器不会被空行往上加。唯一的副作用是权益列在空行上显示成初始资金,看着别扭但不影响任何统计值。

三、七条统计区公式

P 列写标签,Q 列放公式。

单元格标签(写在 P 列)公式(写在 Q 列)算出来是什么
Q3交易笔数=COUNT(G2:G201)有记录的笔数
Q4盈利笔数=COUNTIF(G2:G201,">0")赚钱的笔数
Q5亏损笔数=COUNTIF(G2:G201,"<0")亏钱的笔数
Q6胜率=IFERROR(Q4/(Q4+Q5),0)设百分比格式
Q7平均盈利=IFERROR(AVERAGEIF(G2:G201,">0"),0)赚的那些笔平均赚多少
Q8平均亏损=IFERROR(ABS(AVERAGEIF(G2:G201,"<0")),0)取正数
Q9盈亏比=IFERROR(Q7/Q8,"")平均盈利是平均亏损的几倍
Q10期望值(元/笔)=IFERROR(AVERAGE(G2:G201),0)每做一笔平均赚多少钱
Q11期望值验算=Q6*Q7-(1-Q6)*Q8应该和 Q10 完全相等
Q12利润因子=IFERROR(SUMIF(G2:G201,">0")/ABS(SUMIF(G2:G201,"<0")),"")总盈利除以总亏损
Q13最大回撤金额=MAX(L2:L201)从峰值往下最多亏了多少钱
Q14最大回撤比例=MAX(M2:M201)设百分比格式
Q15最长连亏=MAX(N2:N201)历史上连亏最多几笔
Q16当前连亏=IFERROR(INDEX(N2:N201,COUNT(G2:G201)),0)眼下已经连亏几笔

Q6 的胜率分母用的是「盈利笔数加亏损笔数」,不是 COUNT(G2:G201)。区别在于打平的那些笔(盈亏正好为 0)被排除掉了。用 COUNT 做分母会把打平的笔算进分母却不算进分子,胜率被系统性地压低。

Q11 存在的意义是验算。期望值有两种算法,一种是直接对 G 列取平均,一种是用「胜率乘平均盈利减去败率乘平均亏损」。在没有打平交易的情况下,这两个数字必须完全相等。 如果 Q10 和 Q11 不一样,说明你有打平的笔,或者某一列的范围写错了。这是一条免费的自检。

Q16 的写法值得解释一下:COUNT(G2:G201) 数出你实际填了几笔,INDEX 取出连亏计数列里对应那一行的值。这样不管你填了 5 笔还是 150 笔,它永远指向最后一笔。

这些数字满 50 笔之前不要看。 20 笔算出来的胜率和盈亏比波动极大,本批统一口径是 50 笔为统计下限,样本量为什么是这个数,回测样本量要多少笔那篇有推导。

Excel交易统计表的完整列位示意图,画出A到H手工录入区、I到O公式辅助列、P到Q统计区三个分区,用不同底色区分,在K列历史最高权益上画箭头标出它引用的是从第2行到当前行的滚动区间而不是整列

四、用五笔假数据验算一遍

光给公式不验算,等于把风险丢给读者。下面用 5 笔数据把每一条都算一遍。

初始资金 Q1 填 100000,每笔的计划风险 H 列都填 3000。

G 盈亏I 倍数J 累计权益K 历史最高L 回撤金额M 回撤比例N 连亏O 连赢
2−3000−1.009700010000030003.00%10
3−2000−0.679500010000050005.00%20
4+60002.0010100010100000.00%01
5+50001.6710600010600000.00%02
6−4000−1.3310200010600040003.77%10

逐格核对 K 列。K2 取 100000 和 97000 里的大者,得 100000。K3 取 100000、97000、95000 里的大者,还是 100000。K4 加进 101000,最大值变成 101000。K5 加进 106000,最大值变成 106000。K6 加进 102000,最大值仍是 106000。峰值只升不降,这就是「滚动最大值」四个字的含义。

统计区的结果:

项目手算过程
交易笔数5
盈利 / 亏损笔数2 / 3
胜率40%2 ÷ 5
平均盈利5500(6000 + 5000) ÷ 2
平均亏损3000(3000 + 2000 + 4000) ÷ 3
盈亏比1.835500 ÷ 3000
期望值400 元(−3000 − 2000 + 6000 + 5000 − 4000) ÷ 5
期望值验算400 元0.4 × 5500 − 0.6 × 3000 = 2200 − 1800
利润因子1.2211000 ÷ 9000
最大回撤金额5000 元L 列的最大值,出现在第 3 行
最大回撤比例5.00%M 列的最大值,5000 ÷ 100000
最长连亏2 笔N 列的最大值
当前连亏1 笔N6 的值
期望 R0.13R400 ÷ 3000,也等于 I 列的平均值

两条验算都对上了:期望值的两种算法都是 400,期望 R 用「期望金额除以单笔风险」和「直接对 I 列取平均」也都是 0.1333。

现在看错误算法。 用最高权益减最低权益:106000 − 95000 = 11000,除以 106000 得 10.38%。真值是 5.00%。

差了一倍多,原因很清楚:最低点 95000 出现在第 3 笔,最高点 106000 出现在第 5 笔,最低点在最高点之前。你根本没有从 106000 跌到 95000 过,这段「回撤」是凭空拼出来的。滚动最大值的作用就是保证每个回撤都只和它之前的峰值比。

顺带看一眼 I 列:第 6 行是 −1.33R,说明这笔的止损被击穿了 33%,可能是跳空也可能是没按纪律砍。这一行会在复盘里被单独拎出来,收盘后复盘看哪七个数据里它是第四个数据。

滚动最大值与错误算法的对比图,画一条先跌后涨再回落的权益曲线,用阶梯状虚线画出滚动最大值,标出真实最大回撤5000元发生在曲线前段,另用一条跨越整段的箭头标出错误算法把最高点106000和最低点95000相减得到11000,注明最低点在最高点之前所以这段跌幅从未发生

五、旧版 Excel 和 WPS 的替代写法

本文十四条公式全部只用了 SUM、MAX、COUNT、COUNTIF、SUMIF、AVERAGEIF、ABS、IF、IFERROR、INDEX 这十个函数。这么克制是刻意的,下面这些函数一个都没用:

没用的函数最低版本要求用了会怎样
MAXIFS / MINIFSExcel 2019 或 M365Excel 2016 和较老的 WPS 报 #NAME?
FILTER / SORT / UNIQUE / SEQUENCEExcel 2021 或 M365旧版报 #NAME?,WPS 部分版本不支持
LET / LAMBDA仅 M365除 M365 外全部报 #NAME?
TEXTJOINExcel 2019旧版报 #NAME?

还需要替换的只有两个:

IFERROR 在 Excel 2003 里不存在。=IFERROR(A,0) 改写成 =IF(ISERROR(A),0,A),代价是括号里的表达式要写两遍。

AVERAGEIF 在 Excel 2003 里不存在。 Q7 改成 =SUMIF(G2:G201,">0")/COUNTIF(G2:G201,">0"),Q8 改成 =ABS(SUMIF(G2:G201,"<0")/COUNTIF(G2:G201,"<0"))

另外给一个「一个公式算最长连亏」的写法,供不想加辅助列的人用:

=MAX(FREQUENCY(IF(G2:G201<0,ROW(G2:G201)),IF(G2:G201>=0,ROW(G2:G201))))

这是数组公式,在 Excel 2019 及更早版本和多数 WPS 版本里,输入完必须按 Ctrl + Shift + Enter 而不是 Enter,否则结果是错的(而且不报错,这是它最危险的地方)。 按对了,编辑栏里公式两端会自动出现大括号。M365 和 Excel 2021 直接按 Enter 即可。用上面那五笔数据验证,这条公式返回 2,和辅助列的结果一致。

除非你有非去掉辅助列不可的理由,否则建议用 N 列的笨办法。辅助列的好处是出错时你能一行一行看出是哪笔算错了,一行式公式错了只能重写。

六、粘贴之后报错,先查这五样

现象原因怎么修
#NAME?从网页复制时英文双引号被转成了中文引号在编辑栏里把 " 手工重打一遍,这是最常见的一种
#DIV/0!Q1 初始资金没填,或者还没有任何亏损笔数先填 Q1;亏损笔数为 0 时套 IFERROR 即可
#VALUE!G 列里混进了文本,比如填成了「+3000元」G 列只填纯数字,亏损用负号不用括号
显示 0.4 不是 40%单元格格式还是常规选中 Q6、Q14、M 列,设成百分比
整列结果都一样$G$2:G2 的锚定写错了检查是不是把终点也锚成了 $G$201

还有一个和版本无关的坑:部分系统区域设置下,函数的参数分隔符是分号而不是逗号。 如果你把 =COUNTIF(G2:G201,">0") 粘进去提示公式有误,试着把逗号换成分号。判断方法是随便点开一个自带函数看它用的是哪个符号。

写在最后

这张表算完之后,真正要看的只有三个数:期望值、最大回撤比例、最长连亏。

期望值告诉你这套方法值不值得继续做,最大回撤告诉你在它开始赚钱之前你要承受多少,最长连亏告诉你需要多强的心理准备。很多人只看胜率,而胜率是这三个数里信息量最低的一个,胜率 70% 照样能亏钱,原因在胜率很高为什么还是亏钱里。

表格搭好之后不要再改列位。你会想加列,忍住,加到 R 列往后去加。 一旦在中间插列,前面所有的绝对引用都会错位,而这种错位不报错,它只是安静地给你一个错的数字。

3秒免费测一下你的”管不住手指数”:journal.xtradingtime.com(记住 3316,就能找到我们)


本文内容仅供教育和参考用途,不构成任何投资建议。公式在 Excel 2016 及以上和 WPS 个人版环境下验证通过,旧版请按第五节替换。交易有风险,入市须谨慎。

微信搜一搜 Tom讲交易

在微信里搜「Tom讲交易」即可关注,每周更新交易教学

推荐课程

合约陪跑实战训练营

不只教方法,更带你实盘执行。从仓位管理到止损止盈,手把手纠正你的交易习惯,建立可复制的盈利系统。

相关图解

一张图看完这件事,适合存下来随时翻

相关文章

交易系统

交易系统是不是真的有效:六个硬指标和它们的及格线

赚钱不等于系统有效,亏钱也不等于系统无效,因为交易样本的噪声大得超出直觉。这篇给出六个必须算清楚的硬指标和各自的及格线:样本量是否达到统计要求、期望值的 t 值是否过 1.96、盈亏比对应的盈亏平衡胜率、最大回撤和水下时间、执行率、以及分环境后的表现是否稳定。每个指标都给了公式和一张对照表。

交易系统

模拟盘转实盘的四个硬指标:样本量、执行率、期望值、最大回撤,每个都能算出来

模拟盘做到什么程度才算可以上实盘,凭感觉答不了。这篇给四个能算出数字的硬指标:样本量至少 100 笔(附统计推导,30 笔时胜率的标准误是 9.1 个百分点,100 笔降到 5.0)、计划执行率不低于 90%、期望值不低于 0.2R 且 t 值大于 2、最大回撤以 R 计不超过 20R。每个指标都给出计算方法、达标线和阈值是怎么定出来的,并说明三种典型的假达标。

交易系统

怎么判断自己够不够格做全职交易:五条能从记录里算出来的验证标准

够不够格做全职交易,跟去年赚了多少没关系,跟你的记录能不能通过五项验证有关系:实盘样本量够不够撑起一个胜率结论、时间跨度有没有覆盖难做的行情、有没有在真金白银的回撤里扛住没改系统、执行率能不能到90%、以及净利是不是集中在少数几笔上。这篇给出五条的具体算法、及格线、以及不达标时对应的补课动作。

风险管理

为什么我的胜率高但还是亏钱:一个公式定位问题,四种典型病症

胜率70%还在亏钱,问题一定出在期望值这个公式的另外三个变量上。这篇先用期望值公式定位你属于哪一种情况,再给出四种典型病症的具体表现和改法:赢小亏大、扛单摊平、手续费吃掉利润、以及重仓那笔恰好亏损。附一份可以直接算的自查表。

交易策略

止盈设1:2还是1:3:按策略类型分三档,附盈亏比与保本胜率对照表

盈亏比不是挑一个自己喜欢的数字,是由你的实际胜率反推出来的。盈亏比1:2对应保本胜率33.3%,1:3对应25%,把往返成本算进去分别变成36.7%和27.5%。这篇给出完整对照表和反推公式,再按日内短线、波段、趋势跟踪分三档给出各自的取值区间和适用胜率,最后回答为什么强行把目标位从1:2拉到1:3往往会让期望值变差。

风险管理

高赔率不等于高胜率:真正决定你赚不赚钱的是期望值

很多人以为找到一个高盈亏比的策略就稳赚,或者追求高胜率就能躺赢,结果两种人都长期不赚。真相是:单笔赔率再漂亮,不结合胜率算期望值,都是自欺欺人。这篇讲清楚盈亏比、胜率、期望值、赔率、风险回报比之间的真实关系,教你算出自己系统的期望值,找到适合自己性格的平衡点。

觉得有用?关注公众号

扫码或在微信里搜「Tom讲交易」,每周更新交易教学文章

扫码关注 Tom讲交易,或微信搜一搜 Tom讲交易

配套免费工具

交易规则卡片

打开