Jikipedia
第 02 篇

海龟策略

把成熟的「海龟交易系统」搬上聚宽平台:用唐奇安通道突破确定趋势方向,用波动率(N 值)决定每笔仓位,价格越远离突破点越加仓,跌破 2N 止损。本篇是量化课堂第 2 篇(postId=1401,作者 Haozun),一半讲系统规则、一半用「一堆没想清楚的问题」提醒策略离可上线还差工程细节。素材见 raw/collections/jq-quant-classroom/02-02-海龟策略md.md。

量化海龟交易系统唐奇安通道波动率仓位ATR趋势跟踪加仓止损

这是什么

本篇介绍如何借鉴成熟策略体系并在聚宽实现,举的是经典的海龟交易系统。核心思想:避免交易员自己做主观决策,让概率真正发挥作用。海龟捕捉趋势:价格突破(唐奇安通道上沿)认为趋势开始,价格离突破点越远认为趋势成立概率越高,于是加仓;跌破止损线清仓。文章还演示了把海龟的波动率仓位管理(N 值)用在 A 股个股上回测。

核心要点

唐奇安通道(突破的定义)

  • 上线 = Max(前 N 个交易日最高价);下线 = Min(前 N 个交易日最低价);中线 = (上线+下线)/2。每交易日收盘更新。N 默认取 20。
  • 突破 = 今日盘中价格高过上线,视为买入信号。
  • N=20 的典故:Donchian 读到时任整形外科医生 Maxwell Maltz 博士 1960 年的《心理控制论》(1989 年重新被发现),书中称整形术后患者最少要 21 日才接受新容颜;Donchian 由此采用约 20 日(也是「21 天养成新习惯」说法的来历)。

为什么按分钟回测

  • 最好按分钟回测,才能准确捕捉日内买卖点;等日线收盘价出来,价格可能已离突破点很远。
  • 原版海龟在纽约、芝加哥做场内期货,可做多也可做空;A 股只能买不能卖空,所以只能做向上突破。

仓位管理:用波动性(N 值)控制每笔风险——本篇核心

  1. True Range(TR,当日波动量)= Max(H−L, H−PDC, PDC−L)。H 当日最高、L 当日最低、PDC 前一日收盘。
  2. N = (19×PDN + TR) / 20。PDN 为前一日的 N;实际是前 20 日(含今日)TR 的平均。
  3. Dollar Volatility = N × Dollars Per Point。Dollars per Point = 标的价格每波动一个最小单位、1 手的总变化:A 股最小变动 0.01 元、1 手 100 股,所以 = 0.01×100 = 1 元。
  4. Unit = 总资产的 1% / Market Dollar Volatility。Unit 就是要买的单位数。意义:波动率不大时,买 1 Unit 当天震幅使总资产变化不超过 1%。

完整海龟系统的六块内容

  1. 市场:原版选纽约、芝加哥高流动性的场内期货;A 股也符合「高流动性」标准。
  2. 仓位:Richard Dennis 用波动性水平管仓位(上面的 N 值四步)。
  3. 入市:资金分两部分,一部分走系统一、一部分走系统二。
    • 系统一:当前价高于过去 20 日最高价 → 买 1 Unit;之后在上次买入基础上每上涨 0.5N 加仓 1 Unit。
    • 系统二:规则同系统一,但突破 55 日最高价才买;加仓同样是 0.5N。
    • 例:股票 A 的 N=2、20 日最高价 100 → 突破 100 买 1 Unit;突破 100+0.5×2=101 加 1 Unit;突破 101+0.5×2=102 再加 1 Unit。
  4. 止损:价格比最后一次买入价下跌 2N 时卖出全部头寸;一般情形下损失不会超过 2%。
  5. 止盈:系统一跌破 10 日内最低价(10 日唐奇安下沿)清仓;系统二跌破 20 日内最低价(20 日唐奇安下沿)清仓。
  6. 技巧(资金调整):设 Loss 与 Adjust 两个比例。某轮交易结束后,损失占总资金比例大于 Loss,则今后只用现有投资资金的 Adjust 比例。例:初始 100 万、Loss=80%、Adjust=90% → 总资产低于 80 万时做一次调整,之后只用 80×90%=72 万投资。

