15天搭建ETF量化交易系统Day9—玩大A必学网格策略

08a1c136c24571eed241c792c7a53892.png

搭建过程

3fee63ddeefeeaf08335c57c8132d987.png

每个交易者都应该形成一套自己的交易系统。

很多交易者也清楚知道,搭建自己交易系统的重要性。现实中,从0到1往往是最难跨越的一步。
授人鱼不如授人以渔,为了帮助大家跨出搭建量化系统的第一步,我们决定推出这个主题系列。
这个系列中,我们用Python从0开始一步步搭建出一套ETF量化交易系统(选择ETF标的是因为对于普通交易者来说,ETF相对于选强势股难度要小,而且没有退市风险)。大家可以跟随着我们的实现路径来一起学习,从过程中掌握方法。
掌握了方法之后,你可以换成期货系统、比特币系统、美股系统,然后在实战中不断去完善自己的系统了。
搭建一套ETF量化交易系统涉及多个模块和组件的协同工作,包括数据源模块、量化策略模块、可视化模块、数据库模块、回测评估模块、自动交易模块等等。
DAY1链接如下:15天搭建ETF量化交易系统Day1—数据源模块
DAY2链接如下:15天搭建ETF量化交易系统Day2—图形显示模块
DAY3链接如下:15天搭建ETF量化交易系统Day3—上手经典回测框架
DAY4链接如下:15天搭建ETF量化交易系统Day4—玩转海龟交易策略
DAY5链接如下:15天搭建ETF量化交易系统Day5—打造实盘量化机器人
DAY6链接如下:15天搭建ETF量化交易系统Day6—打通同花顺自动交易
DAY7链接如下:15天搭建ETF量化交易系统Day7—全自动化交易系统
DAY8链接如下:15天搭建ETF量化交易系统Day8—强化自动交易模块
如果我们的ETF量化交易系统选择的品种是A股的话,这里分享一个客观数据:
A股自2007年首次站上3000点以来,至今16年的时间打了50次“3000点保卫战”。
由此可见,A股大部分时间是处在震荡行情。震荡行情的特点是股价在一个区间内频繁波动、节奏很难踏准。假设某股09年买入是10块,经过了一系列的涨跌之后,到了今年价格还是回到了10块,如果是简单地持有该股的投资方法,意味着十几年的时间不赚不赔。
网格策略是针对于震荡行情所设计的一个策略,可以依赖波动盈利,即使在震荡行情内我们也可以获利。要想做A股的ETF赚钱,必须学习网格策略。

b6bd205022bbf13827581279e0c768c8.png

网格策略

d284e2bb479faebf06cfe4d58ddf2a56.png

网格策略,顾名思义,我们需要划分出一个个的格子,组成网格。然后选择一个标的,可以是基金,也可以是股票。再选择这个标的合理的价格区间,把这个区间内的价格按照一定的间隔,划分成一个一个的格子。每上涨一格,即卖出一份,每下跌一格,即买入一份。类似下图:

63d2ec08cf4103f5034d50edbeed9c55.png

因此,网格策略不依赖于人为的判断,像预设程序一样,在一定区间内的不断低买高卖,高抛低吸,循环往复,在不断地震荡中获得利润。

网格策略的设计分为以下几步:

  • 划定网格范围。确定网格的最高点和最低点,也就是划定震荡的范围。

  • 等分网格数量。在最高价和最低价之间等分成网格。等分的间距一般为该股的日平均振幅。

  • 标定网格价格。在网格线上都有一个价位,当股价触及这个价位时按这个价位买卖股票。

  • 分配操作资金。将投入的总资金除以网格数量,得到每个网格可交易的资金量。比如投入1万元,那么最高点的网格持有1万元可用资金和0元股票市值,最低点的网格持有1万元的股票市值和0元可用资金。

我们设计后的网格图下图所示。

30aeed380cfcdd2e5a3d4d13e0cde37d.png

实际操作中,当股价处于什么网格,那么对比该网格的可用资金,相应地买卖股票以调整仓位。也就是跌一格就买,涨一格就卖,赚的是一格的利润。如下图所示。

e3aa98032defebb2fc79e5ec7905fdf3.png

