股票量化分析(11)——第二个策略(5日移动均线、双均线、MACD策略)
2017-10-21 14:33
260 查看
这里主要用的是talib这个库来求股票的指标,就免得造轮子。
移动均线有好几个策略,不过都是简单的策略,包括简单的移动均线策略,双均线交叉策略,macd线的策略。目前也就觉得macd线简单好用。
先放一个简单的策略——移动均线策略。这个策略是由下向上超过均线就买入,相反就卖出,最后会发现这个策略没什么卵用,明显低于股票自身的累计收益,不过方法可以参考一下。
双均线策略:即5日短线移动平均超过30日长线移动平均即买入,其余时候空仓。
结果发现大部分时候双均线交易策略的收益小于股票本身的累计收益。
下面看看MACD交易策略:即DIFF大于DEA的时候买入,其他时候卖出。
从图中可以看出,macd策略成功躲避了暴涨暴跌,但最后收益稍微好于双移动均线,如果能够继续优化一下,能够避免那个波谷阶段的暴跌,收益还是很可观的,这就需要继续优化策略。所以学习量化分析能够让你冷静的看待自己的交易策略,并不断优化它。
移动均线有好几个策略,不过都是简单的策略,包括简单的移动均线策略,双均线交叉策略,macd线的策略。目前也就觉得macd线简单好用。
先放一个简单的策略——移动均线策略。这个策略是由下向上超过均线就买入,相反就卖出,最后会发现这个策略没什么卵用,明显低于股票自身的累计收益,不过方法可以参考一下。
import tushare as ts import pandas as pd import matplotlib.pyplot as plt import numpy as np import talib df=ts.get_hist_data('600848',start='2015-01-01',end='2015-12-31') df=df.sort_index() df.index=pd.to_datetime(df.index,format='%Y-%m-%d') #收市股价 close= df.close #每天的股价变动百分率 ret=df.p_change/100 # 10日的移动均线为目标 df['SMA_10'] = talib.MA(np.array(close), timeperiod=10) close10=df.SMA_10 #处理信号 SmaSignal=pd.Series(0,index=close.index) for i in range(10,len(close)): if all([close[i]>close10[i],close[i-1]<close10[i-1]]): SmaSignal[i]=1 elif all([close[i]<close10[i],close[i-1]>close10[i-1]]): SmaSignal[i]=-1 SmaTrade=SmaSignal.shift(1).dropna() SmaBuy=SmaTrade[SmaTrade==1] SmaSell=SmaTrade[SmaTrade==-1] SmaRet=ret*SmaTrade.dropna() #累积收益表现 #股票累积收益率 cumStock=np.cumprod(1+ret[SmaRet.index[0]:])-1 #策略累积收益率 cumTrade=np.cumprod(1+SmaRet)-1 plt.rcParams['font.sans-serif']=['SimHei'] plt.plot(cumStock,label="cumStock",color='k') plt.plot(cumTrade,label="cumTrade",color='r',linestyle=':') plt.title("股票累积收益率与10日平均策略收益率") plt.legend()
双均线策略:即5日短线移动平均超过30日长线移动平均即买入,其余时候空仓。
import tushare as ts import pandas as pd import matplotlib.pyplot as plt import numpy as np import talib df=ts.get_hist_data('600848',start='2015-01-01',end='2015-12-31') df=df.sort_index() df.index=pd.to_datetime(df.index,format='%Y-%m-%d') #收市股价 close= df.close #每天的股价变动百分率 ret=df.p_change/100 # 5\30日的移动均线为目标 df['SMA_5'] = talib.MA(np.array(close), timeperiod=5) df['SMA_30'] = talib.MA(np.array(close), timeperiod=30) close5=df.SMA_5 close30=df.SMA_30 #处理信号 SmaSignal=pd.Series(0,index=close.index) for i in range(10,len(close)): if all([close5[i]>close30[i]]): SmaSignal[i]=1 SmaTrade=SmaSignal.shift(1).dropna() SmaRet=ret*SmaTrade.dropna() #累积收益表现 #股票累积收益率 cumStock=np.cumprod(1+ret[SmaRet.index[0]:])-1 #策略累积收益率 cumTrade=np.cumprod(1+SmaRet)-1 plt.rcParams['font.sans-serif']=['SimHei'] plt.plot(cumStock,label="cumStock",color='k') plt.plot(cumTrade,label="cumTrade",color='r',linestyle=':') plt.title("股票累积收益率与双均线策略收益率") plt.legend()
结果发现大部分时候双均线交易策略的收益小于股票本身的累计收益。
下面看看MACD交易策略:即DIFF大于DEA的时候买入,其他时候卖出。
import tushare as ts import pandas as pd import matplotlib.pyplot as plt import numpy as np import talib df=ts.get_hist_data('600848',start='2015-01-01',end='2015-12-31') df=df.sort_index() df.index=pd.to_datetime(df.index,format='%Y-%m-%d') #收市股价 close= df.close #每天的股价变动百分率 ret=df.p_change/100 # 调用talib计算MACD指标 df['DIFF'],df['DEA'],df['MACD'] = talib.MACD(np.array(close), fastperiod=12, slowperiod=26, signalperiod=9) diff=df.DIFF dea=df.DEA #处理信号 macdSignal=pd.Series(0,index=close.index) for i in range(10,len(close)): #if all([diff[i]>dea[i]>0,diff[i-1]<dea[i-1]]): if all([diff[i]>dea[i]]): macdSignal[i]=1 #elif all([diff[i]<dea[i]<0,diff[i-1]>dea[i-1]]): #macdSignal[i]=-1 macdTrade=macdSignal.shift(1).dropna() macdRet=ret*macdTrade.dropna() #累积收益表现 #股票累积收益率 cumStock=np.cumprod(1+ret[macdRet.index[0]:])-1 #策略累积收益率 cumTrade=np.cumprod(1+macdRet)-1 plt.rcParams['font.sans-serif']=['SimHei'] plt.plot(cumStock,label="cumStock",color='k') plt.plot(cumTrade,label="cumTrade",color='r',linestyle=':') plt.title("股票累积收益率与macd策略收益率") plt.legend()
从图中可以看出,macd策略成功躲避了暴涨暴跌,但最后收益稍微好于双移动均线,如果能够继续优化一下,能够避免那个波谷阶段的暴跌,收益还是很可观的,这就需要继续优化策略。所以学习量化分析能够让你冷静的看待自己的交易策略,并不断优化它。
相关文章推荐
- 量化分析(9)——借助talib库来直接获得MACD、动量、rsi、移动均线
- 股票策略的选择(平均移动均线)
- 1-2 移动均线交叉策略1
- WeQuant交易策略—5日均线
- 量化分析(7)——移动均线、macd线
- 多股票策略和双均线策略结合
- 量化双均线策略:(一)通过tushare获取股票数据
- 1-3移动均线交叉策略2
- 股票量化分析(10)——第一个策略(rsi强度策略)
- 1-4移动均线交叉策略3
- 股票中5日均线连续金叉10日均线选股法
- 股票量化分析(12)——第三个策略(kdj策略)
- Python绘制股票移动均线
- 浅谈航空公司移动应用开发策略
- [11]UITableView编辑 删除 添加 移动 单例 及其去掉TableView没内容的Cell
- 写覆盖的调用长期股票策略
- 自适应均线策略
- 联想的移动应用策略
- 设置Office 365移动设备管理MDM服务——创建设备安全策略
- 11_Linux基础知识及命令――――复制和移动文本文件