- bar 数据结构说明
 - tick 数据结构说明
 - 财务数据及其他业务数据结构
 - subscribe—订阅方式获取决策数据
 - current - 查询当前行情快照
 - history - 查询固定时间历史行情
 - history_n - 查询固定长度历史行情
 - get_fundamentals - 查询固定时间基本面数据
 - get_fundamentals_n - 查询固定长度基本面数据
 - get_instruments - 查询最新交易标的最新基本信息
 - get_history_instruments - 查询交易标的历史基本信息
 - get_instrumentinfos - 查询交易标的基本信息
 - get_constituents - 查询指数成份股信息
 - get_industry - 查询行业板块成分股
 - get_trading_dates - 查询交易日历表
 - get_previous_trading_date - 查询上一个交易日
 - get_next_trading_date - 查询下一个交易日
 - get_dividend - 查询分红送配信息
 - get_continuous_contracts - 获取主力连续合约
 
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: {1x5510 cell}eobnum: [1x5510 double]open: [2x5510 double]high: [2x5510 double]low: [2x5510 double]close: [2x5510 double]amount: [2x5510 double]volume: [2x5510 double]position: [2x5510 double]
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事件
if Event.Bar.flag == 1……end
if Event.Tick.flag == 1data_event = Event.on_tick.data……end
时序数据获取
if Event.on_bar.flag == 1# 数据存放在全局变量中data = Context.data.frequency_1d.closedata_time = Context.data.frequency_1d..eobsymbols = 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)% 初始化操作if Event.Init.flag==1set_symbols('SZSE.000001');subscribe({}, '900s',60,1,1,10, true);returnendif Event.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: {{1x1 cell}}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: [1x1 struct]
说明:
- 若输入包含无效标的代码,无效代码对应的数据为空
 - 仅在策略实时运行模式下获取行情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: {1x5510 cell}eobnum: [1x5510 double]open: [2x5510 double]high: [2x5510 double]low: [2x5510 double]close: [2x5510 double]amount: [2x5510 double]volume: [2x5510 double]position: [2x5510 double]
说明:
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: {1x1000 cell}eobnum: [1x1000 double]open: [2x1000 double]high: [2x1000 double]low: [2x1000 double]close: [2x1000 double]amount: [2x1000 double]volume: [2x1000 double]position: [2x1000 double]
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: {2x1 cell}pub_adte: {2x1 cell}EndDate: {2x1 cell}TCLOSE: {2x1 cell}NEGOTIABLEMV: {2x1 cell}TOTMKTCAP: {2x1 cell}TURNRATE: {2x1 cell}
说明:
如果查询基本面数据接口的查询字段出错,则直接返回错误(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: {2x1 cell}pub_adte: {2x1 cell}EndDate: {2x1 cell}TCLOSE: {2x1 cell}NEGOTIABLEMV: {2x1 cell}TOTMKTCAP: {2x1 cell}TURNRATE: {2x1 cell}
说明:
get_instruments - 查询最新交易标的最新基本信息
查询最新交易标的信息,有基本数据及最新日频数据
函数原型:
[ data] = get_instruments( symbols ,exchanges, sec_types, fields)
说明:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| symbols | cell | 标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 [‘symbol1’, ‘symbol2’] 这种列表格式 | 
| exchanges | char | 交易所代码, 多个交易所代码可用 ,(英文逗号)分割, NULL表示所有 | 
| secTypes | mat | 标的类型, 1: 股票, 2: 基金, 3: 指数, 4: 期货, 5: 期权, 8:可转债, 10: 虚拟合约,只能输入单个品种 | 
| fields | int | 查询字段,默认表示所有 | 
示例
data = get_instruments({'SZSE.000001'},'SZSE',1)
返回值:
data =Columns 1 through 8'symbol' 'sec_level' 'is_suspended' 'multiplier' 'margin_ratio' 'settle_price' 'position' 'pre_close''SZSE.000001' [ 1] [ 0] [ 1] [ 1] [ 0] [ 0] [ 9.9600]Columns 9 through 13'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: {2x1 cell}created_at: [1x41 double]sec_level: [2x41 double]is_suspended: [2x41 double]multiplier: [2x41 double]margin_ratio: [2x41 double]settle_price: [2x41 double]position: [2x41 double]pre_close: [2x41 double]pre_settle: [2x41 double]upper_limit: [2x41 double]lower_limit: [2x41 double]adj_factor: [2x41 double]
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: 期权, 8: 可转债, 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×3 cell 数组{'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: {1x163 cell}datenum: [1x163 double]
说明:
返回值会返回不同格式的日期类型,字符格式和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'……