PDF下载 下载

获取数据

阅读 41229

bar 数据结构说明

  • bar数据采用结构体+二维矩阵形式存储,通过策略的全局变量Context.data获取或调用历史行情接口history获取
  • 数据矩阵的行索引为symbols字段
  • 列索引eob字段
    函数原型
  1. % 数据滑窗获取bar行情的频率为60sclose字段
  2. 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 持仓量(仅期货)

示例

  1. Context.data.frequency_60s =
  2. symbols: {'SZSE.000001' 'SHSE.600000'}
  3. eob: {1x5510 cell}
  4. eobnum: [1x5510 double]
  5. open: [2x5510 double]
  6. high: [2x5510 double]
  7. low: [2x5510 double]
  8. close: [2x5510 double]
  9. amount: [2x5510 double]
  10. volume: [2x5510 double]
  11. position: [2x5510 double]

tick 数据结构说明

  • tick数据采用结构体+一维表结构格式存储,通过策略的全局变量Context.data.tick获取或调用历史行情接口history获取
  • 数据表的行索引为symbols字段
  • 列索引为二维的eob+symbols
    函数原型
  1. % 获取tick行情的close字段
  2. 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—订阅方式获取决策数据

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

  • 发起订阅数据
  • 事件数据获取
  • 时序数据获取

订阅数据

参数说明
函数原型:

  1. # 设置滑窗股票标的,订阅行情数据
  2. set_symbols('SZSE.000001');
  3. subscribe(symbols, frequency, count,wait_group,wait_group_timeout, unsubscribe_previous)

事件数据获取
行情事件分为on_tick和on_bar事件

  1. if Event.Bar.flag == 1
  2. ……
  3. end
  1. if Event.Tick.flag == 1
  2. data_event = Event.on_tick.data
  3. ……
  4. end

时序数据获取

  1. if Event.on_bar.flag == 1
  2. # 数据存放在全局变量中
  3. data = Context.data.frequency_1d.close
  4. data_time = Context.data.frequency_1d..eob
  5. symbols = Context.data.frequency_1d.symbols
  6. ……
  7. 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设置当前需要订阅的标的,否则策略不会接收新的标的(直接取数接口无此类限制)
示例

  1. function [Context] = main(Context,Event)
  2. % 初始化操作
  3. if Event.Init.flag==1
  4. set_symbols('SZSE.000001');
  5. subscribe({}, '900s',60,1,1,10, true);
  6. return
  7. end
  8. if Event.frequency_1d.flag==1
  9. % 获取15分钟收盘价时间序列数据
  10. cp_15m = Context.data.frequency_900s.close;
  11. time_15m = Context.data.frequency_900s.eobnum;
  12. end

unsubscribe 退订函数说明

参数名 类型 说明
symbols cell 证券代码,cell 格式,支持一个或多个,如{‘SZSE.000001’}
frequency char 订阅数据的频率,频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’

示例

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

current - 查询当前行情快照

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

函数原型:

  1. data = current(symbols,fields)
参数名 类型 说明
symbols cell 查询代码, 如{‘symbol1’, ‘symbol2’}

示例

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

返回值:

  1. tick =
  2. symbols: {'SZSE.000001'}
  3. createdAt: {{1x1 cell}}
  4. price: {[10.2000]}
  5. open: {[10.0300]}
  6. high: {[10.2700]}
  7. low: {[10.0300]}
  8. cumVolume: {[64832749]}
  9. cumAmount: {[6.5857e+08]}
  10. cumPosition: {[0]}
  11. lastAmount: {[118325]}
  12. lastVolume: {[11600]}
  13. tradeType: {[8]}
  14. quotes: [1x1 struct]

说明:

  1. 若输入包含无效标的代码,无效代码对应的数据为空
  2. 仅在策略实时运行模式下获取行情tick快照数据,其他情况下数据为0
  3. fields用于选择需要的字段,取较少的字段可以大幅提高取数效率

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

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

函数原型:

  1. [ 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,暂不支持)

示例

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

