TA-Lib,全称Technical Analysis Library,是一个开源的技术分析库,旨在为金融市场分析提供技术分析工具和指标。TA-Lib提供了大量用于计算各种技术指标的函数和方法,可以用于股票、期货、外汇等金融市场的技术分析。TA-Lib包括了大约150多个不同的技术指标,涵盖了趋势分析、波动性分析、动能指标、周期分析等多个领域。这些指标可以帮助分析师和交易员理解市场的价格和交易量动态。
均线指标(Moving Average,简称MA)是一种常用于金融市场技术分析的指标,用于平滑价格数据并帮助分析价格趋势的工具。均线是根据一定时期内的价格数据计算出的移动平均值,这种平均值随着时间的推移而不断更新,以反映价格的变化趋势。用TA-Lib计算其均线指标并可视化的代码如下:
# Python代码
#准备数据的代码,已经用过多次
#这里不再逐行注释
df = pd.read_excel('历史行情数据.xlsx')
df = df[['日期', '收盘']]
df['日期'] = pd.to_datetime(df['日期'])
df.set_index('日期', inplace = True)
#导入TA-Lib
import talib
# 计算均线指标
df['SMA_10'] = talib.SMA(df['收盘'], timeperiod=10)
df['SMA_20'] = talib.SMA(df['收盘'], timeperiod=20)
# 绘制均线图
plt.figure(dpi=300)
plt.plot(df.index, df['收盘'], label='收盘价', color='b')
plt.plot(df.index, df['SMA_10'], label='10日均线', color='g')
plt.plot(df.index, df['SMA_20'], label='20日均线', color='r')
plt.legend()
plt.title('均线指标图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.savefig('图5-1.jpg', dpi=300)
plt.show()
运行这段代码,会得到如图所示的结果。
上面代码的作用是将DataFrame中的收盘价数据经过10日和20日简单移动平均SMA指标计算后的结果存储在新的“SMA_10”、“SMA_20”两列中。这两个个新列将包含股票价格的10日和20日简单移动平均值。同样,大家可以使用相似的代码来计算不同时间段的移动平均指标,然后将它们添加到DataFrame中以进行后续的分析和可视化。
布林带(Bollinger Bands)是一种技术分析工具,用于衡量资产价格的波动性以及潜在的趋势反转或继续。它由三条线组成,通常包括以下部分:
# Python代码
# 使用 TA-Lib 计算布林带
# 20表示计算20日的布林带
upper_band, middle_band, lower_band = talib.BBANDS(df['收盘'], timeperiod=20)
# 可视化布林带
plt.figure(dpi=300)
plt.plot(df.index, df['收盘'], label='收盘价', color='b')
plt.plot(df.index, upper_band, label='布林带上下轨', color='r', linestyle='--')
plt.plot(df.index, middle_band, label='布林带中轨', color='g')
plt.plot(df.index, lower_band, color='r', linestyle='--')
plt.title('布林带示例')
plt.xlabel('日期')
plt.ylabel('价格')
plt.legend()
plt.savefig('图5-2.jpg', dpi=300)
plt.show()
运行这段代码,会得到如图所示的结果。
在这个示例中,我们使用 talib.BBANDS 计算布林带的上轨、中轨和下轨。然后使用Matplotlib可视化这些线条,其中虚线表示上下轨,平滑的实线表示中轨。大家可以根据需要修改示例数据或布林带参数。
要特别说明的是,要修改TA-Lib中talib.BBANDS函数的标准差参数,你可以在调用函数时设置nbdevup和nbdevdn参数,它们分别表示上轨和下轨的标准差倍数。默认情况下,它们的值是2,你可以根据需要进行修改。
RSI(相对强弱指数,Relative Strength Index)是一种用于衡量金融市场上某个资产(如股票、期货、外汇等)的价格方向和速度的技术指标。RSI常用于技术分析,它的主要目的是帮助分析师和交易者确定资产的超买和超卖情况,以便预测价格趋势的反转或持续。
RSI指标的计算基于最近一段时间内资产价格的变动幅度,通常以14个交易日为周期。计算RSI的一般步骤如下:
# 计算RSI指标
period = 14 # RSI的计算周期
df['RSI'] = talib.RSI(df['收盘'], timeperiod=period)
# 创建RSI指标图
plt.figure(dpi=300)
plt.plot(df.index, df['RSI'], label='RSI', color='b')
plt.axhline(70, color='r', linestyle='--', label='超买 (70)')
plt.axhline(30, color='g', linestyle='--', label='超卖 (30)')
plt.title('RSI指标')
plt.xlabel('日期')
plt.ylabel('RSI值')
plt.legend()
plt.savefig('图5-3.jpg', dpi=300)
plt.show()
运行这段代码,会得到如图所示的结果。
这段代码调用TA-Lib计算了RSI指标并绘制RSI图表,其中包括RSI值的曲线以及70和30两条水平线,通常用于指示超买和超卖情况。图表中的实线表示RSI值随时间的变化,它是相对强弱指数的主要曲线。RSI通常在70和30之间画两条水平线,分别是上下两条虚线,用于标记超买和超卖水平。具体解释如下:
实线波动表示资产的强弱变化。
当实线超过70(上方虚线)时,通常被认为资产处于超买状态,可能会发生价格下跌。
当实线低于30(下方虚线)时,通常被认为资产处于超卖状态,可能会发生价格上涨。
RSI指标的主要用途是帮助交易者识别潜在的买入和卖出机会,以及市场的强弱趋势。在图表上观察RSI曲线的走势有助于判断资产的相对强度,并用于决策交易策略。大家可以根据你的实际数据替换示例数据来进行计算和可视化。