qesdk数据接口
简介
为了方便使用quantease宽易数据行情,适合无法安装docker的用户使用,我们开发了qesdk数据接口,可以通过python的pip简单安装,可以通过该接口访问基本行情数据和策略超市的部分数据。
安装及升级
可以通过pip安装:
pip install qesdk
已经安装的可以通过如下命令升级
pip install -U qesdk
使用行情接口
用户认证
使用任何qesdk接口之前,需要通过quantease宽易用户认证
from qesdk import *
auth('您的用户名','您的授权码')
授权码可以通过登录https://quantease.cn点击右上角‘授权码’菜单获取。
具体使用详细参见获取授权码
期货日线数据
接口:
get_price(security, start_date, end_date, freq='daily', fields=None)
描述:获取采集期内合约的基础数据,包括最高价、最低价、成交量、成交额等。
函数说明
参数
参数名 | 类型 | 说明 |
---|---|---|
security | str | 合约名称,比如“RB2205.SFE” |
start_date | str/datetime.datetime/datetime.date | 开始时间,可以是datetime.datetime或者datetime.date,也可以是字符串比如'2020-10-01",‘2020-10-01 09:00’ 或者 '2020-10-01 09:00:00' |
end_date | str | 结束时间,可以是datetime.datetime或者datetime.date,也可以是字符串比如'2020-10-11",‘2020-10-11 09:00’ 或者 '2020-10-11 09:00:00' |
freq | str | 采样频率,默认是'minute',即为1分钟。如果'daily'代表1天,‘hour’代表1小时。 ‘XT’代表 X 分钟,比如‘3T’代表3分钟采样一次。 ‘XB’代表 x工作日, 比如‘5B’代表5个工作日采样一次。 |
fields | list | 默认None返回所有字段, 也可以是list选择某些字段,比如['open','close']只返回两个字段内容 |
返回值
代码示例:
from qesdk import *
get_price('AU2106.SFE', '2021-01-01', '2021-05-01', 'daily' )
运行结果:
返回值:pandas.DataFrame类型数据
各字段说明
字段名 | 类型 | 描述 |
---|---|---|
open | float | 开盘价 |
close | float | 收盘价 |
high | float | 最高价 |
low | float | 最低价 |
volume | int | 成交量 |
money | float | 成交额 |
upperlimit | float | 涨停价 |
lowerlimit | float | 跌停价 |
position | float | 持仓量 |
presett | float | 昨结算价 |
preclose | float | 昨收盘价 |
settle | float | 今结算价 |
期货分钟线数据
接口:
get_price(security, start_date, end_date, freq='minute', fields=None)
描述:获取采集期内合约的基础数据,包括最高价、最低价、成交量、成交额等。
函数说明
参数
参数名 | 类型 | 说明 |
---|---|---|
security | str | 合约名称,比如“RB2205.SFE” |
start_date | str/datetime.datetime/datetime.date | 开始时间,可以是datetime.datetime或者datetime.date,也可以是字符串比如'2020-10-01",‘2020-10-01 09:00’ 或者 '2020-10-01 09:00:00' |
end_date | str | 结束时间,可以是datetime.datetime或者datetime.date,也可以是字符串比如'2020-10-11",‘2020-10-11 09:00’ 或者 '2020-10-11 09:00:00' |
freq | str | 采样频率,默认是'minute',即为1分钟。如果'daily'代表1天,‘hour’代表1小时。 ‘XT’代表 X 分钟,比如‘3T’代表3分钟采样一次。 ‘XB’代表 x工作日, 比如‘5B’代表5个工作日采样一次。 |
fields | list | 默认None返回所有字段, 也可以是list选择某些字段,比如['open','close']只返回两个字段内容 |
返回值
代码示例:
from qesdk import *
get_price('AU2106.SFE', '2021-01-01', '2021-05-01', 'minute' )
运行结果:
返回值:pandas.DataFrame类型数据
各字段说明字段名 | 类型 | 描述 |
---|---|---|
open | float | 开盘价 |
close | float | 收盘价 |
high | float | 最高价 |
low | float | 最低价 |
volume | int | 成交量 |
money | float | 成交额 |
合约结算参数
接口:
get_instrument_setting(instid)
描述: 获取给定合约的结算参数,比如保证金率,手续费,平今比例等。
参数
参数 | 类型 | 说明 |
---|---|---|
instid | str | 产品合约名称,比如'AG2112.SFE' |
返回值
dict 形式,包含如下key:键值 | 类型 | 说明 |
---|---|---|
instid | str | 合约名 |
marglong | float | 做多保证金率 |
margshort | float | 做空保证金率 |
openfeerate | float | 开仓手续费率按比例 |
closefeerate | float | 平仓手续费率按比例 |
openfee | float | 开仓手续费按绝对值 |
closeetodayrate | float | 平今倍数 |
refprice | float | 参考价格 |
volmult | int | 每手多少数量(比如吨) |
ticksize | float | 最小价格变动值 |
备注:
1> 大商所是平今时候开仓和平仓都有倍数,为了简单方便,都算在平今倍数中了。 比如生猪平今开平仓都是2倍,那么不计算开仓,仅计算平今倍数为3
2> 参考价为交易所网站给出参考挂牌价,有些比如中金所产品没有这个价格,设置为0。
代码示例:
from qesdk import *
get_instrument_setting('AU2112.SFE')
运行结果:
{'instid': 'AU2112_SFE',
'marglong': 20.0,
'margshort': 20.0,
'openfeerate': 0.0,
'closefeerate': 0.0,
'openfee': 10.0,
'closefee': 10.0,
'closetodayrate': 0.0,
'refprice': 408.2,
'volmult': 1000,
'ticksize': 0.05}
主力合约
接口:
get_dominant_instID(symbol, date, code)
描述: 获取指定日期指定产品主力合约。
参数
参数 | 类型 | 说明 |
---|---|---|
symbol | str | 产品代号,比如‘AU’ |
date | str/datetime.datetime/datetime.date | 日期,可以是字符串格式比如‘2021-10-10’,也可以是datetime格式。 |
code | str | 默认‘9999’查询主力合约,改成‘9998’可以查询次主力合约,其他字符串无效。 |
返回值
str类型, 当天的主力合约或次主力合约。切换主力合约规则说明:
- 新主力合约连续三天持仓量第一
- 新主力合约必须比现有主力合约到期更晚
- 若当前主力合约已经到达到期前一个月最后两个工作日,则切换到更远期合约中持仓量最高的合约。
- 对于常见交易品种,主力合约月份需要符合历年月份规律。
代码示例:
from qesdk import*
get_dominant_instID('AG', "2022-04-19")
运行结果:
'AG2206.SFE'
多品种多日主力合约
接口:
get_dominant_instIDs(symbols, start_date, end_date,code)
描述:获取给定产品和时间的主力合约名
参数
参数 | 类型 | 说明 |
---|---|---|
symbols | str / list of str | 产品代号或者产品代号列表,比如‘AU’或者['AU','AG'] |
start_date | str/datetime.datetime/datetime.date | 开始日期,可以是字符串格式比如‘2021-10-10’,也可以是datetime格式。 |
end_date | str/datetime.datetime/datetime.date | 结束日期,可以是字符串格式比如‘2021-11-10’,也可以是datetime格式。 |
code | str | 默认‘9999’查询主力合约,改成‘9998’可以查询次主力合约,其他字符串无效。 |
返回值
代码示例:
from qesdk import *
get_dominant_instIDs(['AG','AU'], "2022-04-19", "2022-05-08")
运行结果:
期货合约列表
接口:
get_securities_list(stype="all", dateWindow=None, exchange='all')
描述:用于获取期货合约的基础数据,包括上市时间,结束时间等。
参数
参数 | 类型 | 说明 |
---|---|---|
stype | str | 可以是'all','futures','options'.默认'all'查询所有期货和期权,若仅需要期货'futures', 仅需要期权'options'. |
dateWindow | list | 默认None查询所有时间,若设置时间窗口,将只查询时间窗口内有效的合约列表。比如['2020-10-01','2020-11-01']. 若直接用“”代表当天,比如["",""]查询今天还在交易的所有合约列表 |
exchange | str | 默认“all”查询所有交易所合约,可以指定仅查某个交易所,有效的交易所代码为“CCF”中金所,"DCE"大商所,"ZCE"郑商所,"SFE"上期所,"INE"国际能源中心。 |
返回值
pandas.DataFrame 类型键值 | 说明 |
---|---|
name | 合约代码 |
display | 合约名 |
startdate | 上市时间 |
enddate | 结束时间 |
type | 种类 |
exID | 交易所代码 |
代码示例:
from qesdk import *
get_securities_list("futures",["",""],'CCF')
运行结果:
开收盘时间
接口:
get_prod_open_time(instid)
描述:根据合约名称获取开盘时间,包括白天盘和夜盘开市和收市时间。
参数
参数 | 类型 | 说明 |
---|---|---|
instid | str | 产品合约名称,比如'AG2112.SFE' |
返回值
返回结果 | 类型 | 说明 |
---|---|---|
{'daytime':['0900','1500'], 'night':['2100','0100']} | dict | 代表白天盘是9点开市,16点收市. 晚盘21点开市,第二天早上1点收市。 |
代码示例:
from qesdk import *
get_prod_open_time('AU2112.SFE')
运行结果:
{'night': ['2100', '0230'], 'daytime': ['0900', '1500']}
使用策略超市接口
本接口用于访问Quantease出品策略超市软件的克隆策略以及相关仓位查询。
用户登录
使用任何策略超市接口前,需要先使用已注册账户进行登录。用户需要事先在策略超市软件进行注册。
from qesdk import *
login('用户名','密码')
查找用户克隆策略表
接口:
sm_get_clone_strat_list()
描述:
查询登录用户所有已克隆策略的策略名列表
返回值
返回示例 | 类型 | 说明 |
---|---|---|
['R-breaker_AG_v1_1','R-breaker_IC_v1_2'] | list | 当前用户已克隆策略的策略名称list。 |
代码示例
from qesdk import *
stratlist = sm_get_clone_strat_list()
stratlist
返回值:
['R-breaker_AG_v1_1','R-breaker_IC_v1_2']
查询策略表最新仓位
接口
sm_get_clone_strat_position(stratlist)
描述:
根据给定的策略表,返回相应策略表的持仓列表。
参数
参数 | 类型 | 说明 |
---|---|---|
stratlist | list | 策略名列表,比如['R-breaker_AG_v1_1','R-breaker_IC_v1_2'] |
返回值示例:
{'IC2211.CCF': {'longpos': 0, 'shortpos': 0, 'updatetime': datetime.datetime(2022, 11, 7, 8, 39, 22)}, 'AG2301.DCE': {'longpos': 0, 'shortpos': 0, 'updatetime': datetime.datetime(2022, 11, 7, 8, 39, 22)}}
该返回值key为合约名,value字段说明:
▼ 持仓字段名
字段名 | 说明 |
---|---|
longpos | 多头持仓 |
shortpos | 空头持仓 |
updatetime | 最后更新时间 |