# history_bars 某一合约历史数据

history_bars(order_book_id, bar_count, frequency, fields, skip_suspended, include_now, adjusted_price)

参数
参数 类型 说明
order_book_id str 合约代码,必填项
bar_count int 获取的历史数据数量,必填项
frequency str 指定获取数据周期类型,必填项。
类型标识如下:
 日线:'d'
 分钟:'m'
 秒线:'s'
 取当前设置周期:'self'
 分笔线:'tick'
 周线:'week'
 月线:'month'
 季度线:'quarter'
 半年线:'halfyear'
 年线:'year'
 等价线:'j'
 等量线:'L'
例如:
 '1d'表示1日线,
 '2d'表示2日线,
 '5m'代表5分钟线,
 '5s'表示5秒线,
 '5h'表示5小时线,
 '0.2j'表示的等价k【价格/幅度单位】选项设置为0.2,
 '4000L'表示的等量k【指定等量数值】选项设置为4000。
fields str OR str list 返回数据字段。必填项。
 时间戳:datetime
 开盘价:open
 最高价:high
 最低价:low
 收盘价:close
 成交量:volume
 成交额:total_turnover
 持仓量:open_interest (期货专用)
skip_suspended bool 是否跳过停牌,默认True,跳过停牌
include_now bool 是否包括不完整的bar数据。默认为False,不包括。举例来说,当前1分钟k时间为09:39的时候获取上一个5分钟线数据,默认将获取到09:31~09:35合成的5分钟线,即最近一根完整的5分钟线数据。如果设置为True,则将获取到09:36~09:39之间合成的"不完整"5分钟线,即最新一根5分钟线数据。
adjusted_price bool 是否复权数据,默认为 True
返回值

​ndarray ,方便直接与talib等计算库对接, 失败返回 空列表。
注意:返回值使用前应该判断数组长度和是否为空列表或者低于指定长度,以免运行出错。

范例
#获取最近10天的日线收盘价序列
bar_len=10
bar_close=history_bars('SQRB00', bar_len, '1d', 'CLOSE')
#对返回值k线数量进行检查
if len(bar_close)<bar_len:
    print('获取数据不足, 请补充数据!!!')
else:
    print(bar_close)
1
2
3
4
5
6
7
8

# history_bars_date 某一合约指定时段内的历史数据

history_bars_date(order_book_id, start_date, end_date, frequency, fields, skip_suspended, include_now, adjusted_price)

参数
参数 类型 说明
order_book_id str 合约代码,必填项
start_date str OR datetime 开始日期,必填项
end_date str OR datetime 结束时间,必填项
  如果仅填写日期,则不含结束日期当天的数据,可以带上时间或者增大结束日期。
frequency str 指定获取数据周期类型,必填项。
类型标识如下:
 日线:'d'
 分钟:'m'
 秒线:'s'
 取当前设置周期:'self'
 分笔线:'tick'
 周线:'week'
 月线:'month'
 季度线:'quarter'
 半年线:'halfyear'
 年线:'year'
 等价线:'j'
 等量线:'L'
例如:
 '1d'表示1日线,
 '2d'表示2日线,
 '5m'代表5分钟线,
 '5s'表示5秒线,
 '5h'表示5小时线,
 '0.2j'表示的等价k【价格/幅度单位】选项设置为0.2,
 '4000L'表示的等量k【指定等量数值】选项设置为4000。
fields str OR str list 返回数据字段。必填项。
时间戳:datetime
开盘价:open
最高价:high
最低价:low
收盘价:close
成交量:volume
成交额:total_turnover
持仓量:open_interest (期货专用)
skip_suspended bool 是否跳过停牌,默认True,跳过停牌
include_now bool 是否包括不完整的bar数据。默认为False,不包括。举例来说,当前1分钟k时间为09:39的时候获取5分钟线数据,默认将获取到09:31~09:35合成的5分钟线,即最近一根完整的5分钟线数据。如果设置为True,则将获取到09:36~09:39之间合成的"不完整"5分钟线,即最新一根5分钟线数据。
adjusted_price bool 是否复权数据,默认为 True
返回值

