获得行情的api接口

python编程就可以轻松获取到行情的实时数据

这里选取的是东方财富网的数据

下面是日线的500实时数据

并且做成K线图的效果

如何调用数据呢 奥秘就在这句话中

  • defplot_kline_figure(stock='399905',start_date='20210101',end_date='20500101',data_type='1'):

其中399905就是代码,然后start_date是开始的时间,data_type选择1就是1分钟,选择5就是5分钟

其中的规则是根据嗅探的api得到的

  • 获取股票数据
  • start_date=''默认上市时间
  • - ``1`` : 分钟
  • - ``5`` : 5 分钟
  • - ``15`` : 15 分钟
  • - ``30`` : 30 分钟
  • - ``60`` : 60 分钟
  • - ``101`` : 日
  • - ``102`` : 周
  • - ``103`` : 月
  • fq=0股票除权
  • fq=1前复权
  • fq=2后复权
  • 下面是完整的python代码,即可直接使用
  • import json
  • import pandas as pd
  • import matplotlib.pyplot as plt
  • import requests
  • import numpy as np
  • from finta import TA
  • import mplfinance as mpf
  • import schedule
  • plt.rcParams['font.sans-serif'] = ['SimHei']
  • plt.rcParams['axes.unicode_minus'] = False
  • def get_stock_hist_data_em(stock='399300',start_date='20210101',end_date='20500101',data_type='15'):
  • data_dict = {'1': '1', '5': '5', '15': '15', '30': '30', '60': '60', 'D': '101', 'W': '102', 'M': '103'}
  • klt = data_dict[data_type]
  • fq='1'
  • if stock[0] == '6':
  • stock = '1.' + stock
  • else:
  • stock = '0.' + stock
  • url = 'http://push2his.eastmoney.com/api/qt/stock/kline/get?'
  • params = {
  • '': 'f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13',
  • 'fields2': 'f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61',
  • 'beg': start_date,
  • 'end': end_date,
  • 'ut': 'fa5fd1943c7b386f172d6893dbfba10b',
  • 'rtntype': end_date,
  • 'secid': stock,
  • 'klt': klt,
  • 'fqt': fq,
  • 'cb': 'jsonp1668432946680'
  • res = requests.get(url=url, params=params)
  • text = res.text[19:len(res.text) - 2]
  • json_text = json.loads(text)
  • try:
  • df = pd.DataFrame(json_text['data']['klines'])
  • df.columns = ['数据']
  • data_list = []
  • for i in df['数据']:
  • data_list.append(i.split(','))
  • data = pd.DataFrame(data_list)
  • columns = ['date', 'open', 'close', 'high', 'low', 'volume', '成交额', '振幅', '涨跌幅', '涨跌额', '换手率']
  • data.columns = columns
  • for m in columns[1:]:
  • data[m] = pd.to_numeric(data[m])
  • data.sort_index(ascending=True,ignore_index=True,inplace=True)
  • return data
  • except:
  • pass


  • def plot_kline_figure(stock='399905',start_date='20210101',end_date='20500101',data_type='1'):
  • df1=get_stock_hist_data_em(stock=stock,start_date=start_date,end_date=end_date)
  • df1.rename(columns={'date': 'Date', 'open': 'Open', 'close': 'Close', 'high': 'High', 'low': 'Low',
  • 'volume': 'Volume'}, inplace=True)
  • df1['Date'] = pd.to_datetime(df1['Date'])
  • df1.set_index(['Date'], inplace=True)
  • mpf.plot(df1, type='candle')
  • plt.show()

  • a=plot_kline_figure()
  • print(a)
  • if __name__=='__main__':
  • while True:
  • a=plot_kline_figure()
  • print(a)
  • schedule.run_pending()

至此,就可以获取到全部的行情数据

如果想要改成线图,就可以更改类型

mpf.plot(df1,type='line')

格式的选择非常丰富

  • s = mpf.make_mpf_style(base_mpf_style='yahoo', rc={'font.family': 'SimHei'})
  • mpf.plot(df1, type='candle',mav=(3,6,9), volume=True,
  • ylabel='价格', ylabel_lower='成交量', title='股票K线图', figratio=(20, 10),style=s)

如此,自定义均线,成交量,等其他指标都是非常方便的