以下是一个使用Python获取A股历史股价数据、计算指标并进行分析的简单示例:
import tushare as ts
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 获取股票历史价格数据
symbol = '600036.SH' # 以招商银行为例
start_date = '2010-01-01'
end_date = '2022-12-31'
df = ts.get_k_data(symbol, start=start_date, end=end_date)
# 计算移动平均线
n = 20 # 移动平均线周期
df['SMA'] = df['close'].rolling(n).mean()
# 计算指标
df['RSI'] = talib.RSI(df['close'].values, timeperiod=14)
df['MACD'], df['MACDsignal'], df['MACDhist'] = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
# 生成交易信号
df['Signal'] = np.where(df['MACD'] > df['MACDsignal'], 1, -1)
df['Trade'] = df['Signal'].diff()
# 计算收益
df['Ret'] = np.log(df['close'] / df['close'].shift(1))
df['Strategy Ret'] = df['Ret'] * df['Trade'].shift(1)
df['Cumulative Ret'] = np.exp(df['Strategy Ret'].cumsum())
# 绘制资产曲线和指标图表
fig, ax = plt.subplots(2, 1, figsize=[12, 8])
ax[0].plot(df['date'], df['close'], label='股票价格')
ax[0].plot(df['date'], df['SMA'], label='20日移动平均线')
ax[1].plot(df['date'], df['RSI'], label='相对强弱指标(RSI)')
ax[2].plot(df['date'], df['MACD'], label='移动平均散度(MACD)')
ax[2].plot(df['date'], df['MACDsignal'], label='MACD信号线')
ax[2].bar(df['date'], df['MACDhist'], label='MACD柱状图')
ax[3].plot(df['date'], df['Cumulative Ret'], label='策略收益')
plt.legend()
plt.show()
这个代码块获取了招商银行的历史价格数据,并计算了几个基本指标(20日移动平均线、相对强弱指标、移动平均散度)。最后,该示例以移动平均散度指标为依据进行买卖决策,并绘制策略收益的资产曲线。请注意,这个示例仅仅是一个简单的演示,具体的交易策略需要更加复杂的算法以及对市场状况的精确分析。
联系客服