@Channelchan
2017-03-22T11:16:16.000000Z
字数 3761
阅读 21431
未分类
import numpy as npimport talib as tafrom fxdayu_data.data import MongoHandler, StockDataimport pandas as pdimport matplotlib.pyplot as pltmh = MongoHandler(db='Global_index')hs300 = mh.read('hs300.D')
x = np.array(range(10, 81, 10))def Second_Breakout(s):high = ta.MAX(hs300.high.values, s)low = ta.MIN(hs300.low.values, s)return {s: high, -s: low}def day_range(data):low = 0high = 0is_high = 1is_low = 1for i in x:if is_low:if data['low'] <= data[-i]:low = -ielse:is_low = 0if is_high == 0:return lowif is_high:if data['high'] >= data[i]:high = ielse:is_high = 0if is_low == 0:return highif is_high:return highelif is_low:return lowif __name__ == '__main__':dct = {'high': hs300.high, 'low': hs300.low}for i in x:dct.update(Second_Breakout(i))df = pd.DataFrame(dct).dropna()BreakDay = []for row in df.iterrows():BreakDay.append(day_range(row[1]))df['BreakDay'] = BreakDayfig,(ax,ax1) = plt.subplots(2,1, sharex=True)ax.plot(hs300.close)ax1.bar(df.index, df.BreakDay)plt.show()

macd = ta.abstract.MACD(hs)macd = macd.dropna()macd['sma_hist'] = ta.abstract.MA(macd, 40, price='macdhist').dropna()macd['lma_hist'] = ta.abstract.MA(macd, 60, price='macdhist').dropna()hist = macd.iterrows()t0,d0 = next(hist)x_b = []y_b = []x_s = []y_s = []pos = 0for t1,d1 in hist:if pos == 0 and d1.sma_hist > d1.lma_hist and d0.sma_hist < d0.lma_hist:x_b.append(t1)y_b.append(d1.sma_hist)pos = 1elif pos == 1 and d1.sma_hist < d1.lma_hist and d0.sma_hist > d0.lma_hist:x_s.append(t1)y_s.append(d1.sma_hist)pos = 0t0, d0 = t1, d1import matplotlib as mplmpl.rc('xtick', labelsize=8)fig,(ax, ax1) = plt.subplots(2,1,sharex=True)ax.plot(hs['close'])ax1.plot(macd.sma_hist, 'y')ax1.plot(macd.lma_hist, 'b')ax1.scatter(x_b, y_b, c='r', marker='^', linewidths=3)ax1.scatter(x_s, y_s, c='g', marker='v', linewidths=3)plt.show()
3. Divergence Index(Divergence)
长期动能上涨,短期动能下跌。
import talib as tafrom fxdayu_data.data import MongoHandlerimport matplotlib.pyplot as pltmh = MongoHandler(db='Global_index')hs300 = mh.read('hs300.D')hs300['mom10'] = ta.abstract.MOM(hs300, 10, price='close')hs300['mom40'] = ta.abstract.MOM(hs300, 40, price='close')hs300['price_change'] = hs300.close.diff()hs300['Var40'] = ta.abstract.VAR(hs300, 40, price='price_change')hs300 = hs300.dropna()Div_index = hs300.mom10*hs300.mom40/hs300.Var40plt.subplot(3,1,1)plt.plot(hs300.close)plt.subplot(3,1,2)plt.plot(Div_index)plt.hlines(-10, hs300.index[0], hs300.index[-1], linestyles='dashed', alpha=0.5)plt.subplot(3,1,3)plt.plot(hs300.mom40)plt.hlines(0, hs300.index[0], hs300.index[-1], linestyles='dashed', alpha=0.5)plt.show()

import talib as tafrom fxdayu_data.data import MongoHandlerimport matplotlib.pyplot as pltimport pandas as pdmh = MongoHandler(db='Global_index')hs300 = mh.read('hs300.D')A = 25hs300['MA50'] = ta.abstract.MA(hs300,50)hs300['price_change'] = hs300.close.diff()hs300['NEI'] = A * (hs300.close-hs300.MA50)/ta.abstract.STDDEV(hs300, 50, price='price_change')hs300 = hs300.dropna()def rank(df, price='NEI', gap=50, rank1=10, rank2=40):s = df[price]rank1 -= 1rank2 -= 1def resort(index):series = s.iloc[index-gap:index]value = sorted(series.values)return series.index[-1], value[rank1], value[rank2]df[['lowerband', 'upperband']] = pd.DataFrame(map(resort, range(gap, len(s)+1))).set_index(0)return dfhs300 = rank(hs300)middleband = ta.abstract.MA(hs300, timeperiod=50)upperband = middleband + hs300['upperband']lowerband = middleband + hs300['lowerband']data_B = pd.concat([middleband, upperband , lowerband], axis=1)data_B.columns = ['middleband', 'upperband', 'lowerband']print(data_B)plt.plot(hs300['close'])plt.plot(data_B['upperband'], 'g')plt.plot(data_B['lowerband'], 'r')plt.show()

