网格交易法以及在数字货币中基于Python的量化实现

本文面向程序员介绍量化投资中的网格交易策略,通过Python的BackTrader库进行量化实现。网格交易解决了交易何时买入和卖出的问题,通过设定振荡范围和网格,自动执行交易决策。文章详述了手动操作网格交易的步骤、盈利来源和风险点,并提供了基于BackTrader的回测数据。
摘要由CSDN通过智能技术生成

介绍

我一直觉得程序员都应该试试量化投资,因为在投资里最忌讳的就是情绪波动,而程序员们都相对理性一些,更加愿意相信规则与数据,而同时程序员们又有能力去实现自动交易,所以我这篇文章主要的目标是面向程序员,给大家介绍一些投资、交易里面比较初级的东西以及背后的原理,关于代码部分会少一些特别细节的说明。所以这篇文章需要的大概背景是会 Python 就行。

网格交易是一个很好的入门的策略。在交易里,我们会有像哲学三大问题一样的疑问:

  • 买什么
  • 什么时候买,什么时候卖
  • 买多少,卖多少

而网格交易主要针对的就是后两个问题的,尝试性地给出一种答案

遇到的问题

废话不多说,先上一个例子。

例子1

这张图是黄金在 19年10月10日 到 23日左右1小时的一个走势图。之前是更高的位置,然后经历一次 0.9% 的下跌到了A的位置,然后又在B的位置跌了一个 0.77%,已知在这段时间里黄金都是一个振荡的趋势。这时候我们经常就会听见一些分析师大概会分享这么个说法(或者类似的说法):

  1. 在振荡盘中,A处是上方跌下来的,并且保持了一段时间,所以这个是一个阻力位,而B这个位置是一个支撑位,所以我们在这个振荡区间里,就可以做高抛低吸。

  2. 简单来说就是如果我们还有持仓,那我们在 C 这个位置就应该抛掉,如果我们错过了C,这个市场还给了我们 D,E两次机会,如果都没抛掉,那在F的时候就跌下来了。

  3. 而如果我们这时到了 F 这个位置后呢,因为有 B 这个支撑点,所以可以开始买入。

  4. 然后一直到 H 处,又来到了上方阻力位,然后我们就可以卖出

这个说法好像听起来不错,理论都是好的,但是实际情况是什么样的呢?假设对于处于振荡区间这点是确定的条件了,我们实际上会遇到的情况将会是这样的:[图2]

阻力线

哪条才是阻力线? 又或者: [图3]

支撑线

哪条才是支撑线?

如果图2里我们说用之前跌的最低点作为阻力的话,那在图2里最后一根大涨起来之前的一个绿十字星要卖么?还是冒险等一等真的上穿阻力了才卖?
同理如果图3里我们也用之前收盘最低点作为支撑线的话,那最后一根大跌的红线结束后我们要卖么?这时候可是还没跌破支撑哦。

所以这其实就是我们遇到的实际情况,看上去好像我们有一个很详细的操作策略,但到了实盘的时候,我们其实并没有很明确的标准,而最初第一张图里分析师的那些说法虽然没错,但却犯了一个很经典的量化里面的错误就是 “未来函数”,简单的说就是在画线的时候,我是根据未来一段时间的情况画的线,然后再来指导我们当下每个时间点的分析,相当于预知未来了。(这让我想起了小时候老师讲卷子,拿着答案给我们讲过程,讲的头头是道最后发现拿错了一份答案)

网格交易给出的答案

而网格交易的方案是这样的(先看个大概,再下一节有针对每一步的例子):

  • 第一步,先估计出未来看盘时间的震荡范围,高值和低值都不用特别找某个特殊值,确定一个就可以。这个高值意味着如果价格超过这点时,我们仓位就会是空仓,而低值意味着如果价格掉到这个值以下,我们就是满仓。到现在为止和刚才的支撑止损线都还是一致的。

  • 第二步,选定网格数量,这里我们为了方便计算,就选定为10条线分为11个格子,这样就可以每10%一档从空仓0% 到满仓 100% 全都覆盖了。然后我们为了避免在一条线附近快速震荡,我们在最下一条线之下再画一条线(本质上来说相当于11条线分为12个格子,但这里这么说主要为了更方便解释和操作)

  • 第三步,确定初始仓位,我们就可以直接按照第一条 K 线的收盘价落在哪个区间来确定仓位

前面的准备工作做好之后,之后的调仓逻辑如下:

  • 记穿越的是第n条线,线从上往下数字增大

  • 如果价格上穿第 n-1 条线,卖 10%

  • 如果价格下穿第 n+1 条线,买 10%

  • 回到调仓逻辑第一步

它和我们普通的交易区别在于什么呢,表面上来看,它把原来的一次交易分成了很多次,实质里有如下一些好处:

  • 越密的网格,交易机会越多(但要注意交易手续费),在前面对比的策略中,不到预计的点不交易,如果振荡幅度不够,就会错过很多次交易机会,而在网格交易里,只要振荡到了一个小的格子,就有一次的交易机会。

  • 每一个格子其实就相当于交易的 “信心度”,价格涨跌信心不足的时候轻仓做,价格涨跌到信心很足的时候重仓做。在交易里,所谓的信心度也就是经常提到的“概率”:数学期望(预期收益)和方差(风险)之间有一个好的比率的时候,就要重仓,如果没有好的比率的时候,就要轻仓甚至空仓

手动操作网格交易

在这里我们把上面的流程举例说一下:

预备阶段

  • 第一步,建立振荡范围,我们计划做黄金19年10月份的交易,下图是黄金19年9月份的走势,可以看出是一个振荡市场,最高在1535左右,最低在1460左右,我们可以随意一些,把高值定为1540,把低值定为 1450:

初始范围

  • 第二步,分为11个格子,以 10%间隔,分别覆盖从 0% 到 100%。下面多画一条绿色的辅助线,

初始画线

  • 第三步,我们来到10月份的图形,黑圈是10月份最初的价格,我们可以看到它是落在70%仓位区间,也就是第8条线之上,所以我们要建立 70% 的仓位(多头,这例子不涉及到做空,下同):

10月份图形

交易阶段

  1. 我们刚建仓,所以在这里 n = 8

  2. 第 n-1 条线也就是第7条线,如果收盘价到了这里,我们就以收盘价卖 10%

  3. 第 n+1 条线也就是第9条线,如果收盘价到了这里,里我们以收盘价买 10%

  4. 接下来的一个事件是一条长绿阳线上穿第7条线,所以我们卖10%(仓位:60%)此时 n = 7,重新计算买卖的价格线:第6

  • 28
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jingsi.l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值