cmesdata 1.2.33__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,25 @@
1
+ Metadata-Version: 2.4
2
+ Name: cmesdata
3
+ Version: 1.2.33
4
+ Summary: cmes-data.com
5
+ Author: cmes-data.com
6
+ Requires-Dist: click
7
+ Requires-Dist: six
8
+ Requires-Dist: cryptography
9
+ Requires-Dist: openctp_ctp
10
+ Requires-Dist: beautifulsoup4>=4.9.1
11
+ Requires-Dist: lxml>=4.2.1
12
+ Requires-Dist: pandas>=0.25
13
+ Requires-Dist: requests>=2.22.0
14
+ Requires-Dist: pypinyin>=0.35.0
15
+ Requires-Dist: html5lib>=1.0.1
16
+ Requires-Dist: xlrd>=1.2.0
17
+ Requires-Dist: urllib3>=1.25.8
18
+ Requires-Dist: tqdm>=4.43.0
19
+ Requires-Dist: openpyxl>=3.0.3
20
+ Requires-Dist: jsonpath>=0.82
21
+ Requires-Dist: tabulate>=0.8.6
22
+ Requires-Dist: decorator>=4.4.2
23
+ Dynamic: author
24
+ Dynamic: requires-dist
25
+ Dynamic: summary
@@ -0,0 +1,10 @@
1
+ from cmesdata.stock import *
2
+ from cmesdata.future import register_push_callback, subscribe_future_code
3
+ from cmesdata.historydata import (
4
+ get_symbol_list,
5
+ get_historical_data,
6
+ get_daily_pack,
7
+ get_stock_tick,
8
+ HistoryDataError,
9
+ RateLimitError,
10
+ )
@@ -0,0 +1,234 @@
1
+ # -*- coding: utf-8 -*-
2
+ # 历史批量下载对外 key:与更新接口 symbol 一致
3
+ BATCH_MENU_MAP = {
4
+ 'a_etf_15min': ('股票数据|ETF数据|ETF十五分钟', '2005-01-01'),
5
+ 'a_etf_1min': ('股票数据|ETF数据|ETF一分钟', '2005-01-01'),
6
+ 'a_etf_30min': ('股票数据|ETF数据|ETF三十分钟', '2005-01-01'),
7
+ 'a_etf_5min': ('股票数据|ETF数据|ETF五分钟', '2005-01-01'),
8
+ 'a_etf_60min': ('股票数据|ETF数据|ETF一小时', '2005-01-01'),
9
+ 'a_etf_day_bfq': ('股票数据|ETF数据|ETF日级别-不复权', '2005-01-01'),
10
+ 'a_etf_day_hfq': ('股票数据|ETF数据|ETF日级别-后复权', '2005-01-01'),
11
+ 'a_etf_day_qfq': ('股票数据|ETF数据|ETF日级别-前复权', '2005-01-01'),
12
+ 'a_finance_fuzhaibiao': ('股票数据|财务报表|资产负债表', '1989-12-31'),
13
+ 'a_finance_lirunbiao': ('股票数据|财务报表|利润表', '1989-12-31'),
14
+ 'a_finance_liuliangbiao': ('股票数据|财务报表|现金流量表', '1989-12-31'),
15
+ 'a_index_15min': ('股票数据|指数|指数十五分钟', '2005-01-01'),
16
+ 'a_index_1min': ('股票数据|指数|指数一分钟', '2005-01-01'),
17
+ 'a_index_30min': ('股票数据|指数|指数三十分钟', '2005-01-01'),
18
+ 'a_index_5min': ('股票数据|指数|指数五分钟', '2005-01-01'),
19
+ 'a_index_60min': ('股票数据|指数|指数一小时', '2005-01-01'),
20
+ 'a_index_day': ('股票数据|指数|指数日级别', '1991-07-15'),
21
+ 'a_index_month': ('股票数据|指数|指数月级别', '1991-07-15'),
22
+ 'a_index_week': ('股票数据|指数|指数周级别', '1991-07-15'),
23
+ 'a_jibenmian': ('股票数据|基本面|上市公司基本面', '1999-11-10'),
24
+ 'a_jihejj_zonghe': ('股票数据|集合竞价|集合竞价综合数据', '2010-01-04'),
25
+ 'a_kzz_15min': ('股票数据|可转债|可转债十五分钟', '2010-01-01'),
26
+ 'a_kzz_1min': ('股票数据|可转债|可转债一分钟', '2010-01-01'),
27
+ 'a_kzz_30min': ('股票数据|可转债|可转债三十分钟', '2010-01-01'),
28
+ 'a_kzz_5min': ('股票数据|可转债|可转债五分钟', '2010-01-01'),
29
+ 'a_kzz_60min': ('股票数据|可转债|可转债一小时', '2010-01-01'),
30
+ 'a_kzz_day': ('股票数据|可转债|可转债日级别', '2010-01-01'),
31
+ 'a_simple_tick': ('股票数据|沪深股票分笔tick|沪深股票分笔tick', '2001-01-01'),
32
+ 'a_stock_tick': ('股票数据|沪深股票分笔tick|沪深股票分笔tick', '2000-06-12'),
33
+ 'a_stock_15min': ('股票数据|沪深股票分钟|沪深股票十五分钟', '2000-01-01'),
34
+ 'a_stock_1min': ('股票数据|沪深股票分钟|沪深股票一分钟', '2000-01-01'),
35
+ 'a_stock_30min': ('股票数据|沪深股票分钟|沪深股票三十分钟', '2000-01-01'),
36
+ 'a_stock_5min': ('股票数据|沪深股票分钟|沪深股票五分钟', '2000-01-01'),
37
+ 'a_stock_60min': ('股票数据|沪深股票分钟|沪深股票一小时', '2000-01-01'),
38
+ 'a_stock_daily': ('股票数据|沪深京股票日周月-按日打包|沪深股票日级别', '1991-01-01'),
39
+ 'a_stock_daily_basic': ('股票数据|日级别含财务指标|日级别财务指标数据-按日打包', '1990-01-01'),
40
+ 'a_stock_kpl_list': ('涨停打板|涨跌停时间和原因|涨跌停时间和原因', '2018-01-01'),
41
+ 'a_stock_monthly': ('股票数据|沪深京股票日周月-按日打包|沪深股票月级别', '1991-01-01'),
42
+ 'a_stock_weekly': ('股票数据|沪深京股票日周月-按日打包|沪深股票周级别', '1991-01-01'),
43
+ 'a_super_day': ('股票数据|日级别含技术指标|日级别含技术指标数据', '1990-01-01'),
44
+ 'bitcoin_15min': ('数字货币|数字货币分钟|数字货币十五分钟', '2013-01-01'),
45
+ 'bitcoin_1min': ('数字货币|数字货币分钟|数字货币一分钟', '2013-01-01'),
46
+ 'bitcoin_30min': ('数字货币|数字货币分钟|数字货币三十分钟', '2013-01-01'),
47
+ 'bitcoin_5min': ('数字货币|数字货币分钟|数字货币五分钟', '2013-01-01'),
48
+ 'bitcoin_60min': ('数字货币|数字货币分钟|数字货币六十分钟', '2013-01-01'),
49
+ 'bitcoin_day': ('数字货币|数字货币分钟|数字货币日级别', '2013-01-01'),
50
+ 'etf_five_tick': ('股票数据|ETF数据|ETF五档订单薄', '2009-01-01'),
51
+ 'fx_15min': ('外汇数据|主要货币对|外汇十五分钟', '2010-01-01'),
52
+ 'fx_1min': ('外汇数据|主要货币对|外汇一分钟', '2010-01-01'),
53
+ 'fx_30min': ('外汇数据|主要货币对|外汇三十分钟', '2010-01-01'),
54
+ 'fx_5min': ('外汇数据|主要货币对|外汇五分钟', '2010-01-01'),
55
+ 'fx_60min': ('外汇数据|主要货币对|外汇六十分钟', '2010-01-01'),
56
+ 'fx_day': ('外汇数据|主要货币对|外汇日级别', '2010-01-01'),
57
+ 'gg_finance_fuzhaibiao': ('港股|港股财务报表|资产负债表', '2000-12-30'),
58
+ 'gg_finance_lirunbiao': ('港股|港股财务报表|利润表', '2000-12-30'),
59
+ 'gg_finance_liuliangbiao': ('港股|港股财务报表|现金流量表', '2000-12-30'),
60
+ 'gg_index_15min': ('港股|港股指数|港股指数十五分钟', '2011-03-07'),
61
+ 'gg_index_1min': ('港股|港股指数|港股指数一分钟', '2011-03-07'),
62
+ 'gg_index_30min': ('港股|港股指数|港股指数三十分钟', '2011-03-07'),
63
+ 'gg_index_5min': ('港股|港股指数|港股指数五分钟', '2011-03-07'),
64
+ 'gg_index_day': ('港股|港股指数|港股指数日级别', '2011-03-07'),
65
+ 'gg_stock_day_hfq': ('港股|港股日级别|港股日级别后复权', '1986-04-02'),
66
+ 'gg_stock_day_qfq': ('港股|港股日级别|港股日级别前复权', '1986-04-02'),
67
+ 'gw_future_main_15min': ('国外期货|CBOT 芝加哥期货交易所|CBOT主连十五分钟', '2008-01-01'),
68
+ 'gw_future_main_1min': ('国外期货|CBOT 芝加哥期货交易所|CBOT主连一分钟', '2008-01-01'),
69
+ 'gw_future_main_30min': ('国外期货|CBOT 芝加哥期货交易所|CBOT主连三十分钟', '2008-01-01'),
70
+ 'gw_future_main_5min': ('国外期货|CBOT 芝加哥期货交易所|CBOT主连五分钟', '2008-01-01'),
71
+ 'gw_future_main_60min': ('国外期货|CBOT 芝加哥期货交易所|CBOT主连六十分钟', '2008-01-01'),
72
+ 'gw_future_main_day': ('国外期货|CBOT 芝加哥期货交易所|CBOT主连日级别', '2008-01-01'),
73
+ 'gw_future_single_15min': ('国外期货|CBOT 芝加哥期货交易所|CBOT单月份十五分钟', '2008-01-01'),
74
+ 'gw_future_single_1min': ('国外期货|CBOT 芝加哥期货交易所|CBOT单月份一分钟', '2008-01-01'),
75
+ 'gw_future_single_30min': ('国外期货|CBOT 芝加哥期货交易所|CBOT单月份三十分钟', '2008-01-01'),
76
+ 'gw_future_single_5min': ('国外期货|CBOT 芝加哥期货交易所|CBOT单月份五分钟', '2008-01-01'),
77
+ 'gw_future_single_60min': ('国外期货|CBOT 芝加哥期货交易所|CBOT单月份六十分钟', '2008-01-01'),
78
+ 'gw_future_single_day': ('国外期货|CBOT 芝加哥期货交易所|CBOT单月份日级别', '2008-01-01'),
79
+ 'hm_list': ('涨停打板|游资/营业部等基础名录信息|游资及营业部信息', '2016-01-01'),
80
+ 'mg_etf_15min': ('美股股票|美股etf|美股ETF十五分钟', '2000-01-01'),
81
+ 'mg_etf_1min': ('美股股票|美股etf|美股ETF一分钟', '2000-01-01'),
82
+ 'mg_etf_30min': ('美股股票|美股etf|美股ETF三十分钟', '2000-01-01'),
83
+ 'mg_etf_5min': ('美股股票|美股etf|美股ETF五分钟', '2000-01-01'),
84
+ 'mg_etf_60min': ('美股股票|美股etf|美股ETF六十分钟', '2000-01-01'),
85
+ 'mg_etf_day': ('美股股票|美股etf|美股ETF日级别', '2000-01-01'),
86
+ 'mg_finance_fuzhaibiao': ('美股股票|财务报表|资产负债表', '1992-01-01'),
87
+ 'mg_finance_lirunbiao': ('美股股票|财务报表|利润表', '1992-01-01'),
88
+ 'mg_finance_liuliangbiao': ('美股股票|财务报表|现金流量表', '1992-01-01'),
89
+ 'mg_index_15min': ('美股股票|美股指数|美股指数十五分钟', '2008-01-01'),
90
+ 'mg_index_1min': ('美股股票|美股指数|美股指数一分钟', '2008-01-01'),
91
+ 'mg_index_30min': ('美股股票|美股指数|美股指数三十分钟', '2008-01-01'),
92
+ 'mg_index_5min': ('美股股票|美股指数|美股指数五分钟', '2008-01-01'),
93
+ 'mg_index_60min': ('美股股票|美股指数|美股指数六十分钟', '2008-01-01'),
94
+ 'mg_index_day': ('美股股票|美股指数|美股指数日级别', '2008-01-01'),
95
+ 'mg_stock_15min': ('美股股票|美股股票分钟|美股十五分钟', '2000-01-01'),
96
+ 'mg_stock_1min': ('美股股票|美股股票分钟|美股一分钟', '2000-01-01'),
97
+ 'mg_stock_30min': ('美股股票|美股股票分钟|美股三十分钟', '2000-01-01'),
98
+ 'mg_stock_5min': ('美股股票|美股股票分钟|美股五分钟', '2000-01-01'),
99
+ 'mg_stock_60min': ('美股股票|美股股票分钟|美股六十分钟', '2000-01-01'),
100
+ 'mg_stock_day_hfq': ('美股股票|美股股票日级别|美股日级别后复权', '1970-01-01'),
101
+ 'mg_stock_day_qfq': ('美股股票|美股股票日级别|美股日级别前复权', '1970-01-01'),
102
+ 'qh_main_15min': ('期货数据|分钟数据(主连合约)|主连十五分钟', '2005-01-04'),
103
+ 'qh_main_1min': ('期货数据|分钟数据(主连合约)|主连一分钟', '2005-01-04'),
104
+ 'qh_main_30min': ('期货数据|分钟数据(主连合约)|主连三十分钟', '2005-01-04'),
105
+ 'qh_main_5min': ('期货数据|分钟数据(主连合约)|主连五分钟', '2005-01-04'),
106
+ 'qh_main_60min': ('期货数据|分钟数据(主连合约)|主连六十分钟', '2005-01-04'),
107
+ 'qh_main_day': ('期货数据|分钟数据(主连合约)|主连日级别', '2005-01-05'),
108
+ 'qh_main_month': ('期货数据|分钟数据(主连合约)|主连月级别', '2005-01-05'),
109
+ 'qh_main_time': ('期货数据|主力时间表|主力时间表', '2005-01-05'),
110
+ 'qh_main_week': ('期货数据|分钟数据(主连合约)|主连周级别', '2005-01-05'),
111
+ 'qh_single_15min': ('期货数据|分钟数据(单月份合约)|单月份十五分钟', '2005-01-04'),
112
+ 'qh_single_1min': ('期货数据|分钟数据(单月份合约)|单月份一分钟', '2005-01-04'),
113
+ 'qh_single_30min': ('期货数据|分钟数据(单月份合约)|单月份三十分钟', '2005-01-04'),
114
+ 'qh_single_5min': ('期货数据|分钟数据(单月份合约)|单月份五分钟', '2005-01-04'),
115
+ 'qh_single_60min': ('期货数据|分钟数据(单月份合约)|单月份六十分钟', '2005-01-04'),
116
+ 'qh_single_day': ('期货数据|分钟数据(单月份合约)|单月份日级别', '2005-01-05'),
117
+ 'qh_single_month': ('期货数据|分钟数据(单月份合约)|单月份月级别', '2005-01-05'),
118
+ 'qh_single_tick': ('国内期货|Level1一档tick|Level1一档tick', '2011-01-01'),
119
+ 'qh_single_week': ('期货数据|分钟数据(单月份合约)|单月份周级别', '2005-01-05'),
120
+ 'qh_xh': ('期货数据|现货数据|现货价格', '2013-01-04'),
121
+ 'gn_option_1min': ('国内期权|一分钟级别|一分钟级别', '2020-01-01'),
122
+ 'gn_option_day': ('国内期权|日级别|日级别', '2015-01-01'),
123
+ 'gn_option_hyxx': ('国内期权|合约信息|合约信息', '2015-01-01'),
124
+ 'gn_option_exist': ('国内期权|在市合约列表|在市合约列表', '2026-08-31'),
125
+ 'split_daily': ('股票数据|沪深京股票日周月-按股票打包|沪深股票日级别', '1991-01-01'),
126
+ 'split_daily_basic': ('股票数据|日级别含财务指标|日级别财务指标数据-个股打包', '1990-01-01'),
127
+ 'split_monthly': ('股票数据|沪深京股票日周月-按股票打包|沪深股票月级别', '1991-01-01'),
128
+ 'split_weekly': ('股票数据|沪深京股票日周月-按股票打包|沪深股票周级别', '1991-01-01'),
129
+ 'ths_index': ('涨停打板|同花顺行业概念板块|同花顺行业概念板块', '2016-01-01'),
130
+ 'ths_member': ('涨停打板|行业概念成分|行业概念成分', '2016-01-01'),
131
+ 'vip_a_factor_hfq_01': ('股票数据|沪深股票复权因子|沪深股票后复权因子', '2000-01-01'),
132
+ 'vip_a_factor_qfq_01': ('股票数据|沪深股票复权因子|沪深股票前复权因子', '2000-01-01'),
133
+ 'vip_cf_board_dc': ('大单资金流向|行业概念地域大单流向|板块大单流向', '2016-01-01'),
134
+ 'vip_cf_board_ths': ('大单资金流向|板块资金流向|领涨个股', '2016-01-01'),
135
+ 'vip_cf_hsgt': ('大单资金流向|沪深港通资金流向|沪深港通资金流向', '2016-01-01'),
136
+ 'vip_cf_ind_ths': ('大单资金流向|领涨行业资金流向数据|领涨行业板块', '2016-01-01'),
137
+ 'vip_cf_market_dc': ('大单资金流向|大盘大单资金流向|大盘大单资金流向', '2016-01-01'),
138
+ 'vip_cf_stock_dc': ('大单资金流向|主力资金净流入占比|个股大单', '2016-01-01'),
139
+ 'vip_cf_stock_ths': ('大单资金流向|个股资金流向|个股资金流向', '2016-01-01'),
140
+ 'vip_cf_stock_tier': ('大单资金流向|个股大中小单|个股大中小单', '2016-01-01'),
141
+ 'vip_gg_day_bfq_01': ('港股|港股日级别|港股日级别不复权', '1986-04-02'),
142
+ 'vip_gg_factor_qfq_01': ('港股|港股前复权因子|港股前复权因子', '1990-01-01'),
143
+ 'vip_gg_trade_calendar': ('港股|港股日历|港股日历', '1980-01-01'),
144
+ 'vip_gg_company_basic': ('港股|港股基本信息|港股基本信息', '1969-01-01'),
145
+ 'vip_gg_min_01': ('港股|港股分钟|港股一分钟', '2011-03-07'),
146
+ 'vip_gg_min_02': ('港股|港股分钟|港股五分钟', '2011-03-07'),
147
+ 'vip_gg_min_03': ('港股|港股分钟|港股十五分钟', '2011-03-07'),
148
+ 'vip_gg_min_04': ('港股|港股分钟|港股三十分钟', '2011-03-07'),
149
+ 'vip_idx_cons_daily': ('成分股板块|指数成分股名单合集日更|指数成分股名单合集日更', '2000-01-01'),
150
+ 'vip_idx_cons_single': ('成分股板块|单指数成分股名单|单指数成分股名单', '2000-01-01'),
151
+ 'vip_idx_stock_000001': ('成分股板块|上证指数成分股行情|上证指数成分股行情', '1991-01-01'),
152
+ 'vip_idx_stock_000010': ('成分股板块|上证180成分股行情|上证180成分股行情', '1991-01-01'),
153
+ 'vip_idx_stock_000016': ('成分股板块|上证50成分股行情|上证50成分股行情', '1991-01-01'),
154
+ 'vip_idx_stock_000300': ('成分股板块|沪深300成分股行情|沪深300成分股行情', '1991-01-01'),
155
+ 'vip_idx_stock_000688': ('成分股板块|科创50成分股行情|科创50成分股行情', '1991-01-01'),
156
+ 'vip_idx_stock_000852': ('成分股板块|中证1000成分股行情|中证1000成分股行情', '1991-01-01'),
157
+ 'vip_idx_stock_000905': ('成分股板块|中证500成分股行情|中证500成分股行情', '1991-01-01'),
158
+ 'vip_idx_stock_000906': ('成分股板块|中证800成分股行情|中证800成分股行情', '1991-01-01'),
159
+ 'vip_idx_stock_399001': ('成分股板块|深证综指成分股行情|深证综指成分股行情', '1991-01-01'),
160
+ 'vip_idx_stock_399006': ('成分股板块|创业板指成分股行情|创业板指成分股行情', '1991-01-01'),
161
+ 'vip_lb_dc_board': ('涨停打板|东财概念/行业/地域板块|东财概念行业地域板块', '2016-01-01'),
162
+ 'vip_lb_dc_index_day': ('涨停打板|东财概念和行业指数行情|东财概念和行业指数行情', '2000-01-01'),
163
+ 'vip_lb_dc_member': ('涨停打板|东财板块成分股|东财板块成分股', '2016-01-01'),
164
+ 'vip_lb_dc_theme': ('涨停打板|东财题材热度与排行|东财题材热度与排行', '2016-01-01'),
165
+ 'vip_lb_dc_theme_cons': ('涨停打板|东财题材成分股|东财题材成分股', '2016-01-01'),
166
+ 'vip_lb_dragon_inst': ('涨停打板|龙虎榜机构及营业部交易明细|龙虎榜机构及营业部交易明细', '2016-01-01'),
167
+ 'vip_lb_dragon_stat': ('涨停打板|龙虎榜统计每日数据|龙虎榜统计每日数据', '2016-01-01'),
168
+ 'vip_lb_limit_exch': ('涨停打板|涨跌停和炸板数据|涨跌停和炸板数据', '2016-01-01'),
169
+ 'vip_lb_limit_sector': ('涨停打板|连板涨停板块统计|连板涨停板块统计', '2016-01-01'),
170
+ 'vip_lb_limit_step': ('涨停打板|涨停股票连板天梯|涨停股票连板天梯', '2016-01-01'),
171
+ 'vip_lb_limit_ths': ('涨停打板|同花顺涨跌停榜单|涨跌停榜单', '2016-01-01'),
172
+ 'vip_lb_tdx_board': ('涨停打板|通达信板块信息|通达信板块信息', '2016-01-01'),
173
+ 'vip_lb_tdx_index_day': ('涨停打板|通达信板块行情|通达信板块行情', '2016-01-01'),
174
+ 'vip_lb_tdx_member': ('涨停打板|通达信板块成分|通达信板块成分', '2016-01-01'),
175
+ 'vip_lb_theme_cons': ('涨停打板|题材人气值|题材成分', '2016-01-01'),
176
+ 'vip_lb_ths_hot': ('涨停打板|同花顺热榜股票|同花顺热榜股票', '2016-01-01'),
177
+ 'vip_lb_ths_index_day': ('涨停打板|同花顺概念和行业指数行情|同花顺概念和行业指数行情', '2016-01-01'),
178
+ 'vip_macro_lpr': ('宏观数据|LPR贷款基础利率|LPR贷款基础利率', '2013-10-01'),
179
+ 'vip_macro_shibor': ('宏观数据|Shibor利率|Shibor利率', '2006-01-01'),
180
+ 'vip_macro_shibor_quote': ('宏观数据|Shibor报价数据|Shibor报价数据', '2006-01-01'),
181
+ 'vip_macro_treasury_yield': ('宏观数据|中国国债收益率|中国国债收益率', '2000-01-01'),
182
+ 'vip_macro_us_tbr': ('宏观数据|美国短期国债利率|美国短期国债利率', '2018-01-01'),
183
+ 'vip_macro_us_tltr': ('宏观数据|美国国债长期利率|美国国债长期利率', '2018-01-01'),
184
+ 'vip_macro_us_trltr': ('宏观数据|美国国债长期利率平均值|美国国债长期利率平均值', '2018-01-01'),
185
+ 'vip_macro_us_trycr': ('宏观数据|美国国债实际收益率曲线利率|美国国债实际收益率曲线利率', '2018-01-01'),
186
+ 'vip_macro_us_tycr': ('宏观数据|美国国债收益率曲线利率|美国国债收益率曲线利率', '2018-01-01'),
187
+ 'vip_mg_day_bfq_01': ('美股股票|美股股票日级别|美股日级别不复权', '1970-01-01'),
188
+ 'vip_mg_factor_qfq_01': ('美股股票|美股前复权因子|美股前复权因子', '1970-01-01'),
189
+ 'vip_mg_trade_calendar': ('美股股票|美股日历|美股日历', '1970-01-01'),
190
+ 'vip_mg_company_basic': ('美股股票|美股基本信息|美股基本信息', '1970-01-01'),
191
+ 'vip_nw_announce_01': ('财经新闻和公告|上市公司公告|沪深上市公司公告', '2013-01-04'),
192
+ 'vip_nw_cctv_01': ('财经新闻和公告|新闻联播|新闻联播文字稿', '2017-01-01'),
193
+ 'vip_nw_long_01': ('财经新闻和公告|财经新闻长讯|新华网', '2017-01-01'),
194
+ 'vip_nw_long_02': ('财经新闻和公告|财经新闻长讯|凤凰财经', '2019-08-28'),
195
+ 'vip_nw_long_03': ('财经新闻和公告|财经新闻长讯|同花顺', '2017-01-01'),
196
+ 'vip_nw_long_04': ('财经新闻和公告|财经新闻长讯|新浪财经', '2017-01-01'),
197
+ 'vip_nw_long_05': ('财经新闻和公告|财经新闻长讯|华尔街见闻', '2017-01-01'),
198
+ 'vip_nw_long_06': ('财经新闻和公告|财经新闻长讯|中证网', '2017-01-03'),
199
+ 'vip_nw_long_07': ('财经新闻和公告|财经新闻长讯|财新网', '2017-01-01'),
200
+ 'vip_nw_long_08': ('财经新闻和公告|财经新闻长讯|财联社', '2017-01-01'),
201
+ 'vip_nw_short_01': ('财经新闻和公告|财经新闻短讯|新浪财经', '2018-10-08'),
202
+ 'vip_nw_short_02': ('财经新闻和公告|财经新闻短讯|华尔街见闻', '2018-09-28'),
203
+ 'vip_nw_short_03': ('财经新闻和公告|财经新闻短讯|同花顺', '2018-10-24'),
204
+ 'vip_nw_short_04': ('财经新闻和公告|财经新闻短讯|东方财富', '2018-10-25'),
205
+ 'vip_nw_short_05': ('财经新闻和公告|财经新闻短讯|云财经', '2018-10-26'),
206
+ 'vip_nw_short_06': ('财经新闻和公告|财经新闻短讯|凤凰新闻', '2024-03-08'),
207
+ 'vip_nw_short_07': ('财经新闻和公告|财经新闻短讯|金融界', '2024-12-19'),
208
+ 'vip_nw_short_08': ('财经新闻和公告|财经新闻短讯|财联社', '2025-02-20'),
209
+ 'vip_nw_short_09': ('财经新闻和公告|财经新闻短讯|第一财经', '2025-06-09'),
210
+ 'vip_qh_contract': ('期货数据|合约信息|合约信息', '2005-01-01'),
211
+ 'vip_qh_hold_rank': ('期货数据|每日持仓排名|每日持仓排名', '2005-01-04'),
212
+ 'vip_qh_limit_price': ('期货数据|期货合约涨跌停价格|期货合约涨跌停价格', '2010-01-04'),
213
+ 'vip_qh_settle': ('期货数据|每日结算参数|每日结算参数', '2012-01-04'),
214
+ 'vip_qh_warrant': ('期货数据|仓单日报|仓单日报', '2006-01-01'),
215
+ 'vip_a_trade_calendar': ('股票数据|交易日历|交易日历', '1990-12-19'),
216
+ 'vip_a_st_list': ('股票数据|ST股票列表|ST股票列表', '2001-01-02'),
217
+ 'vip_a_company_basic': ('股票数据|上市公司基本信息|上市公司基本信息', '1955-10-01'),
218
+ 'vip_a_ipo_list': ('股票数据|IPO新股上市|IPO新股上市', '2008-01-03'),
219
+ 'vip_a_etf_basic': ('股票数据|ETF数据|ETF基本信息', '2004-12-30'),
220
+ 'vip_a_etf_adj_factor': ('股票数据|ETF数据|ETF复权因子', '2004-12-24'),
221
+ 'vip_a_etf_share': ('股票数据|ETF数据|ETF份额规模', '2010-01-04'),
222
+ 'vip_a_cb_basic': ('股票数据|可转债|可转债基本信息', '1993-02-10'),
223
+ 'vip_a_cb_issue': ('股票数据|可转债|可转债发行', '1998-07-30'),
224
+ 'vip_a_cb_redeem': ('股票数据|可转债|可转债赎回信息', '2004-04-14'),
225
+ 'vip_a_cb_coupon': ('股票数据|可转债|可转债票面利率', '1993-01-01'),
226
+ 'vip_a_cb_convert': ('股票数据|可转债|可转债转股结果', '2000-07-04'),
227
+ 'vip_a_block_trade': ('股票数据|可转债|大宗交易', '2010-04-26'),
228
+ 'wh_future_main_15min': ('国外期货|ICE 欧洲ICE期货交易所|欧洲_ICE主连十五分钟', '2016-04-25'),
229
+ 'wh_future_main_1min': ('国外期货|ICE 欧洲ICE期货交易所|欧洲_ICE主连一分钟', '2016-04-25'),
230
+ 'wh_future_main_30min': ('国外期货|ICE 欧洲ICE期货交易所|欧洲_ICE主连三十分钟', '2016-04-25'),
231
+ 'wh_future_main_5min': ('国外期货|ICE 欧洲ICE期货交易所|欧洲_ICE主连五分钟', '2016-04-25'),
232
+ 'wh_future_main_60min': ('国外期货|ICE 欧洲ICE期货交易所|欧洲_ICE主连六十分钟', '2016-04-25'),
233
+ 'wh_future_main_day': ('国外期货|ICE 欧洲ICE期货交易所|欧洲_ICE主连日级别', '1993-01-04'),
234
+ }
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+
5
+ import threading
6
+ import time
7
+ import pandas as pd
8
+ from openctp_ctp import mdapi
9
+
10
+
11
+ cmes_instrument_ids = []
12
+
13
+ class MarketDataSpi(mdapi.CThostFtdcMdSpi):
14
+
15
+ def __init__(self, api):
16
+ super().__init__()
17
+ self.api = api
18
+ self._bar_callback = None
19
+ self._tick_fields = None
20
+ self._skip_tick_fields = frozenset({"this", "thisown"})
21
+
22
+ def OnFrontConnected(self):
23
+ print("行情服务器连接成功")
24
+ req = mdapi.CThostFtdcReqUserLoginField()
25
+ req.UserID = ""
26
+ req.Password = ""
27
+ req.BrokerID = ""
28
+ self.api.ReqUserLogin(req, 0)
29
+
30
+ def OnRspUserLogin(self, pRspUserLogin, pRspInfo, nRequestID, bIsLast):
31
+ if pRspInfo and pRspInfo.ErrorID != 0:
32
+ print(f"登录失败: {pRspInfo.ErrorMsg}")
33
+ else:
34
+ print("登录成功,开始订阅行情")
35
+ global cmes_instrument_ids
36
+ instrument_ids = cmes_instrument_ids
37
+ result = self.api.SubscribeMarketData([i.encode('utf-8') for i in instrument_ids], len(instrument_ids))
38
+
39
+ print(f"✓ 订阅成功!")
40
+
41
+ def OnRtnDepthMarketData(self, pDepthMarketData):
42
+ # 或df = pd.DataFrame([vars(pDepthMarketData)])
43
+ if self._bar_callback is not None:
44
+ try:
45
+ if self._tick_fields is None:
46
+ fields = []
47
+ for attr in dir(pDepthMarketData):
48
+ if attr.startswith("_"):
49
+ continue
50
+ if attr in self._skip_tick_fields:
51
+ continue
52
+ try:
53
+ value = getattr(pDepthMarketData, attr)
54
+ except Exception:
55
+ continue
56
+ if callable(value):
57
+ continue
58
+ # 过滤 SWIG 内部指针对象(避免打印出 CThostFtdcDepthMarketDataField * / thisown)
59
+ if type(value).__name__ == "SwigPyObject":
60
+ continue
61
+ if isinstance(value, mdapi.CThostFtdcDepthMarketDataField):
62
+ continue
63
+ if hasattr(value, "this") and hasattr(value, "thisown"):
64
+ continue
65
+ if not callable(value):
66
+ fields.append(attr)
67
+ self._tick_fields = tuple(fields)
68
+
69
+ tick_dict = {}
70
+ for attr in self._tick_fields:
71
+ try:
72
+ tick_dict[attr] = getattr(pDepthMarketData, attr)
73
+ except Exception:
74
+ continue
75
+
76
+ df = pd.DataFrame([tick_dict])
77
+ self._bar_callback(df)
78
+ except Exception as e:
79
+ print(f"调用客户回调函数时出错: {e}")
80
+
81
+
82
+ def register_bar_callback(self, callback):
83
+ if callable(callback):
84
+ self._bar_callback = callback
85
+ else:
86
+ raise ValueError("回调函数必须是可调用对象")
87
+
88
+ _global_spi = None
89
+ _pending_callback = None
90
+
91
+
92
+ def subscribe_market_data():
93
+ from cmesdata.stock import fu_autu_token
94
+ if ':' not in fu_autu_token:
95
+ print('您未开通接口权限或已到期,请先开通期货权限')
96
+ return
97
+ global _global_spi, _pending_callback
98
+ api = mdapi.CThostFtdcMdApi.CreateFtdcMdApi()
99
+ spi = MarketDataSpi(api)
100
+ _global_spi = spi
101
+ tocken_mes_sdr = 'tcp:'
102
+ if _pending_callback is not None:
103
+ spi.register_bar_callback(_pending_callback)
104
+ _pending_callback = None
105
+ api.RegisterSpi(spi)
106
+ api.RegisterFront(f"{tocken_mes_sdr}//{fu_autu_token.split(':')[0]}:{fu_autu_token.split(':')[1]}")
107
+ api.Init()
108
+ api.Join()
109
+
110
+ def subscribe_future_code(code_list):
111
+ global cmes_instrument_ids
112
+ cmes_instrument_ids = code_list
113
+ thread = threading.Thread(target=subscribe_market_data, daemon=True)
114
+ thread.start()
115
+ time.sleep(1)
116
+
117
+
118
+ def register_push_callback(callback):
119
+ global _global_spi, _pending_callback
120
+ if _global_spi is not None:
121
+ _global_spi.register_bar_callback(callback)
122
+ else:
123
+ _pending_callback = callback
124
+
125
+
126
+ def onbar_test_cmes(df):
127
+ print('收到行情推送')
128
+ print(df.to_string())
129
+
130
+ if __name__ == "__main__":
131
+ subscribe_future_code(['ag2601'])
132
+ register_push_callback(onbar_test_cmes)
133
+ while True:
134
+ time.sleep(5)
135
+
136
+