返回介绍

开始入门

操作指引

SDK

数据文档

常见问题

量化工具

其他

其他

获取数据

发布于 2024-06-22 12:53:28 字数 21060 浏览 0 评论 0 收藏 0

bar数据结构说明

  • bar 数据采用结构体+二维矩阵形式存储,通过策略的全局变量 Context.data 获取或调用历史行情接口 history 获取
  • 数据矩阵的行索引为 symbols 字段
  • 列索引 eob 字段 函数原型
% 数据滑窗获取bar行情的频率为60s的close字段
Context.data.frequency_60s.close

字段描述

字段名类型描述
symbolscell标的代码
eobcell字符格式的 bar 结束时间点
eobnummat数字格式的 bar 结束时间点
openmat开盘价
highmat最高价
lowmat最低价
closemat收盘价
amountmat成交额
volumemat成交量
positionmat持仓量(仅期货)

示例

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

字段描述

字段名类型描述
symbolscell标的代码
opencell开盘价
highcell最高价
lowcell最低价
closecell收盘价
cumVolumecell成交总量/最新成交量,累计值
cumAmountcell成交总金额/最新成交额,累计值
tradeTypecell交易类型 1: ‘双开’, 2: ‘双平’, 3: ‘多开’, 4: ‘空开’, 5: ‘空平’, 6: ‘多平’, 7: ‘多换’, 8: ‘空换’
lastVolumecell瞬时成交量
cumPositioncell合约持仓量(期),累计值(股票此值为 0)
lastAmountcell瞬时成交额
createdAtcell创建时间
quotesstruct股票提供买卖 5 档数据, 包含买卖到五档行情

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

字段名类型描述
bidPricecell委买价五档
bidVolumecell委买量五档
askPricecell委卖价五档
askVolumecell委卖量五档

注意:

  • 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 订阅函数说明

参数名类型说明
symbolscell证券代码,cell 格式,支持一个或多个,如{'SZSE.000001'}
frequencychar实时订阅数据的频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’,回测历史数据支持任意频率
countmat数据滑窗的长度,正整数
wait_groupbool是否到齐方式驱动,仅对 bar 数据驱动生效;1 表示到齐后驱动,0 表示单个 bar 到达时驱动
wait_group_timeoutint在到齐方式驱动式,最大等待时间
unsubscribe_previousbool填入 true 表示取消前订阅,false 表示不取消,默认为取消前一次订阅

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

参数名类型说明
symbolscell证券代码,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 退订函数说明

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

示例:

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

current查询当前行情快照

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

函数原型:

data = current(symbols,fields)
参数名类型说明
symbolscell查询代码, 如{'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]

说明:

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

history查询固定时间历史行情

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

函数原型:

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

说明:

参数名类型说明
symbolscell查询代码, 如{'symbol1', 'symbol2'}
frequencychar频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’ 等, 默认 ‘1d’, 详情见股票行情数据和期货行情数据
start_timechar开始时间 (YY-MM-DD hh-mm-ss 格式),
end_timechar结束时间 (YY-MM-DD hh-mm-ss 格式)
adjustcharADJUST_NONE : 不复权, ADJUST_PREV : 前复权, ADJUST_POST : 后复权 默认不复权
adjust_end_timechar复权基点时间, 默认当前时间
skip_suspendedbool是否跳过停牌, 默认跳过(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)

说明:

参数名类型说明
symbolscell查询代码, 如{'symbol1', 'symbol2'}
frequencychar频率, 支持 ‘tick’, ‘1d’, ‘15s’, ‘30s’ 等, 默认 ‘1d’, 详情见股票行情数据和期货行情数据
countdouble获取数据的长度
end_timechar结束时间 (YY-MM-DD hh-mm-ss 格式)
adjustcharADJUST_NONE : 不复权, ADJUST_PREV : 前复权, ADJUST_POST : 后复权 默认不复权
adjust_end_timechar复权基点时间, 默认当前时间
skip_suspendedbool是否跳过停牌, 默认跳过(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 )

说明:

参数名类型说明
tablechar表名,只支持单表查询. 具体表名及 fields 字段参考 财务数据文档
symbolscell标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 ['symbol1', 'symbol2'] 这种列表格式
countchar每个股票数据的数量
end_datechar结束时间, (YY-MM-DD 格式)
fieldsstr查询字段 (必填)

示例

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)

说明:

参数名类型说明
symbolscell标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 ['symbol1', 'symbol2'] 这种列表格式
exchangeschar交易所代码, 多个交易所代码可用 ,(英文逗号)分割, NULL 表示所有
secTypesmat标的类型, 1: 股票, 2: 基金, 3: 指数, 4: 期货, 5: 期权, 8:可转债, 10: 期货连续合约,只能输入单个品种
fieldsint查询字段,默认表示所有

示例

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 )

说明:

参数名类型说明
symbolsstring标的代码, 多个代码可用 ,(英文逗号)分割,也支持 ['symbol1', 'symbol2'] 这种列表格式, 是必填参数
startDatechar开始时间 (YY-MM-DD 格式)
endDatechar结束时间 (YY-MM-DD 格式)
fieldscell查询字段,默认表示所有

示例

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

说明:

参数名类型说明
symbolscell标的代码, 多个代码可用 ,(英文逗号)分割, 也支持 ['symbol1', 'symbol2'] 这种列表格式
exchangeschar交易所代码, 多个交易所代码可用 ,(英文逗号)分割, NULL 表示所有
secTypesmat标的类型, 1: 股票, 2: 基金, 3: 指数, 4: 期货, 5: 期权, 8: 可转债, 10: 期货连续合约,只能输入单个品种
nameschar查询名称,默认所有名称字符
fieldsint查询字段,默认表示所有

示例

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

参数:

参数名类型说明
indexchar指数代码
trade_datechar结束时间 (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 )

说明

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

示例:

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

说明

参数名类型说明
exchangechar见交易市场代码
start_datechar开始时间 (YY-MM-DD 格式)
end_datechar结束时间 (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 )

说明

参数名类型说明
exchangechar见交易市场代码
start_datechar当前日期(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文