matlab connect yahoo,用matlab调用yahoo数据库中的股票数据

用matlab获取yahoo数据库中的股票数据

注意了,由于数据库问题,有些股票的数据是调用不出来的呃,比如:

>>

data2=fetch(y,'002056.ss','CLose','1/1/2011','1/25/2013');

??? Error using ==> yahoo.fetch at 363

Unable to return historical data for given security.

当调用002056时,提示出错;

另外,时间设置也是非常麻烦,有时候时间不变,换成另外一只股票代码后,提出出错;有时同一只股票,换了时间区间,也会出错,搞不懂,建议大家只做参考。

调用语句:

data = fetch(Connect, 'Security')

显示最近的交易日的数据,并且显示数据的各个字段,包括股票名称、收盘价、日期、时间、改变量、开盘价、最高价、最低价、成交量。

例:

y = yahoo;

K>> data=fetch(y,'000001.ss')

data =

Symbol:

{'000001.SS'}

Last: 2328.3

Date: 735315

Time: 0.12569

Change:

4.036

Open:

2321.4

High: 2332

Low: 2315

Volume:

101167296

对上面的日期和时间转化为字符型的时间为

K>> datestr(735315.12569)

ans =

22-Mar-2013 03:00:59

data = fetch(Connect, 'Security', 'Date')

例子

y = yahoo;

data = fetch(Connect, 'Security', 'Fields')

K>>

data=fetch(y,'000001.ss','open')

data =

open:

2328.3

data = fetch(Connect, 'Security', 'Fields',

'Date')

例子

y = yahoo;

K>>

data=fetch(y,'000001.ss','open','25-Jan-2013')

data =

7.3526e+005 2291.3

data = fetch(Connect, 'Security', 'FromDate',

'ToDate')

y = yahoo;

K>> data=fetch(y,'000001.ss','15-Jan-2013','25-Jan-2013')

data =

7.3526e+005 2291.3 2291.3 2291.3 2291.3 0 2291.3

7.3526e+005 2302.6 2302.6 2302.6 2302.6 0 2302.6

7.3526e+005 2320.9 2320.9 2320.9 2320.9 0 2320.9

7.3526e+005 2315.1 2315.1 2315.1 2315.1 0 2315.1

7.3526e+005 2328.2 2328.2 2328.2 2328.2 0 2328.2

7.3525e+005 2317.1 2317.1 2317.1 2317.1 0 2317.1

7.3525e+005 2284.9 2284.9 2284.9 2284.9 0 2284.9

7.3525e+005 2309.5 2309.5 2309.5 2309.5 0 2309.5

7.3525e+005 2325.7 2325.7 2325.7 2325.7 0 2325.7

data = fetch(Connect, 'Security', 'Fields', 'FromDate',

'ToDate')

y = yahoo;

K>>

data=fetch(y,'000001.ss',{'close','open'},'15-Jan-2013','25-Jan-2013')

data =

7.3526e+005 2291.3 2291.3

7.3526e+005 2302.6 2302.6

7.3526e+005 2320.9 2320.9

7.3526e+005 2315.1 2315.1

7.3526e+005 2328.2 2328.2

7.3525e+005 2317.1 2317.1

7.3525e+005 2284.9 2284.9

7.3525e+005 2309.5 2309.5

7.3525e+005 2325.7 2325.7

data = fetch(Connect, 'Security', 'FromDate', 'ToDate',

'Period')

y = yahoo;

K>>

data=fetch(y,'000001.ss',{'close','open'},'15-oct-2013','25-Jan-2013','w')

data =

7.3531e+005 2257.4 2240

7.353e+005 2278.4 2310.6

7.353e+005 2318.6 2273.4

7.3529e+005 2359.5 2325.8

7.3528e+005 2314.2 2421.6

7.3527e+005 2432.4 2428.2

7.3526e+005 2419 2346.5

7.3526e+005 2291.3 2291.3

输入参数详解:

Connect:数据调用的数据库链接对象,这里为“yahoo”

