欢迎访问宙启技术站
智能推送

Python编写案例:通过API获取股票数据并绘制K线图

发布时间:2023-12-04 17:58:08

以下是一个使用Python编写的案例,通过API获取股票数据并绘制K线图的示例代码。

首先,我们需要导入所需的库:

import requests
import json
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
import pandas as pd

接下来,我们需要使用一个股票数据的API来获取股票数据。这里以新浪财经提供的API为例:

def get_stock_data(stock_code):
    url = 'http://hq.sinajs.cn/list=' + stock_code
    response = requests.get(url)
    content = response.content.decode('gbk')
    stock_data = content.split('=')[1].strip('"').split(',')
    return stock_data

该函数接受一个股票代码作为参数,并返回一个包含股票数据的列表。

接着,我们需要解析股票数据并存储到一个Pandas DataFrame中:

def parse_stock_data(stock_data):
    stock_date = stock_data[30]
    stock_open = float(stock_data[1])
    stock_high = float(stock_data[4])
    stock_low = float(stock_data[5])
    stock_close = float(stock_data[3])
    
    return {'Date': stock_date, 'Open': stock_open, 'High': stock_high, 'Low': stock_low, 'Close': stock_close}

def get_stock_dataframe(stock_code):
    stock_data = get_stock_data(stock_code)
    parsed_data = parse_stock_data(stock_data)
    df = pd.DataFrame([parsed_data])
    df['Date'] = pd.to_datetime(df['Date'])
    return df

parse_stock_data()函数用于解析股票数据并返回一个包含股票的日期、开盘价、最高价、最低价和收盘价的字典。

get_stock_dataframe()函数使用上述函数获取股票数据并返回一个Pandas DataFrame。

最后,我们可以使用Matplotlib库来绘制K线图:

def plot_kline(stock_code):
    df = get_stock_dataframe(stock_code)
    fig, ax = plt.subplots()
    ax.xaxis.set_major_locator(mdates.MonthLocator())
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))

    ax.plot(df['Date'], df['Open'], label='Open')
    ax.plot(df['Date'], df['High'], label='High')
    ax.plot(df['Date'], df['Low'], label='Low')
    ax.plot(df['Date'], df['Close'], label='Close')

    ax.set_xlabel('Date')
    ax.set_ylabel('Price')

    plt.title(stock_code)
    plt.legend()
    plt.xticks(rotation=45)
    plt.show()

该函数接受一个股票代码作为参数,使用get_stock_dataframe()函数获取股票数据,并使用Matplotlib的plot()函数绘制K线图。

现在,我们可以调用plot_kline()函数来绘制某只股票的K线图了:

stock_code = 'sh000001'  # 上证指数
plot_kline(stock_code)

以上就是一个简单的使用Python编写的案例,通过API获取股票数据并绘制K线图的示例代码。你可以根据自己的需要修改代码以适应不同的情况。