zoukankan      html  css  js  c++  java
  • 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线就完成了,完整代码点击,参考图:

  • 相关阅读:
    Mac上的USB存储设备使用痕迹在新版操作系统有所变化
    Beware of the encrypted VM
    A barrier for Mobile Forensics
    Second Space could let suspect play two different roles easily
    Take advantage of Checkra1n to Jailbreak iDevice for App analysis
    Find out "Who" and "Where"
    Where is the clone one and how to extract it?
    Downgrade extraction on phones running Android 7/8/9
    高版本安卓手机的取证未来
    How to extract WeChat chat messages from a smartphone running Android 7.x or above
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/12124405.html
Copyright © 2011-2022 走看看