Security:单个字符或者包含多个字符的数组,代表yaohoo服务器可以识别的证券名称,这里要以'000001.ss'的形式进行输入。

注意:Yahoo不支持一次获得多个证券历史数据,只能一次获得一个证券的历史数据。

Fields:证券数据的变量名字段,包括开盘价、收盘价、最高价、最低价、时间、成交量等,离当前时间最近的日期支持的字段有:

· 'Symbol' 股票名称

· 'Last' 截至到目前证券收盘价,有此选项的函数返回一个结构变量。

· 'Date' 日期

· 'Time' 时间

· 'Change' 改变量(相对前一交易日)

· 'Open' 开盘价

· 'High' 当日最高价

· 'Low' 自低价

· 'Volume' 成交量

其中Yahoo数据库中历史数据支持的部分字段为:

· 'Close' 收盘

· 'Date' 日期

· 'High' 最高价

· 'Low' 最低价

· 'Open' 开盘价

· 'Volume' 成交量

·

'Adj Close' 调整后的收盘价

注意:Yahoo支持的全部字段可以通过函数yhfields.mat查询。

Date:具体的某一时间,函数将返回这一时间的数据,如果这一天没开盘,则会出错。

K>>

data=fetch(y,'000001.ss','26-Jan-2013')

??? Error using ==> yahoo.fetch at 296

Unable to return data for given security and date.

FromDate:数据的起始时间点。数据格式与函数datestr

和datenum支持的类型一样。

ToDate:数据的终点时间。

Period:数据的时间类型,包括:

· 'd': daily

日度数据

· 'w':

weekly 周数据

· 'm': monthly 月度数据

· 'v': dividends 股息日数据

·

注意:

1.只要没有输入具体日期,函数都是返回最近一个日期的数据,以结构变量的形式保存。此时输出包括Symbol、last、date、time、change、open、high、low、volume:

K>> data=fetch(y,'000001.ss')

data =

Symbol:

{'000001.SS'}

Last: 2328.3

Date: 735315

Time: 0.12569

Change:

4.036

Open: 2321.4

High: 2332

Low: 2315

Volume: 101167296

2.只要没有指定字段,函数将返回多个字段的数据。

K>>

data=fetch(y,'000001.ss','1/22/2013')

data =7.3526e+005 2315.1 2315.1 2315.1 2315.1 0 2315.1

3.

“Last”表示离当前最近的证券收盘价,因此,其时间已经是默认的设置了,所以,不能再次输入日期,如果同时输入日期,则会出错;而close是某一时期的证券收盘价,这个时间必须由用户输入,否则会出错。

例如:

有具体日期时,输入Last时出错。

K>>

data=fetch(y,'000001.ss',{'Last','open'},'1/22/2013')

??? Error using ==>

yahoo.fetch>isdatafield at 519

Current data field specified but historical data requested.

Error in ==> yahoo.fetch at 63

elseif isdatafield(varargin{1},numinputs)

没有具体日期,用Close时,出错。

K>>data=fetch(y,'000001.ss','Close')

??? Error using ==>

yahoo.fetch>isdatafield at 519

Historical data field specified but current data requested.

Error in ==> yahoo.fetch at 63

elseif isdatafield(varargin{1},numinputs)

4.当时间输入的是区间时,没开盘的日期直接跳过。

K>>

data=fetch(y,'000001.ss','1/22/2013','1/29/2013')

data =

7.3526e+005 2359 2359 2359 2359 0 2359

7.3526e+005 2346.5

2346.5 2346.5 2346.5 0 2346.5

7.3526e+005 2291.3 2291.3 2291.3 2291.3 0 2291.3

7.3526e+005 2302.6

2302.6 2302.6 2302.6 0 2302.6

7.3526e+005 2320.9 2320.9 2320.9 2320.9 0 2320.9

7.3526e+005 2315.1

2315.1 2315.1 2315.1 0 2315.1

K>> datestr(data(:,1))

ans =

29-Jan-2013

28-Jan-2013

25-Jan-2013

24-Jan-2013

23-Jan-2013

22-Jan-2013

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值