掘金量化—Python SDK文档—5.API 介绍(1)

Python SDK文档

5.API 介绍


5.1基本函数

init - 初始化策略

初始化策略, 策略启动时自动执行。可以在这里初始化策略配置参数。

函数原型:

init(context)

参数:

参数名类型说明
contextcontext上下文,全局变量可存储在这里

示例:

def init(context):
    # 订阅bar
    subscribe(symbols='SHSE.600000,SHSE.600004', frequency='30s', count=5)
	# 增加对象属性,如:设置一个股票资金占用百分比
	context.percentage_stock = 0.8

注意: 回测模式下init函数里不支持交易操作,仿真模式和实盘模式支持

schedule - 定时任务配置

在指定时间自动执行策略算法, 通常用于选股类型策略

函数原型:

schedule(schedule_func, date_rule, time_rule)

参数:

参数名类型说明
schedule_funcfunction策略定时执行算法
date_rulestrn + 时间单位, 可选'd/w/m' 表示 n 天/n 周/n 月
time_rulestr执行算法的具体时间 (%H:%M:%S 格式)

返回值:

None

示例:

def init(context):
    #每天的19:06:20执行策略algo_1
    schedule(schedule_func=algo_1, date_rule='1d', time_rule='19:06:20')
	#每月的第一个交易日的09:40:00执行策略algo_2
	schedule(schedule_func=algo_2, date_rule='1m', time_rule='9:40:00')

def algo_1(context):
    print(context.symbols)

def algo_2(context):
    order_volume(symbol='SHSE.600000', volume=200, side=OrderSide_Buy, order_type=OrderType_Market, position_effect=PositionEffect_Open)




注意:

1.time_rule 的时,分,秒均不可以只输入个位数,例:'9:40:0''14:5:0'

2.目前暂时支持1d1w1m,其中1w1m仅用于回测

run - 运行策略

函数原型:

run(strategy_id='', filename='', mode=MODE_UNKNOWN, token='', backtest_start_time='',
    backtest_end_time='', backtest_initial_cash=1000000,
    backtest_transaction_ratio=1, backtest_commission_ratio=0,
    backtest_slippage_ratio=0, backtest_adjust=ADJUST_NONE, backtest_check_cache=1,
    serv_addr='', backtest_match_mode=0)

参数:

参数名类型说明
strategy_idstr策略 id
filenamestr策略文件名称
modeint策略模式 MODE_LIVE(实时)=1 MODE_BACKTEST(回测) =2
tokenstr用户标识
backtest_start_timestr回测开始时间 (%Y-%m-%d %H:%M:%S 格式)
backtest_end_timestr回测结束时间 (%Y-%m-%d %H:%M:%S 格式)
backtest_initial_cashdouble回测初始资金, 默认 1000000
backtest_transaction_ratiodouble回测成交比例, 默认 1.0, 即下单 100%成交
backtest_commission_ratiodouble回测佣金比例, 默认 0
backtest_slippage_ratiodouble回测滑点比例, 默认 0
backtest_adjustint回测复权方式(默认不复权) ADJUST_NONE(不复权)=0 ADJUST_PREV(前复权)=1 ADJUST_POST(后复权)=2
backtest_check_cacheint回测是否使用缓存:1 - 使用, 0 - 不使用;默认使用
serv_addrstr终端服务地址, 默认本地地址, 可不填,若需指定应输入 ip+端口号,如"127.0.0.1:7001"
backtest_match_modeint回测市价撮合模式: 1-实时撮合:在当前 bar 的收盘价/当前 tick 的 price 撮合,0-延时撮合:在下个 bar 的开盘价/下个 tick 的 price 撮合,默认是模式 0

返回值:

None

示例:

run(strategy_id='strategy_1', filename='main.py', mode=MODE_BACKTEST, token='token_id',
    backtest_start_time='2016-06-17 13:00:00', backtest_end_time='2017-08-21 15:00:00')

注意: 

1. run 函数中,mode=1也可改为mode=MODE_LIVE,两者等价,backtest_adjust同理

2. backtest_start_time 和 backtest_end_time 中月,日,时,分,秒均可以只输入个位数,例:'2016-6-7 9:55:0''2017-8-1 14:6:0',但若对应位置为零,则 0 不可被省略,比如不能输入"2017-8-1 14:6: "

3. filename 指运行的 py 文件名字,如该策略文件名为 Strategy.py,则此处应填"Strategy.py"

stop - 停止策略

停止策略,退出策略进程

函数原型:

stop()

返回值:

None

示例:

#若订阅过的代码集合为空,停止策略
if not context.symbols:
   stop()

timer - 设置定时器

设定定时器的间隔秒数,每过设定好的秒数调用一次计时器 timer_func(),直到 timer_stop()结束定时器为止。 (仿真、实盘场景适用,回测模式下不生效)

函数原型:

timer(timer_func, period, start_delay)

参数:

参数名类型说明
timer_funcfunction在 timer 设置的时间到达时触发的事件函数
periodint定时事件间隔毫秒数,设定每隔多少毫秒触发一次定时器,范围在 [1,43200000]
start_delayint等待秒数(毫秒),设定多少毫秒后启动定时器,范围在[0,43200000]

