利用python炒股talib_借助talib使用技术分析指标来炒股

什么是技术分析

所谓股票的技术分析,是相对于基本面分析而言的。基本分析法着重于对一般经济情况以及各个公司的经营管理状况、行业动态等因素进行分析,以此来研究股票的价值,衡量股价的高低。而技术分析则是透过图表或技术指标的记录,研究市场过去及现在的行为反应,以推测未来价格的变动趋势。其依据的技术指标的主要内容是由股价、成交量或涨跌指数等数据计算而得的,技术分析只关心证券市场本身的变化,而不考虑会对其产生某种影响的经济方面、政治方面的等各种外部的因素。

什么是talib

talib的简称是Technical Analysis Library,主要功能是计算股价的技术分析指标。先简单看看talib都给我们提供了那些计算技术指标的函数,按技术指标的类型示例如下:函数名:CDL2CROWS

名称:Two Crows 两只乌鸦

简介:三日K线模式,第一天长阳,第二天高开收阴,第三天再次高开继续收阴,收盘比前一 日收盘价低,预示股价下跌。

例子:integer = CDL2CROWS(open, high, low, close)

函数名:CDL3STARSINSOUTH

名称:Three Stars In The South 南方三星

简介:三日K线模式,与大敌当前相反,三日K线皆阴,第一日有长下影线,第二日与第一日类似,K线整体小于第一日,第三日无下影线实体信号,成交价格都在第一日振幅之内,预示下跌趋势反转,股价上升。

例子:integer = CDL3STARSINSOUTH(open, high, low, close)

函数名 : MA

名称:Moving average 移动平均值

简介:移动平均值是在一定范围内的价格平均值

例子:ma = MA(close, timeperiod=30, matype=0)

函数名:ADX

名称:Average Directional Movement Index 平均趋向指数

简介:ADX指数是反映趋向变动的程度,而不是方向的本身。

例子:adx = ADX(high, low, close, timeperiod=14)

函数名:ATR

名称:Average True Range 平均真实波幅

简介:主要用来衡量价格的波动。因此,这一技术指标并不能直接反映价格走向及其趋势稳定性,而只是表明价格波动的程度。

例子:atr = ATR(high, low, close, timeperiod=14)

函数名:OBV

名称:On Balance Volume 能量潮

简介:通过统计成交量变动的趋势推测股价趋势

计算公式:以某日为基期,逐日累计每日上市股票总成交量,若隔日指数或股票上涨,则基期OBV加上本日成交量为本日OBV。隔日指数或股票下跌,则基期OBV减去本日成交量为本日OBV

例子:obv = OBV(close, volume)

由于篇幅有限,技术分析指标不能在此充分介绍,可以参考talib官方文档

如何使用:MA实例已知MA这个函数的调用方式为:ma = MA(close, timeperiod=30, matype=0)

close表示收盘价序列,timeperiod指定义好均线的计算长度即几日均线,不输入的话,默认为30日, matype可以默认不用输入,然后就可以得到均线的值

因此简单来讲,只取获取收盘价,就可以轻松计算移动平均值

下面以平安银行(000001.SZA)为例进行说明:

# 获取数据

df = D.history_data(['000001.SZA'],'2015-12-01','2016-02-20',

fields=['date','close']).set_index('date')

# 通过rolling_mean函数计算移动平均值(方法1)

df['MA10_rolling'] = pd.rolling_mean(df['close'],10)

# 将价格数据转化成float类型

close = [float(x) for x in df['close']]

# 通过talib计算移动平均值(方法2)

df['MA10_talib'] = talib.MA(np.array(close), timeperiod=10)

# 检查两种方法计算结果是否一致

df.tail(12)

计算结果如下所示:

我们就这样跟方便的计算出了移动平均线的值,接下来我们计算下稍微复杂一点的EMA和MACD

# 调用talib计算6日指数移动平均线的值

df['EMA12'] = talib.EMA(np.array(close), timeperiod=6)

df['EMA26'] = talib.EMA(np.array(close), timeperiod=12)

# 调用talib计算MACD指标

df['MACD'],df['MACDsignal'],df['MACDhist'] = talib.MACD(np.array(close),

fastperiod=6, slowperiod=12, signalperiod=9)

df.tail(12)

补充说明一下,close是收盘价,timeperiod指的是指数移动平均线EMA的长度,fastperiod指更短时段的EMA的长度,slowperiod指更长时段的EMA的长度,signalperiod指DEA长度

可以看到,talib模块可以很方便地帮助我们计算技术分析指标。

策略实战:MACD策略当macd下穿signal时,卖出股票

当macd上穿signal时,买入股票

下面为完整策略实现代码,感兴趣的朋友可以点击下方链接,前往原文一键克隆策略,进行进一步研究。

BigQuant——人工智能量化投资平台

你可能感兴趣的:(利用python炒股talib)