海龟策略深入研究-策略回测系列-5 痛点解决方案以及测试数据的准备

读书笔记:《海龟交易法则》 如果一个市场的一个合约的波动性强,持有的头寸规模就少,最终使得不同市场不同合约的交易,盈亏一美元的概率是相等的。双重损失的止损策略:每笔交易的止损点为N/2,逐步建仓每笔交易单独设置止损点,不改变前仓的止损点。根据市场的绝对波动幅度来调整该市场上的头寸规模,使得每个头寸的每日波动幅度,以美元衡量的值相等。在趋势跟踪系统中,无论使用怎样的因子,在市场真正变化时都会产生入市信号,因此因子的研究意义不大。使用因子来指示市场状态的变化概率,稳定,波动和趋势之间的变化概率。产生了交易信号后,如何执行以减少市场冲击。 阅读详情

理想解决方案


 
上一篇介绍了海龟策略在实现中遇到的困难。

本章主要讲其解决方案,那就是vn.py啦!

vn.py1.9.1新增完整的投资组合级别的海龟策略实现,经过多次测试发现,这一次海龟策略本地化实现的完成度很高。其投资组合回测资金曲线如下。
投资品种选择了12个,分别是:

  • 上期所的铝、铜、螺纹钢、锌
  • 郑商所的普麦、一号棉花
  • 大商所的玉米、铁矿石、焦煤、焦炭、豆粕、聚氯乙烯。

回测时间是2014--2018,百分比最大回撤是-29.46%,年化收益45.11%,夏普比率达1.5。从资金曲线的形态上看,虽然时不时发生回撤,但是整体趋势是向上的。故从回测上看,已经非常符合原版海龟策略的特点了。
(因为考虑到海龟策略是日K线中低频策略,故手续费和滑点在回测中都设置成零,以方便操作。但就算加上手续费和滑点,资金曲线的形态不会发生变化,夏普比率也仅仅是稍微减少,这在以后章节详细说明。)
 
enter image description here

 
 

操作步骤


下面介绍如何通过vn.py实现完整的海龟策略。

1. 工具准备

 

  • RQData:RQData 是RiceQuant(米筐科技)提供的商用版金融数据工具包, 支持 python, matlab, excel 插件等多种访问方式。它集成了简单高效的API接口,用户可快速调用丰富整齐的量化金融数据,最大限度地免除了数据搜索、清洗的烦恼,加速投研及投资的决策周期。RQData 期货数据终端提供7天免费试用。其地址如下:RQData 期货数据终端
     
  • vn.py:vn.py是基于Python语言的量化交易系统,其独特的事件驱动引擎和逐条数据回放的回测设计杜绝未来函数的可能性。同时回测引擎和实盘引擎设计采用了完全兼容的API函数,用户可以使用同一套策略代码来实现回测研究和执行实盘交易。(v1.9.1版本以后提供海龟策略模块,老版本建议升级,升级方法:先卸载vn.py,命令是 pip uninstall vnpy,然后安装新版本)其地址如下:vn.py 1.9.1

 
 

2数据准备

 

1)安装RQData

Window系统RQData安装,输入下面命令即可。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://rquser:ricequant99@py.r
icequant.com/simple/ rqdatac==1.0.0a29

 

2)下载数据

在"examples\DataService\RqdataDataService"文件夹内的config.json上填写RQData的账号和密码,保存退出后启动downloadData.py下载全期货品种的日线级别数据。启动操作是按住"Shift"并且鼠标点击右键,选择“在此处打开命令窗口”,然后输入下面命令即可。

python downloadData.py

 
本次投资组合回测时间区间是2014年1月1日以后的数据,故在该回测上会剔除一下比较新的品种,在下面的代码中以注释出来。
其代码如下

