获取历史和实时股票数据接口
windpy使用方法

windpy使用方法Windpy是中国金融市场上一种常用的Python接口,它可以帮助用户获取金融数据、进行量化分析以及构建交易策略。
本文将介绍Windpy的使用方法,以帮助读者快速上手并充分利用其功能。
一、安装Windpy要使用Windpy,首先需要安装Wind数据服务软件。
安装完成后,可以在Python环境中通过pip命令安装Windpy包,如下所示:pip install windpy二、连接Wind数据服务在使用Windpy之前,需要先连接Wind数据服务。
可以使用如下代码进行连接:from WindPy import ww.start()三、获取实时行情数据Windpy可以获取各类金融市场的实时行情数据,如股票、期货、债券等。
以下是一些常用的获取实时行情数据的示例代码:1. 获取股票实时行情数据data = w.wsq("000001.SZ", "rt_last,rt_pct_chg")print(data.Data)2. 获取期货实时行情数据data = w.wsq("IF.CFE", "rt_last,rt_pct_chg")print(data.Data)3. 获取债券实时行情数据data = w.wsq("010107.SH", "rt_last,rt_pct_chg")print(data.Data)四、获取历史行情数据除了实时行情数据,Windpy还可以获取历史行情数据。
以下是一些常用的获取历史行情数据的示例代码:1. 获取股票历史行情数据data = w.wsd("000001.SZ", "close", "2021-01-01", "2021-12-31", "")print(data.Data)2. 获取期货历史行情数据data = w.wsd("IF.CFE", "close", "2021-01-01", "2021-12-31", "")print(data.Data)3. 获取债券历史行情数据data = w.wsd("010107.SH", "close", "2021-01-01", "2021-12-31", "")print(data.Data)五、数据处理与分析获取到行情数据后,可以对数据进行处理和分析。
tushare用法

tushare用法什么是tushare?tushare是一个基于Python语言的开源金融数据接口包,提供了丰富的金融数据获取、处理和分析的功能。
通过tushare,用户可以方便地获取股票、期货、指数等市场数据,并进行相应的数据分析和可视化。
安装tushare要使用tushare,首先需要安装它。
可以通过以下命令使用pip安装tushare:pip install tushare安装完成后,你就可以在Python中导入并使用tushare了。
获取股票历史行情数据获取股票历史行情数据是使用tushare的常见需求之一。
下面我们来演示如何使用tushare获取股票历史行情数据。
首先,需要导入tushare模块:import tushare as ts然后,调用ts.get_hist_data()函数来获取指定股票代码和时间范围内的历史行情数据。
例如,要获取浦发银行(代码为601988)在2020年1月1日至2020年12月31日之间的历史行情数据,可以执行以下代码:data = ts.get_hist_data('601988', start='2020-01-01', end='2020-12-31')print(data)这样就能够将浦发银行在指定时间范围内的历史行情数据打印出来。
获取实时行情数据除了获取历史行情数据,tushare也提供了获取实时行情数据的功能。
下面我们来演示如何使用tushare获取实时行情数据。
首先,需要导入tushare模块:import tushare as ts然后,调用ts.get_realtime_quotes()函数来获取指定股票代码的实时行情数据。
例如,要获取浦发银行(代码为601988)的实时行情数据,可以执行以下代码:data = ts.get_realtime_quotes('601988')print(data)这样就能够将浦发银行的实时行情数据打印出来。
python获取股票数据方法

python获取股票数据方法
1.使用 tushare
Tushare是一个免费、开源的python财经数据接口包,它能够为用户提供便捷的获取股票数据的方法。
Tushare支持大量的股票数据,包括股票列表、股票细节数据、历史价格数据、技术行情数据等。
使用Tushare,只需要简单的函数调用即可获得数据,非常方便快捷。
使用tushare可以很容易获取各类股票数据,以下是一些核心函数的使用示例:
1.获取股票的基本信息:
ts.get_stock_basic
2.获取历史上只股票价格:
3.获取股票历史行情:
4.获取当日实时行情:
ts.get_today_all
使用tushare获取股票数据,需要先安装tushare模块,安装方法如下:
pip install tushare
安装完成后,就可以使用tushare模块来获取股票数据了。
2.使用 Wind Python
Wind Python是Wind财经研究院推出的python接口,用于获取全球财经数据信息,包括国内主板、中小板、创业板的历史价格、财务指标、市场交易数据等。
使用 Wind Python 可以方便的获取港股、美股和A股数据。
使用Wind Python获取股票数据,只需要简单的函数调用即可,以下是一些常用的核心函数的使用示例:
1.获取指定时间段只股票数据:
2.获取指定期间只股票的日收益。
【获取股票数据代码教程02】Python等五种主流语言的实例代码演示如何获取股票历史分时交易数据

