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