双技术指标:SMA+CCI交易系统
以SMA作为开平仓信号,同时增加CCI作为过滤器;
当股价上穿SMA,同时CCI要小于-100,说明是在超卖的情况下,上穿SMA,做多;交易信号更可信;
当股价下穿SMA,同时CCI要大于+100,说明是在超买的情况下,下穿SMA,做空;交易信号更可信;
import numpy as np
import pandas as pd
import talib as ta
import tushare as ts
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# 确保‘-’号显示正常
mpl.rcParams['axes.unicode_minus']=False
# 确保中文显示正常
mpl.rcParams['font.sans-serif'] = ['SimHei']
1. 数据准备
# 获取数据
stock_index = ts.get_k_data('hs300', '2016-01-01', '2017-06-30')
stock_index.set_index('date', inplace=True)
stock_index.sort_index(inplace = True)
stock_index.head()
open | close | high | low | volume | code | |
---|---|---|---|---|---|---|
date | ||||||
2016-01-04 | 3725.86 | 3470.41 | 3726.25 | 3469.01 | 115370674.0 | hs300 |
2016-01-05 | 3382.18 | 3478.78 | 3518.22 | 3377.28 | 162116984.0 | hs300 |
2016-01-06 | 3482.41 | 3539.81 | 3543.74 | 3468.47 | 145966144.0 | hs300 |
2016-01-07 | 3481.15 | 3294.38 | 3481.15 | 3284.74 | 44102641.0 | hs300 |
2016-01-08 | 3371.87 | 3361.56 | 3418.85 | 3237.93 | 185959451.0 | hs300 |
# 计算指标sma,cci
stock_index['sma'] = ta.SMA(np.asarray(stock_index['close']), 5)
stock_index['cci'] = ta.CCI(np.asarray(stock_index['high']), np.asarray(stock_index['low']), np.asarray(stock_index['close']), timeperiod=20)
plt.subplot(2,1,1)
plt.title('沪深300 sma cci指标图')
plt.gca().axes.get_xaxis().set_visible(False)
stock_index['close'].plot(figsize = (10,8))
stock_index['sma'].plot(figsize=