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
akshare/stock/stock_dzjy_em.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2025/1/13 22:30
|
|
5
5
|
Desc: 东方财富网-数据中心-大宗交易-市场统计
|
|
6
|
-
|
|
6
|
+
https://data.eastmoney.com/dzjy/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
|
|
@@ -12,33 +13,34 @@ import requests
|
|
|
12
13
|
def stock_dzjy_sctj() -> pd.DataFrame:
|
|
13
14
|
"""
|
|
14
15
|
东方财富网-数据中心-大宗交易-市场统计
|
|
15
|
-
|
|
16
|
+
https://data.eastmoney.com/dzjy/dzjy_sctj.html
|
|
16
17
|
:return: 市场统计表
|
|
17
18
|
:rtype: pandas.DataFrame
|
|
18
19
|
"""
|
|
19
20
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
20
21
|
params = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
"sortColumns": "TRADE_DATE",
|
|
23
|
+
"sortTypes": "-1",
|
|
24
|
+
"pageSize": "500",
|
|
25
|
+
"pageNumber": "1",
|
|
26
|
+
"reportName": "PRT_BLOCKTRADE_MARKET_STA",
|
|
27
|
+
"columns": "TRADE_DATE,SZ_INDEX,SZ_CHANGE_RATE,BLOCKTRADE_DEAL_AMT,PREMIUM_DEAL_AMT,"
|
|
28
|
+
"PREMIUM_RATIO,DISCOUNT_DEAL_AMT,DISCOUNT_RATIO",
|
|
29
|
+
"source": "WEB",
|
|
30
|
+
"client": "WEB",
|
|
29
31
|
}
|
|
30
32
|
r = requests.get(url, params=params)
|
|
31
33
|
data_json = r.json()
|
|
32
|
-
total_page = int(data_json[
|
|
34
|
+
total_page = int(data_json["result"]["pages"])
|
|
33
35
|
big_df = pd.DataFrame()
|
|
34
|
-
for page in range(1, total_page+1):
|
|
35
|
-
params.update({
|
|
36
|
+
for page in range(1, total_page + 1):
|
|
37
|
+
params.update({"pageNumber": page})
|
|
36
38
|
r = requests.get(url, params=params)
|
|
37
39
|
data_json = r.json()
|
|
38
|
-
temp_df = pd.DataFrame(data_json[
|
|
39
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
40
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
41
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
40
42
|
big_df.reset_index(inplace=True)
|
|
41
|
-
big_df[
|
|
43
|
+
big_df["index"] = big_df["index"] + 1
|
|
42
44
|
big_df.columns = [
|
|
43
45
|
"序号",
|
|
44
46
|
"交易日期",
|
|
@@ -50,21 +52,29 @@ def stock_dzjy_sctj() -> pd.DataFrame:
|
|
|
50
52
|
"折价成交总额",
|
|
51
53
|
"折价成交总额占比",
|
|
52
54
|
]
|
|
53
|
-
big_df["交易日期"] = pd.to_datetime(big_df["交易日期"]).dt.date
|
|
54
|
-
big_df["上证指数"] = pd.to_numeric(big_df["上证指数"])
|
|
55
|
-
big_df["上证指数涨跌幅"] = pd.to_numeric(big_df["上证指数涨跌幅"])
|
|
56
|
-
big_df["大宗交易成交总额"] = pd.to_numeric(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
big_df["
|
|
60
|
-
big_df["
|
|
55
|
+
big_df["交易日期"] = pd.to_datetime(big_df["交易日期"], errors="coerce").dt.date
|
|
56
|
+
big_df["上证指数"] = pd.to_numeric(big_df["上证指数"], errors="coerce")
|
|
57
|
+
big_df["上证指数涨跌幅"] = pd.to_numeric(big_df["上证指数涨跌幅"], errors="coerce")
|
|
58
|
+
big_df["大宗交易成交总额"] = pd.to_numeric(
|
|
59
|
+
big_df["大宗交易成交总额"], errors="coerce"
|
|
60
|
+
)
|
|
61
|
+
big_df["溢价成交总额"] = pd.to_numeric(big_df["溢价成交总额"], errors="coerce")
|
|
62
|
+
big_df["溢价成交总额占比"] = pd.to_numeric(
|
|
63
|
+
big_df["溢价成交总额占比"], errors="coerce"
|
|
64
|
+
)
|
|
65
|
+
big_df["折价成交总额"] = pd.to_numeric(big_df["折价成交总额"], errors="coerce")
|
|
66
|
+
big_df["折价成交总额占比"] = pd.to_numeric(
|
|
67
|
+
big_df["折价成交总额占比"], errors="coerce"
|
|
68
|
+
)
|
|
61
69
|
return big_df
|
|
62
70
|
|
|
63
71
|
|
|
64
|
-
def stock_dzjy_mrmx(
|
|
72
|
+
def stock_dzjy_mrmx(
|
|
73
|
+
symbol: str = "基金", start_date: str = "20220104", end_date: str = "20220104"
|
|
74
|
+
) -> pd.DataFrame:
|
|
65
75
|
"""
|
|
66
76
|
东方财富网-数据中心-大宗交易-每日明细
|
|
67
|
-
|
|
77
|
+
https://data.eastmoney.com/dzjy/dzjy_mrmx.html
|
|
68
78
|
:param symbol: choice of {'A股', 'B股', '基金', '债券'}
|
|
69
79
|
:type symbol: str
|
|
70
80
|
:param start_date: 开始日期
|
|
@@ -75,31 +85,35 @@ def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_da
|
|
|
75
85
|
:rtype: pandas.DataFrame
|
|
76
86
|
"""
|
|
77
87
|
symbol_map = {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
88
|
+
"A股": "1",
|
|
89
|
+
"B股": "2",
|
|
90
|
+
"基金": "3",
|
|
91
|
+
"债券": "4",
|
|
82
92
|
}
|
|
83
93
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
84
94
|
params = {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
"sortColumns": "SECURITY_CODE",
|
|
96
|
+
"sortTypes": "1",
|
|
97
|
+
"pageSize": "5000",
|
|
98
|
+
"pageNumber": "1",
|
|
99
|
+
"reportName": "RPT_DATA_BLOCKTRADE",
|
|
100
|
+
"columns": "TRADE_DATE,SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CHANGE_RATE,CLOSE_PRICE,"
|
|
101
|
+
"DEAL_PRICE,PREMIUM_RATIO,DEAL_VOLUME,DEAL_AMT,TURNOVER_RATE,BUYER_NAME,SELLER_NAME,"
|
|
102
|
+
"CHANGE_RATE_1DAYS,CHANGE_RATE_5DAYS,CHANGE_RATE_10DAYS,CHANGE_RATE_20DAYS,BUYER_CODE,SELLER_CODE",
|
|
103
|
+
"source": "WEB",
|
|
104
|
+
"client": "WEB",
|
|
105
|
+
"filter": f"""(SECURITY_TYPE_WEB={symbol_map[symbol]})(TRADE_DATE>=
|
|
106
|
+
'{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(TRADE_DATE<=
|
|
107
|
+
'{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')""",
|
|
94
108
|
}
|
|
95
109
|
r = requests.get(url, params=params)
|
|
96
110
|
data_json = r.json()
|
|
97
|
-
if not data_json[
|
|
111
|
+
if not data_json["result"]["data"]:
|
|
98
112
|
return pd.DataFrame()
|
|
99
|
-
temp_df = pd.DataFrame(data_json[
|
|
113
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
100
114
|
temp_df.reset_index(inplace=True)
|
|
101
|
-
temp_df[
|
|
102
|
-
if symbol in {
|
|
115
|
+
temp_df["index"] = temp_df.index + 1
|
|
116
|
+
if symbol in {"A股"}:
|
|
103
117
|
temp_df.columns = [
|
|
104
118
|
"序号",
|
|
105
119
|
"交易日期",
|
|
@@ -122,30 +136,36 @@ def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_da
|
|
|
122
136
|
"_",
|
|
123
137
|
"_",
|
|
124
138
|
]
|
|
125
|
-
temp_df["交易日期"] = pd.to_datetime(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
temp_df[
|
|
146
|
-
temp_df[
|
|
147
|
-
temp_df[
|
|
148
|
-
|
|
139
|
+
temp_df["交易日期"] = pd.to_datetime(
|
|
140
|
+
temp_df["交易日期"], errors="coerce"
|
|
141
|
+
).dt.date
|
|
142
|
+
temp_df = temp_df[
|
|
143
|
+
[
|
|
144
|
+
"序号",
|
|
145
|
+
"交易日期",
|
|
146
|
+
"证券代码",
|
|
147
|
+
"证券简称",
|
|
148
|
+
"涨跌幅",
|
|
149
|
+
"收盘价",
|
|
150
|
+
"成交价",
|
|
151
|
+
"折溢率",
|
|
152
|
+
"成交量",
|
|
153
|
+
"成交额",
|
|
154
|
+
"成交额/流通市值",
|
|
155
|
+
"买方营业部",
|
|
156
|
+
"卖方营业部",
|
|
157
|
+
]
|
|
158
|
+
]
|
|
159
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
|
|
160
|
+
temp_df["收盘价"] = pd.to_numeric(temp_df["收盘价"], errors="coerce")
|
|
161
|
+
temp_df["成交价"] = pd.to_numeric(temp_df["成交价"], errors="coerce")
|
|
162
|
+
temp_df["折溢率"] = pd.to_numeric(temp_df["折溢率"], errors="coerce")
|
|
163
|
+
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
|
|
164
|
+
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
|
|
165
|
+
temp_df["成交额/流通市值"] = pd.to_numeric(
|
|
166
|
+
temp_df["成交额/流通市值"], errors="coerce"
|
|
167
|
+
)
|
|
168
|
+
if symbol in {"B股", "基金", "债券"}:
|
|
149
169
|
temp_df.columns = [
|
|
150
170
|
"序号",
|
|
151
171
|
"交易日期",
|
|
@@ -168,28 +188,34 @@ def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_da
|
|
|
168
188
|
"_",
|
|
169
189
|
"_",
|
|
170
190
|
]
|
|
171
|
-
temp_df["交易日期"] = pd.to_datetime(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
191
|
+
temp_df["交易日期"] = pd.to_datetime(
|
|
192
|
+
temp_df["交易日期"], errors="coerce"
|
|
193
|
+
).dt.date
|
|
194
|
+
temp_df = temp_df[
|
|
195
|
+
[
|
|
196
|
+
"序号",
|
|
197
|
+
"交易日期",
|
|
198
|
+
"证券代码",
|
|
199
|
+
"证券简称",
|
|
200
|
+
"成交价",
|
|
201
|
+
"成交量",
|
|
202
|
+
"成交额",
|
|
203
|
+
"买方营业部",
|
|
204
|
+
"卖方营业部",
|
|
205
|
+
]
|
|
206
|
+
]
|
|
207
|
+
temp_df["成交价"] = pd.to_numeric(temp_df["成交价"], errors="coerce")
|
|
208
|
+
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
|
|
209
|
+
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
|
|
186
210
|
return temp_df
|
|
187
211
|
|
|
188
212
|
|
|
189
|
-
def stock_dzjy_mrtj(
|
|
213
|
+
def stock_dzjy_mrtj(
|
|
214
|
+
start_date: str = "20220105", end_date: str = "20220105"
|
|
215
|
+
) -> pd.DataFrame:
|
|
190
216
|
"""
|
|
191
217
|
东方财富网-数据中心-大宗交易-每日统计
|
|
192
|
-
|
|
218
|
+
https://data.eastmoney.com/dzjy/dzjy_mrtj.html
|
|
193
219
|
:param start_date: 开始日期
|
|
194
220
|
:type start_date: str
|
|
195
221
|
:param end_date: 结束日期
|
|
@@ -199,21 +225,24 @@ def stock_dzjy_mrtj(start_date: str = '20220105', end_date: str = '20220105') ->
|
|
|
199
225
|
"""
|
|
200
226
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
201
227
|
params = {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
228
|
+
"sortColumns": "TURNOVERRATE",
|
|
229
|
+
"sortTypes": "-1",
|
|
230
|
+
"pageSize": "5000",
|
|
231
|
+
"pageNumber": "1",
|
|
232
|
+
"reportName": "RPT_BLOCKTRADE_STA",
|
|
233
|
+
"columns": "TRADE_DATE,SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CHANGE_RATE,"
|
|
234
|
+
"CLOSE_PRICE,AVERAGE_PRICE,PREMIUM_RATIO,DEAL_NUM,VOLUME,DEAL_AMT,"
|
|
235
|
+
"TURNOVERRATE,D1_CLOSE_ADJCHRATE,D5_CLOSE_ADJCHRATE,D10_CLOSE_ADJCHRATE,D20_CLOSE_ADJCHRATE",
|
|
236
|
+
"source": "WEB",
|
|
237
|
+
"client": "WEB",
|
|
238
|
+
"filter": f"(TRADE_DATE>='{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(TRADE_DATE<="
|
|
239
|
+
f"'{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')",
|
|
211
240
|
}
|
|
212
241
|
r = requests.get(url, params=params)
|
|
213
242
|
data_json = r.json()
|
|
214
|
-
temp_df = pd.DataFrame(data_json[
|
|
243
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
215
244
|
temp_df.reset_index(inplace=True)
|
|
216
|
-
temp_df[
|
|
245
|
+
temp_df["index"] = temp_df.index + 1
|
|
217
246
|
temp_df.columns = [
|
|
218
247
|
"序号",
|
|
219
248
|
"交易日期",
|
|
@@ -233,71 +262,77 @@ def stock_dzjy_mrtj(start_date: str = '20220105', end_date: str = '20220105') ->
|
|
|
233
262
|
"_",
|
|
234
263
|
"_",
|
|
235
264
|
]
|
|
236
|
-
temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"]).dt.date
|
|
237
|
-
temp_df = temp_df[
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
temp_df[
|
|
254
|
-
temp_df[
|
|
255
|
-
temp_df[
|
|
256
|
-
temp_df[
|
|
257
|
-
temp_df[
|
|
258
|
-
temp_df[
|
|
265
|
+
temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"], errors="coerce").dt.date
|
|
266
|
+
temp_df = temp_df[
|
|
267
|
+
[
|
|
268
|
+
"序号",
|
|
269
|
+
"交易日期",
|
|
270
|
+
"证券代码",
|
|
271
|
+
"证券简称",
|
|
272
|
+
"涨跌幅",
|
|
273
|
+
"收盘价",
|
|
274
|
+
"成交价",
|
|
275
|
+
"折溢率",
|
|
276
|
+
"成交笔数",
|
|
277
|
+
"成交总量",
|
|
278
|
+
"成交总额",
|
|
279
|
+
"成交总额/流通市值",
|
|
280
|
+
]
|
|
281
|
+
]
|
|
282
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
|
|
283
|
+
temp_df["收盘价"] = pd.to_numeric(temp_df["收盘价"], errors="coerce")
|
|
284
|
+
temp_df["成交价"] = pd.to_numeric(temp_df["成交价"], errors="coerce")
|
|
285
|
+
temp_df["折溢率"] = pd.to_numeric(temp_df["折溢率"], errors="coerce")
|
|
286
|
+
temp_df["成交笔数"] = pd.to_numeric(temp_df["成交笔数"], errors="coerce")
|
|
287
|
+
temp_df["成交总量"] = pd.to_numeric(temp_df["成交总量"], errors="coerce")
|
|
288
|
+
temp_df["成交总额"] = pd.to_numeric(temp_df["成交总额"], errors="coerce")
|
|
289
|
+
temp_df["成交总额/流通市值"] = pd.to_numeric(
|
|
290
|
+
temp_df["成交总额/流通市值"], errors="coerce"
|
|
291
|
+
)
|
|
259
292
|
return temp_df
|
|
260
293
|
|
|
261
294
|
|
|
262
|
-
def stock_dzjy_hygtj(symbol: str =
|
|
295
|
+
def stock_dzjy_hygtj(symbol: str = "近三月") -> pd.DataFrame:
|
|
263
296
|
"""
|
|
264
297
|
东方财富网-数据中心-大宗交易-活跃 A 股统计
|
|
265
|
-
|
|
298
|
+
https://data.eastmoney.com/dzjy/dzjy_hygtj.html
|
|
266
299
|
:param symbol: choice of {'近一月', '近三月', '近六月', '近一年'}
|
|
267
300
|
:type symbol: str
|
|
268
301
|
:return: 活跃 A 股统计
|
|
269
302
|
:rtype: pandas.DataFrame
|
|
270
303
|
"""
|
|
271
304
|
period_map = {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
305
|
+
"近一月": "1",
|
|
306
|
+
"近三月": "3",
|
|
307
|
+
"近六月": "6",
|
|
308
|
+
"近一年": "12",
|
|
276
309
|
}
|
|
277
310
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
278
311
|
params = {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
312
|
+
"sortColumns": "DEAL_NUM,SECURITY_CODE",
|
|
313
|
+
"sortTypes": "-1,-1",
|
|
314
|
+
"pageSize": "5000",
|
|
315
|
+
"pageNumber": "1",
|
|
316
|
+
"reportName": "RPT_BLOCKTRADE_ACSTA",
|
|
317
|
+
"columns": "SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CLOSE_PRICE,CHANGE_RATE,TRADE_DATE,"
|
|
318
|
+
"DEAL_AMT,PREMIUM_RATIO,SUM_TURNOVERRATE,DEAL_NUM,PREMIUM_TIMES,DISCOUNT_TIMES,"
|
|
319
|
+
"D1_AVG_ADJCHRATE,D5_AVG_ADJCHRATE,D10_AVG_ADJCHRATE,D20_AVG_ADJCHRATE,DATE_TYPE_CODE",
|
|
320
|
+
"source": "WEB",
|
|
321
|
+
"client": "WEB",
|
|
322
|
+
"filter": f"(DATE_TYPE_CODE={period_map[symbol]})",
|
|
288
323
|
}
|
|
289
324
|
r = requests.get(url, params=params)
|
|
290
325
|
data_json = r.json()
|
|
291
|
-
total_page = data_json[
|
|
326
|
+
total_page = data_json["result"]["pages"]
|
|
292
327
|
big_df = pd.DataFrame()
|
|
293
|
-
for page in range(1, int(total_page)+1):
|
|
328
|
+
for page in range(1, int(total_page) + 1):
|
|
294
329
|
params.update({"pageNumber": page})
|
|
295
330
|
r = requests.get(url, params=params)
|
|
296
331
|
data_json = r.json()
|
|
297
|
-
temp_df = pd.DataFrame(data_json[
|
|
298
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
332
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
333
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
299
334
|
big_df.reset_index(inplace=True)
|
|
300
|
-
big_df[
|
|
335
|
+
big_df["index"] = big_df.index + 1
|
|
301
336
|
big_df.columns = [
|
|
302
337
|
"序号",
|
|
303
338
|
"证券代码",
|
|
@@ -318,41 +353,53 @@ def stock_dzjy_hygtj(symbol: str = '近三月') -> pd.DataFrame:
|
|
|
318
353
|
"上榜日后平均涨跌幅-20日",
|
|
319
354
|
"_",
|
|
320
355
|
]
|
|
321
|
-
big_df = big_df[
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
big_df["
|
|
342
|
-
big_df["
|
|
343
|
-
big_df["
|
|
344
|
-
big_df["
|
|
345
|
-
big_df["
|
|
346
|
-
big_df["
|
|
347
|
-
big_df["
|
|
348
|
-
big_df["
|
|
349
|
-
big_df["
|
|
350
|
-
|
|
351
|
-
|
|
356
|
+
big_df = big_df[
|
|
357
|
+
[
|
|
358
|
+
"序号",
|
|
359
|
+
"证券代码",
|
|
360
|
+
"证券简称",
|
|
361
|
+
"最新价",
|
|
362
|
+
"涨跌幅",
|
|
363
|
+
"最近上榜日",
|
|
364
|
+
"上榜次数-总计",
|
|
365
|
+
"上榜次数-溢价",
|
|
366
|
+
"上榜次数-折价",
|
|
367
|
+
"总成交额",
|
|
368
|
+
"折溢率",
|
|
369
|
+
"成交总额/流通市值",
|
|
370
|
+
"上榜日后平均涨跌幅-1日",
|
|
371
|
+
"上榜日后平均涨跌幅-5日",
|
|
372
|
+
"上榜日后平均涨跌幅-10日",
|
|
373
|
+
"上榜日后平均涨跌幅-20日",
|
|
374
|
+
]
|
|
375
|
+
]
|
|
376
|
+
big_df["最近上榜日"] = pd.to_datetime(big_df["最近上榜日"], errors="coerce").dt.date
|
|
377
|
+
big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
|
|
378
|
+
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
|
|
379
|
+
big_df["上榜次数-总计"] = pd.to_numeric(big_df["上榜次数-总计"], errors="coerce")
|
|
380
|
+
big_df["上榜次数-溢价"] = pd.to_numeric(big_df["上榜次数-溢价"], errors="coerce")
|
|
381
|
+
big_df["上榜次数-折价"] = pd.to_numeric(big_df["上榜次数-折价"], errors="coerce")
|
|
382
|
+
big_df["总成交额"] = pd.to_numeric(big_df["总成交额"], errors="coerce")
|
|
383
|
+
big_df["折溢率"] = pd.to_numeric(big_df["折溢率"], errors="coerce")
|
|
384
|
+
big_df["成交总额/流通市值"] = pd.to_numeric(
|
|
385
|
+
big_df["成交总额/流通市值"], errors="coerce"
|
|
386
|
+
)
|
|
387
|
+
big_df["上榜日后平均涨跌幅-1日"] = pd.to_numeric(
|
|
388
|
+
big_df["上榜日后平均涨跌幅-1日"], errors="coerce"
|
|
389
|
+
)
|
|
390
|
+
big_df["上榜日后平均涨跌幅-5日"] = pd.to_numeric(
|
|
391
|
+
big_df["上榜日后平均涨跌幅-5日"], errors="coerce"
|
|
392
|
+
)
|
|
393
|
+
big_df["上榜日后平均涨跌幅-10日"] = pd.to_numeric(
|
|
394
|
+
big_df["上榜日后平均涨跌幅-10日"], errors="coerce"
|
|
395
|
+
)
|
|
396
|
+
big_df["上榜日后平均涨跌幅-20日"] = pd.to_numeric(
|
|
397
|
+
big_df["上榜日后平均涨跌幅-20日"], errors="coerce"
|
|
398
|
+
)
|
|
352
399
|
return big_df
|
|
353
400
|
|
|
354
401
|
|
|
355
|
-
def stock_dzjy_hyyybtj(symbol: str =
|
|
402
|
+
def stock_dzjy_hyyybtj(symbol: str = "近3日") -> pd.DataFrame:
|
|
356
403
|
"""
|
|
357
404
|
东方财富网-数据中心-大宗交易-活跃营业部统计
|
|
358
405
|
https://data.eastmoney.com/dzjy/dzjy_hyyybtj.html
|
|
@@ -362,36 +409,37 @@ def stock_dzjy_hyyybtj(symbol: str = '近3日') -> pd.DataFrame:
|
|
|
362
409
|
:rtype: pandas.DataFrame
|
|
363
410
|
"""
|
|
364
411
|
period_map = {
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
412
|
+
"当前交易日": "1",
|
|
413
|
+
"近3日": "3",
|
|
414
|
+
"近5日": "5",
|
|
415
|
+
"近10日": "10",
|
|
416
|
+
"近30日": "30",
|
|
370
417
|
}
|
|
371
418
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
372
419
|
params = {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
420
|
+
"sortColumns": "BUYER_NUM,TOTAL_BUYAMT",
|
|
421
|
+
"sortTypes": "-1,-1",
|
|
422
|
+
"pageSize": "5000",
|
|
423
|
+
"pageNumber": "1",
|
|
424
|
+
"reportName": "RPT_BLOCKTRADE_OPERATEDEPTSTATISTICS",
|
|
425
|
+
"columns": "OPERATEDEPT_CODE,OPERATEDEPT_NAME,ONLIST_DATE,STOCK_DETAILS,"
|
|
426
|
+
"BUYER_NUM,SELLER_NUM,TOTAL_BUYAMT,TOTAL_SELLAMT,TOTAL_NETAMT,N_DATE",
|
|
427
|
+
"source": "WEB",
|
|
428
|
+
"client": "WEB",
|
|
429
|
+
"filter": f"(N_DATE=-{period_map[symbol]})",
|
|
382
430
|
}
|
|
383
431
|
r = requests.get(url, params=params)
|
|
384
432
|
data_json = r.json()
|
|
385
|
-
total_page = data_json[
|
|
433
|
+
total_page = data_json["result"]["pages"]
|
|
386
434
|
big_df = pd.DataFrame()
|
|
387
|
-
for page in range(1, int(total_page)+1):
|
|
435
|
+
for page in range(1, int(total_page) + 1):
|
|
388
436
|
params.update({"pageNumber": page})
|
|
389
437
|
r = requests.get(url, params=params)
|
|
390
438
|
data_json = r.json()
|
|
391
|
-
temp_df = pd.DataFrame(data_json[
|
|
392
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
439
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
440
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
393
441
|
big_df.reset_index(inplace=True)
|
|
394
|
-
big_df[
|
|
442
|
+
big_df["index"] = big_df.index + 1
|
|
395
443
|
big_df.columns = [
|
|
396
444
|
"序号",
|
|
397
445
|
"_",
|
|
@@ -405,66 +453,77 @@ def stock_dzjy_hyyybtj(symbol: str = '近3日') -> pd.DataFrame:
|
|
|
405
453
|
"成交金额统计-净买入额",
|
|
406
454
|
"_",
|
|
407
455
|
]
|
|
408
|
-
big_df = big_df[
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
big_df["
|
|
422
|
-
big_df["
|
|
423
|
-
big_df["
|
|
424
|
-
big_df["
|
|
456
|
+
big_df = big_df[
|
|
457
|
+
[
|
|
458
|
+
"序号",
|
|
459
|
+
"最近上榜日",
|
|
460
|
+
"营业部名称",
|
|
461
|
+
"次数总计-买入",
|
|
462
|
+
"次数总计-卖出",
|
|
463
|
+
"成交金额统计-买入",
|
|
464
|
+
"成交金额统计-卖出",
|
|
465
|
+
"成交金额统计-净买入额",
|
|
466
|
+
"买入的股票",
|
|
467
|
+
]
|
|
468
|
+
]
|
|
469
|
+
big_df["最近上榜日"] = pd.to_datetime(big_df["最近上榜日"], errors="coerce").dt.date
|
|
470
|
+
big_df["次数总计-买入"] = pd.to_numeric(big_df["次数总计-买入"], errors="coerce")
|
|
471
|
+
big_df["次数总计-卖出"] = pd.to_numeric(big_df["次数总计-卖出"], errors="coerce")
|
|
472
|
+
big_df["成交金额统计-买入"] = pd.to_numeric(
|
|
473
|
+
big_df["成交金额统计-买入"], errors="coerce"
|
|
474
|
+
)
|
|
475
|
+
big_df["成交金额统计-卖出"] = pd.to_numeric(
|
|
476
|
+
big_df["成交金额统计-卖出"], errors="coerce"
|
|
477
|
+
)
|
|
478
|
+
big_df["成交金额统计-净买入额"] = pd.to_numeric(
|
|
479
|
+
big_df["成交金额统计-净买入额"], errors="coerce"
|
|
480
|
+
)
|
|
425
481
|
return big_df
|
|
426
482
|
|
|
427
483
|
|
|
428
|
-
def stock_dzjy_yybph(symbol: str =
|
|
484
|
+
def stock_dzjy_yybph(symbol: str = "近三月") -> pd.DataFrame:
|
|
429
485
|
"""
|
|
430
486
|
东方财富网-数据中心-大宗交易-营业部排行
|
|
431
|
-
|
|
487
|
+
https://data.eastmoney.com/dzjy/dzjy_yybph.html
|
|
432
488
|
:param symbol: choice of {'近一月', '近三月', '近六月', '近一年'}
|
|
433
489
|
:type symbol: str
|
|
434
490
|
:return: 营业部排行
|
|
435
491
|
:rtype: pandas.DataFrame
|
|
436
492
|
"""
|
|
437
493
|
period_map = {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
494
|
+
"近一月": "30",
|
|
495
|
+
"近三月": "90",
|
|
496
|
+
"近六月": "120",
|
|
497
|
+
"近一年": "360",
|
|
442
498
|
}
|
|
443
499
|
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
|
444
500
|
params = {
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
501
|
+
"sortColumns": "D5_BUYER_NUM,D1_AVERAGE_INCREASE",
|
|
502
|
+
"sortTypes": "-1,-1",
|
|
503
|
+
"pageSize": "5000",
|
|
504
|
+
"pageNumber": "1",
|
|
505
|
+
"reportName": "RPT_BLOCKTRADE_OPERATEDEPT_RANK",
|
|
506
|
+
"columns": "OPERATEDEPT_CODE,OPERATEDEPT_NAME,D1_BUYER_NUM,D1_AVERAGE_INCREASE,"
|
|
507
|
+
"D1_RISE_PROBABILITY,D5_BUYER_NUM,D5_AVERAGE_INCREASE,D5_RISE_PROBABILITY,"
|
|
508
|
+
"D10_BUYER_NUM,D10_AVERAGE_INCREASE,D10_RISE_PROBABILITY,D20_BUYER_NUM,"
|
|
509
|
+
"D20_AVERAGE_INCREASE,D20_RISE_PROBABILITY,N_DATE,RELATED_ORG_CODE",
|
|
510
|
+
"source": "WEB",
|
|
511
|
+
"client": "WEB",
|
|
512
|
+
"filter": f"(N_DATE=-{period_map[symbol]})",
|
|
454
513
|
}
|
|
455
514
|
r = requests.get(url, params=params)
|
|
456
515
|
data_json = r.json()
|
|
457
|
-
total_page = data_json[
|
|
516
|
+
total_page = data_json["result"]["pages"]
|
|
458
517
|
big_df = pd.DataFrame()
|
|
459
|
-
for page in range(1, int(total_page)+1):
|
|
518
|
+
for page in range(1, int(total_page) + 1):
|
|
460
519
|
params.update({"pageNumber": page})
|
|
461
520
|
r = requests.get(url, params=params)
|
|
462
521
|
data_json = r.json()
|
|
463
|
-
temp_df = pd.DataFrame(data_json[
|
|
464
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
522
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
523
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
465
524
|
|
|
466
525
|
big_df.reset_index(inplace=True)
|
|
467
|
-
big_df[
|
|
526
|
+
big_df["index"] = big_df.index + 1
|
|
468
527
|
big_df.columns = [
|
|
469
528
|
"序号",
|
|
470
529
|
"_",
|
|
@@ -484,34 +543,60 @@ def stock_dzjy_yybph(symbol: str = '近三月') -> pd.DataFrame:
|
|
|
484
543
|
"_",
|
|
485
544
|
"_",
|
|
486
545
|
]
|
|
487
|
-
big_df = big_df[
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
big_df[
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
big_df[
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
big_df[
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
big_df[
|
|
546
|
+
big_df = big_df[
|
|
547
|
+
[
|
|
548
|
+
"序号",
|
|
549
|
+
"营业部名称",
|
|
550
|
+
"上榜后1天-买入次数",
|
|
551
|
+
"上榜后1天-平均涨幅",
|
|
552
|
+
"上榜后1天-上涨概率",
|
|
553
|
+
"上榜后5天-买入次数",
|
|
554
|
+
"上榜后5天-平均涨幅",
|
|
555
|
+
"上榜后5天-上涨概率",
|
|
556
|
+
"上榜后10天-买入次数",
|
|
557
|
+
"上榜后10天-平均涨幅",
|
|
558
|
+
"上榜后10天-上涨概率",
|
|
559
|
+
"上榜后20天-买入次数",
|
|
560
|
+
"上榜后20天-平均涨幅",
|
|
561
|
+
"上榜后20天-上涨概率",
|
|
562
|
+
]
|
|
563
|
+
]
|
|
564
|
+
big_df["上榜后1天-买入次数"] = pd.to_numeric(
|
|
565
|
+
big_df["上榜后1天-买入次数"], errors="coerce"
|
|
566
|
+
)
|
|
567
|
+
big_df["上榜后1天-平均涨幅"] = pd.to_numeric(
|
|
568
|
+
big_df["上榜后1天-平均涨幅"], errors="coerce"
|
|
569
|
+
)
|
|
570
|
+
big_df["上榜后1天-上涨概率"] = pd.to_numeric(
|
|
571
|
+
big_df["上榜后1天-上涨概率"], errors="coerce"
|
|
572
|
+
)
|
|
573
|
+
big_df["上榜后5天-买入次数"] = pd.to_numeric(
|
|
574
|
+
big_df["上榜后5天-买入次数"], errors="coerce"
|
|
575
|
+
)
|
|
576
|
+
big_df["上榜后5天-平均涨幅"] = pd.to_numeric(
|
|
577
|
+
big_df["上榜后5天-平均涨幅"], errors="coerce"
|
|
578
|
+
)
|
|
579
|
+
big_df["上榜后5天-上涨概率"] = pd.to_numeric(
|
|
580
|
+
big_df["上榜后5天-上涨概率"], errors="coerce"
|
|
581
|
+
)
|
|
582
|
+
big_df["上榜后10天-买入次数"] = pd.to_numeric(
|
|
583
|
+
big_df["上榜后10天-买入次数"], errors="coerce"
|
|
584
|
+
)
|
|
585
|
+
big_df["上榜后10天-平均涨幅"] = pd.to_numeric(
|
|
586
|
+
big_df["上榜后10天-平均涨幅"], errors="coerce"
|
|
587
|
+
)
|
|
588
|
+
big_df["上榜后10天-上涨概率"] = pd.to_numeric(
|
|
589
|
+
big_df["上榜后10天-上涨概率"], errors="coerce"
|
|
590
|
+
)
|
|
591
|
+
big_df["上榜后20天-买入次数"] = pd.to_numeric(
|
|
592
|
+
big_df["上榜后20天-买入次数"], errors="coerce"
|
|
593
|
+
)
|
|
594
|
+
big_df["上榜后20天-平均涨幅"] = pd.to_numeric(
|
|
595
|
+
big_df["上榜后20天-平均涨幅"], errors="coerce"
|
|
596
|
+
)
|
|
597
|
+
big_df["上榜后20天-上涨概率"] = pd.to_numeric(
|
|
598
|
+
big_df["上榜后20天-上涨概率"], errors="coerce"
|
|
599
|
+
)
|
|
515
600
|
return big_df
|
|
516
601
|
|
|
517
602
|
|
|
@@ -519,17 +604,19 @@ if __name__ == "__main__":
|
|
|
519
604
|
stock_dzjy_sctj_df = stock_dzjy_sctj()
|
|
520
605
|
print(stock_dzjy_sctj_df)
|
|
521
606
|
|
|
522
|
-
stock_dzjy_mrmx_df = stock_dzjy_mrmx(
|
|
607
|
+
stock_dzjy_mrmx_df = stock_dzjy_mrmx(
|
|
608
|
+
symbol="债券", start_date="20220104", end_date="20220104"
|
|
609
|
+
)
|
|
523
610
|
print(stock_dzjy_mrmx_df)
|
|
524
611
|
|
|
525
|
-
stock_dzjy_mrtj_df = stock_dzjy_mrtj(start_date=
|
|
612
|
+
stock_dzjy_mrtj_df = stock_dzjy_mrtj(start_date="20201204", end_date="20201204")
|
|
526
613
|
print(stock_dzjy_mrtj_df)
|
|
527
614
|
|
|
528
|
-
stock_dzjy_hygtj_df = stock_dzjy_hygtj(symbol=
|
|
615
|
+
stock_dzjy_hygtj_df = stock_dzjy_hygtj(symbol="近三月")
|
|
529
616
|
print(stock_dzjy_hygtj_df)
|
|
530
617
|
|
|
531
|
-
stock_dzjy_hyyybtj_df = stock_dzjy_hyyybtj(symbol=
|
|
618
|
+
stock_dzjy_hyyybtj_df = stock_dzjy_hyyybtj(symbol="近3日")
|
|
532
619
|
print(stock_dzjy_hyyybtj_df)
|
|
533
620
|
|
|
534
|
-
stock_dzjy_yybph_df = stock_dzjy_yybph(symbol=
|
|
621
|
+
stock_dzjy_yybph_df = stock_dzjy_yybph(symbol="近三月")
|
|
535
622
|
print(stock_dzjy_yybph_df)
|