用 AQIT 实现海龟策略

海龟策略(Turtle Strategy)是一种经典的投资和交易策略。

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

..

唐奇安通道的主要作用是帮助交易者确定买入和卖出时机。因为唐奇安通道是根据最高价和最低价计算出来的,通道的宽窄又随着价格的变化自动调整,所以大多数时候价格是在通道之内运行,很少突破其上下轨道的。

也就是说,价格并不会随意突破阻力线和支撑线,但如果有效突破,那就预示着大行情可能将会出现。此时交易者可以根据支撑和阻力线,确定买进或卖出的具体时机。比如:当价格向上突破阻力线就买入,当价格跌破支撑线就卖出。

我们把突破“唐奇安通道”上阻力线时设为买入信号(1),低于下支撑线时设为卖出信号(-1),其他时间为不操作(0)。

根据这个原理我们用 AIQT 爱量化工作台实现这个策略。

基本实践

打开工作台页面(https://aiqt.cc/),在左上角输入 "002466"(天齐锂业),可以看到日 K 线数据:

..

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

..

然后,在添加指标中选择自定义计算

  1. 输出列名为 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指数。

还可以进一步的优化这个策略:

  1. 参数优化:可以尝试不同的通道周期(如 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 每次输出的内容都不相同,不规范的部分应根据实际情况逐步纠正。

使用体验

最后总结一下使用这个工作台实现量化策略的体验:

优点

  1. 零编码实现复杂策略,只需理解简单 AIQT 表达式

  2. 即时反馈,每一步设置都能立即看到效果

  3. 内置丰富的历史数据,省去数据收集烦恼

4. AI 策略效率更高,可以快读尝试多种策略

注意事项

  1. 海龟策略在震荡市中可能产生多次假信号

  2. 建议结合止损策略使用

  3. 实际交易时需考虑滑点影响

4. 熟悉 AIQT 规范文档,强烈建议学会用 AI 来编写和优化策略,提高策略水平。注意最好要先熟悉 AIQT 规范文档,这样才能够快速引导 AI 实现目标。

新手建议

  1. 先用画图功能观察通道突破的历史表现

  2. 回测时测试不同参数组合

  3. 从少量资金开始实盘测试

海龟策略作为一种经典趋势跟踪策略,通过 AIQT 量化工作台可以轻松实现和验证。工作台的简洁设计让复杂策略的开发变得异常简单,是量化交易入门的绝佳工具。