获取一只任意股票数据,样本时间为2022年一整年的数据,周期频率为日线数据。获取后,修改为时间索引,根据ta-lib模块中的BBANDS函数,计算布林线,并将布林线数据和股价数据进行可视化。
时间: 2024-03-02 14:52:08 浏览: 61
获取股票数据
为了获取一只股票的数据,我们需要使用数据接口获取数据。这里我以tushare为例,使用它的pro接口获取数据。在使用前需要安装tushare模块并申请tushare的token。
```python
import tushare as ts
import pandas as pd
# 设置tushare pro的token
ts.set_token('你的token')
# 初始化pro接口
pro = ts.pro_api()
# 获取股票数据
df = pro.daily(ts_code='股票代码', start_date='20220101', end_date='20221231')
```
获取到数据之后,我们需要将数据的索引修改为时间索引。
```python
# 将数据索引修改为时间索引
df.index = pd.to_datetime(df.trade_date)
# 将不需要的列删除,只保留收盘价
df.drop(['ts_code', 'trade_date', 'open', 'high', 'low', 'pre_close', 'change', 'pct_chg', 'vol', 'amount'], axis=1, inplace=True)
```
接下来,我们需要使用ta-lib模块中的BBANDS函数计算布林线。
```python
import talib
# 计算布林线
df['upperband'], df['middleband'], df['lowerband'] = talib.BBANDS(df.close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
```
最后,我们将股票价格数据和布林线数据进行可视化。
```python
import matplotlib.pyplot as plt
# 绘制可视化图表
plt.figure(figsize=(16, 8))
plt.plot(df.close, label='Close Price')
plt.plot(df.upperband, label='Upper Band')
plt.plot(df.middleband, label='Middle Band')
plt.plot(df.lowerband, label='Lower Band')
plt.title('Stock Price and Bollinger Bands')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
```
完整代码如下:
```python
import tushare as ts
import pandas as pd
import talib
import matplotlib.pyplot as plt
# 设置tushare pro的token
ts.set_token('你的token')
# 初始化pro接口
pro = ts.pro_api()
# 获取股票数据
df = pro.daily(ts_code='股票代码', start_date='20220101', end_date='20221231')
# 将数据索引修改为时间索引
df.index = pd.to_datetime(df.trade_date)
# 将不需要的列删除,只保留收盘价
df.drop(['ts_code', 'trade_date', 'open', 'high', 'low', 'pre_close', 'change', 'pct_chg', 'vol', 'amount'], axis=1, inplace=True)
# 计算布林线
df['upperband'], df['middleband'], df['lowerband'] = talib.BBANDS(df.close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
# 绘制可视化图表
plt.figure(figsize=(16, 8))
plt.plot(df.close, label='Close Price')
plt.plot(df.upperband, label='Upper Band')
plt.plot(df.middleband, label='Middle Band')
plt.plot(df.lowerband, label='Lower Band')
plt.title('Stock Price and Bollinger Bands')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
```
需要注意的是,这里的股票数据需要替换为需要获取数据的股票代码。同时,也需要安装相应的模块,如tushare、pandas、ta-lib和matplotlib等。
阅读全文