网格交易策略(Grid Trading)

策略介绍

网格策略本质上是一种低吸高抛的策略。标的物价格越低,吸纳的头寸越多;标的物价格越高,卖出的头寸越多。网格策略巧妙地借鉴了日常生活中渔翁撒网扑鱼的思路,对低位震荡市场进行撒网、加仓(标的物价格下跌时)、减仓(标的物价格上涨时)、收网(平仓)等操作,实现了一个基本上不需要看基本面(如果标的物是股票)和价格走势的获利系统。

本策略设置买卖价格各4档,在不同价格上设置不同的仓位,并且加入止盈和止损机制。

实现方法

首先,我们要确定一个撒网(建仓)时间和基准价。撒网需要选择在低位震荡行情相对底部的位置。一般的思路是比较当前的标的物价格与该时间点之前某个时间段内的价格均值,如果当前价格小于价格均值的一个下限,我们基本上就可以认为当前是处于相对底部的位置,可以进行撒网操作,并记录下撒网的价格基准。

确定好了基准价,我们就可以建立网格图表了。

如上图,我们建立了一个买卖的网格。以基准价建仓,建仓仓位为50%。在高于基准价时,价格每上涨5%,就卖出一部分仓位;在低于基准价时,价格每下跌3%,就增加一部分仓位。当价格上涨到卖4档或更高时,全仓卖出;当价格下跌到买4档或更低时,全仓买入。

我们设定买卖档位时,价格是非对称的,跌3%买,而涨5%卖。这样非对称的设定,是为了在期望值上使得整个系统的收益要大于0。

优点

网格交易法,加入了明确的仓位控制,并根据价格的变化采取高抛低吸的策略,在震荡的市场中十分有效。在网格的设定上,使用者可以根据市场情形的不同而灵活设定。比如,在熊市中,我们应当使用大网格,防止过早满仓;在震荡行情中,应当缩小网格,尽量多的抓住每一个小的波动。

缺点

由于网格策略由于本质上是一个低吸高抛的策略(类似于动量反转),在单边行情中,它存在一定的风险(俗称“破网”)。在大熊市中,可能会早早的满仓,并且一直没有离场信号,持续亏损。而在大牛市中,却一直仓位很低甚至空仓,资金使用率很低,收益跑不过基准。

如上图中,由于我们的基准价比较低,当价格大幅上涨时,很快突破了网格的最高档位,我们根据策略全仓卖出,一大波行情只抓住了一个开头,收益甚微。反过来,如果是个大幅下降的行情,我们会在很高的位置就满仓,套牢,损失不可估量。

因此,一个好的网格策略,必须要设计好相应的止损机制,并且能够对市场行情加以判断,适当做出调整。同时,需要在适当的时候对网格的基准价以及档位设置进行调整,以适应当前市场的变化。

回测

  • 参数设置:
时间段 2015-01-01至2015-10-01
回测频率(context.frequency) 1d
网格参数设置 见上文实现方法
  • 回测结果:

从上图我们可以看出,网格策略在这一个震荡时间段运行的非常好,在基准下跌20%的情况下,策略居然跑出了20%的收益。这就是网格策略的特性,在震荡中,通过对仓位的调整,不停的低买高卖,从波动中赚取收益。

但是,如果我们维持上面的参数不变,只是拉长回测时间,情况却有所不同。

价格持续上升,到后来突破了网格的上界(破网),并且一直没有回来,导致策略一直处于空仓,后面的上涨完全没有吃到。所以,我们在使用网格策略的过程中,要结合行情。在震荡的行情中,找到合适的基础价撒网。在大牛或者大熊市中,则要考虑更换其他的策略,或者结合其他的指标,来动态的分析。当价格长时间处于网格的上界或者下界之外时,我们要考虑重新设置基础价格,以适应行情的变化。

总结

网格交易策略把价格的变化和仓位的控制很好的结合到了一起,简单而又实用,在震荡波动的行情中尤为突出,能很好的做到高抛低吸,赚取价差。网格的宽度要结合行情进行调整,震荡行情适当收窄,趋势行情适当放宽。基准价的设定也很关键,而且在必要时可以重新设置。

实盘测试收益很低!代码有问题???