"""
立即下载数据到数据库中,用于手动执行更新操作。
"""
from dataService import *
if __name__ == '__main__':

    #中金所
    downloadDailyBarBySymbol('IF99')
    downloadDailyBarBySymbol('IC99')    #中证500 从2015开始
    downloadDailyBarBySymbol('IH99')    #上证50 从2015开始

    #上期所
    downloadDailyBarBySymbol('CU99')
    downloadDailyBarBySymbol('AL99')
    downloadDailyBarBySymbol('ZN99')
    downloadDailyBarBySymbol('PB99')
    downloadDailyBarBySymbol('NI99')    #镍 从2015开始
    downloadDailyBarBySymbol('AU99')
    downloadDailyBarBySymbol('SN99')    #锡 从2015开始
    downloadDailyBarBySymbol('AG99')
    downloadDailyBarBySymbol('RB99')
    downloadDailyBarBySymbol('WR99')
    downloadDailyBarBySymbol('HC99')   #热轧卷板 从2014 3月开始
    downloadDailyBarBySymbol('SC99')   #燃油 从2018开始
    downloadDailyBarBySymbol('BU99')
    downloadDailyBarBySymbol('RU99')


    #大商所
    downloadDailyBarBySymbol('C99')
    downloadDailyBarBySymbol('CS99')    #玉米淀粉 从2014年12月
    downloadDailyBarBySymbol('A99')
    downloadDailyBarBySymbol('B99')
    downloadDailyBarBySymbol('M99')
    downloadDailyBarBySymbol('Y99')
    downloadDailyBarBySymbol('P99')
    downloadDailyBarBySymbol('FB99')
    downloadDailyBarBySymbol('BB99')
    downloadDailyBarBySymbol('JD99')
    downloadDailyBarBySymbol('L99')
    downloadDailyBarBySymbol('V99')
    downloadDailyBarBySymbol('PP99')   #聚丙烯 从2014年2月
    downloadDailyBarBySymbol('J99')
    downloadDailyBarBySymbol('JM99')
    downloadDailyBarBySymbol('I99')

    #郑商所
    downloadDailyBarBySymbol('TA99')
    downloadDailyBarBySymbol('MA99')   #甲醇 从2014年6月
    downloadDailyBarBySymbol('FG99')
    downloadDailyBarBySymbol('SF99')
    downloadDailyBarBySymbol('SM99')
    downloadDailyBarBySymbol('ZC99')    #动力煤 从2015年
    downloadDailyBarBySymbol('WH99')
    downloadDailyBarBySymbol('PM99')
    downloadDailyBarBySymbol('CF99')
    downloadDailyBarBySymbol('SR99')
    downloadDailyBarBySymbol('OI99')
    downloadDailyBarBySymbol('RI99')
    downloadDailyBarBySymbol('RS99')
    downloadDailyBarBySymbol('RM99')
    downloadDailyBarBySymbol('JR99')
    downloadDailyBarBySymbol('LR99')   #晚籼稻 从2014年7月
    downloadDailyBarBySymbol('CY99')   #棉花 从2017年
    downloadDailyBarBySymbol('AP99')   #苹果  从2017年

 
数据成功下载界面如图所示
enter image description here

 

3)数据说明

 
RqData分3种数据,分别是以88或888结尾的代表主力连续合约数据和以99结尾的指数连续合约,下面以IF合约为例子进行详细说明。

  • IF88:主力连续合约,由IF股指期货不同时期主力合约接续而成,仅仅是合约量价数据的简单拼接,未做平滑处理
  • IF888:主力连续合约,对价格拼接进行了"平滑"处理,即以主力合约切换前一天(T-1日)新、旧两个主力合约收盘价做差,之后将 T-1 日及以前的主力连续合约的所有价格水平整体加上或减去该价差,以"整体抬升"或"整体下降"主力合约的价格水平,成交量、持仓量均不作调整,成交额统一设置为0
  • IF99:指数连续合约,由IF股指期货全部可交易合约以累计持仓量为权重加权平均得到的
     

(主力合约定义:合约首次上市时,以当日收盘同品种持仓量最大者作为从第二个交易日开始的主力合约。当同品种其他合约持仓量在收盘后超过当前主力合约1.1倍时,从第二个交易日开始进行主力合约的切换。日内不会进行主力合约的切换。)

海龟交易法--本地回测(Python) 他不仅适用于股市,也适用于一切容易形成趋势的交易标的,如期货,股指,加密货币,外汇等。他的交易思想是,趋势形成后赚取的利润会高于下跌周期中损失的本金,所以从整体上看海龟交易法能通过合理设置交易参数带来可观的盈利。设置海龟交易法需要用到的参数,其中n1表示长周期的天数(用于判断做多和做空的进入点),n2表示短周期的天数(用于判断看多或看空趋势结束的点),atr_parameter则是观察和计算平均波幅的天数,平均波幅和每次交易量成一定比例。接着进行交易过程的可视化,包括k线,唐安奇通道及买入卖出点等。 阅读详情