近年来,股票量化分析逐渐受到广泛关注,而作为入门的首要步骤,获取股票数据显得尤为重要。
无论是实时交易数据、历史记录、财务数据还是基本面信息,这些数据都是我们进行量化分析不可或缺的基石。
我们的核心任务是从这些数据中提炼出有价值的信息,从而为我们的投资策略提供指导。
在数据探索的旅途中,我尝试了多种途径,包括自编网易股票页面爬虫、申万行业数据爬虫,以及同花顺问财的爬虫,甚至还尝试了聚宽的免费数据API。
然而,爬虫作为数据源常常显得不够稳定,给我们的量化分析带来不小的挑战。
在量化分析的世界里,实时且精确的数据接口是成功的关键。
经过多次实战检验,我已确认以下数据接口均表现出色且稳定可靠。
现在我用Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家演示一下如何获取历史分时交易数据数据:历史分时交易数据是区分分时级别的,我这里演示的都是60分钟级别的历史分时交易数据,其他级别可以参考下面的API文档自行修改参数就行了1、Pythonimport requestsurl = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a"response = requests.get(url)data = response.json()print(data)2、JavaScript (Node.js)const axios = require('axios');const url = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a";axios.get(url).then(response => {console.log(response.data);}).catch(error => {console.log(error);});3、Javaimport .URI;import .http.HttpClient;import .http.HttpRequest;import .http.HttpResponse;import java.io.IOException;public class BOLLin {public static void BOLLin(String[] args) {HttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e 66a")).build();try {HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());} catch (IOException | InterruptedException e) {e.printStackTrace();}}}4、C#using System;using .Http;using System.Threading.Tasks;class Program{static async Task BOLLin(){using (HttpClient client = new HttpClient()){string url = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a";HttpResponseMessage response = await client.GetAsync(url);string responseBody = await response.Content.ReadAsStringAsync();Console.WriteLine(responseBody);}}}5、Rubyrequire 'net/http'require 'json'url = URI("http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a")http = Net::HTTP.new(url.host, url.port)request = Net::HTTP::Get.new(url)response = http.request(request)data = JSON.parse(response.read_body)puts data返回的数据示例:[{"d":"2024-07-1910:30","o":"10.38","h":"10.42","l":"10.30","c":"10.31","v":"317556","e":"328446466.00","zf":"1. 15","hs":"0.16","zd":"-0.96","zde":"-0.10"},{"d":"2024-07-1911:30","o":"10.31","h":"10.36","l":"10.29","c":"10.33","v":"232160","e":"239604970.00","zf":"0. 68","hs":"0.12","zd":"0.19","zde":"0.02"},{"d":"2024-07-1914:00","o":"10.32","h":"10.38","l":"10.31","c":"10.35","v":"142296","e":"147269842.00","zf":"0. 68","hs":"0.07","zd":"0.19","zde":"0.02"},{"d":"2024-07-1915:00","o":"10.34","h":"10.39","l":"10.33","c":"10.37","v":"206711","e":"214401378.00","zf":"0. 58","hs":"0.11","zd":"0.19","zde":"0.02"},{"d":"2024-07-2210:30","o":"10.36","h":"10.38","l":"10.19","c":"10.19","v":"561137","e":"575785727.00","zf":"1. 83","hs":"0.29","zd":"-1.74","zde":"-0.18"},{"d":"2024-07-2211:30","o":"10.20","h":"10.26","l":"10.19","c":"10.23","v":"123996","e":"126765735.00","zf":"0. 69","hs":"0.06","zd":"0.39","zde":"0.04"},{"d":"2024-07-2214:00","o":"10.23","h":"10.23","l":"10.19","c":"10.20","v":"150890","e":"153967494.00","zf":"0. 39","hs":"0.08","zd":"-0.29","zde":"-0.03"},{"d":"2024-07-2215:00","o":"10.20","h":"10.26","l":"10.19","c":"10.23","v":"158457","e":"162144843.00","zf":"0. 69","hs":"0.08","zd":"0.29","zde":"0.03"},{"d":"2024-07-2310:30","o":"10.25","h":"10.32","l":"10.23","c":"10.30","v":"314676","e":"323496417.00","zf":"0. 88","hs":"0.16","zd":"0.68","zde":"0.07"}]历史分时交易API接口:http://api.mairui.club/hszbl/fsjy/股票代码(如000001)/分时级别/licence 证书接口说明:根据《股票列表》得到的股票代码以及分时级别获取分时交易数据,交易时间从远到近排序。
python获取股票数据接口

