matlab量化股票基本面,获取数据 - MATLAB - 掘金量化

获取数据

分享

阅读 15341

更新 2020-10-29 09:40:19

bar 数据结构说明bar数据采用结构体+二维矩阵形式存储,通过策略的全局变量Context.data获取或调用历史行情接口history获取

数据矩阵的行索引为symbols字段

列索引eob字段

函数原型

%数据滑窗获取bar行情的频率为60s的close字段

Context.data.frequency_60s.close

字段描述

字段名

类型

描述

symbols

cell

标的代码

eob

cell

字符格式的bar结束时间点

eobnum

mat

数字格式的bar结束时间点

open

mat

开盘价

high

mat

最高价

low

mat

最低价

close

mat

收盘价

amount

mat

成交额

volume

mat

成交量

position

mat

持仓量(仅期货)

示例

Context.data.frequency_60s=

symbols:{'SZSE.000001''SHSE.600000'}

eob:{1x5510cell}

eobnum:[1x5510double]

open:[2x5510double]

high:[2x5510double]

low:[2x5510double]

close:[2x5510double]

amount:[2x5510double]

volume:[2x5510double]

position:[2x5510double]

tick 数据结构说明tick数据采用结构体+一维表结构格式存储,通过策略的全局变量Context.data.tick获取或调用历史行情接口history获取

数据表的行索引为symbols字段

列索引为二维的eob+symbols

函数原型

%获取tick行情的close字段

Context.data.frequency_60s.close

字段描述

字段名

类型

描述

symbols

cell

标的代码

open

cell

开盘价

high

cell

最高价

low

cell

最低价

close

cell

收盘价

cumVolume

cell

成交总量/最新成交量,累计值

cumAmount

cell

成交总金额/最新成交额,累计值

tradeType

cell

交易类型 1: ‘双开’, 2: ‘双平’, 3: ‘多开’, 4: ‘空开’, 5: ‘空平’, 6: ‘多平’, 7: ‘多换’, 8: ‘空换’

lastVolume

cell

瞬时成交量

cumPosition

cell

合约持仓量(期),累计值(股票此值为0)

lastAmount

cell

瞬时成交额

createdAt

cell

创建时间

quotes

struct

股票提供买卖5档数据, 包含买卖到五档行情

其中五档报价quote结构如下:

字段名

类型

描述

bidPrice

cell

委买价五档

bidVolume

cell

委买量五档

askPrice

cell

委卖价五档

askVolume

cell

委卖量五档

注意:

tick数据各字段的为cell格式,获取数据时需要先用symbols索引找到对应行位置,用created_at找到数据的列位置

可能会有买档或卖档报价缺失,比如跌停时无买档报价(没有bid_p, bid_v),涨停时无卖档报价(没有ask_p, ask_v)

集合竞价时tick的买卖价均为0

财务数据及其他业务数据结构

财务数据采用和tick数据相同的结构来存储,每个财务指标独立,以symbols列进行索引

业务数据采用cell表结构存储,首行为字段名,具体格式参照接口示例

subscribe—订阅方式获取决策数据

订阅获取决策数据由三部分组成

发起订阅数据

事件数据获取

时序数据获取

订阅数据

参数说明

函数原型:

# 设置滑窗股票标的,订阅行情数据

set_symbols('SZSE.000001');

subscribe(symbols,frequency,count,wait_group,wait_group_timeout,unsubscribe_previous)

事件数据获取

行情事件分为on_tick和on_bar事件

ifEvent.Bar.flag==1

……

endifEvent.Tick.flag==1

data_event=Event.on_tick.data

……

end

时序数据获取

ifEvent.on_bar.flag==1

# 数据存放在全局变量中

data=Context.data.frequency_1d.close

data_time=Context.data.frequency_1d..eob

symbols=Context.data.frequency_1d.symbols

……

end

subscribe订阅函数说明

参数名

类型

说明

symbols

cell

