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


    布林线口诀的要点:
    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 如下

    1. # -*- coding: utf-8 -*-
    2. import os
    3. import sys
    4. import matplotlib.pyplot as plt
    5. import pandas as pd
    6. import tushare as ts
    7. import talib
    8. if len(sys.argv) ==2:
    9. code = sys.argv[1]
    10. else:
    11. print('usage: python talib_boll_obv.py stockcode ')
    12. sys.exit(1)
    13. if len(code) !=6:
    14. print('stock code length: 6')
    15. sys.exit(2)
    16. # help(ts.get_k_data) 了解参数
    17. df = ts.get_k_data(code, start='2023-01-01')
    18. if len(df) <30:
    19. print(" len(df) <30 ")
    20. sys.exit(2)
    21. # 取收盘价
    22. close = df['close'].values
    23. # 计算布林线
    24. df['upper'], df['mid20'], df['lower'] = talib.BBANDS(close,
    25. timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
    26. # 量价指标: OBV (On-Balance Volume,净额成交量或叫能量潮指标)
    27. df['obv'] = talib.OBV(df.close, df.volume)
    28. # 取样 近期的数据
    29. d2 = df[ df['date'] >'2023-05-01']
    30. #print(d2.tail())
    31. print(" 向上突破 upper")
    32. print(d2[ d2.close > d2.upper ])
    33. print(" 向下突破 lower")
    34. print(d2[ d2.close < d2.lower ])
    35. d2.index = pd.to_datetime(d2.date)
    36. # 画股价-布林线图
    37. fig,axes = plt.subplots(2,1)
    38. d2[['close','upper','mid20','lower']].plot(ax=axes[0], grid=True, title=code)
    39. # 画股票OBV图
    40. d2[['obv']].plot(ax=axes[1], grid=True)
    41. plt.legend(loc='best', shadow=True)
    42. plt.show()

    运行 python talib_boll_obv.py 002594 

    # 画基金净值-布林线图

    编写 talib_boll.py  如下

    1. # -*- coding: utf-8 -*-
    2. import os
    3. import sys
    4. import tushare as ts
    5. import pandas as pd
    6. import matplotlib.pyplot as plt
    7. import numpy as np
    8. import talib
    9. if len(sys.argv) ==2:
    10. fcode = sys.argv[1]
    11. else:
    12. print('usage: python talib_boll.py fundcode ')
    13. sys.exit(1)
    14. if len(fcode) !=6:
    15. print('fund code length: 6')
    16. sys.exit(2)
    17. # 加这个两句 可以显示中文
    18. plt.rcParams['font.sans-serif'] = [u'SimHei']
    19. plt.rcParams['axes.unicode_minus'] = False
    20. f1 = fcode +'.csv'
    21. if not os.path.exists(f1):
    22. print("Error: %s not found." % f1)
    23. sys.exit(3)
    24. df = pd.read_csv(f1, parse_dates=True, index_col=0 )
    25. if len(df) <30:
    26. print(" len(df) <30 ")
    27. sys.exit(4)
    28. # 取基金净值
    29. jz = df['jz'].values
    30. # 计算布林线
    31. df['upper'], df['mid20'], df['lower'] = talib.BBANDS(jz,
    32. timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
    33. # 取样 近期的数据
    34. df2 = df[ df.index >'2022-01-01']
    35. print(df2.tail(5))
    36. # 画基金净值-布林线图
    37. df2[['jz','upper','mid20','lower']].plot(grid=True, title=fcode)
    38. plt.legend(loc='best', shadow=True)
    39. plt.show()

    运行 python talib_boll.py 014423 

  • 相关阅读:
    实训笔记8.31
    CityEngine记录1:工程目录
    【Java学习】JDK安装及第一个java程序
    5G与UWB定位技术融合的四种方式
    Qt 案例 使用QNetworkReply或者URLDownloadToFile 下载http、https资源到本地路径
    QT_day1
    【JVM深层系列】「逆向ClassLoader加载机制」认识一下线程上下文类加载器实现
    JetPack入门
    2316. 统计无向图中无法互相到达点对数
    Python自动化测试:web自动化测试——Selenium框架
  • 原文地址:https://blog.csdn.net/belldeep/article/details/133915803