fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
83 lines
2.5 KiB
Python
83 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2025/10/17 16:30
|
|
Desc: 郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
|
|
http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
|
|
自 20200101 起,成交量、空盘量、成交额、行权量均为单边计算
|
|
郑州商品交易所-期权上市时间表
|
|
"SR": "20170419"
|
|
"CF": "20190410"
|
|
"TA": "20191216"
|
|
"MA": "20191217"
|
|
"RM": "20200116"
|
|
"ZC": "20200630"
|
|
"OI": "20220826"
|
|
"PK": "20220826"
|
|
"PX": "20230915"
|
|
"SH": "20230915"
|
|
"SA": "20231020"
|
|
"PF": "20231020"
|
|
"SM": "20231020"
|
|
"SF": "20231020"
|
|
"UR": "20231020"
|
|
"AP": "20231020"
|
|
"CJ": "20240621"
|
|
"FG": "20240621"
|
|
"PR": "20241227"
|
|
"""
|
|
|
|
import warnings
|
|
from io import StringIO
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
|
|
def option_hist_yearly_czce(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
|
|
"""
|
|
郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
|
|
http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
|
|
:param symbol: choice of {"白糖": "SR", "棉花": "CF", "PTA": "TA", "甲醇": "MA", "菜籽粕": "RM",
|
|
"动力煤": "ZC", "菜籽油": "OI", "花生": "PK", "对二甲苯": "PX", "烧碱": "SH", "纯碱": "SA", "短纤": "PF",
|
|
"锰硅": "SM", "硅铁": "SF", "尿素": "UR", "苹果": "AP", "红枣": "CJ", "玻璃": "FG", "瓶片": "PR"}
|
|
:type symbol: str
|
|
:param year: 需要获取数据的年份, 注意品种的上市时间
|
|
:type year: str
|
|
:return: 指定年份的日频期权数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
symbol_year_dict = {
|
|
"SR": "2017",
|
|
"CF": "2019",
|
|
"TA": "2019",
|
|
"MA": "2019",
|
|
"RM": "2020",
|
|
"ZC": "2020",
|
|
"OI": "2022",
|
|
"PK": "2022",
|
|
"PX": "2023",
|
|
"SH": "2023",
|
|
"SA": "2023",
|
|
"PF": "2023",
|
|
"SM": "2023",
|
|
"SF": "2023",
|
|
"UR": "2023",
|
|
"AP": "2023",
|
|
"CJ": "2024",
|
|
"FG": "2024",
|
|
"PR": "2024",
|
|
}
|
|
if int(symbol_year_dict[symbol]) > int(year):
|
|
warnings.warn(f"{year} year, symbol {symbol} is not on trade")
|
|
return pd.DataFrame()
|
|
url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Option/{year}/OptionDataAllHistory/{symbol}OPTIONS{year}.txt"
|
|
r = requests.get(url)
|
|
option_df = pd.read_table(StringIO(r.text), skiprows=1, sep="|", low_memory=False)
|
|
return option_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
option_hist_yearly_czce_df = option_hist_yearly_czce(symbol="RM", year="2025")
|
|
print(option_hist_yearly_czce_df)
|