# history_bars 某一合约历史数据
参数 | 类型 | 说明 |
---|---|---|
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)
2
3
4
5
6
7
8
# history_bars_date 某一合约指定时段内的历史数据
参数 | 类型 | 说明 |
---|---|---|
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)
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])
2
3
4
5
6
7
8
9
10
11
# pel_history_bars 获取历史数据(python引用)
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
2
3
4
5
# get_dynainf 当前快照数据
当前快照数据,只有最新值,无历史数据。(不支持回测)
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str | 合约代码,必填项 |
type | int | 快照数据类型, 同PEL函数dynainf |
float ,若失败返回 None
#获取rb00当前最新价
get_dynainf('SQRB00', 7)
2
# is_data_update 判断数据是否更新
判断这次调用该品种距离上次调用是否有过数据更新,可以使用该函数对停牌或交易不活跃品种进行过滤,防止调用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('数据更新')
2
3
4
# istradertime 判断品种当前是否在交易时间时段内
判断指定品种当前是否在交易时间时段中
注意:请确保您的计算机时间处于正确时间中,因为某些时候需要借助本地时间做参考。
此函数回测时无效,仅用于实盘。
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str | 合约代码,必填项 |
bool True表示当前处于可交易时间中
# get_previous_trading_date 基准合约上一交易日
获取基准合约指定日期的上一(或n)交易日。 本函数依赖于基准合约数据。
参数 | 类型 | 说明 |
---|---|---|
date | str , date | 指定日期, 必填选项 |
n | int | 第 n 个交易日,默认为1 |
datetime.date ,若失败返回 None
#获取2018-07-29的前5个交易日所在的日期
get_previous_trading_date ('2018-07-29', 5)
2
# get_next_trading_date 基准合约下一交易日
获取基准合约指定日期的下一(或n)交易日
参数 | 类型 | 说明 |
---|---|---|
date | str , date | 指定日期, 必填选项 |
n | int | 第 n 个交易日,默认为1 |
datetime.date ,若失败返回 None
# get_trading_dates 基准合约的交易日列表
获取基准合约的交易日列表(起止日期加入判断)(仅策略交易状态时有效,"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')
2
# is_week_end 是否为本周最后一个交易日
判断当前是否为本周最后一个交易日
- 仅限国内市场有效
- 只在回测和实际交易时有效,不支持python模块形式的调用
int类型,是返回1,否返回0 ,错误返回-1
# is_month_end 是否为本月最后一个交易日
判断当前是否为本月最后一个交易日
- 仅限国内市场有效
- 只在回测和实际交易时有效,不支持python模块形式的调用
int类型,是返回1,否返回0 ,错误返回-1
# nearest_week_end 距离最近双休日的交易日间隔
当前距离最近双休日的交易日间隔的天数(含当日)
- 仅限国内市场有效
- 只在回测和实际交易时有效,不支持python模块形式的调用
int类型,成功返回天数 ,错误返回-1
# nearest_holiday 距离最近节假日的交易日间隔
当前距离最近节假日的交易日间隔的天数(含当日)
- 仅限国内市场有效
- 只在回测和实际交易时有效,不支持python模块形式的调用
int类型,成功返回天数 ,错误返回-1
# trading_date_diff 间隔交易日的天数
取得两个日期之间的交易日天数
参数 | 类型 | 说明 |
---|---|---|
date1 | str or date | 指定日期, 必填选项 |
date2 | str or date | 指定日期, 必填选项 |
注意:
- 仅限国内市场有效
- 目前有效截止日期为2030/12/31,预判数据将在到达截止日期前增加调整.
- 此函数依赖于节假日预判数据,预判数据存在依据确定后的节假日进行调整的情况。
- DATE1,DATE2有效范围(1990/12/19-2030/12/31),如果 DATE1晚于 DATE2,则 DATEDIFF函数返回负数
int类型,成功返回天数 ,错误返回-1
a = trading_date_diff(context.now,datetime.datetime.now())
print(a)
2
# get_split 当期除权数据
获取指定品种到策略当前日期的(除权)拆分情况
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str | 合约代码,必填项 |
count | int | 获取的历史记录条数,默认为1 |
list of split对象 , 若失败返回 None
#获取平安银行最近2次除权数据信息,其返回值为list of split对象
get_split ('sz000001', 2)
2
# get_price_change_rate 指定品种的历史涨跌幅
获取指定品种的历史涨跌幅(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式),该函数计算量较大,请注意编写效率,不要再循环中使用。
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str | 合约代码,必填项 |
count | int | 获取的历史记录条数,默认为1 |
list of dataval对象 , 若失败返回 None
#获取平安银行最近10日的涨跌幅
get_price_change_rate('sz000001', 10)
2
# get_blocks 获取指定板块的成份股列表
获取指定板块的成份股列表
参数 | 类型 | 说明 |
---|---|---|
block_name | str | 板块或分类名 |
type | int | 0市场分类 1分类板块 2系统板块 |
注:
市场分类:来源于在k线图右键“更换品种”--“市场”中展示的分类。例如:上海期货、深圳A股等
分类板块: 来源于在菜单栏“工具”--“市场与板块”--“板块”中展示的板块,如:地域中的”北京、上海“,自选中的"自选股"等。
系统分类:来源于在菜单栏“工具”--“市场与板块”--“品种”中展示的分类。如“中金所”,“国内商品”
list of str (order_book_id list) , 若失败返回 None
#获取'自选股'分类版块中的品种代码,
get_blocks ('自选股', 1)
2
# get_inblocks 获取指定品种的所属板块
参数 | 类型 | 说明 |
---|---|---|
book_id | str | 合约代码 |
list of str , 若失败返回空列表
#获取'sz000001'品种所属的板块,
get_inblocks ('sz000001')
2
# update_blocks 更新板块中的品种
更新指定板块品种,该函数触发时,会将之前板块的品种清除后再添加新品种至板块中。
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str OR str list | 合约代码,可传入order_book_id, order_book_id list |
block_name | str | 板块名称 |
无
#将'600000'股票更新至自选股板块。
update_blocks ('SH600000', '自选股')
2
# append_blocks 添加指定板块中的品种
将指定品种以“追加方式”添加到指定版块中。
注:若在动态显示牌中查状态,需手工刷新一次板块。
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str OR str list | 合约代码,可传入order_book_id, order_book_id list |
block_name | str | 板块名称 |
无
#追加品种至指定'自选股'板块中。
append_blocks ('SH600007', '自选股')
2
# remove_blocks 删除指定板块中的品种
注:若在动态显示牌中查状态,需手工刷新一次板块。
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str OR str list | 合约代码,可传入order_book_id, order_book_id list |
block_name | str | 板块名称 |
无
#删除'自选股'板块中'SH600007'股票品种。
remove_blocks ('SH600007','自选股')
2
# get_turnover_rate 历史换手率
获取历史换手率
参数 | 类型 | 说明 |
---|---|---|
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
2
3
4
5
6
# get_instruments 查询合约基础信息
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str | 合约代码,必填项 |
instruments对象, 若失败返回 None
#获取RB00品种的合约基本信息
instruments=get_instruments ('SQRB00')
#输出RB00合约的合约单位
print(instruments.multipliter)
2
3
4
# get_charge 计算交易费用
计算交易费用, 根据 交易菜单->合约信息设置 中预设的合约信息和费率
参数 | 类型 | 说明 |
---|---|---|
order_book_id | str | 合约代码,必填项 |
price | float | 交易价格, 必填项 |
volume | int | 交易数量, 必填项 |
type | int | 交易类型, 必填项, 0表示开仓 1表示平昨仓 2表示平今 |
交易费用
#计算1手多头螺纹钢所需手续费费用
get_charge ('SQRB00', get_dynainf('SQRB00', 7), 1, 0)
2