返回值: dict

字段类型说明
timer_statusint定时器设置是否成功,成功=0,失败=非 0 错误码(timer_id 无效)。
timer_idint设定好的定时器 id

#timer_stop - 停止定时器

停止已设置的定时器

函数原型:

timer_stop(timer_id)

复制成功

参数:

字段类型说明
timer_idint要停止的定时器 id

返回值:

字段类型说明
is_stopbool是否成功停止,True or False

示例:

def init(context):
    # 每隔1分钟执行ontime_1, 即时启动
    context.timerid_1 = timer(timer_func=ontimer_1, period=60000, start_delay=0)
    context.counter_1 = 0

    # 每隔半小时执行ontime_2, 5分钟之后启动
    context.timerid_2 = timer(timer_func=ontimer_2, period=300000, start_delay=0)
    print('启动定时器2:', context.now)
    context.counter_2 = 0


def ontimer_1(context):
    # 定时器执行次数计数
    context.counter_1 += 1
    # 定时器执行逻辑
    print('定时器1:', context.now)


def ontimer_2(context):
    # 定时器执行次数计数
    context.counter_2 += 1
    # 定时器执行逻辑(如查询账户资金)
    cash = context.account().cash

    print('定时器2:', context.now)

    # 按执行次数条件停止定时器
    if context.counter_1 >= 5:
        ret1 = timer_stop(context.timerid_1['timer_id'])
        if ret1:
            print("结束1分钟定时器")

    if context.counter_2 >= 10:
        ret2 = timer_stop(context.timerid_2['timer_id'])

注意:

  1. 仿真、实盘场景适用,回测模式下不生效
  2. period 从前一次事件函数开始执行时点起算,若下一次事件函数需要执行时,前一次事件函数没运行完毕,等待上一个事件执行完毕再执行下一个事件。

5.2数据订阅

subscribe - 行情订阅

订阅行情, 可以指定 symbol, 数据滑窗大小, 以及是否需要等待全部代码的数据到齐再触发事件。

函数原型:

subscribe(symbols, frequency='1d', count=1, unsubscribe_previous=False)

参数:

参数名类型说明
symbolsstr or list订阅标的代码, 注意大小写,支持字串格式,如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 ['symbol1', 'symbol2'] 这种列表格式
frequencystr频率, 支持 'tick', '60s', '300s', '900s' 等, 默认'1d', 详情见股票行情数据和期货行情数据, 实时行情支持的频率
countint订阅数据滑窗大小, 默认1 ,详情见数据滑窗
unsubscribe_previousbool是否取消过去订阅的 symbols, 默认False不取消, 输入True则取消所有原来的订阅。

返回值:

None

示例:

def init(context):
    subscribe(symbols='SHSE.600519', frequency='60s', count=2)

def on_bar(context,bars):
    data = context.data(symbol='SHSE.600519', frequency='60s', count=1)

注意:

  1. subscribe 支持多次调用,并可以重复订阅同一代码。订阅后的数据储存在本地,需要通过 context.data 接口调用或是直接在 on_tick 或 on_bar 中获取。

  2. 在实时模式下,最新返回的数据是不复权的。

unsubscribe - 取消订阅

取消行情订阅, 默认取消所有已订阅行情

函数原型:

unsubscribe(symbols='*', frequency='60s')

参数:

参数名类型说明
symbolsstr or list订阅标的代码, 支持字串格式,如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 ['symbol1', 'symbol2'] 这种列表格式
frequencystr频率, 支持 'tick', '60s', '300s', '900s' 等, 默认'1d', 详情见股票行情数据和期货行情数据, 实时行情支持的频率

返回值:

None

示例:

unsubscribe(symbols='SHSE.600000,SHSE.600004', frequency='60s')

注意: 如示例所示代码,取消SHSE.600000,SHSE.600004两只代码60s行情的订阅,若SHSE.600000同时还订阅了"300s"频度的行情,该代码不会取消该标的此频度的订阅


5.3数据事件

数据事件是阻塞回调事件函数,通过 subscribe 函数订阅, 主动推送

on_tick - tick 数据推送事件

接收 tick 分笔数据, 通过 subscribe 订阅 tick 行情,行情服务主动推送 tick 数据

函数原型:

on_tick(context, tick)

参数:

参数名类型说明
contextcontext 对象上下文
ticktick 对象当前被推送的 tick

示例:

def on_tick(context, tick):
    print(tick)

输出:

{'symbol': 'SHSE.600519', 'created_at': datetime.datetime(2020, 9, 2, 14, 7, 23, 620000, tzinfo=tzfile('PRC')), 'price': 1798.8800048828125, 'open': 1825.0, 'high': 1828.0, 'low': 1770.0, 'cum_volume': 2651191, 'cum_amount': 4760586491.0, 'cum_position': 0, 'last_amount': 179888.0, 'last_volume': 100, 'trade_type': 0, 'receive_local_time': 1602751345.262745}

on_bar - bar 数据推送事件

接收固定周期 bar 数据, 通过 subscribe 订阅 bar 行情,行情服务主动推送 bar 数据