​ ndarray ,方便直接与talib等计算库对接, 失败返回 空列表。
注意:返回值使用前应该判断数组长度和是否为空列表或者低于指定长度,以免运行出错。

范例
#获取20180901至20180910区间的日线收盘价序列
bar_close=history_bars_date('SQRB00', '20180901', '20180910', '1d', 'close')
#对返回值k线数量进行检查
print(bar_close)
1
2
3
4
#返回分钟数据
from PythonApi import *
import datetime
code = "SH600153"
start = '2020-02-01 10:00:00'
start_t = datetime.datetime.strptime(start,'%Y-%m-%d %H:%M:%S')
end = '2020-04-03 15:00:00'
end_t = datetime.datetime.strptime(end,'%Y-%m-%d %H:%M:%S')

bar_close = history_bars_date(code,start,end,'5m',['datetime','volume','close'],include_now=True)
print(bar_close[-1])
1
2
3
4
5
6
7
8
9
10
11

# pel_history_bars 获取历史数据(python引用)

pel_history_bars("bar_count", "fields")

python引用方式下获取历史数据,仅"pel_call"模式有效参数

参数
参数 类型 说明
bar_count int 获取的历史数据数量,必填项
fields str OR str list 返回数据字段。必填项。
时间戳:datetime
开盘价:open
最高价:high
最低价:low
收盘价:close
成交量:volume
成交额:total_turnover
持仓量:open_interest (期货专用)
返回值

​ ndarray ,方便直接与talib等计算库对接, 失败返回 空列表。
注意:返回值使用前应该判断数组长度和是否为空列表或者低于指定长度,以免运行出错。

范例
#调取收盘价数据, long_period的值为通过pel的SETPYTHONVAL函数设置
close = pel_history_bars(context.long_period+1 , 'close')

#计算均线,返回值放在context对象中。
context.ma10 = close[-context.long_period:].sum() / context.long_period
1
2
3
4
5

# get_dynainf 当前快照数据

get_dynainf (order_book_id, type)

当前快照数据,只有最新值,无历史数据。(不支持回测)

参数
参数 类型 说明
order_book_id str 合约代码,必填项
type int 快照数据类型, 同PEL函数dynainf
返回值

float ,若失败返回 None

范例
#获取rb00当前最新价
get_dynainf('SQRB00', 7)
1
2

# is_data_update 判断数据是否更新

is_data_update (order_book_id)

判断这次调用该品种距离上次调用是否有过数据更新,可以使用该函数对停牌或交易不活跃品种进行过滤,防止调用history_bars取数据时的计算重复。
注意:
1.该函数受基准合约行情驱动触发时才会判断具体品种行情是否更新。
2.若你的策略中同一个品种多次不同跨周期使用数据,在回测("backtest"模式)时可能会导致该函数无法正确返回,但是在"paper_trading"模式实际交易时则不受影响。

参数
参数 类型 说明
order_book_id str 合约代码,必填项
返回值

int类型