证券代码,cell 格式,支持一个或多个,如{‘SZSE.000001’}

frequency

char

实时订阅数据的频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’,回测历史数据支持任意频率

count

mat

数据滑窗的长度,正整数

wait_group

bool

是否到齐方式驱动,仅对bar数据驱动生效;1表示到齐后驱动,0表示单个bar到达时驱动

wait_group_timeout

int

在到齐方式驱动式,最大等待时间

unsubscribe_previous

bool

填入true表示取消前订阅,false表示不取消,默认为取消前一次订阅

set_symbols设定滑窗标的池函数

在订阅数据前需要设置标准滑窗的标的列表,用于确定策略需要接收的订阅数据

参数名

类型

说明

symbols

cell

证券代码,cell 格式,支持一个或多个,如{‘SZSE.000001’},

说明

标的声明用于标准化滑窗数据的symbols索引,即订阅的数据滑窗按照该排列顺序进行填充

注意:

策略在当次运行中,在回测模式时是不可以多次订阅数据的,过程中需要的标的和数据都需要预先订阅好;在实时状态时,每次重新订阅都需要set_symbols设置当前需要订阅的标的,否则策略不会接收新的标的(直接取数接口无此类限制)

示例

function[Context]=main(Context,Event)

%初始化操作

ifEvent.Init.flag==1

set_symbols('SZSE.000001');

subscribe({},'900s',60,1,1,10,true);

return

end

ifEvent.frequency_1d.flag==1

%获取15分钟收盘价时间序列数据

cp_15m=Context.data.frequency_900s.close;

time_15m=Context.data.frequency_900s.eobnum;

end

unsubscribe 退订函数说明

参数名

类型

说明

symbols

cell

证券代码,cell 格式,支持一个或多个,如{‘SZSE.000001’}

frequency

char

订阅数据的频率,频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’

示例

unsubscribe('SHSE.600000','60s')

current - 查询当前行情快照

查询当前行情快照,返回tick数据,回测时,返回回测时间点的tick数据

函数原型:

data=current(symbols,fields)参数名

类型

说明

symbols

cell

查询代码, 如{‘symbol1’, ‘symbol2’}

示例

tick=current({'SZSE.000001'})

返回值:

tick=

symbols:{'SZSE.000001'}

createdAt:{{1x1cell}}

price:{[10.2000]}

open:{[10.0300]}

high:{[10.2700]}

low:{[10.0300]}

cumVolume:{[64832749]}

cumAmount:{[6.5857e+08]}

cumPosition:{[0]}

lastAmount:{[118325]}

lastVolume:{[11600]}

tradeType:{[8]}

quotes:[1x1struct]

说明:

若输入包含无效标的代码,无效代码对应的数据为空

仅在策略实时运行模式下获取行情tick快照数据,其他情况下数据为0

fields用于选择需要的字段,取较少的字段可以大幅提高取数效率

history - 查询固定时间历史行情

按起始日期区间查询历史行情数据

函数原型:

[data]=history(symbols,frequency,start_time,end_time,adjust,adjust_end_time)

说明:

参数名

类型

说明

symbols

cell

查询代码, 如{‘symbol1’, ‘symbol2’}

frequency

char

频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’ 等, 默认 ‘1d’, 详情见股票行情数据和期货行情数据

start_time

char

开始时间 (YY-MM-DD hh-mm-ss格式),

end_time

char

结束时间 (YY-MM-DD hh-mm-ss格式)

adjust

char

ADJUST_NONE : 不复权, ADJUST_PREV : 前复权, ADJUST_POST : 后复权 默认不复权

adjust_end_time

char

复权基点时间, 默认当前时间

skip_suspended

bool

是否跳过停牌, 默认跳过(true或者false,暂不支持)

示例

[data]=history({'SZSE.000001','SHSE.600000'},'60s','2018-08-01','2018-09-01','ADJUST_NONE')

返回值:

data=

