网格交易
网格交易法 (Grid Trading) 是一种在震荡行情中表现出色的“自动化高抛低吸”策略,其核心思想与追涨杀跌的趋势策略完全相反,非常考验交易者对市场波动区间的判断。
它的哲学非常直观:它不预测市场的未来方向,而是假设价格将在一个特定的区间内来回波动。
策略行为: 交易者预先设定一个价格区间(由压力位和支撑位定义),并在这个区间内密布多个预设的价格线(网格线)。
当价格下跌并触及下方的某个节点时,就买入一份头寸。
当价格上涨并触及上方的某个节点时,就卖出一份头寸。
盈利模式: 策略的利润来自于在低价节点买入、在高价节点卖出这一过程的不断重复。每一次成功的“一买一卖”循环,就锁定了一份由网格间距决定的利润。
左侧交易: 这是一种典型的左侧交易。它在价格下跌、看似“危险”时买入;在价格上涨、看似“乐观”时卖出。它总是在“逆”着短期的小趋势操作,赌的是价格会回归到区间的中心。
风险与适用场景
最大优势: 在横盘震荡市 (Ranging Market) 中,网格交易法如同永动机一般,能够持续不断地从价格的无序波动中榨取利润。
最大风险: 其“阿喀琉斯之踵”是强烈的单边趋势行情 (Trending Market)。
在持续的单边下跌中,策略会不断地在更低的价格买入、买入、再买入,导致积累大量浮动亏损的多头头寸,俗称“接飞刀”。
在持续的单边上涨中,策略会不断地卖出、卖出、再卖出,最终可能耗尽持仓并开始建立亏损的空头头寸,导致“踏空”并转为逆势做空。
因此,成功运用网格交易的关键在于正确判断当前市场处于震荡状态,并设定一个合理的波动区间。
策略逻辑
网格交易策略的实现可以分为以下几个步骤:
第一步:设定网格
- 价格中枢:
策略以前一交易日的收盘价作为当天网格的中心基准。这个中枢价在当天是固定不变的。
- 也可以用其他方法确定中枢价,比如前一日的最高价和最低价的均值,或者更复杂的技术指标。
- 网格线: 在中枢价的基础上,按固定的百分比(如 ±1%,
±2%,
±3%)向上和向下扩展,形成一系列的网格线。这构成了一个等比例的网格系统。
- 也可以用固定的点数间隔(如每隔10点)来设定网格线,具体取决于标的的价格水平和波动性, 甚至可以用ATR等波动率指标来动态调整网格间距。
- 网格区域: 相邻的两条网格线之间形成一个“区域”或“格子”。
第二步:交易规则
核心原则: 当价格从一个网格区域移动到另一个相邻的网格区域时,触发一次交易。
向上移动 (例如,从区域3进入区域4): 卖出 m 手合约。如果原先持有多仓,则为平仓;如果原先为空仓或空头,则为开/加空仓。
向下移动 (例如,从区域4进入区域3): 买入 m 手合约。如果原先持有空仓,则为平仓;如果原先为空仓或多头,则为开/加多仓。
举例分析
在行情震荡上涨时:
假设格子之间的差为1元钱,每变化一个格子相应的买入或卖出1手,则通过网格交易当前账户的净收益为6元,持空仓4手,持仓均价为12.5元。
行情震荡下跌时:
同理可知,净收益为8元,持4手多仓,平均成本为7.5元。
可以看到,无论行情上涨还是下跌,已平仓的部分均为正收益,未平仓的部分需要等下一个信号出现再触发交易。
即使网格交易能够获得较为稳定的收益,但也存在一定的风险。如果行情呈现大涨或大跌趋势,会导致不断开仓,增加风险敞口。这也是为什么网格交易更适用震荡行情,不合适趋势性行情。
代码示例
下面的代码示例展示了如何实现一个简单的网格交易策略:
1 | # coding=utf-8 |
获取数据的bar格式可能如下:
1 | bar = { |
策略难点:
怎样记录价格是否突破网格线?
- 解决方法:有些人可能会想到用当前价格与网格线对应的价格进行比较,但这样操作比较麻烦,步骤繁琐。这里采用区域判断方式。根据网格线划分网格区域为1、2、3、4、5、6.利用pandas库提供的cut函数,将当前价格所处的网格区域表示出来。当网格区域发生变化,说明价格突破了一个网格线。
如何避免出现4区-5区开仓一次,5区-4区又平仓一次这种“假突破”?
- 解决方法:4-5开仓一次和5-4平仓一次实际上突破的是一根线,此时的形态是价格沿着这根线上下波动。只有第一次穿过这条线时才是真正的交易信号,其他的并没有形成突破。因此我们需要一个变量储存每一次交易时网格区域的变化形态(按照从大到小的顺序),比如5-4可以记为[4,5],4-5记为[4,5]。当新的记录=旧的记录时,信号失效。