金融量化 - 技术分析策略和交易系统_SMA+CCI交易系统

双技术指标: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=

你可能感兴趣的:(金融量化,金融量化)