获取数据
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 == 1
data_event = Event.on_tick.data
……
end
时序数据获取
if Event.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)
% 初始化操作
if Event.Init.flag==1
set_symbols('SZSE.000001');
subscribe({}, '900s',60,1,1,10, true);
return
end
if 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'
……
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论