• matplotlib画k线图


    画k线需要的包和环境:

     python36

      import tushare as ts
      import re
      import matplotlib.pyplot as plt
      import mpl_finance as mpf
      import numpy as np
      import talib as tl

      tushare是python的一个第三方库,通过它可以获取股票的当日数据和历史数据,可以通过这里进行详细了解;matplotlib用于数据的可视化;mpl_finance是python中可以用来画出蜡烛图、线图的分析工具,目前已经从matplotlib中独立出来;talib是一个Python 金融指数处理库.

    股票数据准备:

     获取股票历史数据可通过tushare库调用get_hist_data或者pro_bar来完成,这里我们通过第二种方法进行采集:

     api = ts.pro_api()

     首先要实例化api,需要在tushare平台注册账号,并获取token(免费);

     df = ts.pro_bar('600073.SH', start_date='2019-12-30 00:00:00', end_date='2019-12-30 15:00:00', freq='1min')[::-1] 

        该方法会以dataframe的格式返回数据,其参数分别表示股票代码,起始时间,终止时间,要查询的频率,具体可参考下边参数,由于返回的数据时间上是从后往前的,所以我们通过[::-1]进行调换.

     ts_code

     证券代码,支持股票,ETF/LOF,期货/期权,港股,数字货币

    start_date

    开始日期 YYYYMMDD

    end_date

    结束日期 YYYYMMDD

    freq

    支持1/5/15/30/60分钟,周/月/季/年

    asset

    证券类型 E:股票和交易所基金,I:沪深指数,C:数字货币,FT:期货 FD:基金/O期权/H港股/CB可转债

    exchange

    市场代码,用户数字货币行情

    adj

    复权类型,None不复权,qfq:前复权,hfq:后复权

    ma

    均线,支持自定义均线频度,如:ma5/ma10/ma20/ma60/maN

    offset 

     开始行数(分页功能,从第几行开始取数据)

    limit

    本次提取数据行数

    factors

    因子数据,目前支持以下两种:vr:量比,默认不返回,返回需指定:factor=['vr'],tor:换手率,默认不返回,返回需指定:factor=['tor'],
    以上两种都需要:factor=['vr', 'tor']

    retry_count

    网络重试次数

       

       

    index = list(map(lambda i: re.findall(r'd{2}:d{2}', i)[0], df.trade_time))

       我们以时间为x轴,所以要提取df中的trade_time数据,因为我们的时间比较长,如果都显示看起来比较冗余,所以我们通过正则提取其中的时分秒即可.

    下边我们就开始画k线图:

       sma_10 = tl.SMA(np.array(df['close']), 10)
       sma_30 = tl.SMA(np.array(df['close']), 30)
       画均线,上边分别是10天内的和30天内的均值计算

       fig = plt.figure(figsize=(38, 18), dpi=100)
       ax = fig.add_subplot(1, 1, 1)
       常见一个画布,设置其长宽,可通过dpi来设置生成图片的像素;在画布中生成一张子图.

       ax.set_title(f'2019-12-27 {600073}', fontsize=30, color='red')

       ax.set_xticks(range(0, len(df.index)))ax.set_xticklabels(index, rotation=-80)

       给子图添加标题,可设置字体大小和颜色,这里为了醒目我们设置成红色;设置x轴,按照df的长度来设定,然后把上边通过正则获取的时间添加在x轴上,为了避免显示重叠,可通过rotation参数设置旋转,如图:

       mpf.candlestick2_ochl(ax, df['open'], df['close'], df['high'],df['low'], width=0.6, colorup='r', colordown='g', alpha=0.75)

       candlestick2_ochl方法用来生成k线,非常的方便,只需把开盘,收盘,最高,最低参数传入即可.

    最后设置图例:

       plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 设置字体ax.plot(sma_10, label='10日均线')

       ax.plot(sma_30, label='30日均线')

       ax.legend()

    这样指定股票的日k线就完成了,完整代码点击,参考图:

  • 相关阅读:
    深入浅出ES6(十二):代理 Proxies
    深入浅出ES6(十一):生成器 Generators,续篇
    深入浅出ES6(十):集合
    深入浅出ES6(九):学习Babel和Broccoli,马上就用ES6
    深入浅出ES6(八):Symbols
    根据后端返回的数据进行中文排序操作
    vue之组件(组件之间相互传参)
    mongodb用户权限增删改查
    mongodb添加文件和导出文件
    js中cookie编码解码操作
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/12124405.html
Copyright © 2020-2023  润新知