python获取股票数据接⼝# encoding: utf8#部分⽹站api数据有bug,这个bug问题不是⾃⾝程序的问题,⽽是第三⽅公司股票的问题__author__ = 'nooper'import refrom math import ceilimport datetimefrom httpGet import httpGetContentfrom common import decimaldef _get_content(content):"处理腾讯股票数据接⼝信息"regex = pile(r'"(.*)"')result = regex.findall(content)if result:return result[0].split('~')def getStockPosition(code, market):"""处理股票盘⼝数据分析,分析所占的百分⽐率/q=s_pksz000858v_s_pksz000858="0.196~0.258~0.221~0.325";以 ~ 分割字符串中内容,下标从0开始,依次为:0: 买盘⼤单1: 买盘⼩单2: 卖盘⼤单3: 卖盘⼩单所占有的百分⽐百分⽐率"""if code and market:url = "/q=s_pk%s%s" % (market, code)content = httpGetContent(url)if content:result_list = _get_content(content)if result_list:stock_dict = {}stock_dict["code"] = codestock_dict["market"] = marketstock_dict["buy_big_percent"] = float(result_list[0]) # 买盘⼤单所占百分⽐stock_dict["buy_small_percent"] = float(result_list[1]) # 买盘⼩单所占百分⽐stock_dict["sell_big_percent"] = float(result_list[2]) # 卖盘⼤单所占⽐重stock_dict["sell_small_percent"] = float(result_list[3]) # 买盘⼩单所占⽐重stock_dict["date"] = datetime.date.today()return stock_dict# todo 数据对不上def getStockCashFlow(code, market):"""得到股票是资⾦流⼊流出/q=ff_sz000858v_ff_sz000858="sz000858~41773.67~48096.67~-6322.99~-5.53~10200.89~14351.02~-4150.13~-3.63~114422.25~53015.90~59770.57~五粮液~20121221";以 ~ 分割字符串中内容,下标从0开始,依次为:0: 代码1: 主⼒流⼊2: 主⼒流出3: 主⼒净流⼊4: 主⼒净流⼊/资⾦流⼊流出总和5: 散户流⼊6: 散户流出7: 散户净流⼊8: 散户净流⼊/资⾦流⼊流出总和9: 资⾦流⼊流出总和1+2+5+610: 未知11: 未知12: 名字13: ⽇期"""if code and market:url = "/q=ff_%s%s" % (market, code)content = httpGetContent(url)if content:result_list = _get_content(content)if result_list:stock_dict = {}stock_dict["code"] = codestock_dict["main_outflow"] = float(result_list[2]) # 主⼒流出stock_dict["main_netflow"] = float(result_list[3]) # 主⼒净流⼊stock_dict["small_inflow"] = float(result_list[5]) # 散户流⼊stock_dict["small_outflow"] = float(result_list[6]) # 散户流出stock_dict["small_netflow"] = float(result_list[7]) # 散户净流⼊income = stock_dict["main_inflow"] + stock_dict["small_inflow"]outcome = stock_dict["main_outflow"] + stock_dict["main_outflow"]print incomeprint outcomeprint income - outcomestock_dict["unknown_1"] = float(result_list[10])stock_dict["unknwon_2"] = float(result_list[11])stock_dict["date"] = result_list[13] # ⽇期return stock_dictdef getStockCurrentDay(code, Market):'''获取股票当⽇数据腾讯APIAPI地址:/q=sh600383sh:上海sz:深圳返回当天成交数据code:股票代码market:股票市场数据返回@return dict'''if code and Market:url = '/q=%s%s' % (Market, code)headers = {'Content-type': 'application/x-javascript; charset=GBK'}result = httpGetContent(url=url, headers=headers, charset='gbk')if result:stocklist = _get_content(result)if stocklist:stockdict = {}stockdict['code'] = code # 股票代码stockdict['name'] = unicode(stocklist[1], 'utf8') # 股票名称stockdict['last_closing'] = float(stocklist[4]) # 昨⽇收盘价格stockdict['start'] = float(stocklist[5]) # 开盘价格stockdict['end'] = float(stocklist[3]) # 当前收盘价格(可以是当前价格) stockdict['high'] = float(stocklist[33]) # 最⾼价格stockdict['low'] = float(stocklist[34]) # 最低价格stockdict['buyvol'] = int(stocklist[7]) # 外盘 todo 数据对不上stockdict["sellvol"] = int(stocklist[8]) # 内盘 todo 数据对不上stockdict['range_price'] = float(stocklist[31]) # 涨跌价格stockdict['range_percent'] = float(stocklist[32]) # 涨跌⽐%stockdict['volume'] = int(stocklist[6]) # 成交量(⼿)stockdict['total_price'] = int(stocklist[37]) # 成交额(万元)stockdict['change_rate'] = decimal(stocklist[38]) # 换⼿率stockdict['pe'] = decimal(stocklist[39]) # 市盈率stockdict['swing'] = float(stocklist[43]) # 振幅stockdict['pb'] = float(stocklist[46]) # 股票市净率stockdict['date'] = stocklist[30][:8] # 时间stockdict["block"] = False if stockdict["start"] else True #股票是否停牌return stockdictdef getStockMarket(code):"""⼤盘数据接⼝信息上证:code:000001 set=zs深证:code:399001 set=zs中⼩板:code:399005 set=zs创业板: code:399006 set=zs/qp/hq?type=snapshot&code=000001&set=zs"""url = "/qp/hq?type=snapshot&code=%s&set=zs" % coderesult = httpGetContent(url=url, charset="gbk")if result:result = eval(result)stock_dict = {}stock_dict["date"] = result[0][:10] #⽇期stock_dict["name"] = unicode(result[2], 'utf8') #名称stock_dict["range_price"] = float(result[4]) #上涨价格stock_dict["start"] = float(result[9]) #开盘价格stock_dict["high"] = float(result[11]) #最⾼价格stock_dict["low"] = float(result[13]) #最低价格stock_dict["last_closing"] = float(result[7]) #昨⽇收stock_dict["end"] = float(result[3]) #收盘价格stock_dict["total_sum"] = int(result[18]) #多少万元stock_dict["volume"] = int(result[14]) #多少⼿return stock_dicttonghuashun_headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Encoding": "gzip,deflate,sdch","Accept-Language": "zh-CN,zh;q=0.8","Cache-Control": "no-cache","Connection": "keep-alive","Host": "","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"}# def getstockBlock():# """# 新浪股票⿊名单数据# ”需要得到单点登录信息“## 新浪股票⿊名单个股# /stock/disallowStock# """# headers = {# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',# 'Cache-Control': "max-age=0",# 'Host': '',# 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36', # 'Cookie': "PHPSESSID=c32fbi3m3sf0he8v1rdem3t006; gxqSignId=02d9c361fe5fc1ab; WBStore=d6acd6adea5a82d3|undefined"## }# url = "/stock/disallowStock"# content = httpGetContent(url=url, headers=headers)# if content:# soup = BeautifulSoup(content)# td_list = soup.find_all(text=pile('\d+'))# return td_listdef__convert_MIN(content):content = content.split('=')[1]content_list = content.split('|')stock_dict = {}for sub in content_list:if sub:items = sub.split('~')date = items[0]price_list = items[1].split(';')price_dict = {}for a in price_list:b = a.split(',')start = float(b[0]) #开盘价high = float(b[1]) #最⾼价格low = float(b[2]) #最低价格end = float(b[3]) #结束价格volum = int(ceil(float(b[4]))) #成交量多少买⼊total_price = int(ceil(float(b[5]))) #成交额time = b[6] #时间格式是1030,11:30,1400,1500price_dict[time] = {"high": high,'low': low,"end": end,"start": start,"volumn": volum,"total_price": total_price}stock_dict[date] = price_dictreturn stock_dictdef getStock60MIN(code, market, type=''):"""不推荐向后复权得到股票60分钟数据线API接⼝数据/api.php?p=stock_min60&info=k_sz_000005&fq=qq是向前复权b事项后复权q= 空是不复权"""if market not in ('sz', 'sh'):returnurl = "/api.php?p=stock_min60&info=k_%s_%s&fq=%s" % (market, code, type) content = httpGetContent(url=url)if content:return__convert_MIN(content)def getStock30MIN(code, market, type=''):"""30分钟数据接⼝信息/api.php?p=stock_min30&info=k_sz_000005&fq="""if market not in ('sz', 'sh'):returnurl = "/api.php?p=stock_min30&info=k_%s_%s&fq=%s" % (market, code, type) content = httpGetContent(url=url)if content:return__convert_MIN(content)def getStock15MIN(code, market, type=''):"""15分钟数据接⼝/api.php?p=stock_min15&info=k_sz_000005&fq="""if market not in ('sz', 'sh'):returnurl = "/api.php?p=stock_min15&info=k_%s_%s&fq=%s" % (market, code, type) content = httpGetContent(url=url)if content:return__convert_MIN(content)def__convert_inner(stock, stock_dict={}):stock_day = stock.split(',')if all(stock_day):date = stock_day[0] #⽇期start = float(stock_day[1]) #开盘价格high = float(stock_day[2]) #最⾼价格low = float(stock_day[3]) #最低价格end = float(stock_day[4]) #收盘价格volume = int(ceil(float(stock_day[5]))) #成交量total = int(ceil(float(stock_day[6]))) #成交额stock_dict[date] = {"date": date,'start': start,'high': high,'low': low,'end': end,'volume': volume,'total': total,}return stock_dictdef__convert_day(content):stock_list = content.split('=')[1].split('|')stock_dict = {}for stock in stock_list:if stock and stock.strip():__convert_inner(stock, stock_dict)# stock_day = stock.split(',')# date = stock_day[0] #⽇期# start = stock_day[1] #开盘价格# high = stock_day[2] #最⾼价格# low = stock_day[3] #最低价格# end = stock_day[4] #收盘价格# volume = int(ceil(float(stock_day[5]))) #成交量# total = int(ceil(float(stock_day[6]))) #成交额# stock_dict[date] = {# "date": date,# 'start': start,# 'high': high,# 'low': low,# 'end': end,# 'volume': volume,# 'total': total,# }return stock_dictdef__convert_week(content):content_list = content.split(';')regex = pile('=(.*)$')stock_dict = {}for s in content_list:p = regex.findall(s)[0]stock_list = p.split('|')for week in stock_list:if week:__convert_inner(week, stock_dict)return stock_dict#todo 测试完成def getStockDayHistory(code, market, year='2013', type=''):"""/api.php?p=stock_day&info=k_sz_000005&year=2012,2013&fq=sz:深证sh:上海return dict"""url = "/api.php?p=stock_day&info=k_%s_%s&year=%s&fq=%s" % (market, code, year, type) content = httpGetContent(url=url)if content:return__convert_day(content)#todo 测试完成def getStockWeekHistory(code, market, year='2012,2013', type=''):"""x/api.php?p=stock_week&info=k_sz_000005&year=2011,2012,2013&fq=pass"""url = "/api.php?p=stock_week&info=k_%s_%s&year=%s&fq=%s" % (market, code, year, type ) content = httpGetContent(url, tonghuashun_headers)if content:return__convert_week(content)def__convertMonth(content):passdef getStockMonthHistory(code, market, type=''):"""/api.php?p=stock_month&info=k_sz_000671&fq="""url = "/api.php?p=stock_month&info=k_%s_%s&fq=%s" % (market, code, type)content = httpGetContent(url)if content:passdef main():# g = getStock60MIN('600847', 'sh')# for k in g:# print k# print g[k]# g = getStockDayHistory("600198", "sh")# print g# import config## print getStockMarket(config.SHANGHAI)print getStockCurrentDay("600383", "sh")if__name__ == "__main__":main()。
获取历史和实时股票数据接口