返回值:

  1. data =
  2. symbols: {'SZSE.000001' 'SHSE.600000'}
  3. eob: {1x5510 cell}
  4. eobnum: [1x5510 double]
  5. open: [2x5510 double]
  6. high: [2x5510 double]
  7. low: [2x5510 double]
  8. close: [2x5510 double]
  9. amount: [2x5510 double]
  10. volume: [2x5510 double]
  11. position: [2x5510 double]

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

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

函数原型:

  1. [ 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)

示例

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

返回值:

  1. data =
  2. symbols: {'SZSE.000001' 'SHSE.600000'}
  3. eob: {1x1000 cell}
  4. eobnum: [1x1000 double]
  5. open: [2x1000 double]
  6. high: [2x1000 double]
  7. low: [2x1000 double]
  8. close: [2x1000 double]
  9. amount: [2x1000 double]
  10. volume: [2x1000 double]
  11. position: [2x1000 double]

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

函数原型:

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

说明:

示例

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

返回值:

  1. data =
  2. symbols: {2x1 cell}
  3. pub_adte: {2x1 cell}
  4. EndDate: {2x1 cell}
  5. TCLOSE: {2x1 cell}
  6. NEGOTIABLEMV: {2x1 cell}
  7. TOTMKTCAP: {2x1 cell}
  8. TURNRATE: {2x1 cell}

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

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

