海龟策略:量化交易的实战应用

一、海龟策略起源与研究现状

1983年,期货大佬理查德·丹尼斯做了一场实验:他招募了23名新手(昵称“海龟”),传授一套趋势跟踪策略,并每人给予100万美元资金。5年后,这群“海龟”中最高盈利达1.72亿美元。

Anderson(2000):在国债期货和小麦市场中应用海龟交易法则,取得了超额收益,并验证了最优资产配置方法的适用性。(Anderson J.A. Taking a peek inside the turtle’s shell[D]. Queensland University ofTechnology, 2000)

John et al.(2004):在美国国债期货、标准普尔500指数期货和黄金期货中进行了大量市场论证,发现海龟交易法则在美国期货市场中能够取得超额收益。他们还对模型进行了优化,进一步提升了收益。(John A, Anderson, Robert W, etc. Maximizing futures returns using fixed fraction assetlocation[J].Applied Financial Economics, 2004, 14(15):156-172)

牛永魁(2013):通过海龟交易法则在沪深300股指期货市场进行回测,发现该策略在中国市场也能取得良好效果,尤其是在加大杠杆后,收益率显著提升。(

牛永魁.基于海龟交易系统的量化交易应用研究[D].河北:河北工业大学,2013)

张玉玲(2018):在牛市和熊市中分别进行回测,发现海龟交易法则在熊市中表现较好,但在牛市中盈利性不足,整体收益未能跑赢大盘。(张玉玲.海龟交易法则在股指期货投资中的有效性研究[D].四川:成都理工大学2018)

Adamu et al.(2010):在伦敦股票市场中对海龟交易法则进行了参数优化,结果显示优化后的系统明显优于随机参数系统。(Adamu K, Phelps S.Coevolution of technical trading rules for high frequencytradingIl]. Proceedings ofthe World Congress on Engineering, 2010:96-101)

郭超(2017):在海龟交易法则基础上加入了适用于震荡行情的子系统,显著提升了收益。(郭超.基于改进海龟交易策略的股指期货程序化交易研究[D].陕西:西安财经学院,2017)

鄢笑玲(2019):通过构建新的模型参数,获得了年化10%以上的收益,超过了股指期货基准收益。(鄢笑玲.基于海龟交易法则的量化策略研究[D]广东:广东财经大学,2019)

二、理论详解

海龟策略的核心理念是捕捉趋势,通过“突破信号”入场,动态加仓,严格止损。

>> 1. 选市场:高流动性是王道

交易高流动性的品种(如期货、外汇),确保能快速进出场,避免滑点损失。

>> 2. 波动率决定仓位

N值:衡量市场波动性,公式为:
N = (前19日N值 × 19 + 当日真实波幅) ÷ 20
其中,真实波幅(TR)取当日最高-最低价、最高-昨收、昨收-最低价中的最大值。

头寸规模:用总资金的1%除以波动风险(N×每点价值),决定每次买入的单位数。
目的:波动越大,仓位越小,控制风险。

>> 3. 入场信号:突破通道

唐奇安通道
上轨 = 过去20日最高价
下轨 = 过去20日最低价

买入条件:价格突破上轨时入场;若继续上涨0.5N,则加仓。

双重系统:部分资金在突破55日高点时入场,捕捉更长期趋势。

>> 4. 止损与离场

止损:价格比买入价下跌2N时,清仓止损(单笔亏损≤2%)。

止盈离场:价格跌破10日或20日最低价时,平仓锁定利润。

三、策略优缺点:高收益≠躺赢

优点:

✅ 趋势明确时收益爆发性强(年化收益可达30%+)。
✅ 严格仓位管理,避免情绪化交易。

缺点:
❌ 震荡市频繁止损,回撤大(最大回撤超30%)。
❌ 需长期坚持,普通人难以严格执行。

四、案例分析-沪深300回测结果(基于atrader平台)

1.初始化

def init(context):`    `# 注册数据`    `reg_kdata('day', 1)                           # 注册日频行情数据`    `# 回测细节设置`    `set_backtest(initial_cash=1e8, margin_rate=1.0, slide_price=0.0,`                 `price_loc=1, deal_type=0, limit_type=0)`    `# 全局变量定义/参数定义`    `context.initial = 1e8                          # 初始化设置账户总资金`    `context.win = 22                               # 计算所需总数据长度,需比进场数据长度大2`    `context.system_in = 20                         # 系统的进场数据长度`    `context.system_out = 10                        # 系统的出场数据长度`    `context.ATR_N = 20                             # ATR的数据长度`    `context.add = 0.5                              # 加仓参数`    `context.stop_loss = 2                          # 止损参数`    `context.Tlen = len(context.target_list)        # 标的数量`    `context.record_entryP = np.array(np.zeros(context.Tlen))     # 记录入场点位`    `context.future_info = get_future_info(context.target_list)   # 获取期货标的基本信息

