?股市交易的策略和農作物生長一樣:需要在合適的股票,合適的時間,選擇合適的策略,然後獲取最大收益。
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 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)/2perc_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 = iself.order_target_percent(target=i/(len(self.price_levels) - 1))returnelse:signal = Falsewhile True:upper = Nonelower = Noneif 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 - 1signal = Truecontinue# 還不是最重倉,繼續跌,再買一檔if lower != None and self.data.close < lower:self.last_price_index = self.last_price_index + 1signal = Truecontinuebreakif signal:self.long_short = Noneself.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 everythingresults = 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')?
希望以上策略能對你的股票交易有所啟示,更多美股交易資訊,請關注我的微信公眾號!
