akshare 1.14.49__py3-none-any.whl → 1.17.99__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.
- akshare/__init__.py +595 -129
- akshare/air/air_hebei.py +77 -54
- akshare/air/air_zhenqi.py +0 -4
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/article/cons.py +1 -0
- akshare/article/epu_index.py +4 -3
- akshare/article/ff_factor.py +19 -8
- akshare/article/fred_md.py +4 -1
- akshare/article/risk_rv.py +3 -8
- akshare/bank/bank_cbirc_2020.py +11 -11
- akshare/bank/cons.py +7 -6
- akshare/bond/bond_buy_back_em.py +228 -0
- akshare/bond/bond_cb_sina.py +1 -0
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_cbond.py +19 -14
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +1 -1
- akshare/bond/bond_convert.py +10 -9
- akshare/bond/bond_em.py +37 -17
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +31 -40
- akshare/bond/bond_zh_sina.py +4 -0
- akshare/bond/cons.py +14 -11
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/crypto/__init__.py +1 -1
- akshare/crypto/crypto_bitcoin_cme.py +9 -7
- akshare/crypto/crypto_hold.py +4 -2
- akshare/currency/currency.py +1 -0
- akshare/currency/currency_china_bank_sina.py +11 -6
- akshare/data/__init__.py +1 -1
- akshare/data/cninfo.js +1 -1
- akshare/datasets.py +10 -21
- akshare/economic/cons.py +10 -3
- akshare/economic/macro_australia.py +74 -69
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_canada.py +92 -81
- akshare/economic/macro_china.py +97 -105
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_finance_ths.py +7 -5
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_japan.py +0 -1
- akshare/economic/macro_other.py +1 -6
- akshare/economic/macro_swiss.py +2 -3
- akshare/economic/macro_uk.py +1 -1
- akshare/economic/macro_usa.py +7 -9
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +0 -1
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/forex/__init__.py +0 -0
- akshare/forex/cons.py +192 -0
- akshare/forex/forex_em.py +149 -0
- akshare/fortune/fortune_500.py +1 -37
- akshare/fortune/fortune_bloomberg.py +6 -3
- akshare/fortune/fortune_forbes_500.py +3 -6
- akshare/fortune/fortune_hurun.py +2 -1
- akshare/fortune/fortune_xincaifu_500.py +17 -14
- akshare/fund/fund_announcement_em.py +145 -0
- akshare/fund/fund_aum_em.py +49 -35
- akshare/fund/fund_em.py +251 -220
- akshare/fund/fund_etf_em.py +44 -35
- akshare/fund/fund_etf_sina.py +75 -27
- akshare/fund/fund_etf_ths.py +2 -0
- akshare/fund/fund_fee_em.py +172 -0
- akshare/fund/fund_fhsp_em.py +42 -32
- akshare/fund/fund_init_em.py +8 -5
- akshare/fund/fund_lof_em.py +12 -19
- akshare/fund/fund_manager.py +25 -11
- akshare/fund/fund_overview_em.py +42 -0
- akshare/fund/fund_portfolio_em.py +23 -21
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +2 -5
- akshare/fund/fund_rating.py +33 -12
- akshare/fund/fund_scale_em.py +24 -13
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +3 -2
- akshare/futures/cons.py +135 -39
- akshare/futures/cot.py +55 -56
- akshare/futures/futures_basis.py +49 -11
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_comm_ctp.py +1 -1
- akshare/futures/futures_contract_detail.py +59 -9
- akshare/futures/futures_daily_bar.py +66 -59
- akshare/futures/futures_foreign.py +14 -8
- akshare/futures/futures_hf_em.py +215 -61
- akshare/futures/futures_hist_em.py +191 -0
- akshare/futures/futures_hq_sina.py +5 -3
- akshare/futures/futures_index_ccidx.py +24 -82
- akshare/futures/futures_inventory_99.py +70 -272
- akshare/futures/futures_inventory_em.py +14 -11
- akshare/futures/futures_news_shmet.py +2 -2
- akshare/futures/futures_roll_yield.py +11 -24
- akshare/futures/futures_rule.py +7 -3
- akshare/futures/futures_rule_em.py +38 -0
- akshare/futures/futures_settlement_price_sgx.py +21 -6
- akshare/futures/futures_stock_js.py +0 -1
- akshare/futures/futures_to_spot.py +5 -6
- akshare/futures/futures_warehouse_receipt.py +48 -47
- akshare/futures/futures_zh_sina.py +3 -3
- akshare/futures/receipt.py +298 -165
- akshare/futures/requests_fun.py +16 -3
- akshare/futures/symbol_var.py +32 -13
- akshare/futures_derivative/cons.py +100 -103
- akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
- akshare/futures_derivative/futures_contract_info_czce.py +2 -0
- akshare/futures_derivative/futures_contract_info_dce.py +43 -17
- akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
- akshare/futures_derivative/futures_cot_sina.py +8 -6
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/fx_c_swap_cm.py +62 -0
- akshare/fx/fx_quote.py +3 -2
- akshare/fx/fx_quote_baidu.py +2 -1
- akshare/hf/__init__.py +1 -1
- akshare/hf/hf_sp500.py +8 -7
- akshare/index/cons.py +132 -28
- akshare/index/index_cni.py +7 -7
- akshare/index/index_cons.py +2 -2
- akshare/index/index_csindex.py +68 -0
- akshare/index/index_cx.py +20 -20
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_eri.py +1 -0
- akshare/index/index_global_em.py +167 -0
- akshare/index/index_global_sina.py +82 -0
- akshare/index/index_kq_fz.py +17 -14
- akshare/index/index_kq_ss.py +1 -0
- akshare/index/index_option_qvix.py +351 -16
- akshare/index/index_research_sw.py +21 -21
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +5 -9
- akshare/index/index_stock_zh.py +111 -24
- akshare/index/index_stock_zh_csindex.py +3 -367
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_sw.py +10 -2
- akshare/index/index_yw.py +53 -75
- akshare/index/index_zh_em.py +15 -82
- akshare/interest_rate/interbank_rate_em.py +0 -1
- akshare/movie/jm.js +0 -1
- akshare/news/__init__.py +1 -1
- akshare/news/news_baidu.py +395 -222
- akshare/news/news_stock.py +49 -16
- akshare/option/cons.py +2 -2
- akshare/option/option_commodity.py +341 -220
- akshare/option/option_commodity_sina.py +22 -26
- akshare/option/option_contract_info_ctp.py +63 -0
- akshare/option/option_current_sse.py +61 -0
- akshare/option/option_current_szse.py +84 -0
- akshare/option/option_czce.py +37 -9
- akshare/option/option_daily_stats_sse_szse.py +0 -1
- akshare/option/option_em.py +4 -8
- akshare/option/option_finance.py +60 -12
- akshare/option/option_finance_sina.py +7 -7
- akshare/option/option_lhb_em.py +0 -1
- akshare/option/option_margin.py +62 -0
- akshare/option/option_premium_analysis_em.py +58 -53
- akshare/option/option_risk_analysis_em.py +11 -8
- akshare/option/option_risk_indicator_sse.py +3 -4
- akshare/option/option_value_analysis_em.py +62 -55
- akshare/other/__init__.py +1 -1
- akshare/pro/__init__.py +0 -1
- akshare/pro/client.py +6 -4
- akshare/pro/cons.py +3 -2
- akshare/pro/data_pro.py +6 -5
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/qhkc/__init__.py +1 -6
- akshare/qhkc/qhkc_api.py +64 -22
- akshare/qhkc_web/__init__.py +1 -6
- akshare/qhkc_web/qhkc_fund.py +10 -6
- akshare/qhkc_web/qhkc_index.py +28 -14
- akshare/qhkc_web/qhkc_tool.py +62 -59
- akshare/rate/__init__.py +1 -1
- akshare/rate/repo_rate.py +36 -32
- akshare/reits/__init__.py +1 -1
- akshare/reits/reits_basic.py +149 -13
- akshare/request.py +117 -0
- akshare/spot/__init__.py +1 -1
- akshare/spot/spot_hog_soozhu.py +165 -3
- akshare/spot/spot_sge.py +70 -9
- akshare/stock/cons.py +60 -23
- akshare/stock/stock_allotment_cninfo.py +8 -8
- akshare/stock/stock_ask_bid_em.py +3 -78
- akshare/stock/stock_board_concept_em.py +160 -35
- akshare/stock/stock_board_industry_em.py +163 -70
- akshare/stock/stock_dividend_cninfo.py +31 -17
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +72 -64
- akshare/stock/stock_fund_hold.py +1 -2
- akshare/stock/stock_gsrl_em.py +1 -0
- akshare/stock/stock_hk_comparison_em.py +175 -0
- akshare/stock/stock_hk_famous.py +4 -5
- akshare/stock/stock_hk_fhpx_ths.py +2 -1
- akshare/stock/stock_hk_hot_rank_em.py +1 -0
- akshare/stock/stock_hk_sina.py +84 -36
- akshare/stock/stock_hold_control_cninfo.py +82 -0
- akshare/stock/stock_hold_control_em.py +0 -2
- akshare/stock/stock_hot_rank_em.py +4 -1
- akshare/stock/stock_hot_search_baidu.py +32 -19
- akshare/stock/stock_hot_up_em.py +4 -1
- akshare/stock/stock_hsgt_em.py +155 -0
- akshare/stock/stock_industry.py +1 -0
- akshare/stock/stock_industry_cninfo.py +1 -2
- akshare/stock/stock_info.py +6 -4
- akshare/stock/stock_info_em.py +17 -11
- akshare/stock/stock_intraday_em.py +4 -78
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +7 -7
- akshare/stock/stock_profile_em.py +302 -0
- akshare/stock/stock_rank_forecast.py +6 -5
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_changes_cninfo.py +7 -5
- akshare/stock/stock_share_hold.py +24 -20
- akshare/stock/stock_stop.py +6 -6
- akshare/stock/stock_summary.py +153 -417
- akshare/stock/stock_us_famous.py +5 -6
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +38 -27
- akshare/stock/stock_us_sina.py +7 -3
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_xq.py +24 -22
- akshare/stock/stock_zh_a_sina.py +8 -5
- akshare/stock/stock_zh_a_special.py +240 -243
- akshare/stock/stock_zh_a_tick_tx.py +11 -3
- akshare/stock/stock_zh_ah_tx.py +23 -26
- akshare/stock/stock_zh_b_sina.py +2 -2
- akshare/stock/stock_zh_comparison_em.py +250 -0
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_a/__init__.py +0 -0
- akshare/stock_a/stock_board_concept_name_em.py +170 -0
- akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
- akshare/stock_a/stock_zh_a_spot.py +212 -0
- akshare/stock_feature/cons.py +1 -0
- akshare/stock_feature/stock_a_indicator.py +9 -54
- akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
- akshare/stock_feature/stock_account_em.py +0 -1
- akshare/stock_feature/stock_all_pb.py +2 -1
- akshare/stock_feature/stock_analyst_em.py +36 -30
- akshare/stock_feature/stock_board_concept_ths.py +328 -0
- akshare/stock_feature/stock_board_industry_ths.py +57 -2
- akshare/stock_feature/stock_buffett_index_lg.py +10 -8
- akshare/stock_feature/stock_classify_sina.py +3 -6
- akshare/stock_feature/stock_comment_em.py +81 -144
- akshare/stock_feature/stock_congestion_lg.py +2 -1
- akshare/stock_feature/stock_cyq_em.py +5 -11
- akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
- akshare/stock_feature/stock_dxsyl_em.py +121 -74
- akshare/stock_feature/stock_ebs_lg.py +5 -4
- akshare/stock_feature/stock_esg_sina.py +29 -7
- akshare/stock_feature/stock_fhps_em.py +2 -1
- akshare/stock_feature/stock_fhps_ths.py +15 -7
- akshare/stock_feature/stock_fund_flow.py +30 -22
- akshare/stock_feature/stock_gddh_em.py +19 -11
- akshare/stock_feature/stock_gdfx_em.py +226 -113
- akshare/stock_feature/stock_gdhs.py +75 -50
- akshare/stock_feature/stock_gdzjc_em.py +21 -10
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_gxl_lg.py +3 -2
- akshare/stock_feature/stock_hist_em.py +137 -234
- akshare/stock_feature/stock_hist_tx.py +13 -10
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hot_xq.py +4 -6
- akshare/stock_feature/stock_hsgt_em.py +269 -97
- akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
- akshare/stock_feature/stock_hsgt_min_em.py +13 -16
- akshare/stock_feature/stock_info.py +7 -80
- akshare/stock_feature/stock_inner_trade_xq.py +38 -31
- akshare/stock_feature/stock_jgdy_em.py +43 -40
- akshare/stock_feature/stock_lhb_em.py +119 -3
- akshare/stock_feature/stock_margin_em.py +0 -1
- akshare/stock_feature/stock_margin_sse.py +0 -2
- akshare/stock_feature/stock_pankou_em.py +71 -35
- akshare/stock_feature/stock_qsjy_em.py +13 -4
- akshare/stock_feature/stock_report_em.py +151 -7
- akshare/stock_feature/stock_research_report_em.py +55 -20
- akshare/stock_feature/stock_sy_em.py +20 -15
- akshare/stock_feature/stock_technology_ths.py +122 -77
- akshare/stock_feature/stock_tfp_em.py +2 -1
- akshare/stock_feature/stock_three_report_em.py +21 -5
- akshare/stock_feature/stock_ttm_lyr.py +18 -9
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_yjbb_em.py +58 -32
- akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
- akshare/stock_feature/stock_yjyg_em.py +1 -1
- akshare/stock_feature/stock_yzxdr_em.py +24 -22
- akshare/stock_feature/stock_zdhtmx_em.py +20 -6
- akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
- akshare/stock_feature/stock_ztb_em.py +39 -24
- akshare/stock_fundamental/__init__.py +1 -1
- akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
- akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
- akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
- akshare/stock_fundamental/stock_finance_ths.py +524 -57
- akshare/stock_fundamental/stock_finance_us_em.py +268 -0
- akshare/stock_fundamental/stock_gbjg_em.py +80 -0
- akshare/stock_fundamental/stock_hold.py +26 -17
- akshare/stock_fundamental/stock_ipo_declare.py +1 -0
- akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
- akshare/stock_fundamental/stock_kcb_sse.py +26 -25
- akshare/stock_fundamental/stock_notice.py +12 -3
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
- akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
- akshare/stock_fundamental/stock_recommend.py +20 -4
- akshare/stock_fundamental/stock_zygc.py +5 -62
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2009 -1338
- akshare/utils/func.py +49 -2
- akshare/utils/multi_decrypt.py +53 -0
- akshare/utils/token_process.py +6 -5
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
- akshare-1.17.99.dist-info/RECORD +409 -0
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +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/fund/fund_announcement.py +0 -56
- 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 -53
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -78
- akshare/index/index_investing.py +0 -232
- akshare/sport/__init__.py +0 -6
- akshare/sport/sport_olympic.py +0 -27
- akshare/stock_feature/stock_wencai.py +0 -104
- akshare/stock_fundamental/stock_mda_ym.py +0 -40
- akshare-1.14.49.dist-info/RECORD +0 -387
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
akshare/futures/requests_fun.py
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Date: 2023/9/15 19:00
|
|
5
5
|
Desc: 请求网站内容的函数: 在链接失败后可重复 20 次
|
|
6
6
|
"""
|
|
7
|
+
|
|
7
8
|
from io import StringIO
|
|
8
9
|
import time
|
|
9
10
|
from typing import Dict
|
|
@@ -12,7 +13,13 @@ import pandas as pd
|
|
|
12
13
|
import requests
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
def requests_link(
|
|
16
|
+
def requests_link(
|
|
17
|
+
url: str,
|
|
18
|
+
encoding: str = "utf-8",
|
|
19
|
+
method: str = "get",
|
|
20
|
+
data: Dict = None,
|
|
21
|
+
headers: Dict = None,
|
|
22
|
+
):
|
|
16
23
|
"""
|
|
17
24
|
利用 requests 请求网站, 爬取网站内容, 如网站链接失败, 可重复爬取 20 次
|
|
18
25
|
:param url: string 网站地址
|
|
@@ -35,7 +42,7 @@ def requests_link(url: str, encoding: str = "utf-8", method: str = "get", data:
|
|
|
35
42
|
return r
|
|
36
43
|
else:
|
|
37
44
|
raise ValueError("请提供正确的请求方式")
|
|
38
|
-
except:
|
|
45
|
+
except: # noqa: E722
|
|
39
46
|
i += 1
|
|
40
47
|
print(f"第{str(i)}次链接失败, 最多尝试 20 次")
|
|
41
48
|
time.sleep(5)
|
|
@@ -43,7 +50,13 @@ def requests_link(url: str, encoding: str = "utf-8", method: str = "get", data:
|
|
|
43
50
|
return None
|
|
44
51
|
|
|
45
52
|
|
|
46
|
-
def pandas_read_html_link(
|
|
53
|
+
def pandas_read_html_link(
|
|
54
|
+
url: str,
|
|
55
|
+
encoding: str = "utf-8",
|
|
56
|
+
method: str = "get",
|
|
57
|
+
data: Dict = None,
|
|
58
|
+
headers: Dict = None,
|
|
59
|
+
):
|
|
47
60
|
"""
|
|
48
61
|
利用 pandas 提供的 read_html 函数来直接提取网页中的表格内容, 如网站链接失败, 可重复爬取 20 次
|
|
49
62
|
:param url: string 网站地址
|
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: 2025/7/21 15:00
|
|
5
5
|
Desc: 期货品种映射表
|
|
6
6
|
"""
|
|
7
|
+
|
|
7
8
|
import re
|
|
8
9
|
|
|
9
10
|
from akshare.futures import cons
|
|
@@ -60,6 +61,8 @@ def chinese_to_english(chinese_var: str):
|
|
|
60
61
|
"沥青厂库",
|
|
61
62
|
"沥青(厂库)",
|
|
62
63
|
"热轧卷板",
|
|
64
|
+
"热轧卷板厂库",
|
|
65
|
+
"热轧卷板仓库",
|
|
63
66
|
"热轧板卷",
|
|
64
67
|
"燃料油",
|
|
65
68
|
"白银",
|
|
@@ -139,6 +142,7 @@ def chinese_to_english(chinese_var: str):
|
|
|
139
142
|
"20号胶20",
|
|
140
143
|
"红枣",
|
|
141
144
|
"不锈钢仓库",
|
|
145
|
+
"不锈钢厂库",
|
|
142
146
|
"纯碱",
|
|
143
147
|
"液化石油气",
|
|
144
148
|
"低硫燃料油",
|
|
@@ -151,18 +155,24 @@ def chinese_to_english(chinese_var: str):
|
|
|
151
155
|
"低硫燃料油仓库",
|
|
152
156
|
"低硫燃料油厂库",
|
|
153
157
|
"短纤",
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
158
|
+
"涤纶短纤",
|
|
159
|
+
"生猪",
|
|
160
|
+
"花生",
|
|
161
|
+
"工业硅",
|
|
162
|
+
"氧化铝",
|
|
163
|
+
"丁二烯橡胶",
|
|
164
|
+
"碳酸锂",
|
|
165
|
+
"氧化铝仓库",
|
|
166
|
+
"氧化铝厂库",
|
|
167
|
+
"烧碱",
|
|
168
|
+
"丁二烯橡胶仓库",
|
|
169
|
+
"丁二烯橡胶厂库",
|
|
170
|
+
"PX",
|
|
171
|
+
"原木",
|
|
172
|
+
"瓶片",
|
|
173
|
+
"纯苯",
|
|
174
|
+
"多晶硅",
|
|
175
|
+
"铸造铝合金",
|
|
166
176
|
]
|
|
167
177
|
english_list = [
|
|
168
178
|
"RU",
|
|
@@ -175,6 +185,8 @@ def chinese_to_english(chinese_var: str):
|
|
|
175
185
|
"BU2",
|
|
176
186
|
"HC",
|
|
177
187
|
"HC",
|
|
188
|
+
"HC",
|
|
189
|
+
"HC",
|
|
178
190
|
"FU",
|
|
179
191
|
"AG",
|
|
180
192
|
"WR",
|
|
@@ -253,6 +265,7 @@ def chinese_to_english(chinese_var: str):
|
|
|
253
265
|
"NR",
|
|
254
266
|
"CJ",
|
|
255
267
|
"SS",
|
|
268
|
+
"SS",
|
|
256
269
|
"SA",
|
|
257
270
|
"PG",
|
|
258
271
|
"LU",
|
|
@@ -277,6 +290,12 @@ def chinese_to_english(chinese_var: str):
|
|
|
277
290
|
"SH",
|
|
278
291
|
"BR",
|
|
279
292
|
"BR",
|
|
293
|
+
"PX",
|
|
294
|
+
"LG",
|
|
295
|
+
"PR",
|
|
296
|
+
"BZ",
|
|
297
|
+
"PS",
|
|
298
|
+
"AD",
|
|
280
299
|
]
|
|
281
300
|
pos = chinese_list.index(chinese_var)
|
|
282
301
|
return english_list[pos]
|
|
@@ -5,103 +5,105 @@ Date: 2021/8/20 16:13
|
|
|
5
5
|
Desc: 期货衍生指标配置文件
|
|
6
6
|
西本新干线-指数数据
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
# xgx
|
|
9
10
|
symbol_dict = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
11
|
+
"钢材指数": "65",
|
|
12
|
+
"铁矿指数": "61",
|
|
13
|
+
"焦炭指数": "64",
|
|
14
|
+
"煤炭指数": "1002",
|
|
15
|
+
"水泥指数": "1003",
|
|
16
|
+
"FTZ指数": "1100",
|
|
17
|
+
"钢铁行业PMI指数": "118",
|
|
18
|
+
"生产指数": "119",
|
|
19
|
+
"新订单指数": "120",
|
|
20
|
+
"新出口订单指数": "121",
|
|
21
|
+
"产成品库存指数": "122",
|
|
22
|
+
"原材料库存指数": "123",
|
|
23
|
+
"沪市终端线螺每周采购量监控": "74",
|
|
24
|
+
"沪螺纹钢社会库存": "72",
|
|
25
|
+
"国内螺纹钢社会库存量": "67",
|
|
26
|
+
"国内线材社会库存量": "68",
|
|
27
|
+
"国内主要城市热轧卷板库存": "69",
|
|
28
|
+
"国内主要城市冷轧卷板库存": "70",
|
|
29
|
+
"国内主要城市中厚板库存": "73",
|
|
30
|
+
"全国主要钢材品种库存总量": "117",
|
|
31
|
+
"热轧价格走势": "108",
|
|
32
|
+
"冷轧价格走势": "109",
|
|
33
|
+
"中板价格走势": "110",
|
|
34
|
+
"型材价格走势": "111",
|
|
35
|
+
"沪二级螺纹钢价格走势": "127",
|
|
36
|
+
"螺纹钢主力合约收盘价格": "179",
|
|
37
|
+
"铁矿石主力合约收盘价格": "180",
|
|
38
|
+
"热轧板卷主力合约收盘价格": "181",
|
|
39
|
+
"焦煤主力合约收盘价格": "182",
|
|
40
|
+
"焦炭主力合约收盘价格": "183",
|
|
41
|
+
"存款基准利率": "52",
|
|
42
|
+
"贷款基准利率": "53",
|
|
43
|
+
"存款准备金率": "105",
|
|
44
|
+
"人民币新增贷款(亿元)": "174",
|
|
45
|
+
"广义货币供应量增速(M2,%)": "175",
|
|
46
|
+
"狭义货币供应量增速(M1,%)": "176",
|
|
47
|
+
"上海大额银行承兑汇票(Ⅰ)": "129",
|
|
48
|
+
"上海大额银行承兑汇票(Ⅱ)": "130",
|
|
49
|
+
"上海大额银行承兑汇票(Ⅲ)": "131",
|
|
50
|
+
"上海大额商业承兑汇票(Ⅰ)": "132",
|
|
51
|
+
"上海大额商业承兑汇票(II)": "133",
|
|
52
|
+
"上海大额商业承兑汇票(III)": "134",
|
|
53
|
+
"重点企业粗钢日均产量(旬报)": "99",
|
|
54
|
+
"重点企业钢材库存量(旬报)": "124",
|
|
55
|
+
"国内月度粗钢日均产量": "159",
|
|
56
|
+
"国内月度粗钢产量": "35",
|
|
57
|
+
"国内月度钢材产量": "88",
|
|
58
|
+
"国内月度螺纹钢产量": "40",
|
|
59
|
+
"国内月度线材产量": "41",
|
|
60
|
+
"国内月度热轧板卷产量": "114",
|
|
61
|
+
"国内月度冷轧板卷产量": "115",
|
|
62
|
+
"国内月度中厚板产量": "116",
|
|
63
|
+
"国内月度生铁产量": "177",
|
|
64
|
+
"国内月度焦炭产量": "37",
|
|
65
|
+
"国内月度铁矿石原矿产量": "36",
|
|
66
|
+
"国内月度铁矿石进口量": "42",
|
|
67
|
+
"国内月度钢材出口量": "38",
|
|
68
|
+
"国内月度钢材进口量": "39",
|
|
69
|
+
"国内铁矿石港口存量": "43",
|
|
70
|
+
"唐山地区钢坯库存量": "161",
|
|
71
|
+
"印度矿港口库存": "100",
|
|
72
|
+
"波罗的海干散货指数(BDI)": "77",
|
|
73
|
+
"废钢价格走势": "78",
|
|
74
|
+
"钢坯价格走势": "79",
|
|
75
|
+
"钢材成本指数": "178",
|
|
76
|
+
"铁矿石进口月度均价": "93",
|
|
77
|
+
"巴西图巴朗-北仑铁矿海运价": "94",
|
|
78
|
+
"西澳-北仑铁矿海运价": "95",
|
|
79
|
+
"澳大利亚粉矿价格(56.5%,日照港)": "1006",
|
|
80
|
+
"澳大利亚粉矿价格(61.5%青岛港,元/吨)": "106",
|
|
81
|
+
"巴西粉矿价格( 65% 日照港,元/吨)": "107",
|
|
82
|
+
"62%铁矿石指数": "125",
|
|
83
|
+
"63.5%印度粉矿外盘报价": "126",
|
|
84
|
+
"国民生产总值季度增速(GDP)": "166",
|
|
85
|
+
"居民消费物价指数(CPI)": "30",
|
|
86
|
+
"工业生产者出厂价格指数(PPI)": "165",
|
|
87
|
+
"制造业采购经理指数(PMI)": "104",
|
|
88
|
+
"月度建筑安装工程投资额": "91",
|
|
89
|
+
"月度固定资产投资额": "32",
|
|
90
|
+
"月度房地产建设投资额": "34",
|
|
91
|
+
"城填固定资产投资增速(累计值,%)": "171",
|
|
92
|
+
"房地产开发投资增速(累计值,%)": "167",
|
|
93
|
+
"土地购置面积同比增速(累计值,%)": "168",
|
|
94
|
+
"房屋新开工面积同比增速(累计值,%)": "169",
|
|
95
|
+
"商品房销售面积同比增速(累计值,%)": "170",
|
|
96
|
+
"钢铁业固定资产投资增速(累计值,%)": "172",
|
|
97
|
+
"CRU全球": "80",
|
|
98
|
+
"CRU长材": "81",
|
|
99
|
+
"CRU扁平材": "82",
|
|
100
|
+
"CRU北美": "83",
|
|
101
|
+
"CRU欧洲": "84",
|
|
102
|
+
"CRU亚洲": "85",
|
|
103
|
+
"全球粗钢月度产量(万吨)": "162",
|
|
104
|
+
"全球粗钢日均产量(万吨)": "163",
|
|
105
|
+
"全球粗钢产能利用率(%)": "164",
|
|
106
|
+
}
|
|
105
107
|
|
|
106
108
|
xgx_code_url = "http://www.96369.net/Other/ValidateCode.aspx"
|
|
107
109
|
xgx_main_url = "http://www.96369.net/indices/{}"
|
|
@@ -118,7 +120,7 @@ xgx_headers = {
|
|
|
118
120
|
"Pragma": "no-cache",
|
|
119
121
|
"Referer": "http://www.96369.net/indices/67",
|
|
120
122
|
"Upgrade-Insecure-Requests": "1",
|
|
121
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
|
|
123
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
|
|
122
124
|
}
|
|
123
125
|
xgx_short_headers = {
|
|
124
126
|
"Accept": "image/webp,image/apng,image/*,*/*;q=0.8",
|
|
@@ -129,7 +131,7 @@ xgx_short_headers = {
|
|
|
129
131
|
"Host": "www.96369.net",
|
|
130
132
|
"Pragma": "no-cache",
|
|
131
133
|
"Referer": "http://www.96369.net/indices/67",
|
|
132
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
|
|
134
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
|
|
133
135
|
}
|
|
134
136
|
# csa
|
|
135
137
|
csa_params_url = "https://www.jiaoyifamen.com/tools/nav/spread"
|
|
@@ -137,9 +139,4 @@ csa_url_spread = "https://www.jiaoyifamen.com/tools/future/spread/free"
|
|
|
137
139
|
csa_url_ratio = "https://www.jiaoyifamen.com/tools/future/valence/free"
|
|
138
140
|
csa_url_customize = "https://www.jiaoyifamen.com/tools/future/customize"
|
|
139
141
|
|
|
140
|
-
csa_payload = {
|
|
141
|
-
"type1": "RB",
|
|
142
|
-
"code1": "01",
|
|
143
|
-
"type2": "RB",
|
|
144
|
-
"code2": "05"
|
|
145
|
-
}
|
|
142
|
+
csa_payload = {"type1": "RB", "code1": "01", "type2": "RB", "code2": "05"}
|
|
@@ -5,6 +5,7 @@ Date: 2024/2/28 17:00
|
|
|
5
5
|
Desc: 中国金融期货交易所-数据-交易参数
|
|
6
6
|
http://www.cffex.com.cn/jycs/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import xml.etree.ElementTree as ET
|
|
9
10
|
|
|
10
11
|
import pandas as pd
|
|
@@ -15,6 +16,8 @@ def futures_contract_info_cffex(date: str = "20240228") -> pd.DataFrame:
|
|
|
15
16
|
"""
|
|
16
17
|
中国金融期货交易所-数据-交易参数
|
|
17
18
|
http://www.gfex.com.cn/gfex/hyxx/ywcs.shtml
|
|
19
|
+
:param date: 查询日期
|
|
20
|
+
:type date: str
|
|
18
21
|
:return: 交易参数汇总查询
|
|
19
22
|
:rtype: pandas.DataFrame
|
|
20
23
|
"""
|
|
@@ -28,7 +31,7 @@ def futures_contract_info_cffex(date: str = "20240228") -> pd.DataFrame:
|
|
|
28
31
|
tree = ET.ElementTree(ET.fromstring(xml_data))
|
|
29
32
|
root = tree.getroot()
|
|
30
33
|
# 获取所有的记录
|
|
31
|
-
records = root.findall(
|
|
34
|
+
records = root.findall(".//INDEX")
|
|
32
35
|
# 解析数据并填充到列表中
|
|
33
36
|
data = []
|
|
34
37
|
for record in records:
|
|
@@ -40,47 +43,60 @@ def futures_contract_info_cffex(date: str = "20240228") -> pd.DataFrame:
|
|
|
40
43
|
data.append(row_data)
|
|
41
44
|
|
|
42
45
|
temp_df = pd.DataFrame(data)
|
|
43
|
-
temp_df.rename(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
temp_df[
|
|
46
|
+
temp_df.rename(
|
|
47
|
+
columns={
|
|
48
|
+
"TRADING_DAY": "查询交易日",
|
|
49
|
+
"PRODUCT_ID": "品种",
|
|
50
|
+
"INSTRUMENT_ID": "合约代码",
|
|
51
|
+
"INSTRUMENT_MONTH": "合约月份",
|
|
52
|
+
"BASIS_PRICE": "挂盘基准价",
|
|
53
|
+
"OPEN_DATE": "上市日",
|
|
54
|
+
"END_TRADING_DAY": "最后交易日",
|
|
55
|
+
"UPPER_VALUE": "涨停板幅度",
|
|
56
|
+
"LOWER_VALUE": "跌停板幅度",
|
|
57
|
+
"UPPERLIMITPRICE": "涨停板价位",
|
|
58
|
+
"LOWERLIMITPRICE": "跌停板价位",
|
|
59
|
+
"LONG_LIMIT": "持仓限额",
|
|
60
|
+
},
|
|
61
|
+
inplace=True,
|
|
62
|
+
)
|
|
63
|
+
temp_df["挂盘基准价"] = pd.to_numeric(temp_df["挂盘基准价"], errors="coerce")
|
|
64
|
+
temp_df["涨停板价位"] = pd.to_numeric(temp_df["涨停板价位"], errors="coerce")
|
|
65
|
+
temp_df["跌停板价位"] = pd.to_numeric(temp_df["跌停板价位"], errors="coerce")
|
|
66
|
+
temp_df["持仓限额"] = pd.to_numeric(temp_df["持仓限额"], errors="coerce")
|
|
61
67
|
|
|
62
|
-
temp_df[
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
temp_df[
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
temp_df["查询交易日"] = pd.to_datetime(
|
|
69
|
+
temp_df["查询交易日"], format="%Y%m%d", errors="coerce"
|
|
70
|
+
).dt.date
|
|
71
|
+
temp_df["上市日"] = pd.to_datetime(
|
|
72
|
+
temp_df["上市日"], format="%Y%m%d", errors="coerce"
|
|
73
|
+
).dt.date
|
|
74
|
+
temp_df["最后交易日"] = pd.to_datetime(
|
|
75
|
+
temp_df["最后交易日"], format="%Y%m%d", errors="coerce"
|
|
76
|
+
).dt.date
|
|
77
|
+
temp_df["查询交易日"] = pd.to_datetime(
|
|
78
|
+
temp_df["查询交易日"], format="%Y%m%d", errors="coerce"
|
|
79
|
+
).dt.date
|
|
80
|
+
temp_df = temp_df[
|
|
81
|
+
[
|
|
82
|
+
"合约代码",
|
|
83
|
+
"合约月份",
|
|
84
|
+
"挂盘基准价",
|
|
85
|
+
"上市日",
|
|
86
|
+
"最后交易日",
|
|
87
|
+
"涨停板幅度",
|
|
88
|
+
"跌停板幅度",
|
|
89
|
+
"涨停板价位",
|
|
90
|
+
"跌停板价位",
|
|
91
|
+
"持仓限额",
|
|
92
|
+
"品种",
|
|
93
|
+
"查询交易日",
|
|
94
|
+
]
|
|
95
|
+
]
|
|
96
|
+
temp_df.sort_values(["合约代码"], ascending=False, ignore_index=True, inplace=True)
|
|
81
97
|
return temp_df
|
|
82
98
|
|
|
83
99
|
|
|
84
|
-
if __name__ ==
|
|
100
|
+
if __name__ == "__main__":
|
|
85
101
|
futures_contract_info_cffex_df = futures_contract_info_cffex(date="20240228")
|
|
86
102
|
print(futures_contract_info_cffex_df)
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2025/8/18 11:00
|
|
5
5
|
Desc: 大连商品交易所-业务/服务-业务参数-交易参数-合约信息查询
|
|
6
6
|
http://www.dce.com.cn/dalianshangpin/ywfw/ywcs/jycs/hyxxcx/index.html
|
|
7
7
|
"""
|
|
8
|
-
from io import StringIO
|
|
9
8
|
|
|
10
9
|
import pandas as pd
|
|
11
10
|
import requests
|
|
@@ -13,27 +12,54 @@ import requests
|
|
|
13
12
|
|
|
14
13
|
def futures_contract_info_dce() -> pd.DataFrame:
|
|
15
14
|
"""
|
|
16
|
-
|
|
17
|
-
http://www.dce.com.cn/
|
|
15
|
+
大连商品交易所-数据中心-业务数据-交易参数-合约信息
|
|
16
|
+
http://www.dce.com.cn/dce/channel/list/180.html
|
|
18
17
|
:return: 交易参数汇总查询
|
|
19
18
|
:rtype: pandas.DataFrame
|
|
20
19
|
"""
|
|
21
|
-
url = "http://www.dce.com.cn/publicweb/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
url = "http://www.dce.com.cn/dcereport/publicweb/tradepara/contractInfo"
|
|
21
|
+
payload = {
|
|
22
|
+
"lang": "zh",
|
|
23
|
+
"tradeType": "1",
|
|
24
|
+
"varietyId": "all",
|
|
25
25
|
}
|
|
26
|
-
r = requests.post(url,
|
|
27
|
-
|
|
28
|
-
temp_df
|
|
29
|
-
temp_df
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
r = requests.post(url, json=payload)
|
|
27
|
+
data_json = r.json()
|
|
28
|
+
temp_df = pd.DataFrame(data_json['data'])
|
|
29
|
+
temp_df.rename(columns={
|
|
30
|
+
"contractId": "合约",
|
|
31
|
+
"variety": "品种名称",
|
|
32
|
+
"varietyOrder": "品种代码",
|
|
33
|
+
"unit": "交易单位",
|
|
34
|
+
"tick": "最小变动价位",
|
|
35
|
+
"startTradeDate": "开始交易日",
|
|
36
|
+
"endTradeDate": "最后交易日",
|
|
37
|
+
"endDeliveryDate": "最后交割日",
|
|
38
|
+
"tradeType": "",
|
|
39
|
+
}, inplace=True)
|
|
40
|
+
temp_df = temp_df[[
|
|
41
|
+
"品种名称",
|
|
42
|
+
"合约",
|
|
43
|
+
"交易单位",
|
|
44
|
+
"最小变动价位",
|
|
45
|
+
"开始交易日",
|
|
46
|
+
"最后交易日",
|
|
47
|
+
"最后交割日",
|
|
48
|
+
]]
|
|
49
|
+
temp_df["交易单位"] = pd.to_numeric(temp_df["交易单位"], errors="coerce")
|
|
50
|
+
temp_df["最小变动价位"] = pd.to_numeric(temp_df["最小变动价位"], errors="coerce")
|
|
51
|
+
temp_df["开始交易日"] = pd.to_datetime(
|
|
52
|
+
temp_df["开始交易日"], format="%Y%m%d", errors="coerce"
|
|
53
|
+
).dt.date
|
|
54
|
+
temp_df["最后交易日"] = pd.to_datetime(
|
|
55
|
+
temp_df["最后交易日"], format="%Y%m%d", errors="coerce"
|
|
56
|
+
).dt.date
|
|
57
|
+
temp_df["最后交割日"] = pd.to_datetime(
|
|
58
|
+
temp_df["最后交割日"], format="%Y%m%d", errors="coerce"
|
|
59
|
+
).dt.date
|
|
34
60
|
return temp_df
|
|
35
61
|
|
|
36
62
|
|
|
37
|
-
if __name__ ==
|
|
63
|
+
if __name__ == "__main__":
|
|
38
64
|
futures_contract_info_dce_df = futures_contract_info_dce()
|
|
39
65
|
print(futures_contract_info_dce_df)
|