模拟回测

  • 用简单海龟系统对几只股票模拟,系统一资金比例设 70% 或 80%,其他参数不变。标的:平安银行 000001.sz、贵州茅台 600519.sh、包钢股份 600010.sh、南方航空 600029.sh、中信证券 600030.sh、中兴通讯 000063.sh。正文只有收益图,无数值结论。

「你没想到的复杂情况」(家庭作业)

  • 通道上沿用的是昨天数据:当天分钟价在通道上下反复震荡,可能造成反复买入。
  • 当天刚买入、马上触发止损,但日内不能卖出(A 股 T+1),第二天怎么处理?
  • 今天要买 5000 手、实际只能成交 4000 手,剩下 1000 手明天补还是忽略?
  • 现在用统一止损线,能否对每一次买入单独设止损线?
  • 这些问题没有标准解,但编写完整策略一定要思考到位

机制 / 论证

  • 系统化的意义:主观决策会被情绪污染;把进出场规则写死,才能让「概率」长期起作用(多次小亏 + 少数大赢)。
  • 趋势确认与加仓:突破只是趋势的开始;价格离突破点越远,趋势成立概率越高,所以 0.5N 间距金字塔式加仓——顺势时越赢越加。
  • 波动率定仓位的反转直觉:不是「越便宜的股票买越多」,而是「波动越大的股票买得越少」。Unit = 1% 资产 ÷ 每单位波动金额,把每笔交易的最大单日风险钉在总资产约 1%,波动大自动降仓。2N 止损 ≈ 每笔风险约 2%。
  • 分钟回测的理由:信号价值随时间衰减,用日线收盘价确认突破往往已晚——这是「数据频率影响策略执行」的直观例子。
  • A 股局限:只能做多,向上突破才有意义——海龟「多空两向」到了 A 股只剩一半。
  • 工程问题清单的意义:本文故意只列问题不给答案,说明「策略规则能跑通」和「策略能上线」是两回事(震荡假突破、T+1、成交不足、单笔止损粒度都要处理)。

可操作

  • 系统参数(保留原文数值):
    • 唐奇安通道:N=20;系统一入市 20 日最高、止盈 10 日最低;系统二入市 55 日最高、止盈 20 日最低。
    • 波动率:TR=Max(H−L, H−PDC, PDC−L);N=(19·PDN+TR)/20;A 股每点每手金额=0.01×100=1 元;Unit=总资产 1%/(N×每点金额)。
    • 加仓间距 0.5N;止损 = 最后买入价 − 2N 清仓;资金调整 Loss/Adjust 两比例。
    • 回测用分钟频率;系统一/系统二资金比例 70%/80% 是示例模拟值。
  • 落地提示:A 股个股回测要用分钟级循环与下单 API(框架见 聚宽策略框架(initialize / handle_data / before_trading_start)run_daily 与任务节奏控制(定时任务)聚宽下单 API 与订单对象);正文未贴代码,具体 API 序列在附图「函数说明书」与官方源码里 [需要验证]。
  • 教训:别只盯信号——把震荡假突破、T+1、成交量不足、逐笔止损想清楚再谈上线。

术语

  • 海龟交易系统:Richard Dennis 培训交易员的经典趋势系统(本文所指)。
  • 唐奇安通道(Donchian Channel):前 N 日最高/最低构成的通道,突破上沿买入。
  • True Range / N:当日真实波动幅度 / 其 20 日平均,N 即海龟版的 ATR。
  • Dollar Volatility:N × 每点每手金额,衡量「1 Unit 波动多少钱」。
  • Unit:单位仓位 = 总资产 1% ÷ Dollar Volatility。
  • 系统一 / 系统二:20 日入市与 55 日入市两套参数,各用一半资金。
  • 心理控制论:Maltz 1960 年著作,Donchian 取 N≈20 的典故出处。

不确定 / 待验证

  • 正文无数值回测结论(只有图);「系统一比基准如何」无法从文字核实。
  • raw 的公式排版有几处易混:N 公式中 PDN/TR 的指代、资金调整例子里 72 万的计算口径,均按上下文还原,落地以官方源码为准 [需要验证]。
  • 完整代码(下单、分钟循环、唐奇安计算)在附图与规范源码,raw 正文未含 [需要验证]。
  • 典故(21 日新容颜、1989 年重新发现)为文中轶事,非可考证事实。

相关

更新 2026-09-06

检索知识库

按标题、类型或正文检索