网格策略的缺点:

  • 使用于震荡行情会有较好的效果。如果由震荡转为趋势行情的话,会出现比较尴尬的情况:“上升趋势突破高点后无筹码”,“下跌趋势跌破低点满仓亏损”。

  • 资金的使用率较低,即首仓买入时,剩下的资金要作为下跌时加仓使用,而上涨时还需要卖出。资金利用率低意味着收益率低。因此网格数量不能太多,否则资金被分散太多。

  • 频繁交易对手续费和滑点比较敏感。

0302d3e2e5ca910688073352e57ddeac.png

代码设计

128de011e935ab540b80c9a1ffe00c15.png

接下来我们设计一个网格策略,使用Backtrader来回测下网格策略的使用效果。策略大致思想如下:

首先动态地得到该股60分钟级别数据的60周期的最低价移动序列,选择最低价作为基准的原因是我更偏向于做反转类的行情。

Backtrader的关键代码为:

self.lowest = bt.indicators.Lowest(self.data.low, period=60, subplot=False)

然后划定网格的间距为1%,太小的网格虽然能够覆盖更多的波动,但是带来的是频繁的交易,也会更大程度受到手续费和滑点额影响。网格的数量为10个,其中有2个是埋在最低价之下的,为的是防范下跌趋势跌破低点这个风险。

Backtrader的关键代码为:

pct_levels = [x for x in np.arange(1 - self.params.grid_perc * 2, 1 + self.params.grid_perc * 8, self.params.grid_perc)]

将最低价移动序列与网格相乘即得到了动态的网格价格区间。

Backtrader的关键代码为:

self.price_levels = [self.lowest * x for x in pct_levels]

每个交易日判断的逻辑比较简单,判断当前股价的上一格和下一格的价位,跌一格就买,涨一格就卖。使用Backtrader中的order_target_percent函数来调整目标仓位。

Backtrader的关键代码为:

self.order_target_percent(
    target=((len(self.price_levels) - 1)-self.last_price_index) / (len(self.price_levels) - 1))

我们回测516350半导体最近一个月60分钟数据,初始资金是10万的话最终可以做到10.5万的市值。回测效果如下所示:

ee514f771d9fe0dc5b307366576b03fc.png

02c62db6885304a2221ab2698d3504e8.png

总结

cacab8087efbf2f7dd3dc9825a28241b.png

本文是采用了网格绑定固定涨跌幅的方法,在一定程度上可以让网格大小跟随股价的变化情况自动调整。也有一些优化策略是将网格绑定波段指标,原理上大同小异。

学会了网格策略的思想之后,接下来我们就可以把这个策略融入到我们的交易系统里面了!

说明

此系列为连载专栏,完整代码会上传知识星球《玩转股票量化交易》!作为会员们的学习资料。

想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!

非星球会员需要的话,需要单独联系我购买!

知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览

8950d689a1c7c1a1092d7e8e248a5953.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/735681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python+Pytest+Yaml+Request+Allure接口自动化测试框架详解

PythonPytestYamlAllure整体框架目录(源代码请等下篇) 框架详解 common:公共方法包 –get_path.py:获取文件路径方法 –logger_util.py:输出日志方法 –parameters_until.py:传参方式方法封装 –requests_util.py:请求方式方法封…

基于matlab的不同边缘检测算子的边缘检测

1 原理 1.1 边缘检测概述 边缘检测是图像处理和计算机视觉中的基本问题,其目的在于标识数字图像中亮度变化明显的点。这些变化通常反映了图像属性的重要事件和变化,如深度不连续、表面方向不连续、物质属性变化和场景照明变化等。边缘检测在特征提取中…

Dockerfile实战

Dockerfile是用来快速创建自定义镜像的一种文本格式的配置文件,在持续集成和持续部署时,需要使用Dockerfile生成相关应用程序的镜像。 Dockerfile常用命令 FROM:继承基础镜像MAINTAINER:镜像制作作者的信息,已弃用&a…

经典面试题【作用域、闭包、变量提升】,带你深入理解掌握!

前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享经典面试题【作用域、闭包、变量提升】,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家&#xff0…

OS复习笔记ch12-1

文件系统 概述 文件是大多数应用程序的核心要素,文件系统是操作系统对用户来说最重要的部分之一。 本章的主要内容见下图: 文件,大家耳熟能详的就是的docx、pdf、jpg、MP4等各种后缀文件,根据任务需要文件又分成了文本、图片、…

java小代码(1)

代码 : 今日总结到此结束,拜拜!

(经验)高考填报志愿,有哪些坑你需要避开?

