akshare 1.12.95__py3-none-any.whl → 1.15.72__py3-none-any.whl
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.
Potentially problematic release.
This version of akshare might be problematic. Click here for more details.
- akshare/__init__.py +446 -139
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_convert.py +40 -16
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/{bond_zh_cov_sina.py → bond_zh_cov.py} +41 -17
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +20 -19
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_lof_em.py +10 -8
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +73 -50
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_hog.py +27 -26
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +17 -14
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_ask_bid_em.py +27 -3
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- akshare/stock/stock_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +164 -111
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/METADATA +52 -69
- akshare-1.15.72.dist-info/RECORD +385 -0
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/WHEEL +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fortune/fortune_it_juzi.py +0 -123
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.95.dist-info/RECORD +0 -374
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/LICENSE +0 -0
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/top_level.txt +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/3/20 16:00
|
|
5
5
|
Desc: 新浪财经-国内期货-实时数据获取
|
|
6
|
-
|
|
6
|
+
https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_3
|
|
7
7
|
P.S. 注意采集速度, 容易封禁 IP, 如果不能访问请稍后再试
|
|
8
8
|
"""
|
|
9
|
+
|
|
9
10
|
import json
|
|
10
11
|
import time
|
|
11
12
|
from functools import lru_cache
|
|
12
13
|
|
|
13
14
|
import pandas as pd
|
|
14
15
|
import requests
|
|
15
|
-
|
|
16
|
+
import py_mini_racer
|
|
16
17
|
|
|
17
18
|
from akshare.futures.cons import (
|
|
18
19
|
zh_subscribe_exchange_symbol_url,
|
|
@@ -27,15 +28,17 @@ from akshare.utils import demjson
|
|
|
27
28
|
def futures_symbol_mark() -> pd.DataFrame:
|
|
28
29
|
"""
|
|
29
30
|
期货的品种和代码映射
|
|
30
|
-
|
|
31
|
+
https://vip.stock.finance.sina.com.cn/quotes_service/view/js/qihuohangqing.js
|
|
31
32
|
:return: 期货的品种和代码映射
|
|
32
33
|
:rtype: pandas.DataFrame
|
|
33
34
|
"""
|
|
34
|
-
url =
|
|
35
|
+
url = (
|
|
36
|
+
"https://vip.stock.finance.sina.com.cn/quotes_service/view/js/qihuohangqing.js"
|
|
37
|
+
)
|
|
35
38
|
r = requests.get(url)
|
|
36
39
|
r.encoding = "gb2312"
|
|
37
40
|
data_text = r.text
|
|
38
|
-
raw_json = data_text[data_text.find("{"): data_text.find("}") + 1]
|
|
41
|
+
raw_json = data_text[data_text.find("{") : data_text.find("}") + 1]
|
|
39
42
|
data_json = demjson.decode(raw_json)
|
|
40
43
|
czce_mark_list = [item[1] for item in data_json["czce"][1:]]
|
|
41
44
|
dce_mark_list = [item[1] for item in data_json["dce"][1:]]
|
|
@@ -43,11 +46,11 @@ def futures_symbol_mark() -> pd.DataFrame:
|
|
|
43
46
|
cffex_mark_list = [item[1] for item in data_json["cffex"][1:]]
|
|
44
47
|
gfex_mark_list = [item[1] for item in data_json["gfex"][1:]]
|
|
45
48
|
all_mark_list = (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
czce_mark_list
|
|
50
|
+
+ dce_mark_list
|
|
51
|
+
+ shfe_mark_list
|
|
52
|
+
+ cffex_mark_list
|
|
53
|
+
+ gfex_mark_list
|
|
51
54
|
)
|
|
52
55
|
|
|
53
56
|
czce_market_name_list = [data_json["czce"][0]] * len(czce_mark_list)
|
|
@@ -56,11 +59,11 @@ def futures_symbol_mark() -> pd.DataFrame:
|
|
|
56
59
|
cffex_market_name_list = [data_json["cffex"][0]] * len(cffex_mark_list)
|
|
57
60
|
gfex_market_name_list = [data_json["gfex"][0]] * len(gfex_mark_list)
|
|
58
61
|
all_market_name_list = (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
czce_market_name_list
|
|
63
|
+
+ dce_market_name_list
|
|
64
|
+
+ shfe_market_name_list
|
|
65
|
+
+ cffex_market_name_list
|
|
66
|
+
+ gfex_market_name_list
|
|
64
67
|
)
|
|
65
68
|
|
|
66
69
|
czce_symbol_list = [item[0] for item in data_json["czce"][1:]]
|
|
@@ -69,11 +72,11 @@ def futures_symbol_mark() -> pd.DataFrame:
|
|
|
69
72
|
cffex_symbol_list = [item[0] for item in data_json["cffex"][1:]]
|
|
70
73
|
gfex_symbol_list = [item[0] for item in data_json["gfex"][1:]]
|
|
71
74
|
all_symbol_list = (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
czce_symbol_list
|
|
76
|
+
+ dce_symbol_list
|
|
77
|
+
+ shfe_symbol_list
|
|
78
|
+
+ cffex_symbol_list
|
|
79
|
+
+ gfex_symbol_list
|
|
77
80
|
)
|
|
78
81
|
|
|
79
82
|
temp_df = pd.DataFrame([all_market_name_list, all_symbol_list, all_mark_list]).T
|
|
@@ -88,7 +91,7 @@ def futures_symbol_mark() -> pd.DataFrame:
|
|
|
88
91
|
def futures_zh_realtime(symbol: str = "白糖") -> pd.DataFrame:
|
|
89
92
|
"""
|
|
90
93
|
期货品种当前时刻所有可交易的合约实时数据
|
|
91
|
-
|
|
94
|
+
https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1
|
|
92
95
|
:param symbol: 品种名称;可以通过 ak.futures_symbol_mark() 获取所有品种命名表
|
|
93
96
|
:type symbol: str
|
|
94
97
|
:return: 期货品种当前时刻所有可交易的合约实时数据
|
|
@@ -98,7 +101,7 @@ def futures_zh_realtime(symbol: str = "白糖") -> pd.DataFrame:
|
|
|
98
101
|
symbol_mark_map = dict(
|
|
99
102
|
zip(_futures_symbol_mark_df["symbol"], _futures_symbol_mark_df["mark"])
|
|
100
103
|
)
|
|
101
|
-
url = "
|
|
104
|
+
url = "https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQFuturesData"
|
|
102
105
|
params = {
|
|
103
106
|
"page": "1",
|
|
104
107
|
"sort": "position",
|
|
@@ -127,14 +130,16 @@ def futures_zh_realtime(symbol: str = "白糖") -> pd.DataFrame:
|
|
|
127
130
|
temp_df["changepercent"] = pd.to_numeric(temp_df["changepercent"], errors="coerce")
|
|
128
131
|
temp_df["bid"] = pd.to_numeric(temp_df["bid"], errors="coerce")
|
|
129
132
|
temp_df["ask"] = pd.to_numeric(temp_df["ask"], errors="coerce")
|
|
130
|
-
temp_df["prevsettlement"] = pd.to_numeric(
|
|
133
|
+
temp_df["prevsettlement"] = pd.to_numeric(
|
|
134
|
+
temp_df["prevsettlement"], errors="coerce"
|
|
135
|
+
)
|
|
131
136
|
return temp_df
|
|
132
137
|
|
|
133
138
|
|
|
134
139
|
def zh_subscribe_exchange_symbol(symbol: str = "cffex") -> pd.DataFrame:
|
|
135
140
|
"""
|
|
136
141
|
交易所具体的可交易品种
|
|
137
|
-
|
|
142
|
+
https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1
|
|
138
143
|
:param symbol: choice of {'czce', 'dce', 'shfe', 'cffex', 'gfex'}
|
|
139
144
|
:type symbol: str
|
|
140
145
|
:return: 交易所具体的可交易品种
|
|
@@ -144,7 +149,7 @@ def zh_subscribe_exchange_symbol(symbol: str = "cffex") -> pd.DataFrame:
|
|
|
144
149
|
r.encoding = "gbk"
|
|
145
150
|
data_text = r.text
|
|
146
151
|
data_json = demjson.decode(
|
|
147
|
-
data_text[data_text.find("{"): data_text.find("};") + 1]
|
|
152
|
+
data_text[data_text.find("{") : data_text.find("};") + 1]
|
|
148
153
|
)
|
|
149
154
|
if symbol == "czce":
|
|
150
155
|
data_json["czce"].remove("郑州商品交易所")
|
|
@@ -166,7 +171,7 @@ def zh_subscribe_exchange_symbol(symbol: str = "cffex") -> pd.DataFrame:
|
|
|
166
171
|
def match_main_contract(symbol: str = "cffex") -> str:
|
|
167
172
|
"""
|
|
168
173
|
新浪财经-期货-主力合约
|
|
169
|
-
|
|
174
|
+
https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1
|
|
170
175
|
:param symbol: choice of {'czce', 'dce', 'shfe', 'cffex', 'gfex'}
|
|
171
176
|
:type symbol: str
|
|
172
177
|
:return: 主力合约的字符串
|
|
@@ -186,7 +191,7 @@ def match_main_contract(symbol: str = "cffex") -> str:
|
|
|
186
191
|
main_contract = data_df[data_df.iloc[:, 3:].duplicated()]
|
|
187
192
|
print(main_contract["symbol"].values[0])
|
|
188
193
|
subscribe_exchange_list.append(main_contract["symbol"].values[0])
|
|
189
|
-
except:
|
|
194
|
+
except: # noqa: E722
|
|
190
195
|
if len(data_df) == 1:
|
|
191
196
|
subscribe_exchange_list.append(data_df["symbol"].values[0])
|
|
192
197
|
print(data_df["symbol"].values[0])
|
|
@@ -198,9 +203,9 @@ def match_main_contract(symbol: str = "cffex") -> str:
|
|
|
198
203
|
|
|
199
204
|
|
|
200
205
|
def futures_zh_spot(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
206
|
+
symbol: str = "V2309",
|
|
207
|
+
market: str = "CF",
|
|
208
|
+
adjust: str = "0",
|
|
204
209
|
) -> pd.DataFrame:
|
|
205
210
|
"""
|
|
206
211
|
期货的实时行情数据
|
|
@@ -227,8 +232,9 @@ def futures_zh_spot(
|
|
|
227
232
|
"Host": "hq.sinajs.cn",
|
|
228
233
|
"Pragma": "no-cache",
|
|
229
234
|
"Proxy-Connection": "keep-alive",
|
|
230
|
-
"Referer": "
|
|
231
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
235
|
+
"Referer": "https://vip.stock.finance.sina.com.cn/",
|
|
236
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
237
|
+
"Chrome/97.0.4692.71 Safari/537.36",
|
|
232
238
|
}
|
|
233
239
|
r = requests.get(url, headers=headers)
|
|
234
240
|
data_df = pd.DataFrame(
|
|
@@ -307,7 +313,9 @@ def futures_zh_spot(
|
|
|
307
313
|
data_df["open"] = pd.to_numeric(data_df["open"], errors="coerce")
|
|
308
314
|
data_df["high"] = pd.to_numeric(data_df["high"], errors="coerce")
|
|
309
315
|
data_df["low"] = pd.to_numeric(data_df["low"], errors="coerce")
|
|
310
|
-
data_df["current_price"] = pd.to_numeric(
|
|
316
|
+
data_df["current_price"] = pd.to_numeric(
|
|
317
|
+
data_df["current_price"], errors="coerce"
|
|
318
|
+
)
|
|
311
319
|
data_df["bid_price"] = pd.to_numeric(data_df["bid_price"], errors="coerce")
|
|
312
320
|
data_df["ask_price"] = pd.to_numeric(data_df["ask_price"], errors="coerce")
|
|
313
321
|
data_df["buy_vol"] = pd.to_numeric(data_df["buy_vol"], errors="coerce")
|
|
@@ -315,8 +323,12 @@ def futures_zh_spot(
|
|
|
315
323
|
data_df["hold"] = pd.to_numeric(data_df["hold"], errors="coerce")
|
|
316
324
|
data_df["volume"] = pd.to_numeric(data_df["volume"], errors="coerce")
|
|
317
325
|
data_df["avg_price"] = pd.to_numeric(data_df["avg_price"], errors="coerce")
|
|
318
|
-
data_df["last_close"] = pd.to_numeric(
|
|
319
|
-
|
|
326
|
+
data_df["last_close"] = pd.to_numeric(
|
|
327
|
+
data_df["last_close"], errors="coerce"
|
|
328
|
+
)
|
|
329
|
+
data_df["last_settle_price"] = pd.to_numeric(
|
|
330
|
+
data_df["last_settle_price"], errors="coerce"
|
|
331
|
+
)
|
|
320
332
|
data_df.dropna(subset=["current_price"], ignore_index=True, inplace=True)
|
|
321
333
|
return data_df
|
|
322
334
|
else:
|
|
@@ -391,7 +403,9 @@ def futures_zh_spot(
|
|
|
391
403
|
data_df["open"] = pd.to_numeric(data_df["open"], errors="coerce")
|
|
392
404
|
data_df["high"] = pd.to_numeric(data_df["high"], errors="coerce")
|
|
393
405
|
data_df["low"] = pd.to_numeric(data_df["low"], errors="coerce")
|
|
394
|
-
data_df["current_price"] = pd.to_numeric(
|
|
406
|
+
data_df["current_price"] = pd.to_numeric(
|
|
407
|
+
data_df["current_price"], errors="coerce"
|
|
408
|
+
)
|
|
395
409
|
data_df["hold"] = pd.to_numeric(data_df["hold"], errors="coerce")
|
|
396
410
|
data_df["volume"] = pd.to_numeric(data_df["volume"], errors="coerce")
|
|
397
411
|
data_df["amount"] = pd.to_numeric(data_df["amount"], errors="coerce")
|
|
@@ -431,7 +445,7 @@ def futures_zh_spot(
|
|
|
431
445
|
"_",
|
|
432
446
|
"_",
|
|
433
447
|
]
|
|
434
|
-
except:
|
|
448
|
+
except: # noqa: E722
|
|
435
449
|
data_df.columns = [
|
|
436
450
|
"symbol",
|
|
437
451
|
"time",
|
|
@@ -501,7 +515,9 @@ def futures_zh_spot(
|
|
|
501
515
|
data_df["open"] = pd.to_numeric(data_df["open"], errors="coerce")
|
|
502
516
|
data_df["high"] = pd.to_numeric(data_df["high"], errors="coerce")
|
|
503
517
|
data_df["low"] = pd.to_numeric(data_df["low"], errors="coerce")
|
|
504
|
-
data_df["current_price"] = pd.to_numeric(
|
|
518
|
+
data_df["current_price"] = pd.to_numeric(
|
|
519
|
+
data_df["current_price"], errors="coerce"
|
|
520
|
+
)
|
|
505
521
|
data_df["bid_price"] = pd.to_numeric(data_df["bid_price"], errors="coerce")
|
|
506
522
|
data_df["ask_price"] = pd.to_numeric(data_df["ask_price"], errors="coerce")
|
|
507
523
|
data_df["buy_vol"] = pd.to_numeric(data_df["buy_vol"], errors="coerce")
|
|
@@ -509,8 +525,12 @@ def futures_zh_spot(
|
|
|
509
525
|
data_df["hold"] = pd.to_numeric(data_df["hold"], errors="coerce")
|
|
510
526
|
data_df["volume"] = pd.to_numeric(data_df["volume"], errors="coerce")
|
|
511
527
|
data_df["avg_price"] = pd.to_numeric(data_df["avg_price"], errors="coerce")
|
|
512
|
-
data_df["last_close"] = pd.to_numeric(
|
|
513
|
-
|
|
528
|
+
data_df["last_close"] = pd.to_numeric(
|
|
529
|
+
data_df["last_close"], errors="coerce"
|
|
530
|
+
)
|
|
531
|
+
data_df["last_settle_price"] = pd.to_numeric(
|
|
532
|
+
data_df["last_settle_price"], errors="coerce"
|
|
533
|
+
)
|
|
514
534
|
data_df.dropna(subset=["current_price"], ignore_index=True, inplace=True)
|
|
515
535
|
return data_df
|
|
516
536
|
else:
|
|
@@ -582,7 +602,9 @@ def futures_zh_spot(
|
|
|
582
602
|
data_df["open"] = pd.to_numeric(data_df["open"], errors="coerce")
|
|
583
603
|
data_df["high"] = pd.to_numeric(data_df["high"], errors="coerce")
|
|
584
604
|
data_df["low"] = pd.to_numeric(data_df["low"], errors="coerce")
|
|
585
|
-
data_df["current_price"] = pd.to_numeric(
|
|
605
|
+
data_df["current_price"] = pd.to_numeric(
|
|
606
|
+
data_df["current_price"], errors="coerce"
|
|
607
|
+
)
|
|
586
608
|
data_df["hold"] = pd.to_numeric(data_df["hold"], errors="coerce")
|
|
587
609
|
data_df["volume"] = pd.to_numeric(data_df["volume"], errors="coerce")
|
|
588
610
|
data_df["amount"] = pd.to_numeric(data_df["amount"], errors="coerce")
|
|
@@ -626,17 +648,20 @@ def futures_zh_minute_sina(symbol: str = "IF2008", period: str = "5") -> pd.Data
|
|
|
626
648
|
return temp_df
|
|
627
649
|
|
|
628
650
|
|
|
629
|
-
def futures_zh_daily_sina(symbol: str = "
|
|
651
|
+
def futures_zh_daily_sina(symbol: str = "RB0") -> pd.DataFrame:
|
|
630
652
|
"""
|
|
631
653
|
中国各品种期货日频率数据
|
|
632
654
|
https://finance.sina.com.cn/futures/quotes/V2105.shtml
|
|
633
655
|
:param symbol: 可以通过 match_main_contract(symbol="cffex") 获取, 或者访问网页获取
|
|
634
656
|
:type symbol: str
|
|
635
|
-
:return: 指定 symbol
|
|
657
|
+
:return: 指定 symbol 的数据
|
|
636
658
|
:rtype: pandas.DataFrame
|
|
637
659
|
"""
|
|
638
660
|
date = "20210412"
|
|
639
|
-
url =
|
|
661
|
+
url = (
|
|
662
|
+
"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_V21052021_4_12="
|
|
663
|
+
"/InnerFuturesNewService.getDailyKLine"
|
|
664
|
+
)
|
|
640
665
|
params = {
|
|
641
666
|
"symbol": symbol,
|
|
642
667
|
"type": "_".join([date[:4], date[4:6], date[6:]]),
|
|
@@ -667,9 +692,7 @@ if __name__ == "__main__":
|
|
|
667
692
|
match_main_contract_df = match_main_contract(symbol="gfex")
|
|
668
693
|
print(match_main_contract_df)
|
|
669
694
|
|
|
670
|
-
futures_zh_spot_df = futures_zh_spot(
|
|
671
|
-
symbol="V2405,V2409", market="CF", adjust="0"
|
|
672
|
-
)
|
|
695
|
+
futures_zh_spot_df = futures_zh_spot(symbol="V2405,V2409", market="CF", adjust="0")
|
|
673
696
|
print(futures_zh_spot_df)
|
|
674
697
|
|
|
675
698
|
futures_zh_spot_df = futures_zh_spot(symbol="V2405", market="CF", adjust="0")
|
|
@@ -684,10 +707,10 @@ if __name__ == "__main__":
|
|
|
684
707
|
futures_zh_minute_sina_df = futures_zh_minute_sina(symbol="SI2406", period="1")
|
|
685
708
|
print(futures_zh_minute_sina_df)
|
|
686
709
|
|
|
687
|
-
futures_zh_daily_sina_df = futures_zh_daily_sina(symbol="
|
|
710
|
+
futures_zh_daily_sina_df = futures_zh_daily_sina(symbol="RB0")
|
|
688
711
|
print(futures_zh_daily_sina_df)
|
|
689
712
|
|
|
690
|
-
futures_zh_daily_sina_df = futures_zh_daily_sina(symbol="
|
|
713
|
+
futures_zh_daily_sina_df = futures_zh_daily_sina(symbol="RB2410")
|
|
691
714
|
print(futures_zh_daily_sina_df)
|
|
692
715
|
|
|
693
716
|
dce_text = match_main_contract(symbol="dce")
|
akshare/futures/symbol_var.py
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/11/28 22:00
|
|
5
5
|
Desc: 期货品种映射表
|
|
6
6
|
"""
|
|
7
|
+
|
|
7
8
|
import re
|
|
8
9
|
|
|
9
10
|
from akshare.futures import cons
|
|
@@ -151,18 +152,20 @@ def chinese_to_english(chinese_var: str):
|
|
|
151
152
|
"低硫燃料油仓库",
|
|
152
153
|
"低硫燃料油厂库",
|
|
153
154
|
"短纤",
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
155
|
+
"涤纶短纤",
|
|
156
|
+
"生猪",
|
|
157
|
+
"花生",
|
|
158
|
+
"工业硅",
|
|
159
|
+
"氧化铝",
|
|
160
|
+
"丁二烯橡胶",
|
|
161
|
+
"碳酸锂",
|
|
162
|
+
"氧化铝仓库",
|
|
163
|
+
"氧化铝厂库",
|
|
164
|
+
"烧碱",
|
|
165
|
+
"丁二烯橡胶仓库",
|
|
166
|
+
"丁二烯橡胶厂库",
|
|
167
|
+
"PX",
|
|
168
|
+
"原木",
|
|
166
169
|
]
|
|
167
170
|
english_list = [
|
|
168
171
|
"RU",
|
|
@@ -277,6 +280,8 @@ def chinese_to_english(chinese_var: str):
|
|
|
277
280
|
"SH",
|
|
278
281
|
"BR",
|
|
279
282
|
"BR",
|
|
283
|
+
"PX",
|
|
284
|
+
"LG",
|
|
280
285
|
]
|
|
281
286
|
pos = chinese_list.index(chinese_var)
|
|
282
287
|
return english_list[pos]
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/4/11 16:30
|
|
5
5
|
Desc: 郑州商品交易所-交易数据-参考数据
|
|
6
6
|
http://www.czce.com.cn/cn/jysj/cksj/H770322index_1.htm
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import xml.etree.ElementTree as ET
|
|
9
10
|
|
|
10
11
|
import pandas as pd
|
|
@@ -19,8 +20,10 @@ def futures_contract_info_czce(date: str = "20240228") -> pd.DataFrame:
|
|
|
19
20
|
:rtype: pandas.DataFrame
|
|
20
21
|
"""
|
|
21
22
|
headers = {
|
|
22
|
-
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,
|
|
23
|
-
"
|
|
23
|
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,"
|
|
24
|
+
"image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
|
|
25
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
26
|
+
"Chrome/84.0.4147.89 Safari/537.36",
|
|
24
27
|
"Host": "www.czce.com.cn",
|
|
25
28
|
}
|
|
26
29
|
url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataReferenceData.xml"
|
|
@@ -30,7 +33,7 @@ def futures_contract_info_czce(date: str = "20240228") -> pd.DataFrame:
|
|
|
30
33
|
tree = ET.ElementTree(ET.fromstring(xml_data))
|
|
31
34
|
root = tree.getroot()
|
|
32
35
|
# 获取所有的记录
|
|
33
|
-
records = root.findall(
|
|
36
|
+
records = root.findall(".//Contract")
|
|
34
37
|
# 解析数据并填充到列表中
|
|
35
38
|
data = []
|
|
36
39
|
for record in records:
|
|
@@ -42,57 +45,62 @@ def futures_contract_info_czce(date: str = "20240228") -> pd.DataFrame:
|
|
|
42
45
|
data.append(row_data)
|
|
43
46
|
|
|
44
47
|
temp_df = pd.DataFrame(data)
|
|
45
|
-
temp_df.rename(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
48
|
+
temp_df.rename(
|
|
49
|
+
columns={
|
|
50
|
+
"Name": "产品名称",
|
|
51
|
+
"CtrCd": "合约代码",
|
|
52
|
+
"PrdCd": "产品代码",
|
|
53
|
+
"PrdTp": "产品类型",
|
|
54
|
+
"ExchCd": "交易所MIC编码",
|
|
55
|
+
"SegTp": "交易场所",
|
|
56
|
+
"TrdHrs": "交易时间节假日除外",
|
|
57
|
+
"TrdCtyCd": "交易国家ISO编码",
|
|
58
|
+
"TrdCcyCd": "交易币种ISO编码",
|
|
59
|
+
"ClrngCcyCd": "结算币种ISO编码",
|
|
60
|
+
"ExpiryTime": "到期时间待国家公布2025年节假日安排后进行调整",
|
|
61
|
+
"SettleTp": "结算方式",
|
|
62
|
+
"Duration": "挂牌频率",
|
|
63
|
+
"TckSz": "最小变动价位",
|
|
64
|
+
"TckVal": "最小变动价值",
|
|
65
|
+
"CtrSz": "交易单位",
|
|
66
|
+
"MsrmntUnt": "计量单位",
|
|
67
|
+
"MaxOrdSz": "最大下单量",
|
|
68
|
+
"MnthPosLmt": "日持仓限额期货公司会员不限仓",
|
|
69
|
+
"MinBlckTrdSz": "大宗交易最小规模",
|
|
70
|
+
"CesrEaaFl": "是否受CESR监管",
|
|
71
|
+
"FlexElgblFl": "是否为灵活合约",
|
|
72
|
+
"ListCy": "上市周期该产品的所有合约月份",
|
|
73
|
+
"DlvryNtcDt": "交割通知日",
|
|
74
|
+
"FrstTrdDt": "第一交易日",
|
|
75
|
+
"LstTrdDt": "最后交易日待国家公布2025年节假日安排后进行调整",
|
|
76
|
+
"DlvrySettleDt": "交割结算日",
|
|
77
|
+
"MnthCd": "月份代码",
|
|
78
|
+
"YrCd": "年份代码",
|
|
79
|
+
"LstDlvryDt": "最后交割日",
|
|
80
|
+
"LstDlvryDtBoard": "车(船)板最后交割日",
|
|
81
|
+
"DlvryMnth": "合约交割月份本合约交割月份",
|
|
82
|
+
"Margin": "交易保证金率",
|
|
83
|
+
"PxLim": "涨跌停板",
|
|
84
|
+
"FeeCcy": "费用币种ISO编码",
|
|
85
|
+
"TrdFee": "交易手续费",
|
|
86
|
+
"FeeCollectionType": "手续费收取方式",
|
|
87
|
+
"DlvryFee": "交割手续费",
|
|
88
|
+
"IntraDayTrdFee": "平今仓手续费",
|
|
89
|
+
"TradingLimit": "交易限额",
|
|
90
|
+
},
|
|
91
|
+
inplace=True,
|
|
92
|
+
)
|
|
87
93
|
|
|
88
|
-
temp_df[
|
|
89
|
-
temp_df[
|
|
90
|
-
temp_df[
|
|
91
|
-
temp_df[
|
|
92
|
-
temp_df[
|
|
94
|
+
temp_df["交易手续费"] = pd.to_numeric(temp_df["交易手续费"], errors="coerce")
|
|
95
|
+
temp_df["交割手续费"] = pd.to_numeric(temp_df["交割手续费"], errors="coerce")
|
|
96
|
+
temp_df["平今仓手续费"] = pd.to_numeric(temp_df["平今仓手续费"], errors="coerce")
|
|
97
|
+
temp_df["交易限额"] = pd.to_numeric(temp_df["交易限额"], errors="coerce")
|
|
98
|
+
temp_df["车(船)板最后交割日"] = pd.to_datetime(
|
|
99
|
+
temp_df["车(船)板最后交割日"], errors="coerce"
|
|
100
|
+
).dt.date
|
|
93
101
|
return temp_df
|
|
94
102
|
|
|
95
103
|
|
|
96
|
-
if __name__ ==
|
|
104
|
+
if __name__ == "__main__":
|
|
97
105
|
futures_contract_info_czce_df = futures_contract_info_czce(date="20240228")
|
|
98
106
|
print(futures_contract_info_czce_df)
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/11/30 19:00
|
|
5
5
|
Desc: 上海国际能源交易中心-业务指南-交易参数汇总(期货)
|
|
6
6
|
https://www.ine.cn/bourseService/summary/?name=currinstrumentprop
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
def futures_contract_info_ine(date: str = "
|
|
13
|
+
def futures_contract_info_ine(date: str = "20241129") -> pd.DataFrame:
|
|
13
14
|
"""
|
|
14
15
|
上海国际能源交易中心-业务指南-交易参数汇总(期货)
|
|
15
16
|
https://www.ine.cn/bourseService/summary/?name=currinstrumentprop
|
|
@@ -18,43 +19,51 @@ def futures_contract_info_ine(date: str = "20240228") -> pd.DataFrame:
|
|
|
18
19
|
:return: 交易参数汇总查询
|
|
19
20
|
:rtype: pandas.DataFrame
|
|
20
21
|
"""
|
|
21
|
-
url = f"https://www.ine.cn/data/
|
|
22
|
-
params = {
|
|
23
|
-
"rnd": "0.8312696798757147"
|
|
24
|
-
}
|
|
22
|
+
url = f"https://www.ine.cn/data/busiparamdata/future/ContractBaseInfo{date}.dat"
|
|
23
|
+
params = {"rnd": "0.8312696798757147"}
|
|
25
24
|
headers = {
|
|
26
|
-
|
|
25
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
26
|
+
"Chrome/119.0.0.0 Safari/537.36"
|
|
27
27
|
}
|
|
28
28
|
r = requests.get(url, params=params, headers=headers)
|
|
29
29
|
data_json = r.json()
|
|
30
|
-
temp_df = pd.DataFrame(data_json[
|
|
31
|
-
temp_df.rename(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
temp_df[
|
|
30
|
+
temp_df = pd.DataFrame(data_json["ContractBaseInfo"])
|
|
31
|
+
temp_df.rename(
|
|
32
|
+
columns={
|
|
33
|
+
"BASISPRICE": "挂牌基准价",
|
|
34
|
+
"ENDDELIVDATE": "最后交割日",
|
|
35
|
+
"EXPIREDATE": "到期日",
|
|
36
|
+
"INSTRUMENTID": "合约代码",
|
|
37
|
+
"OPENDATE": "上市日",
|
|
38
|
+
"STARTDELIVDATE": "开始交割日",
|
|
39
|
+
"TRADINGDAY": "交易日",
|
|
40
|
+
},
|
|
41
|
+
inplace=True,
|
|
42
|
+
)
|
|
43
|
+
temp_df = temp_df[
|
|
44
|
+
[
|
|
45
|
+
"合约代码",
|
|
46
|
+
"上市日",
|
|
47
|
+
"到期日",
|
|
48
|
+
"开始交割日",
|
|
49
|
+
"最后交割日",
|
|
50
|
+
"挂牌基准价",
|
|
51
|
+
"交易日",
|
|
52
|
+
]
|
|
53
|
+
]
|
|
54
|
+
temp_df["上市日"] = pd.to_datetime(temp_df["上市日"], errors="coerce").dt.date
|
|
55
|
+
temp_df["到期日"] = pd.to_datetime(temp_df["到期日"], errors="coerce").dt.date
|
|
56
|
+
temp_df["开始交割日"] = pd.to_datetime(
|
|
57
|
+
temp_df["开始交割日"], errors="coerce"
|
|
58
|
+
).dt.date
|
|
59
|
+
temp_df["最后交割日"] = pd.to_datetime(
|
|
60
|
+
temp_df["最后交割日"], errors="coerce"
|
|
61
|
+
).dt.date
|
|
62
|
+
temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
|
|
63
|
+
temp_df["挂牌基准价"] = pd.to_numeric(temp_df["挂牌基准价"], errors="coerce")
|
|
55
64
|
return temp_df
|
|
56
65
|
|
|
57
66
|
|
|
58
|
-
if __name__ ==
|
|
59
|
-
futures_contract_info_ine_df = futures_contract_info_ine(date="
|
|
67
|
+
if __name__ == "__main__":
|
|
68
|
+
futures_contract_info_ine_df = futures_contract_info_ine(date="20241129")
|
|
60
69
|
print(futures_contract_info_ine_df)
|