qmt编程之获取期权数据
期权行情数据
qmt更加详细的教程方法,会持续慢慢梳理。
也可找寻博主的历史文章,搜索关键词查看解决方案 !
获取期权行情数据
获取期权最新数据,首先需要进行数据订阅。完成合约订阅后,用get_market_data_ex
函数即可提取相关信息。这个过程包含两大步骤:
第一,通过订阅操作确保能接收到你感兴趣的期权合约的更新;
第二,调用get_market_data_ex
函数来实际获取并处理这些订阅到的数据,如果需要用到历史数据或过期合约数据,需要使用download_history_data
进行下载。
这样,使用者就能获得最新和详细的期权数据,有助于做出更精准的投资决策。
调用方法
python
# coding=utf-8
from xtquant import xtdata
# 下载指定合约历史行情
xtdata.download_history_data(stock_code, period, start_time='', end_time='')
# 订阅指定合约行情
xtdata.subscribe_quote(stock_code, period='', start_time='', end_time='', count=0, callback=None)
# 等待订阅完成
time.sleep(1)
# 获取指定合约行情
xtdata.get_market_data_ex(field_list = [], stock_list = [], period = '', start_time = '', end_time = '', count = -1, dividend_type = 'none', fill_data = True)
参数
- xtdata.subscribe_quote
字段 | 类型 | 说明 |
---|---|---|
stock_code | str | 股票代码 |
start_time | str | 开始时间格式YYYYMMDD/YYYYMMDDhhmmss |
end_time | str | 结束时间 |
count | int | 数量 -1全部/n: 从结束时间向前数n个 |
period | str | 周期 分笔"tick" 分钟线"1m"/"5m" 日线"1d" |
- xtdata.get_market_data_ex
参数名称 | 类型 | 描述 |
---|---|---|
field_list | list | 表示所有字段。不同的数据周期,取值范围有所不同。 |
stock_list | list | 合约代码列表 |
period | str | 数据周期,默认是当前主图周期。可选值如下: 'tick' (分笔线), '1d' (日线), '1m' (1分钟线), '5m' (5分钟线), '15m' (15分钟线), 'l2quote' (Level2行情快照), 'l2quoteaux' (Level2行情快照补充), 'l2order' (Level2逐笔委托), 'l2transaction' (Level2逐笔成交),'l2transactioncount' (Level2大单统计), 'l2orderqueue' (Level2委买委卖队列) |
start_time | str | 开始时间。为空时默认为最早时间。时间格式为'20201231'或'20201231093000' |
end_time | str | 结束时间。为空时默认为最新时间。时间格式为'20201231'或'20201231235959' |
count | int | 数据最大个数。-1表示不做个数限制 |
dividend_type | str | 复权方式,默认是当前主图复权方式。可选值包括: 'none' (不复权), 'front'(前复权), 'back' (后复权), 'front_ratio' (等比前复权), 'back_ratio' (等比后复权) |
fill_data | bool | 停牌填充方式 |
返回值
- period为
1m
5m
1d
K线周期时- 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick
分笔周期时- 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time
增序排列
示例
# coding=utf-8
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote('10005329.SHO', period='1d', start_time='', end_time='20231026150000', count=1, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data('10005329.SHO',period = "1d") # ETF期权
xtdata.download_history_data('a2407-C-5200.DF',period = "1d") # 商品期货期权
xtdata.download_history_data('IO2312-C-3550.IF',period = "1d") # 股指期货期权
# 获取指定合约历史行情
day_data = xtdata.get_market_data_ex([], ['10005329.SHO'], period='1d', start_time='20230101', end_time='20231026', count=-1, dividend_type='front', fill_data=True)
print(day_data)
返回值
{'10005329.SHO': time open high low close volume amount \20231010 1696867200000 2.216 2.248 1.969 1.980 141 290131.0 20231011 1696953600000 2.065 2.152 2.000 2.005 389 801904.0 20231012 1697040000000 2.255 2.309 2.150 2.210 141 311402.0 20231013 1697126400000 2.053 2.075 1.980 2.012 275 560743.0 20231016 1697385600000 1.990 1.990 1.753 1.797 539 976868.0 20231017 1697472000000 1.818 1.900 1.766 1.866 519 946258.0 20231018 1697558400000 1.813 1.881 1.744 1.770 173 309998.0 20231019 1697644800000 1.632 1.632 1.244 1.244 1398 1967442.0 20231020 1697731200000 1.158 1.264 1.126 1.185 1580 1888661.0 20231023 1697990400000 1.230 1.241 0.980 1.057 2397 2597350.0 settelementPrice openInterest preClose suspendFlag 20231010 1.980 3276 2.140 0 20231011 2.030 3122 1.980 0 20231012 2.210 3083 2.005 0 20231013 2.003 2994 2.210 0 20231016 1.797 3064 2.012 0 20231017 1.859 2969 1.797 0 20231018 1.757 2939 1.866 0 20231019 1.250 3065 1.770 0 20231020 1.185 3582 1.244 0 20231023 1.057 4191 1.185 0 }