美文网首页程序员
Python之获取每日涨停板股票数据并绘制K线图!

Python之获取每日涨停板股票数据并绘制K线图!

作者: 59aa689f8c96 | 来源:发表于2019-08-29 16:34 被阅读0次

利用tushare财经数据接口获取股市进行数据分析、并可视化的案例

1.导入所需要的库

import os

import pandas as pd

import tushare as ts

import time

import datetime

import xlrd

from dateutil.relativedelta import relativedelta #计算前多长时间间隔的日期的库

from matplotlib import pyplot as plt

import mpl_finance as mpf #画k线图的金融库

from matplotlib.pylab import date2num

2.获取当天日期和之前一年的日期

Python资源共享群:626017123

today = datetime.datetime.now().strftime('%Y%m%d')

t = datetime.datetime.strptime(today,'%Y%m%d').date()

year_before_today = (t-relativedelta(years=1)).strftime('%Y%m%d')

3.设置获取接口数据的token,在tushare官网注册用户获得

ts.set_token('752a393dbf58f03637ebc9c340c8e6ccb07322d3c5421ba680aae2eb')

4.设置每只股票全年数据文件路径

path = 'D://python_data_analysis//tushare_project'

if not os.path.exists('{0}//each_stock_year_data//{1}'.format(path, today)):

    os.makedirs('{0}//each_stock_year_data//{1}'.format(path, today))

    print("当日每只股票行情数据文件夹创建完成")

else:

    print("当日每只股票行情数据文件目录存在")

5.设置每只股票K线图的存储路径

if not os.path.exists('{0}//k_line_graph//{1}'.format(path,today)):

    os.makedirs('{0}//k_line_graph//{1}'.format(path,today))

    print("当日每只股票的K线图存储路径文件夹创建完成")

else:

    print("当日每日股票的K线图存储路径文件夹已存在")

6.#利用tushare获取每日股票行情数据

  #定义一个获取股市每日数据写入Excel的函数

def get_stock_data_to_excel(day):

    print("******开始获取股市每日行情数据******")

    pro = ts.pro_api()

    stock_daily_data = pro.daily(trade_date=day)

    df = pd.DataFrame(stock_daily_data)

    df.to_excel('{0}//daily_stock_data//data{1}.xlsx'.format(path,day))

    print("******每日行情数据获取成功******")

7.定义一个获取每日股市数据中每日涨跌幅大于9%的股票(比率可以自由设置)

filedir = path + "//daily_stock_data//data20190118.xlsx"

def stock_filter_than_percent9(file):

    print("******开始分析今日所有涨停板股票******")

    data = xlrd.open_workbook(file)

    table = data.sheets()[0] #获取Excel表的第几张

    table_nrows = table.nrows

    pct_chg = []

    code = []

    for row in range(table_nrows):

        if row == 0:

            continue

        else:

            if table.row_values(row)[9] > 9:

                pct_chg.append(table.row_values(row)[9])

                code.append(table.row_values(row)[1])

    result_code_info = dict(zip(code,pct_chg))

    print("今日涨幅大于9%的股票共有{}只".format(len(result_code_info)))

    return result_code_info

8.根据获取的涨停板股票代码,获取其相应的一年行情数据,为后面k线做准备

def get_code_year_data():

    print("开始获取今日所有涨停板股票时间段为一年的行情数据")

    pro = ts.pro_api() #tushare数据接口

    count = 1

    for item in stock_code.keys():

        print("******开始获取第{0}只股票行情数据******".format(count))

        time.sleep(3) #每次请求前暂停

        data = pro.daily(ts_code=item,start_date=year_before_today,end_date=today)

        df = pd.DataFrame(data)

        df.to_excel('{0}//each_stock_year_data//{1}//{2}.xlsx'.format(path,today,item))

        count += 1

    print("今日所有的涨停板股票年行情数据获取完成")

9.画每日涨停板股票一年的K线图