相关推荐

基于期货基本面数据的回测与backtrader

数据获取:首先,我们需要获取期货基本面数据。通过以上步骤,我们可以使用backtrader框架进行基于期货基本面数据的回测。数据准备:在回测之前,我们需要对获取到的数据进行处理和准备。我们可以根据自己的需求进行相应的处理,以确保数据的质量和一致性。通过回测,我们可以模拟历史数据,评估交易策略的有效性和盈利潜力。本文将介绍如何使用backtrader框架进行基于期货基本面数据的回测,并提供相应的源代码。它支持多种市场,包括期货市场,并提供了丰富的功能和工具,用于数据处理、策略开发、回测和执行实盘交易。

InUnix的博客 775

运用python进行海龟交易法回测

运用python进行海龟交易法回测

jiangtingrui1的博客 5633

【从零开始vnpy量化投资】十六. 海龟策略

今天我们将学习一个经典的期货投资策略,海龟策略。关于海龟策略的确有很多传奇故事可以讲,不过这个对我们如何编写代码没太大帮助,有兴趣的读者可以寻找《海龟交易策略》这本书来阅读。今天我们主要是学习海龟策略是如何进行设计的,以及如何使用代码来实现想要的效果。

魔落的博客 1148

海龟策略深入研究-策略回测系列-15 手续费滑点检验

理论上,基于日线数据的中低频趋势跟踪策略,手续费和滑点是可以忽略不计的。为了验证这个结论,进行对比测试,如图所示。 右图为包含手续费和滑点版本的海龟策略,其中手续费设置为交易所手续费的1.1倍,滑点设置为期货合约的最小价格变动。 其结果是总手续费为635364,总滑点为636794,加上手续费和滑点后,其影响在于: 结束资金从77605953降低至76333794, 年化收...

智能量化交易 1186

基于期货基本面数据的回测 - 使用backtrader

利用基本面数据进行回测可以帮助我们验证交易策略的有效性,并对未来的交易决策提供参考。通过定义backtrader策略、加载期货基本面数据和进行回测分析,我们可以评估交易策略的有效性,并优化未来的交易决策。backtrader提供了丰富的功能和灵活的架构,可以满足各类交易策略的需求。在实际应用中,我们可以根据具体的需求和数据特点进行相应的调整和优化。方法,backtrader将按照我们定义的策略进行回测,并生成交易信号和交易记录。方法中,我们可以进行一些初始化操作,比如定义一些参数和变量。

TgpActionscript的博客 1200

第四天:5天免费搭建个人量化平台 - 实时数据

第四天:5天免费搭建个人量化平台 - 实时数据 数据源配置及API配置

AI 量化 2536

海龟交易法则 matlab,【干货】经典的期货策略——海龟交易法则

废话不多说,下面就让我们直接来看看海龟交易法则(后面简称“海龟”)的原理~如何选择市场由于“海龟”起源于美国,要求高流动性,因此小编选择了国内商品期货作为交易标的,但是,要注意品种之间的相关性不要太强!如何确定头寸对于头寸,一定要进行波动性标准化处理。简单点说就是要根据一个市场的绝对波动幅度来调整头寸的规模,也就是将头寸的绝对波动幅度标准化。额,好像有点绕,算了,直接上算法吧。为了确定波动性标准化...

weixin_35837926的博客 1702

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

Python量化交易03——海龟策略

Python量化交易实现海龟的策略

weixin_46277779的博客 5251

Veritas NetBackup 10.1 Windows安装指南:从账户配置到完整部署

本文详细介绍了Veritas NetBackup 10.1在Windows系统上的完整安装流程,从账户配置到部署验证。重点讲解了创建专用服务账户、安装组件选择、许可证输入等关键步骤,并提供了常见问题排查和进阶配置建议,帮助用户顺利完成企业级备份解决方案的部署。

weixin_26765287的博客 454

