编写程序利用Tushare库下载所有A股股票数据,自选一个股票指标,对所有股票数据进行分析,得出该指标在近两年的成功率。
时间: 2024-02-24 08:58:58 浏览: 234
使用python Tushare获取股票信息并进行可视化分析
5星 · 资源好评率100%
好的,下面是程序的实现过程:
首先,需要安装Tushare库。可以使用以下命令安装:
```
pip install tushare
```
接下来,我们需要获取A股所有股票的代码。可以使用以下代码:
```python
import tushare as ts
# 获取所有A股股票代码
stock_info = ts.get_stock_basics()
stock_codes = stock_info.index.tolist()
```
接下来,我们可以选择一个股票指标进行分析。这里我们选择以收盘价为基础的移动平均线指标。使用以下代码:
```python
# 获取某只股票的收盘价数据
stock_data = ts.get_k_data('000001', start='2019-01-01', end='2021-01-01')
# 计算20日和60日移动平均线
stock_data['MA20'] = stock_data['close'].rolling(window=20).mean()
stock_data['MA60'] = stock_data['close'].rolling(window=60).mean()
```
接下来,我们需要计算该指标在近两年的成功率。这里我们定义成功为20日移动平均线上穿60日移动平均线,失败为20日移动平均线下穿60日移动平均线。使用以下代码:
```python
# 计算交叉情况
stock_data['cross'] = 0
for i in range(1, len(stock_data)):
if stock_data['MA20'][i] > stock_data['MA60'][i] and stock_data['MA20'][i-1] < stock_data['MA60'][i-1]:
stock_data['cross'][i] = 1
elif stock_data['MA20'][i] < stock_data['MA60'][i] and stock_data['MA20'][i-1] > stock_data['MA60'][i-1]:
stock_data['cross'][i] = -1
# 计算成功率
success_count = len(stock_data[stock_data['cross'] == 1])
fail_count = len(stock_data[stock_data['cross'] == -1])
success_rate = success_count / (success_count + fail_count)
print('20日移动平均线上穿60日移动平均线的成功率为:%.2f%%' % (success_rate * 100))
```
最后,我们可以得到该指标在近两年的成功率。完整代码如下:
```python
import tushare as ts
# 获取所有A股股票代码
stock_info = ts.get_stock_basics()
stock_codes = stock_info.index.tolist()
# 获取某只股票的收盘价数据
stock_data = ts.get_k_data('000001', start='2019-01-01', end='2021-01-01')
# 计算20日和60日移动平均线
stock_data['MA20'] = stock_data['close'].rolling(window=20).mean()
stock_data['MA60'] = stock_data['close'].rolling(window=60).mean()
# 计算交叉情况
stock_data['cross'] = 0
for i in range(1, len(stock_data)):
if stock_data['MA20'][i] > stock_data['MA60'][i] and stock_data['MA20'][i-1] < stock_data['MA60'][i-1]:
stock_data['cross'][i] = 1
elif stock_data['MA20'][i] < stock_data['MA60'][i] and stock_data['MA20'][i-1] > stock_data['MA60'][i-1]:
stock_data['cross'][i] = -1
# 计算成功率
success_count = len(stock_data[stock_data['cross'] == 1])
fail_count = len(stock_data[stock_data['cross'] == -1])
success_rate = success_count / (success_count + fail_count)
print('20日移动平均线上穿60日移动平均线的成功率为:%.2f%%' % (success_rate * 100))
```
需要注意的是,由于股票市场的波动性较大,计算出的成功率仅供参考。
阅读全文