symbols:{'SZSE.000001''SHSE.600000'}

eob:{1x5510cell}

eobnum:[1x5510double]

open:[2x5510double]

high:[2x5510double]

low:[2x5510double]

close:[2x5510double]

amount:[2x5510double]

volume:[2x5510double]

position:[2x5510double]

说明:

1.若输入包含无效标的代码,无效代码对应的数据为空

history_n - 查询固定长度历史行情

函数原型:

[data]=history_n(symbols,frequency,count,end_time,adjust,adjust_end_time,skip_suspended,fields)

说明:

参数名

类型

说明

symbols

cell

查询代码, 如{‘symbol1’, ‘symbol2’}

frequency

char

频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’ 等, 默认 ‘1d’, 详情见股票行情数据和期货行情数据

count

double

获取数据的长度

end_time

char

结束时间 (YY-MM-DD hh-mm-ss格式)

adjust

char

ADJUST_NONE : 不复权, ADJUST_PREV : 前复权, ADJUST_POST : 后复权 默认不复权

adjust_end_time

char

复权基点时间, 默认当前时间

skip_suspended

bool

是否跳过停牌, 默认跳过(true或者false)

示例

[data]=history_n({'SZSE.000001','SHSE.600000'},'60s',1000,'2018-09-01','ADJUST_NONE')

返回值:

data=

symbols:{'SZSE.000001''SHSE.600000'}

eob:{1x1000cell}

eobnum:[1x1000double]

open:[2x1000double]

high:[2x1000double]

low:[2x1000double]

close:[2x1000double]

amount:[2x1000double]

volume:[2x1000double]

position:[2x1000double]

get_fundamentals - 查询固定时间基本面数据

函数原型:

[data]=get_fundamentals(table,symbols,start_date,end_date,fields)

说明:

示例

[data]=get_fundamentals('trading_derivative_indicator',{'SHSE.600000','SZSE.000001'},'2018-04-01','2018-08-01',{'TCLOSE','NEGOTIABLEMV','TOTMKTCAP','TURNRATE'})

返回值:

data=

symbols:{2x1cell}

pub_adte:{2x1cell}

EndDate:{2x1cell}

TCLOSE:{2x1cell}

NEGOTIABLEMV:{2x1cell}

TOTMKTCAP:{2x1cell}

TURNRATE:{2x1cell}

说明:

如果查询基本面数据接口的查询字段出错,则直接返回错误(1017错误)

get_fundamentals_n - 查询固定长度基本面数据

函数原型:

[data]=get_fundamentals_n(table,symbols,count,end_date,fields)

说明:

参数名

类型

说明

table

char

表名,只支持单表查询. 具体表名及fields字段参考 财务数据文档

symbols

cell

标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 [‘symbol1’, ‘symbol2’] 这种列表格式

count

char

每个股票数据的数量

end_date

char

结束时间, (YY-MM-DD 格式)

fields

str

查询字段 (必填)

示例

data=get_fundamentals_n('trading_derivative_indicator',{'SHSE.600000','SZSE.000001'},'2017-04-01',3,{'TCLOSE','NEGOTIABLEMV','TOTMKTCAP','TURNRATE'})

返回值:

data=

symbols:{2x1cell}

pub_adte:{2x1cell}

EndDate:{2x1cell}

TCLOSE:{2x1cell}

NEGOTIABLEMV:{2x1cell}

TOTMKTCAP:{2x1cell}

TURNRATE:{2x1cell}

说明:

get_instruments - 查询最新交易标的最新基本信息

查询最新交易标的信息,有基本数据及最新日频数据

函数原型:

[data]=get_instruments(symbols,exchanges,sec_types,fields)

说明:

参数名

类型

说明

symbols

cell

标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 [‘symbol1’, ‘symbol2’] 这种列表格式

exchanges

char

交易所代码, 多个交易所代码可用 ,(英文逗号)分割, NULL表示所有

secTypes

