?股市交易的策略和农作物生长一样:需要在合适的股票,合适的时间,选择合适的策略,然后获取最大收益。
1.什么是网格交易策略
什么网格交易策略,我们来看一张图片,如下图:
下图是加密币的FIL/BTC交易
网格交易策略,简单来讲,就是我们将价格设定一个区间,然后分成很多个网格,然后根据网格进行买卖获利。
2.什么时候适合使用网格交易策略
前面讲了,合适的股票在合适的时机使用合适的策略,就能获取最大利润。那么网格策略在什么时候可以使用呢?
网格策略最合适的使用时机在股价盘整的时候,也适合大盘动荡不停的洗盘的时候。如下图所示:
3.什么时候不适合使用网格交易策略
对于单边走势股票,不适合使用此策略,单边走势,也是该策略失效的时候。
比如股价如下走势,不停的下跌趋势,不适合使用网格策略。
如下图股价往上走势,不停的向上趋势,不适合使用网格策略。
4.如何设置股票的网格交易策略
明白了上述网格交易策略的使用时机,那就是对于网格交易的设置使用了。网格的设置主要有两种方法:
-
均价网格,比如AAPL今天股价是125,动荡区间是110-140之间,我们希望每格利润为2美金,那么一共就有15个网格,每2美金进行一次交易。
-
支撑位和压力位网格
对于这个,首先得明白支撑位和压力位分别是多少?比如AAPL今天股价是125,动荡区间是110-140,之间分别有114,118,122,126,128,133,138作为压力位,112,116,120,122,124,130,132作为支撑位,我们可以设置为支撑位买入,压力位卖出。
可能大家会说,股票不能做到自动交易,为了在股票中实现网格交易策略,可以进行限价交易就可以了。
第一步:建仓,合适的价位建仓
第二步:建立网格
第三步:设置限价单
然后就只等盈利了。
5.如何实现网格交易的机器交易
如果你懂一点python语言,而且你能注册给你自己交易权限的账户,那么你可以自己写一个网格交易的策略,比如Robinhood就可以获得交易权限。
下面的例子是一个关于加密币交易的网格策略,可以修改后用在股票交易,并进行回测。
pip install backtrader
import backtrader as bt
?
import pandas as pd
import 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')
?
希望以上策略能对你的股票交易有所启示,更多美股交易资讯,请关注我的微信公众号!