2.数据获取与计算

def on_data(context):`    `# 获取注册数据`    `data = get_reg_kdata(reg_idx=context.reg_kdata[0], length=context.win, fill_up=True, df=True)`    `if data['close'].isna().any():  # 行情数据若存在nan值,则跳过`        `return`    `# 仓位数据查询`    `long_positions = context.account().positions['volume_long']    # 获取多头仓位数据`    `short_positions = context.account().positions['volume_short']  # 获取空头仓位数据`    `# 数据计算`    `close = data.close.values.reshape(-1, context.win).astype(float)   # 获取收盘价,并转为ndarray类型的二维数组`    `high = data.high.values.reshape(-1, context.win).astype(float)     # 获取最高价,并转为ndarray类型的二维数组`    `low = data.low.values.reshape(-1, context.win).astype(float)       # 获取最低价,并转为ndarray类型的二维数组

3.逻辑计算

# 逻辑计算``for i in range(context.Tlen):``   `    `# 计算系统进出场唐奇安通道`    `system_in_up = max(high[i,-context.system_in-1:-1])                   # 系统的进场的上轨`    `system_in_down = min(low[i, -context.system_in-1:-1])                # 系统的进场的下轨`    `system_out_up = max(high[i,-context.system_out-1:-1])                 # 系统的出场的上轨`    `system_out_down = min(low[i, -context.system_out-1:-1])              # 系统的出场的下轨``   `    `# ATR计算`    `HL = (high[i,-context.ATR_N-1:-1] - low[i,-context.ATR_N-1:-1])          # 当前交易日的最高价与最低价间的波幅`    `HC = abs(high[i,-context.ATR_N-1:-1] - close[i,-context.ATR_N-2:-2])     # 前一交易日收盘价与当个交易日最高价间的波幅`    `CL = abs(low[i,-context.ATR_N-1:-1] - close[i,-context.ATR_N-2:-2])      # 前一交易日收盘价与当个交易日最低价间的波幅`    `TR = np.max([HL,HC,CL],axis = 0)                                         # n日的真实波幅`    `ATR = TR.mean()                                                          # n日的真实波幅的均值``   `    `# 每次要买入的仓位`    `min_move = context.future_info['min_move'][i]                           # 标的最小变动单位`    `Unit = context.initial * 0.01 / ATR / min_move / context.Tlen           # 标的每次买入仓位

4.下单交易

# 无持仓—进场``if (long_positions[i] == 0) & (short_positions[i] == 0):   # 无持仓`    `if close[i,-1] > system_in_up:                                                # 进多单`        `order_target_volume(account_idx=0, target_idx=i, target_volume=int(Unit), side=1, order_type=2)`        `context.record_entryP[i] = close[i,-1]             # 记录进场价格``   `    `elif close[i,-1] < system_in_down:                                            # 进空单`        `order_target_volume(account_idx=0, target_idx=i, target_volume=int(Unit), side=2, order_type=2)`        `context.record_entryP[i] = close[i, -1]            # 记录进场价格

# 持多仓—加仓/出场``elif (long_positions[i] > 0):     # 持有多单`    `if close[i, -1] > context.record_entryP[i] + context.add * ATR:                # 多单加仓`        `order_target_volume(account_idx=0, target_idx=i, target_volume=int(Unit), side=1, order_type=2)`        `context.record_entryP[i] = close[i, -1]            # 记录进场价格``   `    `elif close[i, -1] < system_out_down:                                           # 多单离市`        `order_target_volume(account_idx=0, target_idx=i, target_volume=0, side=1, order_type=2)`        `context.record_entryP[i] = 0``   `    `elif close[i, -1] < context.record_entryP[i] - context.stop_loss * ATR:        # 多单止损`        `order_target_volume(account_idx=0, target_idx=i, target_volume=0, side=1, order_type=2)`        `context.record_entryP[i] = 0

# 持空仓—加仓/出场``elif (short_positions[i] > 0):     # 持有空单`    `if close[i,-1] <  context.record_entryP[i] - context.add * ATR :               # 空单加仓`        `order_target_volume(account_idx=0,target_idx=i,target_volume=int(Unit),side=2, order_type=2)`        `context.record_entryP[i] = close[i, -1]            # 记录进场价格``   `    `elif close[i, -1] > system_out_up:                                             # 空单离市`        `order_target_volume(account_idx=0, target_idx=i, target_volume=0, side=2, order_type=2)`        `context.record_entryP[i] = 0``   `    `elif close[i,-1] > context.record_entryP[i] + context.stop_loss * ATR:         # 空单止损`        `order_target_volume(account_idx=0, target_idx=i, target_volume=0, side=2, order_type=2)`        `context.record_entryP[i] = 0

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值