@Channelchan
2018-11-14T05:59:58.000000Z
字数 3556
阅读 1263
用动能指标交易
动能指标对价格的计算与物理学中对速度的计算相似,需要知道价格移动的距离、时间、移动的速度与加速度,这些变化都反映着市场价格在不同维度上的变化。动能指标的类型主要有两种,一种是Momentum 指标,它有中间轴,可以是0或100,上下没有界限;另一种是Oscillator 振荡器,它的取值在0至100之间。

MACD=12'day'EMA-26'day'EMA
MACD'signal=9'day'EMA(MACD)
Hist=MACD-MACD'signal


from jaqs.data import DataViewfrom jaqs.data import RemoteDataServiceimport osimport numpy as npimport talib as taimport pandas as pdfrom datetime import datetimeimport matplotlib.pyplot as pltimport warningswarnings.filterwarnings("ignore")dataview_folder = 'JAQS_Data/hs300'dv = DataView()dv.load_dataview(dataview_folder)
Dataview loaded successfully.
def change_index(df):df.index = pd.Index(map(lambda x: datetime.strptime(str(x),"%Y%m%d") , df.index))return dfdata = change_index(dv.get_ts('close_adj').loc[20170105:])
symbol= ['000001.SZ','600036.SH','600050.SH','000008.SZ','000009.SZ']
price_dict = {name: data[name] for name in symbol}
data_mom = pd.DataFrame({item: ta.ROCR100(value.values,20) for item,value in price_dict.items()},index=data.index).dropna()
fig = plt.figure(figsize=(15, 7))plt.plot(data_mom)plt.hlines(100,data_mom.index[0],data_mom.index[-1] , linestyles='dashed', alpha=0.5)plt.legend(data_mom.columns, loc='upper left')plt.show()

#MACDmacd = ta.abstract.MACD(data, price='600036.SH')# macdfig, (ax, ax1) = plt.subplots(2, 1, sharex=True, figsize=(15,7))ax.plot(macd.index, data['600036.SH'])ax1.plot(macd.index, macd['macd'])ax1.plot(macd.index, macd['macdsignal'])ax1.bar(macd.index, macd['macdhist'])plt.show()

#RSIRSI = ta.abstract.RSI(data,20, price='600036.SH')fig, (ax, ax1) = plt.subplots(2, 1, sharex=True, figsize=(15,7))ax.plot(data['600036.SH'])ax1.plot(RSI,'r', label='RSI')ax1.axhline(70,alpha=0.3)ax1.axhline(30,alpha=0.3)plt.legend()plt.show()

high = change_index(dv.get_ts('high_adj').loc[20170105:])['600036.SH'].valueslow = change_index(dv.get_ts('low_adj').loc[20170105:])['600036.SH'].valuesclose = change_index(dv.get_ts('close_adj').loc[20170105:])['600036.SH'].values
#Stochastick,d = ta.STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)KDJ = pd.concat([pd.Series(k,index=data.index), pd.Series(d,index=data.index)], axis=1, keys=['slowk','slowd'])fig, (ax, ax1) = plt.subplots(2, 1, sharex=True, figsize=(15,7))ax.plot(data['600036.SH'])ax1.plot(KDJ['slowk'], label='slowK')ax1.plot(KDJ['slowd'],'y', label='fastK')ax1.axhline(70,alpha=0.3)ax1.axhline(30,alpha=0.3)plt.legend(loc='upper left')plt.show()

1. 图表的领先形态(Charting Patterns-Leading ahead):
可以通过观察指标对价格做领先的形态或走势判断。
2. 交叉信号(Cross Signals):
快线高于慢线金叉,看涨;快线低于慢线死叉,看跌。
3. 柱的斜率(The slope of MACD-Histogram):
当前的柱比前一根高,看涨;当前的柱比前一根低,看跌。
4. 超买超卖(Overbought/OverSold):
当振荡器高于上方的值如RSI(70)为超买,低于下方的值如RSI(30)为超卖,超卖买入,超买卖出。
5. 背离(Divergence):
价格创新高,而指标没有创新高,顶背离,看跌。
价格创新低,而指标没有创新低,底背离,看涨。
底背离买入:
RSI< 30
顶背离卖出:
RSI>70
# Bollinger Bandimport rqalphafrom rqalpha.api import *import talibdef init(context):context.s1 = "000001.XSHE"context.PERIOD = 20def handle_bar(context, bar_dict):price = history_bars(context.s1, context.PERIOD*2+1, '1d', 'close')RSI = talib.RSI(price, 20)cur_position = context.portfolio.positions[context.s1].quantityshares = context.portfolio.cash/bar_dict[context.s1].closeif RSI[-1]>70:order_target_value(context.s1, 0)if RSI[-1]<30:order_shares(context.s1, shares)config = {"base": {"start_date": "2015-06-01","end_date": "2017-12-30","accounts": {'stock':1000000},"benchmark": "000001.XSHE"},"extra": {"log_level": "error",},"mod": {"sys_analyser": {"enabled": True,"plot": True}}}rqalpha.run_func(init=init, handle_bar=handle_bar, config=config)

根据RSI背离策略例子,写出其他的动能策略