范例
#判断'ag06'合约数据是否更新。
data = history_bars('sh600000', 1, 'self', 'CLOSE')
if is_data_update ('sh600000')==1:
    write_logging('数据更新'
1
2
3
4

# istradertime 判断品种当前是否在交易时间时段内

istradertime(order_book_id)

判断指定品种当前是否在交易时间时段中
注意:请确保您的计算机时间处于正确时间中,因为某些时候需要借助本地时间做参考。 此函数回测时无效,仅用于实盘。

参数
参数 类型 说明
order_book_id str 合约代码,必填项
返回值

bool True表示当前处于可交易时间中


# get_previous_trading_date 基准合约上一交易日

get_previous_trading_date (date, n)

获取基准合约指定日期的上一(或n)交易日。 本函数依赖于基准合约数据。

参数
参数 类型 说明
date str , date 指定日期, 必填选项
n int 第 n 个交易日,默认为1
返回值

​datetime.date ,若失败返回 None

范例
#获取2018-07-29的前5个交易日所在的日期
get_previous_trading_date ('2018-07-29', 5)
1
2

# get_next_trading_date 基准合约下一交易日

get_next_trading_date (date, n)

获取基准合约指定日期的下一(或n)交易日

参数
参数 类型 说明
date str , date 指定日期, 必填选项
n int 第 n 个交易日,默认为1
返回值

​datetime.date ,若失败返回 None



# get_trading_dates 基准合约的交易日列表

get_trading_dates (start_date, end_date)

获取基准合约的交易日列表(起止日期加入判断)(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式),该函数计算量较大,请注意编写效率,不要再循环中使用。

参数
参数 类型 说明
start_date str, date 开始日期,用户必须指定
end_date str, date 结束日期,用户必须指定
返回值

​datetime.date list,若失败返回 None

范例
#获取'2018-07-20'至'2018-07-30'期间的交易日期的集合
get_trading_dates ('2018-07-20', '2018-07-30') 
1
2

# is_week_end 是否为本周最后一个交易日

is_week_end()

判断当前是否为本周最后一个交易日

  1. 仅限国内市场有效
  2. 只在回测和实际交易时有效,不支持python模块形式的调用
返回值

​int类型,是返回1,否返回0 ,错误返回-1


# is_month_end 是否为本月最后一个交易日

is_month_end()

判断当前是否为本月最后一个交易日

  1. 仅限国内市场有效
  2. 只在回测和实际交易时有效,不支持python模块形式的调用
返回值

​int类型,是返回1,否返回0 ,错误返回-1


# nearest_week_end 距离最近双休日的交易日间隔

nearest_week_end()

当前距离最近双休日的交易日间隔的天数(含当日)

  1. 仅限国内市场有效
  2. 只在回测和实际交易时有效,不支持python模块形式的调用
返回值

​int类型,成功返回天数 ,错误返回-1


# nearest_holiday 距离最近节假日的交易日间隔

nearest_holiday()

当前距离最近节假日的交易日间隔的天数(含当日)

  1. 仅限国内市场有效
  2. 只在回测和实际交易时有效,不支持python模块形式的调用
返回值

​int类型,成功返回天数 ,错误返回-1


# trading_date_diff 间隔交易日的天数

trading_date_diff(date1,date2)

取得两个日期之间的交易日天数

参数
参数 类型 说明
date1 str or date 指定日期, 必填选项
date2 str or date 指定日期, 必填选项

注意:

  1. 仅限国内市场有效
  2. 目前有效截止日期为2030/12/31,预判数据将在到达截止日期前增加调整.
  3. 此函数依赖于节假日预判数据,预判数据存在依据确定后的节假日进行调整的情况。
  4. DATE1,DATE2有效范围(1990/12/19-2030/12/31),如果 DATE1晚于 DATE2,则 DATEDIFF函数返回负数
返回值

​int类型,成功返回天数 ,错误返回-1

范例
a = trading_date_diff(context.now,datetime.datetime.now())
print(a)
1
2

# get_split 当期除权数据

get_split (order_book_id, count)

获取指定品种到策略当前日期的(除权)拆分情况

参数
参数 类型 说明
order_book_id str 合约代码,必填项
count int 获取的历史记录条数,默认为1
返回值

​ list of split对象 , 若失败返回 None

范例
#获取平安银行最近2次除权数据信息,其返回值为list of split对象
get_split ('sz000001', 2)
1
2

# get_price_change_rate 指定品种的历史涨跌幅

get_price_change_rate (order_book_id, count)

获取指定品种的历史涨跌幅(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式),该函数计算量较大,请注意编写效率,不要再循环中使用。

参数
参数 类型 说明
order_book_id str 合约代码,必填项
count int 获取的历史记录条数,默认为1
返回值

​ list of dataval对象 , 若失败返回 None

范例
#获取平安银行最近10日的涨跌幅
get_price_change_rate('sz000001', 10)
1
2

# get_blocks 获取指定板块的成份股列表

get_blocks (block_name, type)

获取指定板块的成份股列表

参数
参数 类型 说明
block_name str 板块或分类名
type int 0市场分类 1分类板块 2系统板块

注:
市场分类:来源于在k线图右键“更换品种”--“市场”中展示的分类。例如:上海期货、深圳A股等
分类板块: 来源于在菜单栏“工具”--“市场与板块”--“板块”中展示的板块,如:地域中的”北京、上海“,自选中的"自选股"等。
系统分类:来源于在菜单栏“工具”--“市场与板块”--“品种”中展示的分类。如“中金所”,“国内商品”

返回值

​ list of str (order_book_id list) , 若失败返回 None

范例
#获取'自选股'分类版块中的品种代码,
get_blocks ('自选股', 1)
1
2

# get_inblocks 获取指定品种的所属板块

get_inblocks(book_id)

参数
参数 类型 说明
book_id str 合约代码
返回值

​ list of str , 若失败返回空列表

范例
#获取'sz000001'品种所属的板块,
get_inblocks ('sz000001')
1
2

# update_blocks 更新板块中的品种

update_blocks (order_book_id, block_name)

更新指定板块品种,该函数触发时,会将之前板块的品种清除后再添加新品种至板块中。

参数
参数 类型 说明
order_book_id str OR str list 合约代码,可传入order_book_id, order_book_id list
block_name str 板块名称
返回值

​ 无

范例
#将'600000'股票更新至自选股板块。
update_blocks ('SH600000', '自选股')
1
2

# append_blocks 添加指定板块中的品种

append_blocks (order_book_id, block_name)

将指定品种以“追加方式”添加到指定版块中。
注:若在动态显示牌中查状态,需手工刷新一次板块。

参数
参数 类型 说明
order_book_id str OR str list 合约代码,可传入order_book_id, order_book_id list
block_name str 板块名称
返回值

​ 无

范例
#追加品种至指定'自选股'板块中。
append_blocks ('SH600007', '自选股')
1
2

# remove_blocks 删除指定板块中的品种

remove_blocks(order_book_id, block_name)

注:若在动态显示牌中查状态,需手工刷新一次板块。

参数
参数 类型 说明
order_book_id str OR str list 合约代码,可传入order_book_id, order_book_id list
block_name str 板块名称
返回值

​ 无

范例
#删除'自选股'板块中'SH600007'股票品种。
remove_blocks ('SH600007''自选股')
1
2

# get_turnover_rate 历史换手率

get_turnover_rate (order_book_id, count, stat)

获取历史换手率

参数
参数 类型 说明
order_book_id str 合约代码,必填项
count int 获取的历史记录条数,默认为1
stat int 统计的交易日,例如统计最近20个交易日的换手率这里就填20
返回值

​list of dataval对象 , 若失败返回 None

范例
#获取5日线历史换手率。
turnover_rate=get_turnover_rate('SH600000', 10, 5)

#获取最新一条换手率的日期时间和数值
rate_date=turnover_rate[-1].date_val
rate_values=turnover_rate[-1].values
1
2
3
4
5
6

# get_instruments 查询合约基础信息

get_instruments (order_book_id)

参数
参数 类型 说明
order_book_id str 合约代码,必填项
返回值

instruments对象, 若失败返回 None

范例
#获取RB00品种的合约基本信息
instruments=get_instruments ('SQRB00')
#输出RB00合约的合约单位
print(instruments.multipliter)
1
2
3
4

# get_charge 计算交易费用

get_charge (order_book_id, price, volume, type)

计算交易费用, 根据 交易菜单->合约信息设置 中预设的合约信息和费率

参数
参数 类型 说明
order_book_id str 合约代码,必填项
price float 交易价格, 必填项
volume int 交易数量, 必填项
type int 交易类型, 必填项,
 0表示开仓
 1表示平昨仓
 2表示平今
返回值

交易费用

范例
#计算1手多头螺纹钢所需手续费费用
get_charge ('SQRB00', get_dynainf('SQRB00', 7), 1, 0)
1
2