神奇的网格交易策略

本文探讨了网格交易策略在不同市场环境下的表现,包括震荡市、牛市和熊市,并提出了几种改进策略,如动量网格、异形动量网格和通道突破网格,以适应单边行情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间在复现各种技术因子的类的择时,选股操作时开发过了网格策略,最终结果并不是非常好,当然震荡市不错,但是单边牛市和熊市表现都非常糟糕.(由于各个倾向于将各个量化步骤/角色分离开,所有以下策略回测均未加止损,也均是sh50)

震荡市

如果拉长区间

可见B区间正收益,但是A区间确是负收益,导致整体依然负收益

为何如此呢?

网格交易其核心在于均值回归,如果价格不回归则网格交易就会失败,在第一张图中,可以看到大盘其实是保持震荡形态的,在这种形态下,网格交易高抛低吸的操作方式,可以不断地吸收低价筹码,然后在每个震荡的高位抛出.获取波动性带来的收益.

不妨对网格的操作模式进行抽象化

当然,仓位不是连续的,而是离散的,这里只是为了方便表示所以用连续的标示了.

 

网格改造01,动量

既然原始网格无法处理单边行情,那么将网格反过来呢?

这个是什么?价格在上方买入,下方卖出?这是什么?动量!

不妨回测试试

注意上图的凡是牛市部分,基本上策略都能捕捉,凡是熊市部分,基本上都能止损,但是震荡市就比较惨了,产生较大亏损.和原始的网格策略恰恰相反.原始网格最擅长捕捉震荡市收益.

也就是说我们通过"反向网格",成功实现了"动量"策略.

网格改造02:异形动量

既然我们以及对网格做了抽象化,不妨再抽象后模型上"动手脚"

构造如下网格

yingli

这个网格整体依然是,低卖高买,但中间仓从0.5变成0.6了,也就是说默认持仓变多了.,这样效果会是什么?

在牛市时,收益将更高,为何?如果价格落在上部,(价格的up,down是std)说明价格在整个价格时序序列中,处于相对高位置,在牛市或震荡慢牛中,大概率出现这种点位分布,此时相比上一张图,其持仓会增加

整体效果并没有提升太多,在震荡向上牛市中表现和上一个基本类似,但是止损效果貌似不佳.

可能原因是在左侧的熊市下跌过程中,虽然减仓(整体仓位在低位),但是由于网格在不断高卖低买的过程中吸收了部分向下的趋势,导致亏损.还有就是动量的那个网格其实是经过一定的参数调优了,目前这个参数保持和上一个一个样,未经过调整.所以可能效果提升不明显

网格改造03:通道突破

相比原始网格,中间仓设置0.3,超过up时满仓,低于down时空仓

回测图

这种方案,可以很好的避开猛烈下跌,但在牛市表现稍弱.在波动上升时总持有仓位并不高,吃能吸收部分牛市向上的趋势..还有部分收益来自低买高卖的波动性.

如果把图中三角形部分的调仓去掉,改为突破up则买入,低于down则卖出,就是典型的通道突破策略.

 

在高频交易领域,dual thrust,ATR,R-break,菲力四价,空中花园等等都是基于趋势突破的策略(大于xx则买入,小于xx则卖出),只是在突破价的计算上有所不同.如果按照这一种思路,网格,可以看做是一些策略的集合.通过构造不同的"异形网格"以及不同的up,down的计算方法,我们可能捕捉到行情中不同的趋势性或者波动性的收益成分.实现持续的盈利.

参考文献:https://www.19lou.com/forum-177-thread-7731536667372406-1-1.html

http://www.360doc.com/content/18/0525/17/9482_756972082.shtml

### Python 实现网格交易策略示例代码 以下是一个基于 Python 的网格交易策略实现,结合了提供的引用内容中的关键点[^1],并参考了网格交易的基本逻辑[^3]。此代码示例展示了如何通过设置中枢价格、网格宽度和买卖批量来实现机械式的低买高卖操作。 ```python import numpy as np import pandas as pd class GridTradingStrategy: def __init__(self, central_price, grid_width, buy_quantity, sell_quantity): """ 初始化网格交易策略。 参数: - central_price: 中枢价格 - grid_width: 网格宽度 - buy_quantity: 每次买入的数量 - sell_quantity: 每次卖出的数量 """ self.central_price = central_price self.grid_width = grid_width self.buy_quantity = buy_quantity self.sell_quantity = sell_quantity self.current_price = central_price self.positions = 0 # 当前持仓数量 self.cash = 0 # 当前现金余额 def update_price(self, new_price): """ 更新当前价格,并根据网格策略执行买卖操作。 参数: - new_price: 最新价格 """ self.current_price = new_price if new_price < self.central_price - self.grid_width and self.cash >= self.buy_quantity * new_price: # 执行买入操作 self.positions += self.buy_quantity self.cash -= self.buy_quantity * new_price print(f"买入: {self.buy_quantity} 股, 当前价格: {new_price}, 剩余现金: {self.cash}") elif new_price > self.central_price + self.grid_width and self.positions >= self.sell_quantity: # 执行卖出操作 self.positions -= self.sell_quantity self.cash += self.sell_quantity * new_price print(f"卖出: {self.sell_quantity} 股, 当前价格: {new_price}, 当前持仓: {self.positions}") # 示例数据 prices = [50, 49.5, 49, 48.5, 49, 50, 51, 52, 51, 50] # 初始化网格交易策略 strategy = GridTradingStrategy(central_price=50, grid_width=0.5, buy_quantity=200, sell_quantity=200) # 模拟交易过程 for price in prices: strategy.update_price(price) ``` #### 代码说明 - **类定义**:`GridTradingStrategy` 是一个网格交易策略的实现类,初始化时需要指定中枢价格、网格宽度以及每次买卖的数量。 - **更新价格**:通过 `update_price` 方法实时更新价格,并根据当前价格与中枢价格的关系决定是否执行买入或卖出操作。 - **买卖逻辑**:当价格低于中枢价格减去网格宽度时进行买入;当价格高于中枢价格加上网格宽度时进行卖出。 --- ### 网格交易策略的关键点 网格交易的核心思想是利用价格波动,在设定的区间内进行机械化操作。通过反复循环差价赚取利润,避免人为干预带来的不确定性[^3]。上述代码实现了基本的网格交易逻辑,可以根据实际需求调整参数以适应不同的市场环境。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值