第 13 篇
基于修正 TD 指标的指数择时策略
TD 指标是 Tudor 基金副总裁 Thomas R. DeMark 在 80 年代中期设计的「找走势转折区」方法。它数「确认趋势后同向又走了多少天」,走过头就赌反转。原文版参数照搬美股在 A 股回测很差,本篇给出修正版:T=4、N=6、M=28,配「跌破计数期最低价」止损,对沪深 300 / 上证 50ETF 回测都避开了 07 与 15 年大熊市。本篇是量化课堂第 13 篇(postId=3996,作者栏标注肖睿、swlaw,编辑肖睿,难度入门,level-0)。素材见 raw/collections/jq-quant-classroom/13-13-基于修正td指标的指数择时策略md.md。
这是什么
本篇讲一套数日子的择时方法。它不像均线那样看「价格高低」,而是先确认一段涨势或跌势(启动),再数「确认之后又继续走了多少天」(计数)。同向天数走过头,说明原来的力量耗尽、转折要来了,就在此时反向开仓。方法分 TD 序列与 TD 组合两支;本篇先讲原理,再给一套修正好、能用于 A 股的参数与止损,最后是沪深 300 / 深成指 / 上证指数 / 上证 50ETF 的回测。
核心要点
TD 指标的出身与两支
- 设计者:Thomas R. DeMark,大型投资基金 Tudor 的执行副总裁,80 年代中期为发现「走势欲转折区域」而设计。
- 卖点:原理简单、预测精度高,因此被广泛使用。
- 分两支:TD 序列 与 TD 组合。原理基本相同、细节有差异,应用中相互独立,孰优孰劣不好说。
- 基本面原理:市场由买卖双方力量共同作用。涨久了一方疲软,就转向下跌。TD 指标专为「发现转折区域」设计。
- 直接照搬不行:作者说传统 TD 指标并不很适合我国市场,用于 A 股要做调整。它最大的意义是给了一个「识别走势」的框架,对象不同参数就得调。
启动阶段(序列与组合相同)
- 固定两个参数:间隔 T、统计天数 N。
- 连续 N 个交易日收盘都比 T 天前的收盘低 → 判定为下跌趋势 → 启动买入计数。
- 反之,连续 N 个交易日收盘都比 T 天前的收盘高 → 上涨趋势 → 启动卖出计数。
- 说白了:启动只负责「确认现在正处在一段趋势里」。
计数阶段(两支的分歧点)
- 启动后每个交易日做两组计数。以买入侧为例:
- 买入计数 1:当前 K 线收盘 < 前第二根 K 线(隔一天)的收盘 → +1。它数「跌势确认后还在创新低的日数」。
- 买入计数 2:当前 K 线收盘 > 前第二根 K 线收盘 → +1。它数「跌势里出现反弹的日子」。
- 两个触发点,先到先买:
- 计数 1 达到 M → 说明确认跌势后又跌太多,反弹该来了 → 买入。
- 计数 2 达到 M/2 → 说明反弹天数积累、原跌势已疲软 → 也买入。
- 卖出侧完全对称:上涨趋势确认后,计数 1 数「继续创新高」、计数 2 数「回落」,先到 M 或 M/2 就卖。
TD 组合的计数更严格
- 先把计数期第一天的收盘价记为 P,之后逐日用「收盘 vs 前第二根 K 线的高低点」加条件:
- 买入计数 1 的三个条件:a. 收盘 ≤ 前第二根 K 线最低价;b. 最低价 < 前第一根 K 线最低价;c. 收盘 < P。
- 买入计数 2 对称:a. 收盘 ≥ 前第二根 K 线最高价;b. 最高价 > 前第一根 K 线最高价;c. 收盘 > P。
- 若计数 1 与计数 2 的条件同时满足,只加计数 1,不加计数 2。
- 触发与序列版一致:计数 1 达 M 或计数 2 达 M/2 → 执行买卖。卖出条件对称。
示例(TD 序列)
- 设 T=4、N=4:连续 4 天收盘低于 4 天前 → 判定下跌、开始计数(图中橙色方框)。
- 之后每个黑色数字是买入计数 1(收盘低于隔一天前,注意要隔一天),红色数字是买入计数 2。
- 设 M=12:大四角星处计数 1 先满足 → 执行买入;若红色先到 M/2=6,也在那时买。
参数选择与止损
- 技术分析不能保证全对,只能给「可能有良好胜率的思路」。参数要靠历史回测去试。
- 作者试参结果:T=4、N=6、M=28,从 07 年到 16 年 12 月持续提供稳定收益。
- 加一道止损增加稳健性:买入前的计数期里记录最低交易价格作止损线。持仓后每个交易日看上一日 K 线最低价,若跌破这条线就提前平仓,避免更大损失。
回测结果
- TD 组合 × 沪深 300:近 10 年年化约 16%、最大回撤 24.8%,避开了 07 和 15 年大熊市,稳定性不错。
- TD 组合 × 深成指:回撤比沪深 300 大,但熊市表现整体令人满意。作者提醒:其它指数或股票池上这些参数未必最优,需要自己调参。
- TD 序列 × 沪深 300:年化 13.6%(低于组合版),但 10 年最大回撤仅 16%,经受住两次牛熊考验。
- TD 序列 × 上证指数:回撤比沪深 300 大,总体还能接受。
- TD 序列 × 华夏上证 50ETF(510050.XSHG,用它代替上证指数更贴近实际):表现更优异,10 年最大回撤 21.6%。
机制 / 论证
- 为什么「数天数」能预测转折:一段趋势是由单方力量推动的。确认趋势后,同向走得越久,推动方越接近力竭。计数 1 达 M 度量「力竭到头」,计数 2 达 M/2 度量「反向力量已积累到原趋势疲软」。两个触发点从不同角度逼近同一个结论:转折要来。
- 为什么必须修正:TD 原版参数按美股市场调,直接上 A 股回测很差。市场结构不同,触发阈值就得重试。这告诉我们:方法框架可以移植,参数不能照抄。
- 为什么两个触发点、谁先到算谁:M 与 M/2 谁先到不一定。作者用「先到先执行」,避免刻舟求剑地等某一个计数。
- 止损为什么看「计数期最低价」:买点本身是反转赌注。若价格跌破「这段下跌里创过的最低点」,说明下跌没有停、赌注错了,止损离场。这给「判断错了怎么办」留了出口。
- 回测数字说明什么:组合版收益高(16%)但回撤也大(24.8%);序列版收益低(13.6%)但回撤小(16%)。同一个方法的两支,是「收益 vs 平滑」的取舍,不是谁绝对更好。
可操作
- 参数(保留原文):
- 启动:间隔 T、统计天数 N;连续 N 日收盘 <(或 >)T 天前收盘 → 判趋势。
- 计数触发:买入/卖出计数 1 达 M,或计数 2 达 M/2。
- 作者调出的 A 股参数:T=4、N=6、M=28(07–16 年 12 月稳定);示例参数 T=4、N=4、M=12。
- 止损:记录买入前计数期内最低交易价;持仓期每日判断「上一日 K 线最低价」是否跌破,跌破平仓。
- 交易对象与结果口径:TD 组合更适合沪深 300(年化约 16%、回撤 24.8%);TD 序列在 50ETF 上回撤 21.6%。
- 平台实现:本篇正文未贴策略代码,只有「TD 序列 / 组合函数示意图」与「变量说明图」(在附图),TD 序列示例代码链接到另一篇 post 3994;具体 API 序列以官方源码为准 [需要验证]。
- 落地提醒:对象换成别的指数或股票组合,参数需重新回测;止损是作者加在参数之上的稳健性装置,不是 TD 原版自带。
术语
- TD 指标 / DeMark 指标:数「趋势确认后又走了多远」来找转折区的技术方法。
- TD 序列、TD 组合:同一思想的两套计数细节。
- 启动阶段:用「连续 N 日 vs T 天前」确认当前处在涨/跌趋势。
- 计数阶段:启动后数同向/反向天数,用于找买卖点。
- 计数 1 / 计数 2:一个数「沿原方向创新低/新高」,一个数「反向日子积累」。
- K 线:单日开高低收的蜡烛图;「前第二根 K 线」指隔一天的 K 线。
- 回撤:从净值高点回落的幅度(回测评价见 回测评价三指标(收益 / 最大回撤 / 交易次数))。
不确定 / 待验证
- 原文把 TD 组合与 TD 序列的回测结论都写在正文,但收益曲线在附图,正文只有年化/回撤等数字,曲线细节无法核对 [需要验证]。
- T=4、N=6、M=28 这组参数是作者「尝试」出来的;raw 没有给出参数敏感性或「为什么 28 不是 29」的讨论。
- 示例中「M=13 就赚不到钱」是说明性说法,不是回测结论;作者用它强调参数要靠回测,不能照抄。
- 止损线 = 计数期内最低价:若计数期很长,这条线可能离买入价很远;raw 未讨论该情况下的止损有效性。
- 「修正版适用 A 股」的结论只验证了沪深 300 / 深成指 / 上证指数 / 50ETF 四个标的,作者自己也说其它对象要重新调参。
- 交易对象是「指数」用期货/ETF 表达,还是直接交易指数成分——raw 未展开执行层(ETF 与 2016 年无场内指数 ETF 之外的工具差异)。
- TD 计数用「收盘 vs 隔一天收盘」,若遇停牌或假期,K 线对齐口径 raw 未说明。
相关
- 均值回归(买超跌赌反转) — 同为「找反转点」的择时(10 用偏离倍数统计)
- 趋势跟踪(顺势而为的策略家族) — 同为技术择时但顺势而为(01/02/11),与「赌反转」相反
- Hurst 指数(时间序列的记忆性) — 先判断市场处于趋势还是回归状态(12),可当「该用哪套」的开关
- 止盈止损与持仓管理(聚宽写法) — 止损写法的平台侧参照(本篇止损 = 跌破计数期最低价)
- 聚宽量化课堂(低频量化策略 43 篇) — 量化课堂 43 篇总览
更新 2026-09-06