获取历史和实时股票数据接口股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:/list=sh601006这个url会返回一串文本,例如:var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92, 22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。
0:”大秦铁路”,股票名字;1:”27.55″,今日开盘价;2:”27.25″,昨日收盘价;3:”26.91″,当前价格;4:”27.55″,今日最高价;5:”26.20″,今日最低价;6:”26.91″,竞买价,即“买一”报价;7:”26.92″,竞卖价,即“卖一”报价;8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;10:”4695″,“买一”申请4695股,即47手;11:”26.91″,“买一”报价;12:”57590″,“买二”13:”26.90″,“买二”14:”14700″,“买三”15:”26.89″,“买三”16:”14300″,“买四”17:”26.88″,“买四”18:”15100″,“买五”19:”26.87″,“买五”20:”3100″,“卖一”申报3100股,即31手;21:”26.92″,“卖一”报价(22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况”30:”2008-01-11″,日期;31:”15:05:32″,时间;一个简单的JavaScript应用例子:script type="text/javascript" src="/list=sh601006"charset="gb2312">/script>/javascript">var elements=hq_str_sh601006.split(",");document.write("current price:"+elements[3]);这段代码输出大秦铁路(股票代码:601006)的当前股价current price:14.20如果你要同时查询多个股票,那么在URL最后加上一个逗号,再加上股票代码就可以了;比如你要一次查询大秦铁路(601006)和大同煤业(601001)的行情,就这样使用URL:/list=sh601003,sh601001查询大盘指数,比如查询上证综合指数(000001):/list=s_sh000001服务器返回的数据为:var hq_str_s_sh000001="上证指数,3094.668,-128.073,-3.97,436653,5458126";数据含义分别为:指数名称,当前点数,当前价格,涨跌率,成交量(手),成交额(万元);查询深圳成指数:/list=s_sz399001对于股票的K线图,日线图等的获取可以通过请求http://image.sinaj /…./…/*.gif此URL获取,其中*代表股票代码,详见如下:查看日K线图:/newchart/daily/n/sh601006.gif分时线的查询:/newchart/min/n/sh000001.gif日K线查询:/newchart/daily/n/sh000001.gif周K线查询:/newchart/weekly/n/sh000001.gif月K线查询:/newchart/monthly/n/sh000001.gif1.2 Baidu&Google的财经数据在baidu, google中搜索某只股票代码时,将会在头条显示此股票的相关信息,例如在google 搜索601006时,第一条搜索结果如下图:通过点击左边的图片我们发现会将此图片链接到sina财经频道上,也就是说google股票数据的获取也是从sina获取。
通过新浪网股票接口获取股票信息

通过新浪网股票接口获取股票信息以下函数全是静态方法,可以在C#中直接调用using System;using System.Collections.Generic;using System.Linq;using System.Text;using ;using System.IO;using System.Data;using System.Text.RegularExpressions;namespace GzyFunctionLibrary{public class GetStockInfo{public static string[] StockItems = new string[32] { "股票名字", "今日开盘价", "昨日收盘价", "当前价格", "今日最高价", "今日最低价", "竞买价,即买一报价", "竞卖价,即卖一报价", "成交的股票数", "成交金额", "买一申请多少股", "买一报价", "买二", "买二", "买三", "买三", "买四", "买四", "买五", "买五", "卖一申报股数", "卖一报价", "卖二申报股数", "卖二报价", "卖三申报股数", "卖三报价", "卖四申报股数", "卖四报价", "卖五申报股数", "卖五报价", "日期", "时间" };public static string[] PastStockItems = new string[] { "指数名称", "当前点数", "涨跌点数", "涨跌率", "成交量(手)", "成交额(万元)" };private static string url = "/list=";private static string PastUrl = "/list=s_";/// <summary>/// 生成/// </summary>/// <param name="StockID"></param>/// <param name="ValueType"></param>/// <returns></returns>private static string GetUrl(string StockID, int ValueType){string id = string.Empty;if (StockID == "" || StockID.Length != 6){return null;}string dm = "sh";if (StockID.Trim() == "000001")dm = "sh";else if (StockID.Trim() == "399001")dm = "sz";else if (StockID.Substring(0, 2) == "00")//深圳dm = "sz";else if (StockID.Substring(0, 2) == "60")dm = "sh";else if (StockID.Substring(0, 2) == "51")//上海基金dm = "sh";switch (ValueType){case 0:return url + dm + StockID;case 1:return PastUrl + dm + StockID;default:return url + dm + StockID;}}/// <summary>/// 获取服务实时及历史信息/// </summary>/// <param name="url"></param>/// <returns></returns>public static string[] GetValue(string url){try{string[] StockValue;WebClient myWebClient = new WebClient();Stream myStream = myWebClient.OpenRead(url);StreamReader sr = new StreamReader(myStream, System.Text.Encoding.GetEncoding("gbk"));string strHTML = sr.ReadToEnd();myStream.Close();sr.Close();int first = strHTML.IndexOf("\"");strHTML = strHTML.Substring(first + 1, strHTML.Length - first - 4);StockValue = strHTML.Split(',');if (StockValue.Length >= 2)return StockValue;elsereturn null;}catch (Exception ex){return null;throw ex;}}/// <summary>/// 获取股票实时信息/// </summary>/// <param name="StockId"></param>/// <returns></returns>public static string[] GetRealValue(string StockId){return GetValue(GetUrl(StockId, 0));}/// <summary>/// 获取股票历史信息/// </summary>/// <param name="StockId"></param>/// <returns></returns>public static string[] GetPastValue(string StockId){return GetValue(GetUrl(StockId, 1));}public static DataTable getHis(string stockId){DataTable dt = new DataTable();dt.Columns.Add("StockId", typeof(string));dt.Columns.Add("iDate", typeof(DateTime));dt.Columns.Add("Opening", typeof(double));dt.Columns.Add("MaxHight", typeof(double));dt.Columns.Add("Closing", typeof(double));dt.Columns.Add("MaxLow", typeof(double));string url = string.Format("/corp/go.php/vMS_MarketHistory/stockid/{0}.p html", stockId);.WebClient wc = new WebClient();string Content = wc.DownloadString(url);string reg = "<a target='_blank'href='/quotes_service/view/vMS_tradehistory.php?symbol=s hd{6}&date=d{4}-d{2}-d{2}'>s*([^s]+)s+</a>s*</div></td>s*<td[^d]*([^<]*)</div></td>s+<td[^d] *([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+";MatchCollection result = Regex.Matches(Content, reg);foreach (Match item in result){DataRow dr = dt.NewRow();dr[0] = stockId;dr[1] = item.Groups[1].Value;//时间dr[2] = item.Groups[2].Value;//时间dr[3] = item.Groups[3].Value;//时间dr[4] = item.Groups[4].Value;//时间dr[5] = item.Groups[5].Value;//时间}return dt;}}}。
Python获取股票历史、实时数据与更新到数据库

Python获取股票历史、实时数据与更新到数据库要做量化投资,数据是基础,正所谓“巧妇难为⽆⽶之炊”在免费数据⽅⾯,各⼤⽹站的财经板块其实已提供相应的api,如新浪、雅虎、搜狐。
可以通过urlopen相应格式的⽹址获取数据⽽TuShare正是这么⼀个免费、开源的python财经数据接⼝包,已将各类数据整理为dataframe类型供我们使⽤。
主要⽤到的函数:1.实时⾏情获取tushare.get_today_all()⼀次性获取当前交易所有股票的⾏情数据(如果是节假⽇,即为上⼀交易⽇,结果显⽰速度取决于⽹速)2.历史数据获取tushare.get_hist_data(code, start, end,ktype, retry_count,pause)参数说明:code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中⼩板 cyb=创业板)start:开始⽇期,格式YYYY-MM-DDend:结束⽇期,格式YYYY-MM-DDktype:数据类型,D=⽇k线 W=周 M=⽉ 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为Dretry_count:当⽹络异常后重试次数,默认为3pause:重试时停顿秒数,默认为0⽽如果要进⾏完备详细的回测,每次在线获取数据⽆疑效率偏低,因此还需要⼊库下⾯是数据库设计部分表1:stocks股票表,第⼀列为股票代码,第⼆列为名称,如果get_today_all()中存在的股票stocks表中没有,则插⼊之。
表2:hdata_date⽇线表,由于分钟线只能获取⼀周内的数据,我们先对⽇线进⾏研究。
字段和get_hist_data返回值基本⼀致,多了stock_code列,并将record_date列本来是dataframe的indexstock_code,record_date, //主键open,high,close,low, //开盘,最⾼,收盘,最低volume, //成交量price_change,p_change, //价差,涨幅ma5,ma10,ma20 //k⽇收盘均价v_ma5,v_ma10,v_ma20, //(k⽇volume均值)turnover //换⼿率python⼯程⽬前有3个⽂件,main.py(主程序),Stocks.py(“股票们”类)以及Hdata.py(历史数据类)main.pyimport psycopg2 #使⽤的是PostgreSQL数据库import tushare as tsfrom Stocks import*from HData import*import datetimestocks=Stocks("postgres","123456")hdata=HData("postgres","123456")# stocks.db_stocks_create()#如果还没有表则需要创建#print(stocks.db_stocks_update())#根据todayall的情况更新stocks表#hdata.db_hdata_date_create()nowdate=datetime.datetime.now().date()codestock_local=stocks.get_codestock_local()hdata.db_connect()#由于每次连接数据库都要耗时0.0⼏秒,故获取历史数据时统⼀连接for i in range(0,len(codestock_local)):nowcode=codestock_local[i][0]#print(hdata.get_all_hdata_of_stock(nowcode))print(i,nowcode,codestock_local[i][1])maxdate=hdata.db_get_maxdate_of_stock(nowcode)print(maxdate, nowdate)if(maxdate):if(maxdate>=nowdate):#maxdate⼩的时候说明还有最新的数据没放进去continuehist_data=ts.get_hist_data(nowcode, str(maxdate+datetime.timedelta(1)),str(nowdate), 'D', 3, 0.001)hdata.insert_perstock_hdatadate(nowcode, hist_data)else:#说明从未获取过这只股票的历史数据hist_data = ts.get_hist_data(nowcode, None, str(nowdate), 'D', 3, 0.001)hdata.insert_perstock_hdatadate(nowcode, hist_data)hdata.db_disconnect()Stocks.pyimport tushare as tsimport psycopg2class Stocks(object):#这个类表⽰"股票们"的整体(不是单元)def get_today_all(self):self.todayall=ts.get_today_all()def get_codestock_local(self):#从本地获取所有股票代号和名称conn = psycopg2.connect(database="wzj_quant", user=er, password=self.password, host="127.0.0.1",port="5432")cur = conn.cursor()# 创建stocks表cur.execute('''select * from stocks;''')rows =cur.fetchall()mit()conn.close()return rowspassdef__init__(self,user,password):# self.aaa = aaaself.todayall=[]er=userself.password=passworddef db_perstock_insertsql(self,stock_code,cns_name):#返回的是插⼊语句sql_temp="insert into stocks values("sql_temp+="\'"+stock_code+"\'"+","+"\'"+cns_name+"\'"sql_temp +=");"return sql_temppassdef db_stocks_update(self):# 根据gettodayall的情况插⼊原表中没的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取历史和实时股票数据接口股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:这个url会返回一串文本,例如:var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92, , 0, 4695, 26.91, 57590, 26.90, 14700, 26.89,14300,26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。
0:”大秦铁路”,股票名字;1:”27.55″,今日开盘价;2:”27.25″,昨日收盘价;3:”26.91″,当前价格;4:”27.55″,今日最高价;5:”26.20″,今日最低价;6:”26.91″,竞买价,即“买一”报价;7:”26.92″,竞卖价,即“卖一”报价;8:”″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;9:”0″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;10:”4695″,“买一”申请4695股,即47手;11:”26.91″,“买一”报价;12:”57590″,“买二”13:”26.90″,“买二”14:”14700″,“买三”15:”26.89″,“买三”16:”14300″,“买四”17:”26.88″,“买四”18:”15100″,“买五”19:”26.87″,“买五”20:”3100″,“卖一”申报3100股,即31手;21:”26.92″,“卖一”报价(22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况”30:”2008-01-11″,日期;31:”15:05:32″,时间;一个简单的JavaScript应用例子: script type="text/javascript"src="" charset="gb2312">/script>/javascript">varelements=hq_str_sh601006.split(",");document.write("current price:"+elements[3]);这段代码输出大秦铁路(股票代码:601006)的当前股价current price:14.20如果你要同时查询多个股票,那么在URL最后加上一个逗号,再加上股票代码就可以了;比如你要一次查询大秦铁路(601006)和大同煤业(601001)的行情,就这样使用URL:,sh601001查询大盘指数,比如查询上证综合指数(000001):_sh000001服务器返回的数据为:var hq_str_s_sh000001="上证指数,3094.668,-128.073,-3.97,436653,5458126";数据含义分别为:指数名称,当前点数,当前价格,涨跌率,成交量(手),成交额(万元);查询深圳成指数:_sz399001对于股票的K 线图,日线图等的获取可以通过请求…./…/*.gif此URL获取,其中*代表股票代码,详见如下:查看日K线图:/daily/n/sh601006.gif1.2 Baidu&Google的财经数据在baidu, google中搜索某只股票代码时,将会在头条显示此股票的相关信息,例如在google搜索601006时,第一条搜索结果如下图:通过点击左边的图片我们发现会将此图片链接到sina财经频道上,也就是说google股票数据的获取也是从sina获取。
后经抓包分析,发现google也是采用1.1中介绍的接口。
Baidu的股票数据来自baidu的财经频道1.3 其他方式除了sina,baidu等网站提供股票信息外,其他网站也有类似的接口。
我们分析了一款论坛上采用的股票插件,其中有关于实时股票数据获取的介绍,详见如下代码,其中可以看到有些数据来自sina。
以下是ASP示例:=5 thenstockdata=gethttp(""&code&"")if notlen(stockdata)=0 then stockdata=split(stockdata,chr(34))(1)end ifif len(stockdata)=0 thenstockdata="0,0,0,0,0,0,0,0,0,0,0,0"elsestockdatasplit=split(stockdata,",")stockdata=""&exstock.checkstr(stockdatasplit(0))&","&stockdatasplit(1)&","&stockdatasplit(2)&","&sto ckdatasplit(3)&","&stockdatasplit(4)&","&stockdatasplit(5)&","&formatdatetime(""&stockdatasplit(30)& " "&stockdatasplit(31)&"",0)&""end if‘0=股票名称,1=开盘价格,2=昨收盘价格,3=当前价格,4=最高价,5=最低价,6=更新时间getstockdata=stockdataend functionfunction getstockimg(code)dimrndnum,addnum,checkcode,imgsourceif len(code)=5 thengetstockimg="/daily/n/sh"&code&".gif"end ifimgsource=".cn"case 3getstockimg="/realline.chart?"&code&"&1003&SZ 500 330"imgsource=""case 4getstockimg=""&code&""imgsource=""endselectgetstockimg=split(""&getstockimg&"||"&imgsource&"","||")end functionfunctiongetastockimg()dim rndnum,addnum,checkcodedimgetastockimgb,imgsourceaddnum=6randomize:rndnum=cint(rnd*addnum)select case rndnumcase0getastockimg=".1/gifchartse/gif/000001.gif"getastockimgb=".1/gifchartse/gif/399001.gif"imgsource =""case 1getastockimg="/100.gif?C39"getastockimgb="/101.gif?HrS"imgsource=""case2getastockimg=".cn/curve/realtime/index2.php?code=1a0001&w=180&h=140"getastockimgb=".cn/c urve/realtime/index2.php?code=399001&w=180&h=140"imgsource=".cn"case3getastockimg="/realline.chart?1a0001&1002&SZ 180140"getastockimgb="/realline.chart?399001&1002&SZ 180 140"imgsource=""case14getastockimg="/small/ish000001.gif?58328"getastockimgb="/small/isz399001.gif?58328"imgsource =""case5getastockimg=".66/cgi/pic/sh/realtime/JA000001164143.png"getastockimgb=".66/cgi/pic/sz/realtim e/JA4143.png"imgsource=""case6getastockimg=".85/img/000001.png"getastockimgb=".85/img/399001.png"imgsource=""end selectgetastockimg=split(""&getastockimg&"||"&getastockimgb&"||"&imgsource&"","||")end function%>2. web-service接口2.1 CHINAstock的web-service:.cn/WebServices/ChinaStockWebService.asmx中国股票行情数据 WEB 服务(支持深圳和上海股市的全部基金、债券和股票),数据即时更新。