mat

标的类型, 1: 股票, 2: 基金, 3: 指数, 4: 期货, 5: 期权, 10: 虚拟合约,只能输入单个品种

fields

int

查询字段,默认表示所有

示例

data=get_instruments({'SZSE.000001'},'SZSE',1)

返回值:

data=

Columns1through8

'symbol''sec_level''is_suspended''multiplier''margin_ratio''settle_price''position''pre_close'

'SZSE.000001'[1][0][1][1][0][0][9.9600]

Columns9through13

'pre_settle''upper_limit''lower_limit''adj_factor''created_at'

[0][10.9600][8.9600][117.1530]'2018-09-13'

get_history_instruments - 查询交易标的历史基本信息

返回指定symbols的标的日频历史数据

函数原型:

[data]=get_history_instruments(symbols,start_date,end_date,fields)

说明:

参数名

类型

说明

symbols

string

标的代码, 多个代码可用 ,(英文逗号)分割,也支持 [‘symbol1’, ‘symbol2’] 这种列表格式, 是必填参数

startDate

char

开始时间 (YY-MM-DD 格式)

endDate

char

结束时间 (YY-MM-DD 格式)

fields

cell

查询字段,默认表示所有

示例

[data]=get_history_instruments({'SZSE.000001','SZSE.000002'},'2018-04-19','2018-06-19')

返回值:

data=

symbols:{2x1cell}

created_at:[1x41double]

sec_level:[2x41double]

is_suspended:[2x41double]

multiplier:[2x41double]

margin_ratio:[2x41double]

settle_price:[2x41double]

position:[2x41double]

pre_close:[2x41double]

pre_settle:[2x41double]

upper_limit:[2x41double]

lower_limit:[2x41double]

adj_factor:[2x41double]

get_instrumentinfos - 查询交易标的基本信息

获取到交易标的基本信息

函数原型:

[data]=get_instrumentinfos(symbols,exchanges,sec_types,names,fields)

说明:

参数名

类型

说明

symbols

cell

标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 [‘symbol1’, ‘symbol2’] 这种列表格式

exchanges

char

交易所代码, 多个交易所代码可用 ,(英文逗号)分割, NULL表示所有

secTypes

mat

标的类型, 1: 股票, 2: 基金, 3: 指数, 4: 期货, 5: 期权, 10: 虚拟合约,只能输入单个品种

names

char

查询名称,默认所有名称字符

fields

int

查询字段,默认表示所有

示例

[data]=get_instrumentinfos({'SZSE.000001'},'SZSE')

返回值:

data=

'symbol''sec_type''exchange''sec_id''sec_name''price_tick''listed_date''delisted_date'

'SZSE.000001'[1]'SZSE''000001''平安银行'[0.0100]'1991-04-02''2037-12-31'

get_constituents - 查询指数成份股信息

函数原型:

instruments=get_constituents(index,trade_date)

参数:

参数名

类型

说明

index

char

指数代码

trade_date

char

结束时间 (YY-MM-DD 格式)

示例

instruments1=get_constituents('SHSE.000300','2020-10-29');

返回值

instruments1=

301×3cell数组

{'created_at'}{'symbol'}{'weight'}

{'2020-09-30'}{'SHSE.600999'}{[0.4900]}

{'2020-09-30'}{'SHSE.601238'}{[0.0500]}

{'2020-09-30'}{'SZSE.002241'}{[0.5600]}

{'2020-09-30'}{'SZSE.002032'}{[0.0800]}

{'2020-09-30'}{'SHSE.600362'}{[0.0900]}

{'2020-09-30'}{'SHSE.600703'}{[0.3300]}

{'2020-09-30'}{'SHSE.600585'}{[0.8100]}

{'2020-09-30'}{'SHSE.601138'}{[0.1700]}

{'2020-09-30'}{'SHSE.600221'}{[0.1200]}

{'2020-09-30'}{'SHSE.600061'}{[0.1600]}

