zoukankan      html  css  js  c++  java
  • 2.绘制图形

    …接上文,现在利用上文下载好的数据做个 K 线图:

    # -*- coding: utf-8 -*-
    # 加载 shujuchuli.py
    import sys
    sys.path.append('C:WinPython-32bit-3.4.4.2my_WorkSpace1shujuchuli.py')
    # 之前我已经下载好数据,现在调取本地数据库数据
    import shujuchuli
    temp = shujuchuli.shujuchuli('sa', '123456', 'XiTongDSN', 'ShuJuKu')
    data = temp.get_sql('002237')
    # 数据选择,取表 002237 的数据中所需的几列数据就行了
    import datetime
    import matplotlib
    date = [i[14] for i in data]
    o = [i[0] for i in data]
    h = [i[1] for i in data]
    c = [i[2] for i in data]
    l = [i[3] for i in data]
    volume = [i[4] for i in data]
    # 根据 candlestick_ohlc 参数要求调整数据格式
    for i in range(0, len(date)):
        date[i] = matplotlib.dates.date2num(datetime.datetime.strptime(date[i], '%Y-%m-%d'))
    quotes = []
    for i in range(0, len(date)):
        quotes.append((date[i], o[i], h[i], l[i], c[i], volume[i]))
    # 绘图
    import matplotlib.pyplot as plot
    from matplotlib.finance import candlestick_ohlc
    figure, axes = plot.subplots()
    # K 线图
    candlestick_ohlc(axes, quotes, width=0.6, colordown='g', colorup='r')

    附图:

    需说明的是此图是引用未经复权处理过的数据而做,后面可以细调,如横坐标日期格式的调整啊等等,这些美化的问题有空再说。

    复权是根据上市公司的权益分派、公积金转增股本、配股等情况和交易所的除权报价方案精确计算复权价格。其计算公式:

    前复权:复权后价格=[(复权前价格-现金红利)+配(新)股价格×流通股份变动比例]÷(1+流通股份变动比例)

    后复权:复权后价格=复权前价格×(1+流通股份变动比例)-配(新)股价格×流通股份变动比例+现金红利

    figure_1-1

    其实个人对于 K 线图无感,就是看起来好看点,对分析来说没什么意义。

    上证指数。
    # -*- coding: utf-8 -*-
    import os
    import tushare
    import pandas
    import matplotlib.pyplot as plot
    from matplotlib.finance import candlestick_ochl
    # 清屏
    clea = os.system('cls')
    # 获取上证指数历史数据
    sh = tushare.get_hist_data('sh')
    # 根据需要选择数据
    date = pandas.Series([i for i in range(0, len(sh))])
    o = sh['open']
    h = sh['high']
    c = sh['close']
    l = sh['low']
    volume = sh['volume']
    ma5 = sh['ma5']
    ma10 = sh['ma10']
    ma20 = sh['ma20']
    # 按列合并成一个
    quotes = []
    for i in range(0, len(sh)):
        quotes.append((date[i],
                       o[i],
                       c[i],
                       h[i],
                       l[i],
                       volume[i]))
    # 获取图表实例
    figure = plot.figure('Figure')
    # 上图
    subf1 = figure.add_subplot(211,
                               title='Index of Shanghai',
                               xlabel='date',
                               ylabel='index',
                               xlim=[min(date), max(date)])
    candlestick_ochl(subf1,
                     quotes,
                     colorup='r',
                     colordown='g')
    l11 = subf1.plot(date,
                     ma5)
    l12 = subf1.plot(date,
                     ma10)
    l13 = subf1.plot(date,
                     ma20)
    b11 = subf1.bar(left=date,
                    height=[i*100/min(volume) for i in volume],
                    bottom=0,
                    width=0.8,
                    color='c',
                    edgecolor='c')
    plot.grid(True,
              axis='both')
    # 下图
    subf2 = figure.add_subplot(212,
                               title='Singal of Buy or Sell',
                               xlabel='date',
                               ylabel='index',
                               xlim=[min(date), max(date)])
    l21 = subf2.plot(date,
                     ma5,
                     'g-')
    l22 = subf2.plot(date,
                     ma20,
                     'r-')
    b21 = subf2.bar(left=date,
                    height=[ma5[i]-ma20[i] for i in range(0, len(date))],
                    bottom=0,
                    color='c',
                    edgecolor='c')
    plot.grid(True,
              axis='both')
    plot.legend(('ma5',
                 'ma20'))

    figure
  • 相关阅读:
    今天辞职了
    数据库导出Excel
    2009.5重庆之行(二),5.23
    SQL远程连接操作
    上周入手WD500GB笔记本硬盘,上图
    [测试]Gridview绑定SqlDataReader+IList<T>和SqlDataAdapter+DataSet的效率
    SQL处理表重复记录(查询和删除)
    数据库导出excel (二)
    写了一个简单的手机号码正则
    SET XACT_ABORT 与 SET NOCOUNT的语法
  • 原文地址:https://www.cnblogs.com/blog-3123958139/p/5517610.html
Copyright © 2011-2022 走看看