高考年年考,填报志愿的却年年都是新手.....哪些关于高考填报志愿的坑,依旧还继续坑....是时候做些改变了。过来人写的几点避坑,希望给这届新人做参考。 1、不要什么热门就报什么,因为有些东西别人学得很快,而我慢的像蜗…

springboot+mysql 心理健康咨询管理系统-计算机毕业设计源码031706

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对心理健康咨询管理系统等问题,对…

【鸿蒙】 模拟器运⾏

【鸿蒙】HUAWEI DevEco Studio安装-CSDN博客 【鸿蒙】创建第⼀个鸿蒙项⽬-CSDN博客 点击 Tools 菜单下的 Device Manager 点击 Install ,安装模拟器 下载模拟器相关的SDK,点击 Finish 选择安装⽬录,点击 New Emulator 选择设备类型&#…

whisper 模型源码解读

whisper官方源码 whisper 模型官方代码:https://github.com/openai/whisper/blob/main/whisper/model.py ;注释如下 import base64 import gzip from dataclasses import dataclass from typing import Dict, Iterable, Optionalimport numpy as np impo…

【动态规划】1130. 叶值的最小代价生成树

1130. 叶值的最小代价生成树 难度:中等 力扣地址:https://leetcode.cn/problems/minimum-cost-tree-from-leaf-values/description/ 题目内容 给你一个正整数数组 arr,考虑所有满足以下条件的二叉树: 每个节点都有 0 个或是 2 个…

基于Java的学生成绩管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java技术,B/S结构 工具:MyEclipse,MySQL 系统展示 首页 个人中…

软件测试——稳定性测试:adb Monkey

Monkey 1. Monkey1.1 Monkey 是什么1.2 Monkey 测试场景1.3 Monkey 特点1.4 Monkey 在哪里1.5 测试准备事项1.6 Monkey 参数列表 2. 基本命令3. 常用参数4. 事件类型5. 调试参数6. 日志管理7. 日志错误定位8. Monkey测试可以发现的问题 1. Monkey 1.1 Monkey 是什么 Monkey是一…

计算机网络期末

1、IP 地址为:192.168.0.254,它的子网掩码应该为( ) A.255.255.255.0 B.255.255.254.0 C.255.255.252.0 D.255.255.0.0 2、最容易产生网络可靠性瓶颈问题的拓扑构型是( )。 A 总线型 B 星型 C 环型 D 网状型 3、HTTP 就是电子邮件阅读协议&#xff0…

使用Vue+Antv-X6实现一个输送线可视化编辑器(支持拖拽、自定义连线、自定义节点等)

最近公司有这样的业务,要实现一个类似流程图的编辑器,可以拖拉拽之类的,网上寻找了一番,最终决定使用Antv-X6这个图形引擎,非常强大,文档多看几遍也就能上手使用了。感觉还不错就写个使用心得期望能帮助到同…

访问网站时IP被屏蔽是什么原因?

在互联网使用中,有时我们可能会遇到访问某个网站时IP地址被屏蔽的情况。IP地址被网站屏蔽是一个相对常见的现象,而导致这种情况的原因多种多样,包括恶意行为、违规访问等。本文将解释IP地址被网站屏蔽的常见原因,同时,…

如何理解广角镜头和长焦镜头的区别。

为什么广角镜头的视野会比长焦镜头的视野大呢? 我之前用等光程解释了景深,也解释了为什么焦距越远,成像越大,但是从来没有提到过视野范围这个概念。实际上在我之前建立的数学模型中,物曲面S是无限大的,像曲…

Python,PyCharm,Anaconda安装及使用教程

一、Python下载及安装 Python官网Welcome to Python.org 当前最新版是3.11.0版本:python-3.11.0-amd64.exe 下一步,下一步进行安装即可 选择:“Customize installation”,出现下图: 点击“Next”下一步,出现如下图…

HTTP网络协议

1.HTTP (1)概念: Hyper Text Transfer Protocol,超文本传输协议规定了浏览器和服务器之间数据传输的规则。 (2)特点 基于TCP协议:面向连接,安全基于请求-响应模型的:一次请求对应一次响应HTTP协…

Redis源码学习:quicklist的设计与实现

为什么需要quicklist 假设你已经知道了ziplist的缺陷: 虽然节省空间,但是申请内存必须是连续的,如果内存占用比较多,申请效率低要存储大量数据,超过了ziplist的最佳上限后,性能有影响 借鉴分片思想&…