{'2020-09-30'}{'SZSE.000977'}{[0.1900]}

{'2020-09-30'}{'SZSE.002673'}{[0.1000]}

{'2020-09-30'}{'SZSE.000876'}{[0.3600]}

{'2020-09-30'}{'SHSE.600115'}{[0.1400]}

{'2020-09-30'}{'SHSE.600741'}{[0.2400]}

{'2020-09-30'}{'SHSE.601398'}{[1.0600]}

{'2020-09-30'}{'SHSE.601186'}{[0.2300]}

{'2020-09-30'}{'SHSE.600928'}{[0.0400]}

{'2020-09-30'}{'SHSE.601888'}{[1.3300]}

{'2020-09-30'}{'SZSE.002410'}{[0.4000]}

......

get_industry - 查询行业板块成分股

函数原型:

[data]=get_industry(code)

说明

参数名

类型

说明

code

char

行业代码 不区分大小写(仅支持输入单一代码)

示例

[data]=get_industry('j6')

返回值

data=

'SHSE.600000'

'SHSE.600016'

'SHSE.600030'

'SHSE.600036'

'SHSE.600053'

'SHSE.600061'

'SHSE.600109'

'SHSE.600155'

'SHSE.600291'

'SHSE.600318'

……

get_trading_dates - 查询交易日历表

函数原型:

[data]=get_trading_dates(exchange,start_date,end_date)

说明

参数名

类型

说明

exchange

char

见交易市场代码

start_date

char

开始时间 (YY-MM-DD 格式)

end_date

char

结束时间 (YY-MM-DD 格式)

示例

[data]=get_trading_dates('SZSE','2018-01-01','2018-08-30')

返回值

data=

datestr:{1x163cell}

datenum:[1x163double]

说明:

返回值会返回不同格式的日期类型,字符格式和matlab数值格式

get_previous_trading_date - 查询上一个交易日

函数原型:

[data]=get_previous_trading_date(exchange,date)

说明

参数名

类型

说明

exchange

char

见交易市场代码

start_date

char

当前日期(YY-MM-DD 格式)

示例

[data]=get_previous_trading_date('SZSE','2018-08-30')

返回值

data=

datestr:'2018-08-28'

datenum:7.3709e+05

get_next_trading_date - 查询下一个交易日

函数原型:

[data]=get_next_trading_date(exchange,date)

示例

[data]=get_next_trading_date('SZSE','2018-08-31')

返回值

data=

datestr:'2018-09-02'

datenum:7.3706e+05

get_dividend - 查询分红送配信息

函数原型:

=get_dividend(symbol,start_date,end_date=None)

示例

[data]=get_dividend({'SHSE.600000'},'2015-01-01','2018-08-31')

返回值

data=

'SHSE.600000'[0.7570][0][0][0][0]'2015-06-22'

'SHSE.600000'[0.5150][0][0.1000][0][0]'2016-06-22'

'SHSE.600000'[0.2000][0][0.3000][0][0]'2017-05-24'

'SHSE.600000'[0.1000][0][0][0][0]'2018-07-12'

get_continuous_contracts - 获取主力连续合约

函数原型:

[data]=get_continuous_contracts(csymbol,start_date=None,end_date=None)

示例

get_continuous_contracts({'SHFE.AG'},'2018-07-01','2018-08-01')

返回值

data=

'symbol''created_at'

'SHFE.ag1812''2018-06-30'

'SHFE.ag1812''2018-07-01'

'SHFE.ag1812''2018-07-02'

'SHFE.ag1812''2018-07-03'

'SHFE.ag1812''2018-07-04'

'SHFE.ag1812''2018-07-05'

'SHFE.ag1812''2018-07-06'

'SHFE.ag1812''2018-07-07'

'SHFE.ag1812''2018-07-08'

'SHFE.ag1812''2018-07-09'

……

你可能感兴趣的:(matlab量化股票基本面)