网格交易策略--动荡的股市下的稳定交易策略之一

?股市交易的策略和农作物生长一样:需要在合适的股票,合适的时间,选择合适的策略,然后获取最大收益。

1.什么是网格交易策略

什么网格交易策略,我们来看一张图片,如下图:





下图是加密币的FIL/BTC交易



网格交易策略,简单来讲,就是我们将价格设定一个区间,然后分成很多个网格,然后根据网格进行买卖获利。

2.什么时候适合使用网格交易策略

前面讲了,合适的股票在合适的时机使用合适的策略,就能获取最大利润。那么网格策略在什么时候可以使用呢?

网格策略最合适的使用时机在股价盘整的时候,也适合大盘动荡不停的洗盘的时候。如下图所示:



3.什么时候不适合使用网格交易策略

对于单边走势股票,不适合使用此策略,单边走势,也是该策略失效的时候。


比如股价如下走势,不停的下跌趋势,不适合使用网格策略。



如下图股价往上走势,不停的向上趋势,不适合使用网格策略。



4.如何设置股票的网格交易策略


明白了上述网格交易策略的使用时机,那就是对于网格交易的设置使用了。网格的设置主要有两种方法:

  1. 均价网格,比如AAPL今天股价是125,动荡区间是110-140之间,我们希望每格利润为2美金,那么一共就有15个网格,每2美金进行一次交易。

  2. 支撑位和压力位网格

    对于这个,首先得明白支撑位和压力位分别是多少?比如AAPL今天股价是125,动荡区间是110-140,之间分别有114,118,122,126,128,133,138作为压力位,112,116,120,122,124,130,132作为支撑位,我们可以设置为支撑位买入,压力位卖出。

可能大家会说,股票不能做到自动交易,为了在股票中实现网格交易策略,可以进行限价交易就可以了。


第一步:建仓,合适的价位建仓

第二步:建立网格

第三步:设置限价单

然后就只等盈利了。

5.如何实现网格交易的机器交易


如果你懂一点python语言,而且你能注册给你自己交易权限的账户,那么你可以自己写一个网格交易的策略,比如Robinhood就可以获得交易权限。

下面的例子是一个关于加密币交易的网格策略,可以修改后用在股票交易,并进行回测。

pip install backtraderimport backtrader as bt?import pandas as pdimport numpy as np?class GridStrategy(bt.Strategy):? def __init__(self): self.highest = bt.indicators.Highest(self.data.high, period=1440, subplot=False) self.lowest = bt.indicators.Lowest(self.data.low, period=1440, subplot=False) mid = (self.highest + self.lowest)/2 perc_levels = [x for x in np.arange( 1 + 0.005 * 5, 1 - 0.005 * 5 - 0.005/2, -0.005)] self.price_levels = [mid * x for x in perc_levels] self.last_price_index = None? def next(self): if self.last_price_index == None: for i in range(len(self.price_levels)): if self.data.close > self.price_levels[i]: self.last_price_index = i self.order_target_percent( target=i/(len(self.price_levels) - 1)) return else: signal = False while True: upper = None lower = None if self.last_price_index > 0: upper = self.price_levels[self.last_price_index - 1] if self.last_price_index < len(self.price_levels) - 1: lower = self.price_levels[self.last_price_index + 1] # 还不是最轻仓,继续涨,就再卖一档 if upper != None and self.data.close > upper: self.last_price_index = self.last_price_index - 1 signal = True continue # 还不是最重仓,继续跌,再买一档 if lower != None and self.data.close < lower: self.last_price_index = self.last_price_index + 1 signal = True continue break if signal: self.long_short = None self.order_target_percent( target=self.last_price_index/(len(self.price_levels) - 1))?if __name__ == '__main__': # 创建引擎 cerebro = bt.Cerebro()? # 加入网格策略 cerebro.addstrategy(GridStrategy)? # 导入数据 df = pd.read_csv('./binance-segment.csv', parse_dates=['time']) data = bt.feeds.PandasData(dataname=df, timeframe=bt.TimeFrame.Minutes, datetime='time', open='open', high='high', low='low', close='close', volume='volume', openinterest=-1)? cerebro.adddata(data)? # 设置起始资金 cerebro.broker.setcash(100000.0)? # 设定对比指数 cerebro.addanalyzer(bt.analyzers.TimeReturn, timeframe=bt.TimeFrame.Years, data=data, _name='benchmark')? # 策略收益 cerebro.addanalyzer(bt.analyzers.TimeReturn, timeframe=bt.TimeFrame.Years, _name='portfolio')? start_value = cerebro.broker.getvalue() print('Starting Portfolio Value: %.2f' % start_value)? # Run over everything results = cerebro.run()? strat0 = results[0] tret_analyzer = strat0.analyzers.getbyname('portfolio') print('Portfolio Return:', tret_analyzer.get_analysis()) tdata_analyzer = strat0.analyzers.getbyname('benchmark') print('Benchmark Return:', tdata_analyzer.get_analysis())? # 画图 cerebro.plot(style='candle', barup='green')?



希望以上策略能对你的股票交易有所启示,更多美股交易资讯,请关注我的微信公众号!



登录后才可评论.