def draw_k_line():

    print("开始画股票K线图")

    datafiledir = os.listdir(path+'//each_stock_year_data//{0}//'.format(today))

    for i in range(len(datafiledir)):

        each_stock_code = datafiledir[i].split('.')[0]  #截取相应股票代码

        quotes = []

        stock = pd.read_excel(path+'//each_stock_year_data//{0}//{1}'.format(today,datafiledir[i])) #利用pandas设置excel数据为DataFrame

        stock_row = stock.shape[0] #获取数据表的行数

        #获取每个交易日的开盘价,收盘价,最高价,最低价

        for row in range(stock_row):

            stock_trade_date = str(stock.loc[row,'trade_date'])

            stock_trade_date_change = stock_trade_date[0:4] + '-' + stock_trade_date[4:6] + '-' + stock_trade_date[6:]

            stock_trade_date_num = date2num(datetime.datetime.strptime(stock_trade_date_change,'%Y-%m-%d'))

            stock_trade_date_plot = stock_trade_date_num #这个是画K线图必须使用的日期格式

            stock_open_price = stock.loc[row,'open']

            stock_close_price = stock.loc[row,'close']

            stock_high_price = stock.loc[row,'high']

            stock_low_price = stock.loc[row,'low'          ]

            #按照 candlestick_ohlc 函数要求的数据结构构造数据

            datas = (stock_trade_date_plot,stock_open_price,stock_high_price,stock_low_price,stock_close_price)

            quotes.append(datas)

        #开始画K线图

        fig,ax =plt.subplots(facecolor=(0,0.5,0.5),figsize=(12,8))

        fig.subplots_adjust(bottom=0.1)

        ax.xaxis_date()

        plt.xticks(rotation=45)#日期显示的旋转角度

        plt.title(each_stock_code)

        plt.xlabel('time')

        plt.ylabel('price')

        mpf.candlestick_ohlc(ax,quotes,width=1.0,colorup='r',colordown='green')#上涨为红色,下降为绿色

        plt.grid(True)

        plt.savefig(path+'//k_line_graph//{0}//{1}.png'.format(today,each_stock_code),dpi=100,facecolor=(0,0.5,0.5))

        plt.close(fig)

        #plt.show()

    print("所有股票K线图绘制完毕,请在图片路径进行查看")

10.定义程序入口

if __name__ == '__main__':

    get_stock_data_to_excel(today)                    #调用函数获取当天行情数据

    stock_code = stock_filter_than_percent9(filedir)  #调用函数分析今日涨停板股票,返回股票代码

    get_code_year_data()                              #根据返回的股票代码,获取其一年的行情数据

    draw_k_line()                                      #根据全年行情数据画对应股票的K线

11.程序运行结果

相关文章

  • Python之获取每日涨停板股票数据并绘制K线图!

    利用tushare财经数据接口获取股市进行数据分析、并可视化的案例 1.导入所需要的库 import os imp...

  • iOS股票K线图

    mark:iOS股票K线图 iOS 股票K线图绘制 iOS 股票K线图绘制 从零开始实现k线图走势图绘制(iOS实战篇)

  • 使用Python画股票的K线图

    导言 本文简单介绍了如何从网易财经获取某支股票的价格数据,并根据价格数据画出相应的日K线图。有助于新手了解并使用P...

  • 用Python浅析股票数据

    本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投...

  • 用Python浅析股票数据

    本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投...

  • iOS股票K线图绘制

    写在开头 最近造了个轮子,绘制股票的k线图。刚开始接收到这个需求的时候真的一脸懵逼,因为没有接触过相关知识。 不过...

  • iOS 股票K线图绘制

    最近一段时间写了一个iOS的K线图。写这个纯属个人兴趣,正好提高一下自己绘图方面的能力。在写的时候,参考了Coco...

  • MPAndroidChart绘制K线图(三)

    MPAndroidChart绘制K线图(一)高亮线自定义MPAndroidChart绘制K线图(二)动态时间格式+...

  • MPAndroidChart绘制K线图(二)

    MPAndroidChart绘制K线图(一)高亮线自定义MPAndroidChart绘制K线图(二)动态时间格式+...

  • 什么是K线

    K线图表是市场运行轨迹的直接描述,无论是股票、外汇、黄金、期货,所有的证券k线图表只要其绘制的原理和机制相同,必然...

网友评论

    本文标题:Python之获取每日涨停板股票数据并绘制K线图!

    本文链接:https://www.haomeiwen.com/subject/qooiectx.html