matlab怎样定义函数抓取Yahoo/Sina的股票数据

新浪股票历史数据接口_中华文本库
获取股票历史数据-from sina_经济/市场_经管营销_专业资料。使用方法: 在黄色框中输入股票代码并按钮 原理: 从新浪财经读取并下载数据 股价没有复权 框中输入股票...
股票实时数据接口说明_金融/投资_经管营销_专业资料。股票实时数据接口说明 实时股票数据接口 Posted on
17:08 linFen 阅读(27480) 评论(2) 编辑 ...
web-service 接口 类别:技术 访问:41,581 views RSS 1.http/javascript 接口取数据 1.1Sina 股票数据接口 以大秦铁路(股票代码:601006)为例,如果要获取它的...
加强社会监督,发行人相关信息及财务数据不得随意改动...我们的资本市 场已经有 23 年多的历史,投资者拥有...[3] 新浪财经网 www..cn [4] ...
不提供历史数据,需要自行解决 ? 只是交易平台,分析统计功能偏弱,建议与其它工具...个人股票– 行情源:网页源新浪财经、腾讯财经;API源通视接口(XAPI已支 持) ...
(二)大数据炒股的核心及优势分析 事实上,无论是百度、新浪财经还是南方基金的...斯 科尔斯和默顿将金融市场历史交易资料,已有的市场理论、学术研究报告和市场 ...
时间序列分析方法的实质是通过对历史数据的处理,寻找...】百度文库【2】百度百科 【3】人人分享【4】新浪...股票实时API数据接口 2页 免费
国际人工智能大会...
由于单独使用网络爬虫或者新浪API接口获取新浪 微博中电商用户数据,无法一次性完成获取数据的任务。所以,本文主要介绍一种基于新浪API接口和网络爬虫相集合的方法获取...
1、在百度里输入内燃机上市公司 2、点击进入 公司名称、股票代码、公司主营简介 通过新浪股票查询上市公司企业信息 1、打开新浪主页中的股票,出现以下页面,进入数据...
财务报表分析历史数据、行业数据、平均值查询方法_财务管理_经管营销_专业资料。财务报表分析资料:历史数据的查询:新浪财经 http://vip.stock..cn/...Python获取股票历史数据和收盘数据的代码实现
各种股票软件,例如通达信、同花顺、大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想做更复杂的分析,例如回归分析、关联分析等就有点捉襟见肘,所以最好能够获取股票历史及实时数据并存储到,然后再通过其他工具,例如SPSS、SAS、EXCEL或者其他高级语言连接数据库获取股票数据进行定量分析,这样就能实现更多目的了。
& & & 为此,首先需要找到可以获取股票数据的接口,新浪、雅虎、腾讯等都有接口可以实时获取股票数据,历史数据选择了雅虎接口,收盘数据选择了腾讯接口。
& & (1)项目结构
wKioL1YyHhfTV5ZQAAE6J6--0Gg957.jpg
& & (2)数据库连接池
& & &connectionpool.py
#-*- coding: UTF-8 -*-
'''
create a connection pool
'''
from DBUtils import PooledDB
import MySQLdb
import string
maxconn = 30
#最大连接数
mincached = 10
#最小空闲连接
maxcached = 20
#最大空闲连接
maxshared = 30
#最大共享连接
connstring=&root#root#127.0.0.1#3307#pystock#utf8& #数据库地址
dbtype = &&
#选择mysql作为存储数据库
def createConnectionPool(connstring, dbtype):
db_conn = connstring.split(&#&);
if dbtype=='mysql':
pool = PooledDB.PooledDB(MySQLdb, user=db_conn[0],passwd=db_conn[1],host=db_conn[2],port=string.atoi(db_conn[3]),db=db_conn[4],charset=db_conn[5], mincached=mincached,maxcached=maxcached,maxshared=maxshared,maxconnections=maxconn)
return pool
except Exception, e:
raise Exception,'conn datasource Excepts,%s!!!(%s).'%(db_conn[2],str(e))
return None
pool = createConnectionPool(connstring, dbtype)
& & (3)数据库操作
& & &DBOperator.py
#-*- coding: UTF-8 -*-
'''
Created on
@author: Casey
'''
import MySQLdb
from stockmining.stocks.setting import LoggerFactory
import connectionpool
class DBOperator(object):
def __init__(self):
self.logger = LoggerFactory.getLogger('DBOperator')
#self.conn = None
def connDB(self):
#self.conn=MySQLdb.connect(host=&127.0.0.1&,user=&root&,passwd=&root&,db=&pystock&,port=3307,charset=&utf8&)
#连接池中获取连接
self.conn=connectionpool.pool.connection()
return self.conn
def closeDB(self):
if(self.conn != None):
self.conn.close()
def insertIntoDB(self, table, dict):
if(self.conn != None):
cursor = self.conn.cursor()
raise MySQLdb.Error('No connection')
sql = &insert into & + table + &(&
param = []
for key in dict:
sql += key + ','
param.append(dict.get(key))
param = tuple(param)
sql = sql[:-1] + &) values(&
for i in range(len(dict)):
sql += &%s,&
sql = sql[:-1] + &)&
self.logger.debug(sql % param)
n = cursor.execute(sql, param)
cursor.close()
except MySQLdb.Error,e:
self.logger.error(&Mysql Error %d: %s& % (e.args[0], e.args[1]))
self.conn.rollback()
def execute(self, sql):
if(self.conn != None):
cursor = self.conn.cursor()
raise MySQLdb.Error('No connection')
n = cursor.execute(sql)
except MySQLdb.Error,e:
self.logger.error(&Mysql Error %d: %s& % (e.args[0], e.args[1]))
def findBySQL(self, sql):
if(self.conn != None):
cursor = self.conn.cursor()
raise MySQLdb.Error('No connection')
cursor.execute(sql)
rows = cursor.fetchall()
return rows
except MySQLdb.Error,e:
self.logger.error(&Mysql Error %d: %s& % (e.args[0], e.args[1]))
def findByCondition(self, table, fields, wheres):
if(self.conn != None):
cursor = self.conn.cursor()
raise MySQLdb.Error('No connection')
sql = &select &
for field in fields:
sql += field + &,&
sql = sql[:-1] + & from & + table + & where &
param = []
values = ''
for where in wheres:
sql += where.key + &='%s' and &
param.append(where.value)
param = tuple(param)
self.logger.debug(sql)
n = cursor.execute(sql[:-5] % param)
cursor.close()
except MySQLdb.Error,e:
self.logger.error(&Mysql Error %d: %s& % (e.args[0], e.args[1]))
& & (4)日志
& &LoggerFactory.py
#-*- coding: UTF-8 -*-
'''
Created on
@author: Casey
'''
import logging
import time
'''
'''
def getLogger(name):
now = time.strftime('%Y-%m-%d %H:%M:%S')
logging.basicConfig(
= logging.DEBUG,
= now +& : & + name + ' LINE %(lineno)-4d
%(levelname)-8s %(message)s',
= '%m-%d %H:%M',
filename =
&d:\\stocks\stock.log&,
filemode = 'w');
console = logging.StreamHandler();
console.setLevel(logging.DEBUG);
formatter = logging.Formatter(name + ': LINE %(lineno)-4d : %(levelname)-8s %(message)s');
console.setFormatter(formatter);
logger = logging.getLogger(name)
logger.addHandler(console);
return logger
if __name__ == '__main__':
getLogger(&www&).debug(&www&)
& &(5)获取股票历史数据
& & & 采用雅虎的接口:/table.csv?s=&string&&a=&int&&b=&int&&c=&int&&d=&int&&e=&int&&f=&int&&g=d&ignore=.csv
& & 参 数:s & 股票名称&
& & & & & &a & 起始时间,月&
& & & & & &b & 起始时间,日&
& & & & & &c & 起始时间,年&
& & & & & &d & 结束时间,月&
& & & & & &e & 结束时间,日&
& & & & & &f & 结束时间,年&
& & & & & &g& 时间周期。
& & & & & (一定注意月份参数,其值比真实数据-1。如需要9月数据,则写为08。)
& & 示例 查询浦发银行 & 之间日线数据
& & /table.csv?s=600000.SS&a=08&b=25&c=2010&d=09&e=8&f=2010&g=d
& & &Date,Open,High,Low,Close,Volume,Adj Close
& & ,12.37,12.99,12.32,12.95,.95
& & ,12.20,12.69,12.12,12.48,.48
& & ,12.92,12.92,12.57,12.58,.58
& & ,13.00,13.02,12.89,12.94,.94
& &因为数据量比较大,需要跑很久,所以也可以考虑多线程模式来获取相关数据,单线程模式:
#-*- coding: UTF-8 -*-
'''
Created on
@author: Casey
'''
import urllib
import sys
from setting import params
import urllib2
from db import *
dbOperator = DBOperator()
table = &stock_quote_yahoo&
'''查找指定日期股票流量'''
def isStockExitsInDate(table, stock, date):
sql = &select * from & + table + & where code = '%d' and date='%s'& % (stock, date)
n = dbOperator.execute(sql)
if n &= 1:
return True
def getHistoryStockData(code, dataurl):
r = urllib2.Request(dataurl)
stdout = urllib2.urlopen(r, data=None, timeout=3)
except Exception,e:
print &&&&&&& Exception: & +str(e)
return None
stdoutInfo = stdout.read().decode(params.codingtype).encode('utf-8')
tempData = stdoutInfo.replace('&', '')
stockQuotes = []
if tempData.find('404') != -1:
stockQuotes = tempData.split(&\n&)
stockDetail = {}
for stockQuote in stockQuotes:
stockInfo = stockQuote.split(&,&)
if len(stockInfo) == 7 and stockInfo[0]!='Date':
if not isStockExitsInDate(table, code, stockInfo[0]):
stockDetail[&date&] = stockInfo[0]
stockDetail[&open&]
= stockInfo[1]
stockDetail[&high&]
= stockInfo[2]
stockDetail[&low&]
= stockInfo[3]
stockDetail[&close&] = stockInfo[4]
stockDetail[&volume&] = stockInfo[5]
stockDetail[&adj_close&] = stockInfo[6] #收盘adj价格
stockDetail[&code&] = code
dbOperator.insertIntoDB(table, stockDetail)
result = tempData
except Exception as err:
print &&&&&&& Exception: & + str(dataurl) + & & + str(err)
return result
def get_stock_history():
#沪市历史数据
for code in range(2100):
dataUrl = &/table.csv?s=%d.SS&a=01&b=01&c=2005&d=01&e=01&f=2015&g=d& % code
print getHistoryStockData(code, dataUrl )
#深市历史数据
for code in range(1, 1999):
dataUrl = &/table.csv?s=%06d.SZ&a=01&b=01&c=2005&d=01&e=01&f=2015&g=d& % code
print getHistoryStockData(code, dataUrl)
#中小板股票
for code in range():
dataUrl = &/table.csv?s=%06d.SZ&a=01&b=01&c=2005&d=01&e=01&f=2015&g=d& % code
print getHistoryStockData(code, dataUrl)
for code in range(0400):
dataUrl = &/table.csv?s=%d.SZ&a=01&b=01&c=2005&d=01&e=01&f=2015&g=d& % code
print getHistoryStockData(code, dataUrl)
def main():
&main function&
dbOperator.connDB()
get_stock_history()
dbOperator.closeDB()
if __name__ == '__main__':
& & &(6)获取实时价格和现金流数据
& & & A:实时价格数据采用腾讯的接口:沪市:/q=sh&int&,深市:/q=sz&int&
& & & 如获取平安银行的股票实时数据:/q=sz000001,会返回一个包含股票数据的字符串:
v_sz~平安银行~.27~11.27~11.30~512~.27~93~11.26~
:24/11.27/3146/S/48|14:56:59/11.26/15/S/|
14:56:56/11.25/404/S/83|14:56:54/11.26/173/B/80|14:56:51
/11.26/306/B/77|14:56:47/11.26/16/B/~
42~0.00~0.00~11.36~11.25~
11.26/285045~
83~0.27~7.38~~11.36~11.25~0.98~2.59~1.03~12.40~10.14~&;
& & &数据比较多,比较有用的是:1-名称;2-代码;3-价格;4-昨日收盘;5-今日开盘;6-交易量(手);7-外盘;8-内盘;9-买一;10-买一量;11-买二;12-买二量;13-买三;14-买三量;15-买四;16-买四量;17-买五;18-买五量;19-卖一;20-卖一量;21-卖二;22-卖二量;23-卖三;24-卖三量;25-卖四;26-卖四量;27-卖五;28-卖五量;30-时间;31-涨跌;32-涨跌率;33-最高价;34-最低价;35-成交量(万);38-换手率;39-市盈率;42-振幅;43-流通市值;44-总市值;45-市净率
& & & &B:现金流数据仍然采用腾讯接口:沪市:/q=ff_sh&int&,深市:/q=ff_sz&int&
& & & 例如平安银行的现金流数据/q=ff_sz000001:
v_ff_sz000001=&sz62.20~74.20~-8.31~46.65~2974.22~
8.31~502.0~~平安银行~.20^39358.20~
13.50^.80^.30^71743.10&;
& & & & & 比较重要的:1-主力流入;2-主力流出;3-主力净流量;4-主力流入/主力总资金;5-散户流入;6-散户流出;7-散户净流量;8-散户流入/散户总资金;9-总资金流量;12-名字;13-日期
& & & & & &采用多线程、数据库连接池实现股票实时价格和现金流数据的获取:
#-*- coding: UTF-8 -*-
'''
Created on 日
@author: Casey
'''
import time
import threading
'''
上证编码:'; .. ';
深圳编码:'; .. ';
中小板:'; .. ';
创业板:'; .. ';
'''
import urllib2
from datetime import date
from db import *
from setting import *
class StockTencent(object):
__stockTables = {'cash':'stock_cash_tencent','quotation':'stock_quotation_tencent'}
'''初始化'''
def __init__(self):
self.__logger = LoggerFactory.getLogger('StockTencent')
self.__dbOperator = DBOperator()
def main(self):
self.__dbOperator.connDB()
threading.Thread(target = self.getStockCash()).start()
threading.Thread(target = self.getStockQuotation()).start()
self.__dbOperator.closeDB()
'''查找指定日期股票流量'''
def __isStockExitsInDate(self, table, stock, date):
sql = &select * from & + table + & where code = '%s' and date='%s'& % (stock, date)
n = self.__dbOperator.execute(sql)
if n &= 1:
return True
'''获取股票资金流明细'''
def __getStockCashDetail(self, dataUrl):
tempData = self.__getDataFromUrl(dataUrl)
if tempData == None:
time.sleep(10)
tempData = self.__getDataFromUrl(dataUrl)
return False
#解析资金流向数据
stockCash = {}
stockInfo = tempData.split('~')
if len(stockInfo) & 13: return
if len(stockInfo) != 0 and stockInfo[0].find('pv_none') == -1:
table = self.__stockTables['cash']
code = stockInfo[0].split('=')[1][2:]
date = stockInfo[13]
if not self.__isStockExitsInDate(table, code, date):
stockCash['code'] = stockInfo[0].split('=')[1][2:]
stockCash['main_in_cash']
= stockInfo[1]
stockCash['main_out_cash']
= stockInfo[2]
stockCash['main_net_cash']
= stockInfo[3]
stockCash['main_net_rate']
= stockInfo[4]
stockCash['private_in_cash']
= stockInfo[5]
stockCash['private_out_cash'] = stockInfo[6]
stockCash['private_net_cash'] = stockInfo[7]
stockCash['private_net_rate'] = stockInfo[8]
stockCash['total_cash']
= stockInfo[9]
stockCash['name']
= stockInfo[12].decode('utf8')
stockCash['date']
= stockInfo[13]
#插入数据库
self.__dbOperator.insertIntoDB(table, stockCash)
'''获取股票交易信息明细'''
def getStockQuotationDetail(self, dataUrl):
tempData = self.__getDataFromUrl(dataUrl)
if tempData == None:
time.sleep(10)
tempData = self.__getDataFromUrl(dataUrl)
return False
stockQuotation = {}
stockInfo = tempData.split('~')
if len(stockInfo) & 45: return
if len(stockInfo) != 0 and stockInfo[0].find('pv_none') ==-1 and stockInfo[3].find('0.00') == -1:
table = self.__stockTables['quotation']
code = stockInfo[2]
date = stockInfo[30]
if not self.__isStockExitsInDate(table, code, date):
stockQuotation['code']
= stockInfo[2]
stockQuotation['name']
= stockInfo[1].decode('utf8')
stockQuotation['price'] = stockInfo[3]
stockQuotation['yesterday_close']
= stockInfo[4]
stockQuotation['today_open']
= stockInfo[5]
stockQuotation['volume']
= stockInfo[6]
stockQuotation['outer_sell']
= stockInfo[7]
stockQuotation['inner_buy']
= stockInfo[8]
stockQuotation['buy_one']
= stockInfo[9]
stockQuotation['buy_one_volume']
= stockInfo[10]
stockQuotation['buy_two']
= stockInfo[11]
stockQuotation['buy_two_volume']
= stockInfo[12]
stockQuotation['buy_three']
= stockInfo[13]
stockQuotation['buy_three_volume']
= stockInfo[14]
stockQuotation['buy_four']
= stockInfo[15]
stockQuotation['buy_four_volume']
= stockInfo[16]
stockQuotation['buy_five']
= stockInfo[17]
stockQuotation['buy_five_volume']
= stockInfo[18]
stockQuotation['sell_one']
= stockInfo[19]
stockQuotation['sell_one_volume']
= stockInfo[20]
stockQuotation['sell_two']
= stockInfo[22]
stockQuotation['sell_two_volume']
= stockInfo[22]
stockQuotation['sell_three']
= stockInfo[23]
stockQuotation['sell_three_volume'] = stockInfo[24]
stockQuotation['sell_four']
= stockInfo[25]
stockQuotation['sell_four_volume']
= stockInfo[26]
stockQuotation['sell_five']
= stockInfo[27]
stockQuotation['sell_five_volume']
= stockInfo[28]
stockQuotation['datetime']
= stockInfo[30]
stockQuotation['updown']
= stockInfo[31]
stockQuotation['updown_rate']
= stockInfo[32]
stockQuotation['heighest_price']
= stockInfo[33]
stockQuotation['lowest_price']
= stockInfo[34]
stockQuotation['volume_amout']
= stockInfo[35].split('/')[2]
stockQuotation['turnover_rate']
= stockInfo[38]
stockQuotation['pe_rate']
= stockInfo[39]
stockQuotation['viberation_rate']
= stockInfo[42]
stockQuotation['circulated_stock']
= stockInfo[43]
stockQuotation['total_stock']
= stockInfo[44]
stockQuotation['pb_rate']
= stockInfo[45]
self.__dbOperator.insertIntoDB(table, stockQuotation)
'''读取信息'''
def __getDataFromUrl(self, dataUrl):
r = urllib2.Request(dataUrl)
stdout = urllib2.urlopen(r, data=None, timeout=3)
except Exception,e:
self.__logger.error(&&&&&&& Exception: & +str(e))
return None
stdoutInfo = stdout.read().decode(params.codingtype).encode('utf-8')
tempData = stdoutInfo.replace('&', '')
self.__logger.debug(tempData)
return tempData
'''获取股票现金流量'''
def getStockCash(self):
self.__logger.debug(&开始:收集股票现金流信息&)
for code in range(2100):
dataUrl = &/q=ff_sh%d& % code
self.__getStockCashDetail(dataUrl)
for code in range(1, 1999):
dataUrl = &/q=ff_sz%06d& % code
self.__getStockCashDetail(dataUrl)
#中小板股票
for code in range():
dataUrl = &/q=ff_sz%06d& % code
self.__getStockCashDetail(dataUrl)
#'; .. ';
#创业板股票
for code in range(0400):
dataUrl = &/q=ff_sz%d& % code
self.__getStockCashDetail(dataUrl)
except Exception as err:
self.__logger.error(&&&&&&& Exception: & +str(code) + & & + str(err))
self.__logger.debug(&结束:股票现金流收集&)
'''获取股票交易行情数据'''
def getStockQuotation(self):
self.__logger.debug(&开始:收集股票交易行情数据&)
for code in range(2100):
dataUrl = &/q=sh%d& % code
self.getStockQuotationDetail(dataUrl)
for code in range(1, 1999):
dataUrl = &/q=sz%06d& % code
self.getStockQuotationDetail(dataUrl)
#中小板股票
for code in range():
dataUrl = &/q=sz%06d& % code
self.getStockQuotationDetail(dataUrl)
#'; .. ';
创业板股票
for code in range(0400):
dataUrl = &/q=sz%d& % code
self.getStockQuotationDetail(dataUrl)
except Exception as err:
self.__logger.error(&&&&&&& Exception: & +str(code) + & & + str(err))
self.__logger.debug(&结束:收集股票交易行情数据&)
if __name__ == '__main__':
StockTencent(). main()苹果/安卓/wp
学科带头人
学科带头人
积分 3777, 距离下一级还需 2048 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限, 设置回复可见
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发, 提升卡, 沉默卡, 千斤顶下一级可获得
道具: 变色卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
苦逼签到天数: 1086 天连续签到: 1 天[LV.10]以坛为家III
本帖最后由 faruto 于
15:13 编辑
以前做的一些东西。和大家分享~~
原帖地址:
Matlab通过Yahoo与Sina获取历史与实时股票数据[faruto版本]
==============================
通过访问Yahoo和Sina的URL进行股票数据的提取,其中部分函数的实现是基于 郑志勇兄弟( ariszheng @/) 的相关函数进行修改优化而成。
这部分东西一直想抽时间弄来着,这段有点犯懒。O(∩_∩)O&&
历史数据通过YahooData.m函数实现,访问的Yahoo的URL形式为
url2Read=sprintf(...
& & 'http://ichart./table.csv?s=%s&a=%s&b=%s&c=%s&d=%s&e=%s&f=%s&g=%s&ignore=.csv', StockName, ms, ds, ys, me, de, ye, Freq);复制代码
可以获取某一股票的日、周、月 的历史数据。
实时数据通过SinaData.m函数实现,访问的Sina的URL形式为
url2Read=['/list=',StockCode];复制代码可以获取某一股票的实时数据,进而再结合timer函数就可以获取某一股票当天的实时行情(这部分懒得弄了)。
测试脚本 SinaYahooDataTest.m%% SinaYahooDataTest
% by LiYang
% Email:
%
%% A Little Clean Work
%% 获取历史数据测试
% 历史数据通过Yahoo接口获得 (历史数据为未复权数据,使用时候请注意)
% Yahoo中证券代码为 (上海 .ss 深圳 .sz),例如招商银行,600036.ss
StockName = '600036.ss';
StartDate = today-200;
EndDate =
Freq = 'd';
[DataYahoo, Date_datenum, Head]=YahooData(StockName, StartDate, EndDate, Freq);
% K线展示
scrsz = get(0,'ScreenSize');
figure('Position',[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);
Open = DataYahoo(:,2);
High = DataYahoo(:,3);
Low = DataYahoo(:,4);
Close = DataYahoo(:,5);
MT_candle(High,Low,Close,Open,[],Date_datenum);
xlim( [0 length(Open)+1] );
title(StockName);
%% 获取实时数据测试
% Sina中证券代码为 (sh. 上海 sz.深圳),例如招商银行sh600036
StockCode='sh600036';
[DataSina, DataCell]=SinaData(StockCode);
DataCell
%% Record Time
复制代码运行结果
DataCell =
& & '招商银行_sh600036'& & '股票名称代码'& && && &
& & ''& && && &&&'日期'& && && && && && &
& & '10:28:22'& && && && & '时间'& && && && && && &
& & [& && && & 10.8400]& & '今开盘'& && && && && &
& & [& && && & 10.8300]& & '昨收盘'& && && && && &
& & [& && && & 10.7800]& & '当前价'& && && && && &
& & [& && && & 10.8500]& & '今最高'& && && && && &
& & [& && && & 10.7600]& & '今最低'& && && && && &
& & [& && && & 10.7700]& & '竞买价,即“买一”报价'
& & [& && && & 10.7800]& & '竞卖价,即“卖一”报价'
& & [& && && &]& & '成交量,单位“股”'& &
& & [& && &&&]& & '成交额,单位“元”'& &
& & [& && && && &17119]& & '买一量'& && && && && &
& & [& && && & 10.7700]& & '买一价'& && && && && &
& & [& && && &&&348053]& & '买二量'& && && && && &
& & [& && && & 10.7600]& & '买二价'& && && && && &
& & [& && && &&&509400]& & '买三量'& && && && && &
& & [& && && & 10.7500]& & '买三价'& && && && && &
& & [& && && &&&129800]& & '买四量'& && && && && &
& & [& && && & 10.7400]& & '买四价'& && && && && &
& & [& && && &&&236600]& & '买五量'& && && && && &
& & [& && && & 10.7300]& & '买五价'& && && && && &
& & [& && && && &36790]& & '卖一量'& && && && && &
& & [& && && & 10.7800]& & '卖一价'& && && && && &
& & [& && && && &50257]& & '卖二量'& && && && && &
& & [& && && & 10.7900]& & '卖二价'& && && && && &
& & [& && && &&&158371]& & '卖三量'& && && && && &
& & [& && && & 10.8000]& & '卖三价'& && && && && &
& & [& && && &&&143496]& & '卖四量'& && && && && &
& & [& && && & 10.8100]& & '卖四价'& && && && && &
& & [& && && && &33665]& & '卖五量'& && && && && &
& & [& && && & 10.8200]& & '卖五价'&&复制代码YahooData.m函数源码
function [Data, Date_datenum, Head]=YahooData(StockName, StartDate, EndDate, Freq)
% by LiYang(faruto) @
% 本函数是基于 ariszheng @/ 的相关函数进行修改而成
% 用来通过Yahoo获取股票历史数据
% 历史数据通过Yahoo接口获得 (历史数据为未复权数据,使用时候请注意)
%% 输入参数
% StockName 证券代码(上海 .ss 深圳 .sz)
% StartDate, EndDate 时间段的开始日与结束日
% Freq 频率
%% 测试函数
% StockName = '600036.ss';
% StartDate = today-200;
% EndDate =
% Freq = 'd';
% [DataYahoo, Date_datenum, Head]=YahooData(StockName, StartDate, EndDate, Freq);
%% 数据时间区间
startdate=StartD
enddate=EndD
%字符串变化
ms=num2str(str2double(datestr(startdate, 'mm'))-1);
ds=datestr(startdate, 'dd');
ys=datestr(startdate, 'yyyy');
me=num2str(str2double(datestr(enddate, 'mm'))-1);
de=datestr(enddate, 'dd');
ye=datestr(enddate, 'yyyy');
% s: 股票代码 (e.g. 002036.SZ 300072.SZ 600036.SS 等)
% c-a-b: 起始日期年、月、日 (月份的起始索引为0)
= 日
% f-d-e: 结束日期年、月、日 (月份的起始索引为0)
= 日
% g: 时间周期。d=每日,w=每周,m=每月,v=只返回除权数据
% 省略所有参数,只制定股票代码时,返回所有历史数据
url2Read=sprintf(...
& & 'http://ichart./table.csv?s=%s&a=%s&b=%s&c=%s&d=%s&e=%s&f=%s&g=%s&ignore=.csv', StockName, ms, ds, ys, me, de, ye, Freq);
s=urlread_General(url2Read);
Head = ['Date Open High Low Close Volume AdjClose'];
Result=textscan(s, '%s %s %s %s %s %s %s', 'delimiter', ',');
temp = Result{1,1};
Date_datestr = temp(2:end);
Date_datestr = Date_datestr(end:(-1):1);
temp = Result{1,2};
temp = cellfun(@str2double, temp(2:end));
temp = temp(end:(-1):1);
Open =
temp = Result{1,3};
temp = cellfun(@str2double, temp(2:end));
temp = temp(end:(-1):1);
High =
temp = Result{1,4};
temp = cellfun(@str2double, temp(2:end));
temp = temp(end:(-1):1);
Low =
temp = Result{1,5};
temp = cellfun(@str2double, temp(2:end));
temp = temp(end:(-1):1);
Close =
temp = Result{1,6};
temp = cellfun(@str2double, temp(2:end));
temp = temp(end:(-1):1);
Volume =
temp = Result{1,7};
temp = cellfun(@str2double, temp(2:end));
temp = temp(end:(-1):1);
AdjClose =
Date_datenum = datenum(Date_datestr);
Date_double = str2num( datestr(Date_datenum, 'yyyymmdd') );
Data = [Date_double, Open, High, Low, Close, Volume, AdjClose];
end复制代码其中YahooData.m和SinaData.m函数会用到一个 urlread_General.m 读取网页的函数,是重新封装的,matlab的老版本的urlread再读取中文网页时会有乱码,所以这里做了一些处理。
整理所有函数源码打包。
Matlab通过Yahoo与Sina获取历史与实时股票数据[faruto版本]
(136.84 KB)
15:12:52 上传
载入中......
对论坛有贡献
F老师又发福利啦~~
总评分:&经验 + 190&
论坛币 + 25&
学术水平 + 10&
热心指数 + 13&
信用等级 + 10&
本帖被以下文库推荐
& |主题: 1297, 订阅: 595
& |主题: 992, 订阅: 65
& |主题: 78, 订阅: 34
& |主题: 240, 订阅: 59
& |主题: 1038, 订阅: 146
.cn/faruto
应该加上将数据导入数据库的部分
总评分:&论坛币 + 3&
xuruilong100 发表于
应该加上将数据导入数据库的部分恩有道理~
总评分:&论坛币 + 8&
.cn/faruto
好东西,谢谢分享,请问将数据导入数据库的部分该怎么弄呢
总评分:&经验 + 5&
论坛币 + 2&
感谢大家支持~
总评分:&论坛币 + 6&
.cn/faruto
faruto真实神人啊。职业投资者还是业务玩玩的?
总评分:&论坛币 + 2&
bruder 发表于
faruto真实神人啊。职业投资者还是业务玩玩的?O(∩_∩)O
总评分:&论坛币 + 6&
.cn/faruto
下载下来学习学习
总评分:&论坛币 + 2&
楼主神人!
总评分:&论坛币 + 1&
finamathcomp 发表于
楼主神人!感谢支持~~
总评分:&论坛币 + 8&
.cn/faruto
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师

我要回帖

更多关于 matlab抓取网页数据 的文章

 

随机推荐