网格交易策略
网格交易策略简介
什么是网格交易策略?
网格交易是利用市场震荡行情获利的一种主动交易策略,其本质是利用投资标的在一段震荡行情中价格在网格区间内的反复运动以进行加仓减仓的操作以达到投资收益最大化的目的。通俗点讲就是根据建立不同数量.不同大小的网格,在突破网格的时候建仓,回归网格的时候减仓,力求能够捕捉到价格的震荡变化趋势,达到盈利的目的。
网格的设置与建仓
网格交易策略至关重要的一点就是网格的数量.间隔还有每个网格仓位数量的设置,但这会因不同的行情和相应判断而有所不同,建仓的数量不应过多,以防到多次触发网格建仓导致资金不足的情况。
行业轮动策略实现(基于掘金量化平台)
策略思想
-
本策略首先计算了SHFE.rb1801过去300个1min收盘价的均值和标准差
-
并用均值加减2和3个标准差得到网格的区间分界线,分别配以0.3和0.5的仓位权重
-
随后根据上突破区间开多仓,下突破区间开空仓,反向突破反向操作和回归平仓来进行相应仓位的调整
网格设置
context.band = np.mean(timeseries) + np.array([-40, -3, -2, 2, 3, 40]) * np.std(timeseries)
context.weight = [0.5, 0.3, 0.0, 0.3, 0.5]
grid = pd.cut([bar.close], context.band, labels=[0, 1, 2, 3, 4])[0]
context.band = np.mean(timeseries) + np.array([-40, -3, -2, 2, 3, 40]) * np.std(timeseries)
context.weight = [0.5, 0.3, 0.0, 0.3, 0.5]
grid = pd.cut([bar.close], context.band, labels=[0, 1, 2, 3, 4])[0]
获取网格区间分界线和设置相应的仓位权重并得到相应的区间
获取多仓仓位
position_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)
= context.account().position(symbol=context.symbol, side=PositionSide_Long)
获取上一交易日可调用get_previous_trading_date
函数,返回值为字符串格式:
-
symbol
需要设置标的代码。 -
side
需要设置枚举常量,PositionSide_Long
为多仓,PositionSide_Short
为空仓。
下单到目标比例
order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Long)
(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
position_side=PositionSide_Long)
固定时间调仓可使用schedule
函数进行定时任务配置:
-
symbol
需要设置标的代码。 -
percent
为比例,此处设置为相应网格对应的权重 -
order_type
需要设置枚举常量,OrderType_Market
为市价单,OrderType_Limit
为限价单 -
side
需要设置枚举常量,PositionSide_Long
为多仓,PositionSide_Short
为空仓。
策略回测分析
分析
我们选取了2017年7月至2016年9月作为回测周期,可以看出:
-
胜率&#x