2026年量化交易数据源选择_免费和付费方案全面对比

本文对比了期货量化交易中免费和付费数据源方案。免费方案包括TqSdk、Tushare、CTP接口录制和期货公司软件,其中TqSdk免费版数据完整、API友好,适合学习和研究。付费方案推荐TqSdk专业版(性价比高)、Wind(全面但昂贵)和RQData(Python友好)。不同场景推荐:学习用TqSdk免费版,个人研究用TqSdk+Tushare,实盘交易用TqSdk专业版,机构用Wind+TqSdk。文章还提供了数据质量验证方法,强调无论使用何种数据源都需进行验证。

tqsdk_God的博客 4438

老旧项目重构踩坑记:Claude Code 渐进式重构的 4 个关键阶段

揭示在老旧 Java/Spring Boot 项目中实施渐进式重构的关键实践,聚焦 Claude Code 如何通过契约化建模(CLAUDE.md)、显式上下文控制与不可变接口约束,实现安全、可验证的模块化演进,避免连锁故障。

weixin_28728443的博客 50

海龟策略深入研究-策略回测系列-10 品种选择检验(三)

本章主要讲述构建海龟组合的痛点和解决方案 构建海龟组合痛点 在追求策略稳健性前提下,通过传统的滚动测试的方法不能筛选出盈利组合,即这种适用于日内CTA策略的检验方法针对海龟组合是无效的。 构建海龟组合困难表现为以下几点:   a. 历史数据过于少 从2014年到2018年这5年间,其日线数据仅仅是1,200根。其数据过少导致调整回望周期的灵活性降低,即最多回望周期只能设置为2年、3年、4...

智能量化交易 1696

MFC 中实现 WebSocket 客户端以支持实时双向通信

3. **协议兼容**:若服务器使用 `wss://`(加密),需在 `lws_client_connect_info` 中配置 SSL 相关参数(`ssl_connection = LCCSCF_USE_SSL`)。- 编辑框(`m_editUrl`):输入 WebSocket 服务器地址(如 `ws://echo.websocket.events`)。2. 将编译后的库文件(`.lib`、`.dll`)和头文件路径添加到 MFC 项目中(项目属性 -> VC++ 目录)。// UI:服务器地址。

寒寒豆豆软件公司的博客 204

【深度学习新浪潮】算力行业的核心技术有哪些?

算力行业核心技术是芯片+互联+存储+调度+能效+软件的全栈协同:芯片提供算力、互联打通集群、存储保障数据、调度提升效率、能效支撑规模、软件释放算力。当前AI大模型推动算力从“单机”走向“万卡级超节点集群”,技术竞争从单一芯片升级为系统级、全栈化的综合能力。

专注:太空算力、AI infra、异构调度、大模型成本工程 341

软件测试比较-测试数据的痛点

目录一、On-the-fly(实时创建)二、Out-of-box(事先创建数据)开箱即用方法三、综合运用On-the-fly和Out-of-box 耗时长 事先批量生成的数据可能会成为脏数据 微服务架构,测试环境不稳定,阻碍测试数据的顺利创建 一、On-the-fly(实时创建) 测试用例自己维护数据,保证数据的准备性和可控性,避免“脏”数据的可能 优点: 准确性 可控性 缺点: 耗时长 测试数据本省复杂的关联性 创建使用的业务数据要先创建一堆其他相关联的数据,可以考虑将相对稳定的数据事先

qq_42462016的博客 638

Quuppa 如何引领蓝牙 ® 定位服务的全新发展方向

我们最优质的客户,是那些对其他实时定位系统(RTLS)的承诺感到失望、转而寻求 “能覆盖全业务场景的更广泛赋能技术” 的客户 —— 前文提到的消防车制造商就是典型案例:他们尝试并通过 Quuppa 的蓝牙方案取得了成功。我们希望业务合作伙伴(如系统集成商、解决方案提供商)能充分利用 Quuppa 智能定位系统的功能,为客户提供专属解决方案:无论是追踪微型标签、实现未来移动设备的 AoD 功能,还是基于 RSSI 的简单信标(信标作为物联网网关),这些功能都能让同一套 Quuppa 系统支持广泛的用例。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 833