函数原型:

  1. [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 查询字段 (必填)

示例

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

返回值:

  1. data =
  2. symbols: {2x1 cell}
  3. pub_adte: {2x1 cell}
  4. EndDate: {2x1 cell}
  5. TCLOSE: {2x1 cell}
  6. NEGOTIABLEMV: {2x1 cell}
  7. TOTMKTCAP: {2x1 cell}
  8. TURNRATE: {2x1 cell}

说明:

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

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

函数原型:

  1. [ 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 查询字段,默认表示所有

示例

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

返回值:

  1. data =
  2. Columns 1 through 8
  3. 'symbol' 'sec_level' 'is_suspended' 'multiplier' 'margin_ratio' 'settle_price' 'position' 'pre_close'
  4. 'SZSE.000001' [ 1] [ 0] [ 1] [ 1] [ 0] [ 0] [ 9.9600]
  5. Columns 9 through 13
  6. 'pre_settle' 'upper_limit' 'lower_limit' 'adj_factor' 'created_at'
  7. [ 0] [ 10.9600] [ 8.9600] [ 117.1530] '2018-09-13'

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

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

函数原型:

  1. [ 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 查询字段,默认表示所有

示例

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

返回值:

  1. data =
  2. symbols: {2x1 cell}
  3. created_at: [1x41 double]
  4. sec_level: [2x41 double]
  5. is_suspended: [2x41 double]
  6. multiplier: [2x41 double]
  7. margin_ratio: [2x41 double]
  8. settle_price: [2x41 double]
  9. position: [2x41 double]
  10. pre_close: [2x41 double]
  11. pre_settle: [2x41 double]
  12. upper_limit: [2x41 double]
  13. lower_limit: [2x41 double]
  14. adj_factor: [2x41 double]

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

获取到交易标的基本信息

函数原型:

  1. [ 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 查询字段,默认表示所有

示例

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

返回值:

  1. data =
  2. 'symbol' 'sec_type' 'exchange' 'sec_id' 'sec_name' 'price_tick' 'listed_date' 'delisted_date'
  3. 'SZSE.000001' [ 1] 'SZSE' '000001' '平安银行' [ 0.0100] '1991-04-02' '2037-12-31'

get_constituents - 查询指数成份股信息

函数原型:

  1. instruments = get_constituents(index, trade_date)

参数:

参数名 类型 说明
index char 指数代码
trade_date char 结束时间 (YY-MM-DD 格式)

示例

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

返回值

  1. instruments1 =
  2. 301×3 cell 数组
  3. {'created_at'} {'symbol' } {'weight'}
  4. {'2020-09-30'} {'SHSE.600999'} {[0.4900]}
  5. {'2020-09-30'} {'SHSE.601238'} {[0.0500]}
  6. {'2020-09-30'} {'SZSE.002241'} {[0.5600]}
  7. {'2020-09-30'} {'SZSE.002032'} {[0.0800]}
  8. {'2020-09-30'} {'SHSE.600362'} {[0.0900]}
  9. {'2020-09-30'} {'SHSE.600703'} {[0.3300]}
  10. {'2020-09-30'} {'SHSE.600585'} {[0.8100]}
  11. {'2020-09-30'} {'SHSE.601138'} {[0.1700]}
  12. {'2020-09-30'} {'SHSE.600221'} {[0.1200]}
  13. {'2020-09-30'} {'SHSE.600061'} {[0.1600]}
  14. {'2020-09-30'} {'SZSE.000977'} {[0.1900]}
  15. {'2020-09-30'} {'SZSE.002673'} {[0.1000]}
  16. {'2020-09-30'} {'SZSE.000876'} {[0.3600]}
  17. {'2020-09-30'} {'SHSE.600115'} {[0.1400]}
  18. {'2020-09-30'} {'SHSE.600741'} {[0.2400]}
  19. {'2020-09-30'} {'SHSE.601398'} {[1.0600]}
  20. {'2020-09-30'} {'SHSE.601186'} {[0.2300]}
  21. {'2020-09-30'} {'SHSE.600928'} {[0.0400]}
  22. {'2020-09-30'} {'SHSE.601888'} {[1.3300]}
  23. {'2020-09-30'} {'SZSE.002410'} {[0.4000]}
  24. ......

get_industry - 查询行业板块成分股

函数原型:

  1. [ data] = get_industry( code )

说明

参数名 类型 说明
code char 行业代码 不区分大小写(仅支持输入单一代码)

示例

  1. [ data] = get_industry( 'j6')

返回值

  1. data =
  2. 'SHSE.600000'
  3. 'SHSE.600016'
  4. 'SHSE.600030'
  5. 'SHSE.600036'
  6. 'SHSE.600053'
  7. 'SHSE.600061'
  8. 'SHSE.600109'
  9. 'SHSE.600155'
  10. 'SHSE.600291'
  11. 'SHSE.600318'
  12. ……

get_trading_dates - 查询交易日历表

函数原型:

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

说明

参数名 类型 说明
exchange char 见交易市场代码
start_date char 开始时间 (YY-MM-DD 格式)
end_date char 结束时间 (YY-MM-DD 格式)

示例

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

返回值

  1. data =
  2. datestr: {1x163 cell}
  3. datenum: [1x163 double]

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

get_previous_trading_date - 查询上一个交易日

函数原型:

  1. [ data ] = get_previous_trading_date( exchange, date )

说明

参数名 类型 说明
exchange char 见交易市场代码
start_date char 当前日期(YY-MM-DD 格式)

示例

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

返回值

  1. data =
  2. datestr: '2018-08-28'
  3. datenum: 7.3709e+05

get_next_trading_date - 查询下一个交易日

函数原型:

  1. [ data ] = get_next_trading_date(exchange, date)

示例

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

返回值

  1. data =
  2. datestr: '2018-09-02'
  3. datenum: 7.3706e+05

get_dividend - 查询分红送配信息

函数原型:

  1. = get_dividend(symbol, start_date, end_date=None)

示例

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

返回值

  1. data =
  2. 'SHSE.600000' [0.7570] [0] [ 0] [0] [0] '2015-06-22'
  3. 'SHSE.600000' [0.5150] [0] [0.1000] [0] [0] '2016-06-22'
  4. 'SHSE.600000' [0.2000] [0] [0.3000] [0] [0] '2017-05-24'
  5. 'SHSE.600000' [0.1000] [0] [ 0] [0] [0] '2018-07-12'

get_continuous_contracts - 获取主力连续合约

函数原型:

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

示例

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

返回值

  1. data =
  2. 'symbol' 'created_at'
  3. 'SHFE.ag1812' '2018-06-30'
  4. 'SHFE.ag1812' '2018-07-01'
  5. 'SHFE.ag1812' '2018-07-02'
  6. 'SHFE.ag1812' '2018-07-03'
  7. 'SHFE.ag1812' '2018-07-04'
  8. 'SHFE.ag1812' '2018-07-05'
  9. 'SHFE.ag1812' '2018-07-06'
  10. 'SHFE.ag1812' '2018-07-07'
  11. 'SHFE.ag1812' '2018-07-08'
  12. 'SHFE.ag1812' '2018-07-09'
  13. ……
0 篇笔记