• 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 

  • 相关阅读:
    内网环境基于 k8s 的大型网站电商解决方案(一)
    centos7下编译安装freeswitch及常见编译问题的解决
    kotlin retrofit
    新老用户该如何选择腾讯云服务器!
    记录SEO寄生虫处理过程
    Linux应用程序对异步通知的处理
    @Async异步失效的9种场景
    基于springboot+vue的游戏交流论坛系统 elementui
    ant target的if和unless属性:控制target是否执行
    2023年危险化学品经营单位主要负责人证考试题库及危险化学品经营单位主要负责人试题解析
  • 原文地址:https://blog.csdn.net/belldeep/article/details/133915803