python海龟交易源码,福利到!用 Python 实现海龟交易系统

前言海龟交易系统本质上是一个趋势跟随的系统,但是最值得我们学习的,是资金管理尤其是分批建仓及动态止损的部分一、趋势捕捉唐奇安通道该指标是有 Richard Donchian 发明的,是有 3 条不同颜色的曲线组成的,该指标用周期(一般都是 20 )内的最高价和最低价来显示市场价格的波动性,当其通道窄时表示市场波动较小,反之通道宽则表示市场波动比较大。 如图所示:该具体分析为:当价格冲冲破上轨是就是...

weixin_39679061的博客 1680

主题033:燃烧反应工程

燃烧反应工程(Combustion Reaction Engineering)是研究燃料与氧化剂发生剧烈氧化反应的科学,涉及化学反应动力学、流体力学、传热传质等多个学科。燃烧是人类利用能源的主要方式,广泛应用于发电、交通运输、工业加热等领域。燃烧反应通常通过自由基链式反应进行。链引发:RH+O2⟶R⋅+HO2⋅ RH + O_2 \longrightarrow R^\cdot + HO_2^\cdot RH+O2​⟶R⋅+HO2⋅​链传递:R⋅+O2⟶RO2⋅ R^\cdot + O_2 \longrigh

kkchenjj的博客 231

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【手把手教你】用backtrader量化回测海龟交易策略

01引言海龟交易策略是比较经典的趋势交易系统之一,涵盖了从入场交易(品种选择)、仓位管理(基于ATR加减仓)、离场(触发条件)的整个过程。机械套用海龟交易法则在A股上进行交易可能效果不佳...

Python金融量化 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python 策略回测期货_可转债双低策略量化回测python源码

2020-11-12 00:00:00 [INFO] 20201112 , 223478.9394 , 218040.2727 , 0.1316560980842020-11-12 00:00:00 [INFO] {'120003.XSHE': 38, '128099.XSHE': 43, '120004.XSHE': 53, '132018.XSHG': 52}发现没考虑交换债,如果要过滤交换债...

weixin_33013787的博客 1861

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

DolphinDB 中高频回测解决方案:期货分钟频 CTA 策略回测实例

在投入实盘交易 之前,利用市场的历史数据对量化中高频策略进行测试和评估是确保交易策略有效性和可行性的重要步骤。本文将通过一个期货分钟频率 CTA 策略的回测案例,为大家详细介绍 DolphinDB 中高频回测引擎的使用。接下来我们还将陆续发布股票、期权等回测案例,持续关注~

DolphinDB智臾科技 2688

海龟策略深入研究-策略回测系列-1:海龟的历史

(本系列主要在于探讨海龟策略在国内市场的可行性,目标群体是有一定基础的量化新手。)   海龟策略的故事 海龟策略是一个基于日线级别期货数据的中低频趋势跟踪策略。其高盈利性名扬海外,同时也创造出非常多赚钱的案例。 其实海龟策略背后还隐藏一个有趣的故事,而且与赌局有关,你信么? 1983年两位交易大师理查德.丹尼斯与威廉.埃克哈特之间的一次赌约,赌约的内容是伟大的期货交易者能否通过后天的培养产...

智能量化交易 3410

海龟策略深入研究-策略回测系列-3:原版海龟策略(下)

首先呢,还是那副图,现在介绍剩下的3个关键要素 5.逐步建仓 在突破点建立1个单位的头寸,然后按0.5*ATR的价格间隔一步步扩大头寸。(1/2的间隔以上一份订单的实际成交价格为基础的) 这个过程将继续下去,直到头寸规模达到上限,即单个合约最大4个单位头寸。 该书举了纽约商品交易所(COMEX)黄金期货指数的例子作为说明 6.止损 止损曾经在入场信号中简单提及,即价格反方向偏离2*A...

智能量化交易 1473

量化交易数据源对比

rqdata和wind用久了,也是时候分享一下其他不一样的python量化投资的数据源了

Edenfranx的博客 2519
上一篇: 海龟策略深入研究-策略回测系列-4 本地化实现困境
下一篇: 海龟策略深入研究-策略回测系列-6 理解海龟策略代码
Trader_Python
博客等级 码龄11年 392粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值