WeQuant交易策略—网格交易的更多相关文章

  1. AMA指标原作者Perry Kaufman 100+套交易策略源码分享

    更多精彩内容,欢迎关注公众号:数量技术宅.想要获取本期分享的完整策略代码,请加技术宅微信:sljsz01 AMA技术指标与原作者 Kaufman 说起 Perry Kaufman 这个名字,不少读者会 ...

  2. 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

    我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...

  3. 3. 量化交易策略 - https://github.com/3123958139/blog-3123958139/README.md

    3. 量化交易策略 * 输入数据 - 只取最原始可靠的,如 * date * open * high * low * close * volume * 输出数据 - 根据数理统计取权重,把 o, h, ...

  4. 高频交易策略[z]

    Market Order以最高速下市价单(market order)是买方最基本的策略 Looking for Price Discrepancies 这个就是高频统计套利(high frequenc ...

  5. 高频交易策略之Penny Jump[z]

    高频交易策略之Penny Jump 今天假设有一个笨笨的大型机构投资人(共同基金,银行,退休基金....),他想要买进一只股票,但又不想挂市价买进,所以就在市场里面挂了一张要买进的大单.这时候所有市场 ...

  6. 系统交易策略 hylt

    最令我尴尬的事情,莫过于很多朋友来到网站,不知道我说的是什么.大多数人以为鬼仆是推销软件的.其实这里理解是错的,特别是一些软件制作与经销商,更出 于推销的目的,故意夸大产品性能,模糊交易系统与一般行情 ...

  7. BotVS趋势交易策略-RSI

    BotVS趋势交易策略-RSI, 基于Python实现. RSI简单买卖测试, 默认 70-100卖出,0-30买入 参数 代码 import math def adjustFloat(v): ret ...

  8. 金融量化分析【day112】:量化交易策略基本框架

    摘要 策略编写的基本框架及其实现 回测的含义及其实现 初步学习解决代码错误 周期循环的开始时间 自测与自学 通过前文对量化交易有了一个基本认识之后,我们开始学习做量化交易.毕竟就像学游泳,有些东西讲是 ...

  9. 【海龟汤策略】反趋势交易策略源代码分享(基于BOTVS)

    策略介绍: 海龟之汤,简称“龟汤”,是个与海龟交易法则相反的交易策略,它利用了跟势交易(特别是海龟方式)在很多假突破方面的缺陷来获利(把海龟做成汤吃掉).上世纪八十年代早期,有个非常著名的交易员团体— ...

随机推荐

  1. 基于Centos开启samba服务

    1.安装samba服务: yum -y install samba samba-common samba-client2.查看samba服务状态: service smb status: 正常状态是: ...

  2. MongoDB数据库聚合

    前面的话 聚合操作主要用于对数据的批量处理,将记录按条件分组以后,然后再进行一系列操作,例如,求最大值.最小值.平均值,求和等操作.聚合操作还能够对记录进行复杂的操作,主要用于数理统计和数据挖掘.在 ...

  3. Java--反射的逐步理解

    层层引入反射的作用 一.类类型的概念:所有类都是对象,是Class类的实例对象,这个对象我们成为该类的类类型 1.下面是一个小的test,以产生3种方式的类类型: public class test ...

  4. oracle分组-神奇的cube和rollup

    先看代码: 表结构如下: emp表 EMPNO                                     NOT NULL NUMBER(4) ENAME                 ...

  5. RobotFramwork安装报错name 'execfile' is not defined

    安装RobotFramwork的时候,提示了这个?是什么原因呢? 本机装的是python3.6: 经官方回复得知识因为python的版本不兼容该模块的安装. 官方认定版本是2.7,所以这里推荐大家玩p ...

  6. GetConsoleScreenBufferInfo 函数--获取控制台屏幕缓冲区信息

    GetConsoleScreenBufferInfo函数 来源:https://msdn.microsoft.com/en-us/library/ms683171(v=vs.85).aspx 作用 获 ...

  7. 定时器(setTimeout)的秘密

    原文地址:→传送门 写在前面 setTimeout()是大家再熟悉不过的定时器,但平时对定时器的了解甚少,于是想看看setTimeout()的原理机制. setTimeout()基础 setTimeo ...

  8. HDU1034 Candy Sharing Game

    Problem Description A number of students sit in a circle facing their teacher in the center. Each st ...

  9. 如何将Android Studio与华为软件开发云代码仓库无缝对接(二)

    上篇文章:如何将Android Studio与华为软件开发云代码仓库无缝对接(一) 上一章讲了,如何用Android Studio以软件开发云代码仓库为基础,新建一个项目.接下来,这一章继续讲建好项目 ...

  10. ORACLE - 系统参数调整

    一.内存调整 oracle 11g中,ORACLE把SGA与PGA统一管理,总和为memory_target参数的设定,也就是MAX(SGA+PGA)<= memory_target(当然可以在 ...