什么是网格交易?
网格交易法又叫渔网交易法, 是在标的价格不断震荡的过程中,对标的价格绘制网格,在市场价格触碰到某个网格线时进行低买高卖操作获利的策略。
-
适用场景: 震荡行情,在价格下跌时买入,价格上涨时卖出
-
分类: 根据多空倾向可以分为做多网格、做空网格和中性网格,即:做多网格只会开多和平多,适合于震荡向上的行情,做空网格只会开空和平空,适合于震荡向下的行情。中性网格是在策略开启时的市场价格的上方开空/平空,下方开多/平多
-
优点:震荡套利。如果判断接下来将会有较长时间的震荡行情时,可以获取额外alpha
-
缺点: 对行情判断要求较高。由于是逆势交易,如果遇上单边上涨行情,则容易卖飞; 若遇上单边下跌行情,则亏损会较大
网格交易具体步骤
网格交易具体步骤如下:
-
1. 确定交易标的。 选择的标的最好价格变化较大,交易较为活跃。 如果标的不活跃,价格波动不大,很难触发交易
-
2. 确定网格的中枢、压力位和支撑位。 确定适当的压力位和支撑位,使价格大部分时间能够在压力位和支撑位之间波动。如果压力位和支撑位设置范围过大,会导致难以触发交易;如果压力位和支撑位设置范围过小,则会频繁触发交易,除了交易成本外,一旦突破支撑位,亏损可能较大
-
3. 设置网格宽度和数量。 设定多少个网格以及网格的宽度可以自定义
-
* 等宽网格可能会导致买卖点过早,收益率较低。设置不等宽网格能避免该问题,但可能会错失买卖机会
-
* 常用的网格设计模式: 等差网格和等比网格。 等差网格为每相邻两档挂单价格的差值相等,如1、2、3、4;等比网格为每相邻两档挂单价格的比值相等, 如1、2、4、8
-
-
4. 当价格触碰到网格线时,若高于买入价,则每上升一格卖出x手;若低于买入价,则每下跌一格买入x手
代码实现
核心代码如下:
def next(self):
grid = pd.cut([self.data.close[0]], self.band, labels=self.labels)[0]
if np.isnan(grid):
self.log('价格波动超过网格范围: %.2f' %(self.data.close[0]))
return
# 价格上涨
if grid > self.last_grid:
grid_range = [self.last_grid, grid]
if self.last_grid == 0:
self.last_grid = grid
return
if self.last_grid != 0:
if grid_range != self.last_grid_range:
self.last_grid = grid
self.last_grid_range = grid_range
if self.position.size > 0:
self.log('SELL CREATE %.2f, cur position: %d' % (self.data.close[0], self.position.size))
self.sell(size=self.p.stake)
# 价格下跌
if grid < self.last_grid:
grid_range = [grid, self.last_grid]
if self.last_grid == 0:
self.last_grid = grid
return
if self.last_grid != 0:
if grid_range != self.last_grid_range:
self.last_grid = grid
self.last_grid_range = grid_range
if self.position.size < 10:
self.log('BUY CREATE %.2f, cur position: %d' % (self.data.close[0], self.position.size))
self.buy(size=self.p.stake)
说明:
-
如果标的一直没有交易,说明此时标的价格已经超过设置的网格范围,可以调整网格压力位、阻力位;如果只是暂时没有交易,如果不是超过范围,也可以调整网格宽度和数量
-
怎样记录价格是否突破网格线?使用pandas库提供的cut函数,将当前价格所处的网格区域表示出来。当网格区域发生变化,说明价格突破了一个网格线
结论&交流
关注微信公众号:诸葛说talk,获取更多内容。同时还能获取邀请加入量化投资研讨群, 与众多从业者、技术大牛一起交流、切磋,名额有限,不要错过。
写文章不易,觉得本文对你有帮助的话,帮忙点赞转发赞赏,让笔者有坚持写好文章的动力。