用 AQIT 实现海龟策略
海龟策略(Turtle Strategy)是一种经典的投资和交易策略。
它的内容是这样的:在股价超过过去 N 个交易日的股价最高点时买入,在股价低于过去 N 个交易日的股价最低点时卖出(N 通常设为 20)。上述的若干个最高点和最低点会组成一个通道,称为“唐奇安通道 (Donchian Channel)”。原始的唐奇安通道有两条线,过去 N 天最高价的最大值形成的线叫做上阻力线,过去 N 天最低价的最小值形成线叫做下支撑线。

唐奇安通道的主要作用是帮助交易者确定买入和卖出时机。因为唐奇安通道是根据最高价和最低价计算出来的,通道的宽窄又随着价格的变化自动调整,所以大多数时候价格是在通道之内运行,很少突破其上下轨道的。
也就是说,价格并不会随意突破阻力线和支撑线,但如果有效突破,那就预示着大行情可能将会出现。此时交易者可以根据支撑和阻力线,确定买进或卖出的具体时机。比如:当价格向上突破阻力线就买入,当价格跌破支撑线就卖出。
我们把突破“唐奇安通道”上阻力线时设为买入信号(1),低于下支撑线时设为卖出信号(-1),其他时间为不操作(0)。
根据这个原理我们用 AIQT 爱量化工作台实现这个策略。
基本实践
打开工作台页面(https://aiqt.cc/),在左上角输入 "002466"(天齐锂业),可以看到日 K 线数据:

海龟策略需要计算 20 日最高价和最低价,需要用到前 20 交易日的数据,所以还要设置提前读 20 天的数据:

然后,在添加指标中选择自定义计算:
输出列名为 up,表达式为20 日最高价最大

表达式中“20 日最高价”表示从当前日期开始往前数 20 个交易日的最高价,然后再求最大值就是近 20 日内的股价最高点了。
在唐奇安通道中上阻力线指的是过去N 天的股价最高点(不包含当日),因此应取昨日 up 作为上阻力线。继续添加指标:
2. 自定义计算,输出列名为 don_up,表示上轨线,表达式为昨日 up

同理,再用同样的方法算出下轨线。
3. 自定义计算,输出列名为 down,表达式为20 日最低价最小

4. 自定义计算,输出列名为 don_down,表示下轨线,表达式为昨日 down

用统计图来观察唐奇安通道,左一轴选择 don_up,don_down, 收盘价,点画图按钮:

图上可以看到大约从 4 月到 8 月,有一波明显的上涨行情,且在 4 月底部的时候收盘价有突破上阻力线。
再来生成买卖信号,AIQT 的买卖信号规则是这样:
1 表示第二天执行买入
-1 表示第二天执行卖出
0 表示不操作
选择自定义信号,输出列名DC,买入条件收盘价大于 don_up,卖出条件收盘价小于 don_down:

这个表达式的意思是:
当收盘价突破上轨时买入 (1)
当收盘价跌破下轨时卖出 (-1)
其他情况不操作 (0)
用画图功能把价格通道和信号指标放在一起看:

从图上看,抓住箭头处的买入时机,可以赚一波大行情。
现在可以回测了,设置回测参数:
买卖信号列选择 DC
买卖价格用 "昨日收盘价"(更符合实际)
每次买 100 股
最大持仓数 1

点击回测:

这个回测结果还能和上证指数做对比,点击指数比较图,选择沪深 300 指数:

可以看到天齐锂业使用海龟策略,在 2021 年跑赢了沪深 300指数。
还可以进一步的优化这个策略:
参数优化:可以尝试不同的通道周期(如 15 日或 30 日)
// 15 日通道版本
up: 15 日最高价最大
down: 15 日最低价最小
2. 增加过滤条件:可以结合波动率或成交量过滤假突破
// 增加波动率条件
增加指标,close_20 和 tradesignal
自定义计算,cs_20;表达式:20 日收盘价标准差

自定义信号,tradesignal;买入条件:收盘价大于 don_up 且 昨日 cs_20 大于 0.02,卖出条件:收盘价小于 don_down 且昨日 cs_20 大于 0.02

3. 增加仓位管理:可以分 3-4 次加仓,降低风险,这里可以用最大持仓数 + 买入股数的配置

假设总资金够买 400 股的,那么如果买入股数配置为 400,最大持仓数配置为 1,就表示一次性买入;如果买入股数配置为 100,最大持仓数配置为 4,则表示分四次加仓。
用 AI 生成策略并优化
AIQT 还可以借助 AI 大模型(DeepSeek,千问,豆包,元宝等均可以)来自动生成和优化策略,详情可参考AI 策略指南 - 乾学院。
这里我们用豆包来尝试做一遍海龟策略。
输入提示词:
“文档 1 (https://c.raqsoft.com.cn/article/1769156454539?t=1),文档 2 (https://c.raqsoft.com.cn/article/1768440503855?t=3),请基于文档 1 中的策略规范格式及其例子生成一个海龟策略。用到的指标说明去文档 2 中查阅。”
豆包通过学习规范文档会自动输出 AIQT 的文字策略:

图中可以看到 AI 直接采用现成的内置指标,更加高效。
因为我们这里只做单票回测,可以去掉多票的配置项,同时为了复制方便也去掉括号里的解释内容。
输入提示词:
“配置定义去掉括号的解释内容,并且删除调仓周期和资金管理配置项”

策略符合要求后,将策略内容复制到 AIQT 的”文字策略”对话框,如图:

应用策略后点击回测,即可得到回测结果:

进一步还可以优化策略,例如输入提示词:
“请优化该策略”

有时 AI 输出的文字策略可能会有不规范的地方,可根据文档 1 和文档 2 的内容逐步纠正。比如这次豆包输出的策略中,买卖价格、买入股数、止盈止损幅度、平仓缺省价格都不符合规范,我们要求它继续参考规范内容逐步纠正,如输入提示词:
“配置定义请严格按照文档 1 的规范填写,例如买入股数填写整数”

继续纠正,输入提示词:
“平仓价格不设置,买卖价格要用自定义指标来计算,格式为:自定义计算,返回列名;表达式:×××”

到这里,策略逻辑已经基本符合要求,最后再用自然语言规则纠正下表达式。
输入提示词:
“文档 3 (https://c.raqsoft.com.cn/article/1769038729782?t=2),请根据文档 3 中的自然语言规则将自定义计算中的表达式用中文自然语言书写。”

现在豆包输出的策略内容已经符合规范要求了,将其复制到 AIQT 工作台的“文字策略”对话框,如图:

点击应用,回测,就可快速得到回测结果

可见并不是每一次优化都会比原来好,但是借助 AI 可以快速的给我们提供多种优化方案进行回测比较,这是人工无法完成的。
需要注意的是,AI 每次输出的内容都不相同,不规范的部分应根据实际情况逐步纠正。
使用体验
最后总结一下使用这个工作台实现量化策略的体验:
优点:
零编码实现复杂策略,只需理解简单 AIQT 表达式
即时反馈,每一步设置都能立即看到效果
内置丰富的历史数据,省去数据收集烦恼
4. AI 策略效率更高,可以快读尝试多种策略
注意事项:
海龟策略在震荡市中可能产生多次假信号
建议结合止损策略使用
实际交易时需考虑滑点影响
4. 熟悉 AIQT 规范文档,强烈建议学会用 AI 来编写和优化策略,提高策略水平。注意最好要先熟悉 AIQT 规范文档,这样才能够快速引导 AI 实现目标。
新手建议:
先用画图功能观察通道突破的历史表现
回测时测试不同参数组合
从少量资金开始实盘测试
海龟策略作为一种经典趋势跟踪策略,通过 AIQT 量化工作台可以轻松实现和验证。工作台的简洁设计让复杂策略的开发变得异常简单,是量化交易入门的绝佳工具。
