python:talib.BBANDS 画股价-布林线图

文章介绍了如何使用Python中的TA-Lib库计算股票和基金的布林线(BBANDS)以及OBV(能量潮)指标,提供了talib_boll_obv.py和talib_boll.py两个脚本示例,展示了如何获取数据、绘制股价和净值与布林线图,以及突破策略的应用。
该文章已生成可运行项目,

布林线口诀的要点:
1、三线向上,中轨进,上轨出
2、三线向下,下轨进,中轨出
3、三轨走平,下轨进,上轨出

python 安装使用 TA-lib 
安装主要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 
这个网站找到
TA_Lib-0.4.24-cp310-cp310-win_amd64.whl

pip install /pypi/TA_Lib-0.4.24-cp310-cp310-win_amd64.whl

编写 talib_boll_obv.py 如下

# -*- coding: utf-8 -*-
import os
import sys
import matplotlib.pyplot as plt
import pandas as pd
import tushare as ts
import talib

if len(sys.argv) ==2:
    code = sys.argv[1]
else:
    print('usage: python talib_boll_obv.py stockcode ')
    sys.exit(1)

if len(code) !=6:
    print('stock code length: 6')
    sys.exit(2)

# help(ts.get_k_data) 了解参数
df = ts.get_k_data(code, start='2023-01-01')
if len(df) <30:
    print(" len(df) <30 ")
    sys.exit(2)

# 取收盘价
close = df['close'].values
# 计算布林线
df['upper'], df['mid20'], df['lower'] = talib.BBANDS(close, 
                           timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)

# 量价
本文章已经生成可运行项目
为了获取一只股票的数据,我们需要使用数据接口获取数据。这里我以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等。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值