?股市交易的策略和農作物生長一樣:需要在合適的股票,合適的時間,選擇合適的策略,然後獲取最大收益。
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')
?
希望以上策略能對你的股票交易有所啟示,更多美股交易資訊,請關注我的微信公眾號!