函数原型:

on_bar(context, bars)

参数:

参数名类型说明
contextcontext 对象上下文对象
barslist(bar当前被推送的 bar 列表

示例:

def on_bar(context, bars):
    for bar in bars:
        print(bar)

输出:

{'symbol': 'SHSE.600519', 'eob': datetime.datetime(2020, 9, 30, 15, 15, 1, tzinfo=tzfile('PRC')), 'bob': datetime.datetime(2020, 9, 30, 0, 0, tzinfo=tzfile('PRC')), 'open': 1660.0, 'close': 1668.5, 'high': 1691.9000244140625, 'low': 1660.0, 'volume': 2708781, 'amount': 4536012540.0, 'pre_close': 1652.2999267578125, 'position': 0, 'frequency': '1d', 'receive_local_time': 1602751647.923199}

注意:

1. 若在 subscribe 函数中订阅了多个标的的 bar,但 wait_group 参数值为 False,则多次触发 On_bar,每次返回只包含单个标的 list 长度为 1 的 bars;若参数值为 True,则只会触发一次 On_bar,返回包含多个标的的 bars。

2. bar 在本周期结束时间后才会推送,标的在这个周期内无交易则不推送 bar。

on_l2transaction - 逐笔成交事件

接收逐笔成交数据(L2 行情时有效) 仅特定券商版本可用 函数原型:

on_l2transaction(context, transaction)

参数:

参数名类型说明
contextcontext 对象上下文对象
transactionL2Transaction 对象收到的逐笔成交行情

示例:

def on_l2transaction(context, transaction):
    print(transaction)

输出:

{'symbol': 'SZSE.300003', 'volume': 300, 'created_at': datetime.datetime(2020, 11, 24, 9, 38, 16, 50, tzinfo=tzfile('PRC')), 'exec_type': '4', 'side': '', 'price': 0.0}

on_l2order - 逐笔委托事件

接收逐笔委托数据(深交所 L2 行情时有效) 仅特定券商版本可用 函数原型:

on_l2order(context, l2order)

参数:

参数名类型说明
contextcontext 对象上下文对象
l2orderL2Order 对象收到的逐笔委托行情

示例:

def on_l2order(context, l2order):
    print(l2order)

输出:

{'symbol': 'SZSE.300003', 'side': '1', 'price': 29.350000381469727, 'volume': 2400, 'created_at': datetime.datetime(2020, 11, 24, 9, 38, 16, 80, tzinfo=tzfile('PRC')), 'order_type': '2'}


5.4行情数据查询函数

current - 查询当前行情快照

查询当前行情快照,返回 tick 数据。实时模式,返回当前最新 tick 数据,回测模式,返回回测当前时间点的最近一分钟的收盘价

函数原型:

current(symbols, fields='')

参数:

参数名类型说明
symbolsstr or list查询代码,如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 ['symbol1', 'symbol2'] 这种列表格式 ,使用参考symbol
fieldsstr查询字段, 默认所有字段 具体字段见:Tick 对象

返回值: list[dict]

示例:

current_data = current(symbols='SZSE.000001')

输出:

[{'symbol': 'SZSE.000001', 'open': 16.200000762939453, 'high': 16.920000076293945, 'low': 16.149999618530273, 'price': 16.559999465942383, 'quotes': [{'bid_p': 16.549999237060547, 'bid_v': 209200, 'ask_p': 16.559999465942383, 'ask_v': 296455}, {'bid_p': 16.540000915527344, 'bid_v': 188900, 'ask_p': 16.56999969482422, 'ask_v': 374405}, {'bid_p': 16.530000686645508, 'bid_v': 44900, 'ask_p': 16.579999923706055, 'ask_v': 187220}, {'bid_p': 16.520000457763672, 'bid_v': 20800, 'ask_p': 16.59000015258789, 'ask_v': 102622}, {'bid_p': 16.510000228881836, 'bid_v': 37700, 'ask_p': 16.600000381469727, 'ask_v': 337002}], 'cum_volume': 160006232, 'cum_amount': 2654379585.66, 'last_amount': 14153832.0, 'last_volume': 854700, 'trade_type': 7, 'created_at': datetime.datetime(2020, 10, 15, 15, 0, 3, tzinfo=tzfile('PRC'))}]

注意:

1. 若输入包含无效标的代码,则返回的列表只包含有效标的代码对应的dict

2. 若输入代码正确,但查询字段中包括错误字段,返回的列表仍包含对应数量的dict,但每个dict中除有效字段外,其他字段的值均为空字符串/0

3. 回测只返回 symbol、price 和 created_at 字段,实时模式返回全部字段

4. 实时模式无法获取集合竞价的数据,可使用 history_n

history - 查询历史行情

函数原型:

history(symbol, frequency, start_time, end_time, fields=None, skip_suspended=True,
        fill_missing=None, adjust=ADJUST_NONE, adjust_end_time='', df=True)

参数:

参数名类型说明
symbolstr or list标的代码, 如有多个代码, 中间用 , (英文逗号) 隔开, 也支持 ['symbol1', 'symbol2'] 这种列表格式 ,使用参考symbol
frequencystr频率, 支持 'tick', '1d', '60s' 等, 默认 '1d', 详情见股票行情数据和期货行情数据, 实时行情支持的频率
start_timestr or datetime.datetime开始时间 (%Y-%m-%d %H:%M:%S 格式), 也支持 datetime.datetime 格式
end_timestr or datetime.datetime结束时间 (%Y-%m-%d %H:%M:%S 格式), 也支持 datetime.datetime 格式
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有, 具体字段见:tick 对象 和 bar 对象
skip_suspendedbool是否跳过停牌, 默认跳过
fill_missingstr or None填充方式, None - 不填充, 'NaN' - 用空值填充, 'Last' - 用上一个值填充, 默认 None
adjustintADJUST_NONE or 0: 不复权ADJUST_PREV or 1: 前复权ADJUST_POST or 2: 后复权 默认不复权 , 目前只支持股票
adjust_end_timestr复权基点时间, 默认当前时间
dfbool是否返回 dataframe 格式, 默认 False, 返回 list[dict]

返回值:参考tick 对象 和 bar 对象。

当 df = True 时, 返回

类型说明
dataframetick 的 dataframe 或者 bar 的 dataframe

示例:

history_data = history(symbol='SHSE.000300', frequency='1d', start_time='2010-07-28',  end_time='2017-07-30', fields='open, close, low, high, eob', adjust=ADJUST_PREV, df= True)

输出:

          open      close        low       high                       eob
0     2796.4829  2863.7241  2784.1550  2866.4041 2010-07-28 00:00:00+08:00
1     2866.7720  2877.9761  2851.9961  2888.5991 2010-07-29 00:00:00+08:00
2     2871.4810  2868.8459  2844.6819  2876.1360 2010-07-30 00:00:00+08:00
3     2868.2791  2917.2749  2867.4500  2922.6121 2010-08-02 00:00:00+08:00
4     2925.2539  2865.9709  2865.7610  2929.6140 2010-08-03 00:00:00+08:00

当 df = False 时, 返回

类型说明
listtick 列表 或者 bar 列表

注意:

history_data = history(symbol='SHSE.000300', frequency='1d', start_time='2017-07-30',  end_time='2017-07-31', fields='open, close, low, high, eob', adjust=ADJUST_PREV, df=False)

输出:

[{'open': 3722.42822265625, 'close': 3737.873291015625, 'low': 3713.655029296875, 'high': 3746.520751953125, 'eob': datetime.datetime(2017, 7, 31, 0, 0, tzinfo=tzfile('PRC'))}]

1. 返回的list/DataFrame是以参数eob/bob的升序来排序的,若要获取多标的的数据,通常需进一步的数据处理来分别提取出每只标的的历史数据

2. start_time 和 end_time 中月,日,时,分,秒均可以只输入个位数,例:'2010-7-8 9:40:0''2017-7-30 12:3:0',但若对应位置为零,则0不可被省略,如不可输入'2017-7-30 12:3: ' 获取数据目前采用前后闭区间的方式,即会获取前后两个时间节点的数据,使用时务必注意这点

3. 若输入无效标的代码,返回空列表/空DataFrame

4. 若输入代码正确,但查询字段包含无效字段,返回的列表、DataFrame 只包含 eob、symbol和输入的其他有效字段

5. skip_suspended 和 fill_missing 参数暂不支持

6. 单次返回数据量最大返回 33000, 超出部分不返回

7. start_time 和 end_time 输入不存在日期时,会报错 details = "failed to parse datetime"


history_n - 查询历史行情最新 n 条

函数原型:

history_n(symbol, frequency, count, end_time=None, fields=None, skip_suspended=True,
          fill_missing=None, adjust=ADJUST_NONE, adjust_end_time='', df=False)

参数:

参数名类型说明
symbolstr标的代码(只允许单个标的的代码字符串),使用时参考symbol
frequencystr频率, 支持 'tick', '1d', '60s' 等, 默认 '1d', 详情见股票行情数据和期货行情数据, 实时行情支持的频率
countint数量(正整数)
end_timestr or datetime.datetime结束时间 (%Y-%m-%d %H:%M:%S 格式), 也支持 datetime.datetime 格式,默认 None 时,用了实际当前时间,非回测当前时间
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有, 具体字段见:tick 对象 和 bar 对象
skip_suspendedbool是否跳过停牌, 默认跳过
fill_missingstr or None填充方式, None - 不填充, 'NaN' - 用空值填充, 'Last' - 用上一个值填充, 默认 None
adjustintADJUST_NONE or 0: 不复权ADJUST_PREV or 1: 前复权ADJUST_POST or 2: 后复权 默认不复权 , 目前只支持股票
adjust_end_timestr复权基点时间, 默认当前时间
dfbool是否返回 dataframe 格式, 默认 False, 返回 list[dict]

返回值:参考tick 对象 和 bar 对象。

当 df = True 时,返回

类型说明
dataframetick 的 dataframe 或者 bar 的 dataframe

示例:

history_n_data = history_n(symbol='SHSE.600519', frequency='1d', count=100, end_time='2020-10-20 15:30:00', fields='symbol, open, close, low, high, eob', adjust=ADJUST_PREV, df=True)

输出:

 symbol       open  ...       high                       eob
0   SHSE.600519  1350.2278  ...  1350.3265 2020-05-22 00:00:00+08:00
1   SHSE.600519  1314.6434  ...  1350.8010 2020-05-25 00:00:00+08:00
2   SHSE.600519  1354.0629  ...  1354.1321 2020-05-26 00:00:00+08:00
3   SHSE.600519  1343.3086  ...  1344.2970 2020-05-27 00:00:00+08:00
4   SHSE.600519  1322.5214  ...  1331.3878 2020-05-28 00:00:00+08:00

当 df = False 时, 返回

类型说明
listtick 列表 或者 bar 列表

示例:

history_n_data = history_n(symbol='SHSE.600519', frequency='1d', count=2, end_time='2020-10-20 15:30:00', fields='symbol, open, close, low, high, eob', adjust=ADJUST_PREV, df=False)

输出:

[{'symbol': 'SHSE.600519', 'open': 1725.0, 'close': 1699.0, 'low': 1691.9000244140625, 'high': 1733.97998046875, 'eob': datetime.datetime(2020, 10, 19, 0, 0, tzinfo=tzfile('PRC'))}, {'symbol': 'SHSE.600519', 'open': 1699.989990234375, 'close': 1734.0, 'low': 1695.0, 'high': 1734.969970703125, 'eob': datetime.datetime(2020, 10, 20, 0, 0, tzinfo=tzfile('PRC'))}]

注意:

1. 返回的list/DataFrame是以参数eob/bob的升序来排序的

2. 若输入无效标的代码,返回空列表/空DataFrame

3. 若输入代码正确,但查询字段包含无效字段,返回的列表、DataFrame 只包含 eob、symbol和输入的其他有效字段

4. end_time 中月,日,时,分,秒均可以只输入个位数,例:'2017-7-30 20:0:20',但若对应位置为零,则0不可被省略,如不可输入'2017-7-30 20: :20'

5. skip_suspended 和 fill_missing 参数暂不支持

6. 单次返回数据量最大返回 33000, 超出部分不返回

7. end_time 输入不存在日期时,会报错 details = "Can't parse string as time: 2020-10-40 15:30:00"


context.data - 查询订阅数据

函数原型:

context.data(symbol, frequency, count)

参数:

参数名类型说明
symbolstr标的代码(只允许单个标的的代码字符串),使用时参考symbol
frequencystr频率, 支持 'tick', '1d', '60s' 等, 默认 '1d', 详情见股票行情数据和期货行情数据, 实时行情支持的频率
countint滑窗大小(正整数),需小于等于 subscribe 函数中 count 值
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有, 具体字段见:tick 对象 和 bar 对象

返回值:参考tick 对象 和 bar 对象。

类型说明
dataframetick 的 dataframe 或者 bar 的 dataframe

示例:

def init(context):
    subscribe(symbols='SHSE.600519', frequency='60s', count=2)

def on_bar(context,bars):
    data = context.data(symbol='SHSE.600519', frequency='60s', count=1)

输出:

        symbol	         eob	                           bob	          open	 close	 high	     low	     amount    pre_close	position	frequency	volume
0	SHSE.600519	2020-12-21 09:31:00+08:00	2020-12-21 09:30:00+08:00	1840	1845.5	1845.5	1838.199951	210503484	  0	        0	      60s	  114365

注意:

1. 只有在订阅后,此接口才能取到数据,如未订阅数据,则返回值为空。 

2. symbols 参数只支持输入一个标的。 

3. count 参数必须小于或等于订阅函数里面的 count 值

get_history_l2ticks - 查询历史 L2 Tick 行情

仅特定券商版本可用

函数原型:

 get_history_l2ticks(symbols, start_time, end_time, fields=None,skip_suspended=True, fill_missing=None,adjust=ADJUST_NONE, adjust_end_time='', df=False)

参数:

参数名类型说明
symbolsstr标的代码,使用时参考symbol
start_timestr开始时间 (%Y-%m-%d %H:%M:%S 格式)
end_timestr结束时间 (%Y-%m-%d %H:%M:%S 格式)
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有
skip_suspendedbool是否跳过停牌, 默认跳过
fill_missingstr or None填充方式, None - 不填充, 'NaN' - 用空值填充, 'Last' - 用上一个值填充, 默认 None
adjustintADJUST_NONE or 0: 不复权ADJUST_PREV or 1: 前复权ADJUST_POST or 2: 后复权 默认不复权
adjust_end_timestr复权基点时间, 默认当前时间
dfbool是否返回 dataframe 格式, 默认 False

返回值:参考Tick 对象

当 df = True 时, 返回dataframe

当 df = Falst, 返回list 示例:

history_l2tick=get_history_l2ticks('SHSE.600519', '2020-11-23 14:00:00', '2020-11-23 15:00:00', fields=None,
                        skip_suspended=True, fill_missing=None,
                        adjust=ADJUST_NONE, adjust_end_time='', df=False)
print(history_l2tick[0])

输出:

{'symbol': 'SHSE.600519', 'open': 1771.010009765625, 'high': 1809.9000244140625, 'low': 1771.010009765625, 'price': 1791.0999755859375, 'quotes': [{'bid_p': 1790.8800048828125, 'bid_v': 100, 'ask_p': 1794.760009765625, 'ask_v': 200}, {'bid_p': 1790.80004882812
5, 'bid_v': 123, 'ask_p': 1794.800048828125, 'ask_v': 100}, {'bid_p': 1790.699951171875, 'bid_v': 100, 'ask_p': 1794.8800048828125, 'ask_v': 416}, {'bid_p': 1790.68994140625, 'bid_v': 200, 'ask_p': 1794.8900146484375, 'ask_v': 300}, {'bid_p': 1790.630004882812
5, 'bid_v': 300, 'ask_p': 1794.9000244140625, 'ask_v': 1000}, {'bid_p': 1790.6199951171875, 'bid_v': 500, 'ask_p': 1794.949951171875, 'ask_v': 300}, {'bid_p': 1790.6099853515625, 'bid_v': 300, 'ask_p': 1794.9599609375, 'ask_v': 300}, {'bid_p': 1790.59997558593
75, 'bid_v': 200, 'ask_p': 1794.97998046875, 'ask_v': 100}, {'bid_p': 1790.510009765625, 'bid_v': 314, 'ask_p': 1794.989990234375, 'ask_v': 200}, {'bid_p': 1790.5, 'bid_v': 4200, 'ask_p': 1795.0, 'ask_v': 9700}], 'cum_volume': 5866796, 'cum_amount': 1049949547
1.0, 'last_amount': 1973854.0, 'last_volume': 1100, 'created_at': datetime.datetime(2020, 11, 23, 14, 0, 2, tzinfo=tzfile('PRC')), 'cum_position': 0, 'trade_type': 0}

注意:get_history_l2ticks接口每次只能提取一天的数据, 如果取数时间超过一天,则返回按照结束时间的最近有一个交易日数据, 如果取数时间段超过 1 个自然月(31)天,则获取不到数据

get_history_l2bars - 查询历史 L2 Bar 行情

仅特定券商版本可用

函数原型:

 get_history_l2bars(symbols, frequency, start_time, end_time, fields=None,skip_suspended=True, fill_missing=None,adjust=ADJUST_NONE, adjust_end_time='', df=False)

参数:

参数名类型说明
symbolsstr标的代码,使用时参考symbol
frequencystr频率, 支持 '1d', '60s'等
start_timestr开始时间 (%Y-%m-%d %H:%M:%S 格式)
end_timestr结束时间 (%Y-%m-%d %H:%M:%S 格式)
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有
skip_suspendedbool是否跳过停牌, 默认跳过
fill_missingstr or None填充方式, None - 不填充, 'NaN' - 用空值填充, 'Last' - 用上一个值填充, 默认 None
adjustintADJUST_NONE or 0: 不复权ADJUST_PREV or 1: 前复权ADJUST_POST or 2: 后复权 默认不复权
adjust_end_timestr复权基点时间, 默认当前时间
dfbool是否返回 dataframe 格式, 默认 False

返回值:参考Bar 对象。

当 df = True 时, 返回dataframe

当 df = Falst, 返回list

示例:

history_l2bar=get_history_l2bars('SHSE.600000', '60s', '2020-11-23 14:00:00', '2020-11-23 15:00:00', fields=None,
								skip_suspended=True, fill_missing=None,
								adjust=ADJUST_NONE, adjust_end_time='', df=False)
print(history_l2bar[0])

输出:

{'symbol': 'SHSE.600000', 'frequency': '60s', 'open': 9.90999984741211, 'high': 9.90999984741211, 'low': 9.890000343322754, 'close': 9.899999618530273, 'volume': 1270526, 'amount': 12574276.0, 'bob': datetime.datetime(2020, 11, 23, 14, 0, tzinfo=tzfile('PRC'))
, 'eob': datetime.datetime(2020, 11, 23, 14, 1, tzinfo=tzfile('PRC')), 'position': 0, 'pre_close': 0.0}

注意: 1. get_history_l2bars接口每次最多可提取 1 个自然月(31)天的数据如:2015.1.1-2015.1.31 错误设置:(2015.1.1-2015.2.1)超出 31 天则获取不到任何数据

get_history_l2transactions - 查询历史 L2 逐笔成交

仅特定券商版本可用

函数原型:

 get_history_l2transactions(symbols, start_time, end_time, fields=None, df=False)

参数:

参数名类型说明
symbolsstr标的代码,使用时参考symbol
start_timestr开始时间 (%Y-%m-%d %H:%M:%S 格式)
end_timestr结束时间 (%Y-%m-%d %H:%M:%S 格式)
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有
dfbool是否返回 dataframe 格式, 默认 False

返回值:参考level2 逐笔成交数据

当 df = True 时, 返回dataframe

当 df = Falst, 返回list

示例:

history_transactions=get_history_l2transactions('SHSE.600000', '2020-11-23 14:00:00', '2020-11-23 15:00:00', fields=None, df=False)
print(history_transactions[0])

输出:

{'symbol': 'SHSE.600000', 'side': 'B', 'price': 9.90999984741211, 'volume': 100, 'created_at': datetime.datetime(2020, 11, 23, 14, 0, 0, 820000, tzinfo=tzfile('PRC')), 'exec_type': ''}

注意: 1. get_history_l2transactions接口每次只能提取一天的数据, 如果取数时间超过一天,则返回按照开始时间的最近有一个交易日数据

get_history_l2orders - 查询历史 L2 逐笔委托

仅特定券商版本可用 注意: 仅深市标的可用

函数原型:

 get_history_l2orders(symbols, start_time, end_time, fields=None, df=False)

参数:

参数名类型说明
symbolsstr标的代码,使用时参考symbol
start_timestr开始时间 (%Y-%m-%d %H:%M:%S 格式)
end_timestr结束时间 (%Y-%m-%d %H:%M:%S 格式)
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有
dfbool是否返回 dataframe 格式, 默认 False

返回值:参考level2 逐笔委托数据

当 df = True 时, 返回dataframe

当 df = Falst, 返回list

示例:

history_order=get_history_l2orders('SZSE.000001', '2020-11-23 14:00:00', '2020-11-23 15:00:00', fields=None, df=False)
print(history_order[0])

输出:

{'symbol': 'SZSE.000001', 'side': '1', 'price': 19.520000457763672, 'volume': 200, 'created_at': datetime.datetime(2020, 11, 23, 14, 0, 0, 110000, tzinfo=tzfile('PRC')), 'order_type': '2'}

注意: 1. get_history_l2orders接口每次只能提取一天的数据, 如果取数时间超过一天,则返回按照开始时间的最近有一个交易日数据

get_history_l2orders_queue - 查询历史 L2 委托队列

仅特定券商版本可用

函数原型:

 get_history_l2orders_queue(symbols, start_time, end_time, fields=None, df=False)

参数:

参数名类型说明
symbolsstr标的代码,使用时参考symbol
start_timestr开始时间 (%Y-%m-%d %H:%M:%S 格式)
end_timestr结束时间 (%Y-%m-%d %H:%M:%S 格式)
fieldsstr指定返回对象字段, 如有多个字段, 中间用, 隔开, 默认所有
dfbool是否返回 dataframe 格式, 默认 False

返回值:参考 level2 委托队列据

当 df = True 时, 返回dataframe

当 df = Falst, 返回list

示例:

history_order_queue=get_history_l2orders_queue('SHSE.600000', '2020-11-23 14:00:00', '2020-11-23 15:00:00', fields=None, df=False)
print(history_order_queue[0])

输出:

{'symbol': 'SHSE.600000', 'price': 9.90999984741211, 'total_orders': 155, 'queue_orders': 50, 'queue_volumes': [52452, 600, 1200, 3200, 10000, 1800, 1000, 300, 10000, 2000, 500, 500, 2000, 1000, 2000, 300, 1200, 1400, 1000, 200, 1000, 100, 500, 1000, 500, 2380
0, 25400, 1000, 2000, 200, 500, 1200, 5000, 2000, 17600, 5000, 1000, 1300, 1000, 1200, 1000, 3000, 1000, 1000, 15000, 400, 15000, 5000, 2000, 10000], 'created_at': datetime.datetime(2020, 11, 23, 14, 0, 1, tzinfo=tzfile('PRC')), 'side': '', 'volume': 0}

注意: 1. get_history_l2orders_queue接口每次只能提取一天的数据, 如果取数时间超过一天,则返回按照开始时间的最近有一个交易日数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/40545.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue(html,css,vue2,vue3) 学习总结

文章目录 小白 Vue 3 学习一些名词软件安装 VSCode 中的一些设置1. 关闭eslint检查tsconfig.json 配置文件2. ts 文件引用报红 相对路径写法常见图片格式和区别目录结构JS/TS1. prototype(原型对象)2. 导入/导出3. 去除字符串两端空格4. 一些特殊语法糖5. 深拷贝6. 拼接两个数组…

【java爬虫】使用selenium获取某宝联盟淘口令

上一篇文章我们已经介绍过使用selenium获取优惠券基本信息的方法 (15条消息) 【java爬虫】使用selenium爬取优惠券_haohulala的博客-CSDN博客 本文将在上一篇文章的基础上更进一步,获取每个优惠券的淘口令,毕竟我们只有复制淘口令才能在APP里面获取优惠…

基于ChatGPT和私有知识库搭建Quivr项目

准备工作 安装docker和docker-compose申请supabase账号 拉取Quivr代码 git clone https://github.com/StanGirard/Quivr.git 复制.XXXXX_env文件 cp .backend_env.example backend/.env cp .frontend_env.example frontend/.env 更新backend/.env和frontend/.env文件 ba…

【hadoop】部署hadoop全分布模式

hadoop全分布模式 全分布模式特点部署全分布模式准备工作正式配置hadoop-env.shhdfs-site.xmlcore-site.xmlmapred-site.xmlyarn-site.xmlslaves对NameNode进行格式化复制到另外两台虚拟机启动 对部署是否成功进行测试 全分布模式特点 真正的分布式环境,用于生产具…

java学习003

Java数组 Java 语言中提供的数组是用来存储固定大小的同类型元素,这一点和PHP语言的可变数组长度不同。 声明变量数组 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[] arrayRefVar; // 首选的方法 或 …

2023-07-18力扣今日二题-太难了吧

链接: LCP 75. 传送卷轴 题意: 给一个正方形迷宫,主角是A,每次可以上下左右走一格子,有四种类型的格子:墙、初始位置、魔法水晶、空地 另一个人B,可以传送一次A,只能在空地传送&…

017 - STM32学习笔记 - SPI读写FLASH(二)-flash数据写入与读取

016 - STM32学习笔记 - SPI访问Flash(二) 上节内容学习了通过SPI读取FLASH的JEDEC_ID,在flash资料的指令表中,还看到有很多指令可以使用,这节继续学习使用其他指令,程序模板采用上节的模板。 为了方便起…

基于深度学习的高精度线路板瑕疵目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度线路板瑕疵目标检测系统可用于日常生活中来检测与定位线路板瑕疵目标,利用深度学习算法可实现图片、视频、摄像头等方式的线路板瑕疵目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址

目录 arp协议 arp病毒\欺骗 arp病毒的运行原理 arp病毒产生的后果: 解决方法: ICMP协议 ICMP用在哪里? ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后,还要加一个ip包头,再使用ip协议再次进…

Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

国赛线下开赛!全国智能车百度智慧交通创意组区域赛今日正式拉开帷幕!

“全国大学生智能汽车竞赛”是教育部倡导的大学生科技A类竞赛,中国高等教育学会将其列为含金量最高的大学生竞赛之一,为《全国普通高校大学生竞赛排行榜》榜单内赛事。飞桨共承办了百度完全模型组和百度智慧交通组两大赛道。全国大学生智能汽车竞赛百度智…

SpringBoot(七)Filter的使用

思考一个问题,服务端对于客户端的请求,真的应该照单全收吗?不是的。比如拿我们之前实现的用户注册功能来看,如果用户的昵称带了一些不友好的字母或汉字,你是给他过滤掉呢还是让他注册呢?毫无疑问&#xff0…

HTTP 请求走私漏洞(HTTP Request Smuggling)

一、什么是Http 请求走私漏洞? HTTP请求走私漏洞(HTTP Request Smuggling)是一种安全漏洞,利用了HTTP协议中请求和响应的解析和处理方式的不一致性。攻击者通过构造特定的恶意请求,以欺骗服务器和代理服务器&#xff0…

五、DQL-2.基本查询

一、数据准备 1、删除表employee: drop table employee; 2、创建表emp: 3、添加数据: 4、查看表数据: 【代码】 -- 查询数据--------------------------------------------------------- drop table emp;-- 数据准备-----------…

Ubuntu 的安装及其设置

文章目录 安装 Ubuntu屏幕分辨率设置修改软件源服务器锁屏时间设置设置 dash跨系统拖拽复制文件的设置 安装 Ubuntu 首先安装 VMware 虚拟机,虚拟机的安装比较简单,一步步点击Next即可完成安装。 安装完成后启动虚拟机,点击创建新的虚拟机。…

个人博客系统(二)

该博客系统共有八个页面,即注册页面、登录页面、添加文章页面、修改文章页面、我的博客列表页面、主页、查看文章详情页面、个人中心页面。 1 注册页面 该页面如图所示: 首先,要先判断注册的用户名、密码、确认密码以及验证码是否为空,若有一个为空,点击提交,则会提醒 …

“探索图像处理的奥秘:使用Python和OpenCV进行图像和视频处理“

1、上传图片移除背景后下载。在线抠图软件_图片去除背景 | remove.bg – remove.bg 2、对下载的图片放大2倍。ClipDrop - Image upscaler 3、对放大后的下载照片进行编辑。 4、使用deepfacelive进行换脸。 1)将第三步的照片复制到指定文件夹。C:\myApp\deepfakeliv…

MFC第十六天 CFileDialog、CEdit简介、(线程)进程的启动,以及Notepad的开发(托盘技术-->菜单功能)

文章目录 CCommonDialogCFileDialogCEdit托盘技术进程的启动附录1:启动线程方式附录2:MFC对话框的退出过程 CCommonDialog 通用对话框 CCommonDialog 这些对话框类封装 Windows 公共对话框。 它们提供了易于使用的复杂对话框实现。 CFileDialog 提供用于打开或保存文件的标准对…

【前端】自制密码展示隐藏按钮

效果 一、前期准备 使用的图片是iconfront上拿的svg代码环境是Vue2 Element 二、创建组件 showPasswordAndclose <template><span class"show-password-container"><span v-if"chooseType CLOSE" click"changeType"><…

手机图片怎么转pdf格式?这几个图片转换方式了解一下

手机图片怎么转pdf格式&#xff1f;将图片转换为PDF的应用场景非常广泛。例如&#xff0c;你可以将多张照片转换为PDF&#xff0c;然后将其作为一本电子相册保存。你也可以将多张图片转换为PDF&#xff0c;然后将其作为一份报告或文档的附件发送给他人。此外&#xff0c;许多人…