akshare 1.16.29__py3-none-any.whl → 1.16.31__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 +18 -1
- akshare/forex/__init__.py +0 -0
- akshare/forex/cons.py +192 -0
- akshare/forex/forex_em.py +154 -0
- akshare/index/cons.py +132 -28
- akshare/index/index_global_em.py +169 -0
- akshare/index/index_global_sina.py +82 -0
- {akshare-1.16.29.dist-info → akshare-1.16.31.dist-info}/METADATA +4 -7
- {akshare-1.16.29.dist-info → akshare-1.16.31.dist-info}/RECORD +12 -7
- {akshare-1.16.29.dist-info → akshare-1.16.31.dist-info}/LICENSE +0 -0
- {akshare-1.16.29.dist-info → akshare-1.16.31.dist-info}/WHEEL +0 -0
- {akshare-1.16.29.dist-info → akshare-1.16.31.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3038,9 +3038,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3038
3038
|
1.16.27 fix: fix futures_global_em interface
|
3039
3039
|
1.16.28 fix: fix futures_global_hist_em interface
|
3040
3040
|
1.16.29 fix: fix futures_global_hist_em interface
|
3041
|
+
1.16.30 add: add forex_hist_em interface
|
3042
|
+
1.16.31 add: add index_global_hist_em interface
|
3041
3043
|
"""
|
3042
3044
|
|
3043
|
-
__version__ = "1.16.
|
3045
|
+
__version__ = "1.16.31"
|
3044
3046
|
__author__ = "AKFamily"
|
3045
3047
|
|
3046
3048
|
import sys
|
@@ -3062,6 +3064,21 @@ if sys.version_info < (3, 9):
|
|
3062
3064
|
|
3063
3065
|
del sys
|
3064
3066
|
|
3067
|
+
"""
|
3068
|
+
新浪财经-行情中心-环球市场
|
3069
|
+
"""
|
3070
|
+
from akshare.index.index_global_sina import index_global_hist_sina, index_global_name_table
|
3071
|
+
|
3072
|
+
"""
|
3073
|
+
东方财富网-行情中心-全球指数
|
3074
|
+
"""
|
3075
|
+
from akshare.index.index_global_em import index_global_hist_em, index_global_spot_em
|
3076
|
+
|
3077
|
+
"""
|
3078
|
+
东方财富网-行情中心-外汇市场-所有汇率
|
3079
|
+
"""
|
3080
|
+
from akshare.forex.forex_em import forex_hist_em, forex_spot_em
|
3081
|
+
|
3065
3082
|
"""
|
3066
3083
|
东方财富网-行情中心-沪深港通
|
3067
3084
|
"""
|
File without changes
|
akshare/forex/cons.py
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
symbol_market_map = {
|
2
|
+
"EURCNYC": 120,
|
3
|
+
"JPYZAR": 119,
|
4
|
+
"NZDCNYC": 120,
|
5
|
+
"CNYRUBC": 120,
|
6
|
+
"AUDCNYC": 120,
|
7
|
+
"JPYGBP": 119,
|
8
|
+
"JPYSGD": 119,
|
9
|
+
"JPYCNH": 133,
|
10
|
+
"JPYAUD": 119,
|
11
|
+
"USDBRL": 119,
|
12
|
+
"JPYEUR": 119,
|
13
|
+
"JPYTRY": 119,
|
14
|
+
"JPYCAD": 119,
|
15
|
+
"CHFZAR": 119,
|
16
|
+
"JPYHKD": 119,
|
17
|
+
"SEKEUR": 119,
|
18
|
+
"JPYUSD": 119,
|
19
|
+
"GBPCNYC": 120,
|
20
|
+
"JPYNZD": 119,
|
21
|
+
"CHFGBP": 119,
|
22
|
+
"USDIDR": 119,
|
23
|
+
"CHFSGD": 119,
|
24
|
+
"USDPLN": 119,
|
25
|
+
"CHFCNH": 133,
|
26
|
+
"SEKUSD": 119,
|
27
|
+
"CHFAUD": 119,
|
28
|
+
"USDKRW": 119,
|
29
|
+
"EURPLN": 119,
|
30
|
+
"USDHUF": 119,
|
31
|
+
"CHFCAD": 119,
|
32
|
+
"USDTHB": 119,
|
33
|
+
"CHFEUR": 119,
|
34
|
+
"JPYCNYC": 120,
|
35
|
+
"EURHUF": 119,
|
36
|
+
"CHFHKD": 119,
|
37
|
+
"SGDCNYC": 120,
|
38
|
+
"CHFUSD": 119,
|
39
|
+
"USDINR": 119,
|
40
|
+
"USDCZK": 119,
|
41
|
+
"CHFNZD": 119,
|
42
|
+
"USDMXN": 119,
|
43
|
+
"GBPPLN": 119,
|
44
|
+
"USDZAR": 119,
|
45
|
+
"JPYCHF": 119,
|
46
|
+
"EURCZK": 119,
|
47
|
+
"EURZAR": 119,
|
48
|
+
"CADCNYC": 120,
|
49
|
+
"NOKEUR": 119,
|
50
|
+
"NZDGBP": 119,
|
51
|
+
"NOKUSD": 119,
|
52
|
+
"NZDSGD": 119,
|
53
|
+
"USDGBP": 119,
|
54
|
+
"HKDGBP": 119,
|
55
|
+
"NZDCNH": 133,
|
56
|
+
"NZDAUD": 119,
|
57
|
+
"HKDSGD": 119,
|
58
|
+
"CNYSARC": 120,
|
59
|
+
"USDSGD": 119,
|
60
|
+
"CNYAEDC": 120,
|
61
|
+
"EURGBP": 119,
|
62
|
+
"CADGBP": 119,
|
63
|
+
"USDCNH": 133,
|
64
|
+
"CNYTRYC": 120,
|
65
|
+
"CADSGD": 119,
|
66
|
+
"USDAUD": 119,
|
67
|
+
"GBPZAR": 119,
|
68
|
+
"EURSGD": 119,
|
69
|
+
"HKDCNH": 133,
|
70
|
+
"NZDCAD": 119,
|
71
|
+
"CADCNH": 133,
|
72
|
+
"HKDAUD": 119,
|
73
|
+
"NZDEUR": 119,
|
74
|
+
"EURCNH": 133,
|
75
|
+
"EURAUD": 119,
|
76
|
+
"NZDHKD": 119,
|
77
|
+
"CADAUD": 119,
|
78
|
+
"AUDGBP": 119,
|
79
|
+
"USDDKK": 119,
|
80
|
+
"HKDCAD": 119,
|
81
|
+
"USDCAD": 119,
|
82
|
+
"AUDSGD": 119,
|
83
|
+
"USDTRY": 119,
|
84
|
+
"EURTRY": 119,
|
85
|
+
"USDEUR": 119,
|
86
|
+
"NZDUSD": 119,
|
87
|
+
"SGDGBP": 119,
|
88
|
+
"USDHKD": 119,
|
89
|
+
"AUDCNH": 133,
|
90
|
+
"EURDKK": 119,
|
91
|
+
"USDARS": 119,
|
92
|
+
"USDSAR": 119,
|
93
|
+
"TRYUSD": 119,
|
94
|
+
"TRYEUR": 119,
|
95
|
+
"SARUSD": 119,
|
96
|
+
"INRUSD": 119,
|
97
|
+
"HUFUSD": 119,
|
98
|
+
"HUFEUR": 119,
|
99
|
+
"HKDUSD": 119,
|
100
|
+
"HKDEUR": 119,
|
101
|
+
"HKDCNYC": 120,
|
102
|
+
"EURCAD": 119,
|
103
|
+
"DKKUSD": 119,
|
104
|
+
"DKKEUR": 119,
|
105
|
+
"CNYMOPC": 120,
|
106
|
+
"CNHSGD": 133,
|
107
|
+
"CNHGBP": 133,
|
108
|
+
"CNHAUD": 133,
|
109
|
+
"CADEUR": 119,
|
110
|
+
"SGDCNH": 133,
|
111
|
+
"EURHKD": 119,
|
112
|
+
"CADHKD": 119,
|
113
|
+
"USDCNYC": 120,
|
114
|
+
"GBPSGD": 119,
|
115
|
+
"EURUSD": 119,
|
116
|
+
"SGDAUD": 119,
|
117
|
+
"HKDNZD": 119,
|
118
|
+
"USDNZD": 119,
|
119
|
+
"GBPCNH": 133,
|
120
|
+
"CADUSD": 119,
|
121
|
+
"AUDCAD": 119,
|
122
|
+
"CNYTHBC": 120,
|
123
|
+
"CNHEUR": 133,
|
124
|
+
"GBPAUD": 119,
|
125
|
+
"AUDEUR": 119,
|
126
|
+
"CADNZD": 119,
|
127
|
+
"EURNZD": 119,
|
128
|
+
"CNHCAD": 133,
|
129
|
+
"AUDHKD": 119,
|
130
|
+
"SGDCAD": 119,
|
131
|
+
"AUDUSD": 119,
|
132
|
+
"SGDEUR": 119,
|
133
|
+
"CNHHKD": 133,
|
134
|
+
"GBPCAD": 119,
|
135
|
+
"CNHUSD": 133,
|
136
|
+
"SGDHKD": 119,
|
137
|
+
"GBPEUR": 119,
|
138
|
+
"SGDUSD": 119,
|
139
|
+
"AUDNZD": 119,
|
140
|
+
"GBPHKD": 119,
|
141
|
+
"GBPUSD": 119,
|
142
|
+
"CNHNZD": 133,
|
143
|
+
"CHFCNYC": 120,
|
144
|
+
"SGDNZD": 119,
|
145
|
+
"ZARGBP": 119,
|
146
|
+
"USDNOK": 119,
|
147
|
+
"GBPNZD": 119,
|
148
|
+
"CZKEUR": 119,
|
149
|
+
"EURNOK": 119,
|
150
|
+
"CHFJPY": 119,
|
151
|
+
"NZDCHF": 119,
|
152
|
+
"PLNGBP": 119,
|
153
|
+
"HKDCHF": 119,
|
154
|
+
"ZARUSD": 119,
|
155
|
+
"USDCHF": 119,
|
156
|
+
"ZAREUR": 119,
|
157
|
+
"MXNUSD": 119,
|
158
|
+
"EURCHF": 119,
|
159
|
+
"CADCHF": 119,
|
160
|
+
"CZKUSD": 119,
|
161
|
+
"CNYKRWC": 120,
|
162
|
+
"CNHCHF": 133,
|
163
|
+
"AUDCHF": 119,
|
164
|
+
"PLNEUR": 119,
|
165
|
+
"CNYMXNC": 120,
|
166
|
+
"SGDCHF": 119,
|
167
|
+
"PLNUSD": 119,
|
168
|
+
"USDSEK": 119,
|
169
|
+
"GBPCHF": 119,
|
170
|
+
"EURSEK": 119,
|
171
|
+
"CNYMYRC": 120,
|
172
|
+
"NZDJPY": 119,
|
173
|
+
"ZARCHF": 119,
|
174
|
+
"USDJPY": 119,
|
175
|
+
"THBUSD": 119,
|
176
|
+
"HKDJPY": 119,
|
177
|
+
"EURJPY": 119,
|
178
|
+
"CADJPY": 119,
|
179
|
+
"AUDJPY": 119,
|
180
|
+
"TRYJPY": 119,
|
181
|
+
"CNHJPY": 133,
|
182
|
+
"SGDJPY": 119,
|
183
|
+
"GBPJPY": 119,
|
184
|
+
"CNYZARC": 120,
|
185
|
+
"ZARJPY": 119,
|
186
|
+
"USDRUB": 119,
|
187
|
+
"CNYDKKC": 120,
|
188
|
+
"CNYNOKC": 120,
|
189
|
+
"CNYHUFC": 120,
|
190
|
+
"CNYPLNC": 120,
|
191
|
+
"CNYSEKC": 120,
|
192
|
+
}
|
@@ -0,0 +1,154 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2025/3/6 17:00
|
5
|
+
Desc: 东方财富网-行情中心-外汇市场-所有汇率
|
6
|
+
https://quote.eastmoney.com/center/gridlist.html#forex_all
|
7
|
+
"""
|
8
|
+
|
9
|
+
import pandas as pd
|
10
|
+
import requests
|
11
|
+
|
12
|
+
from akshare.forex.cons import symbol_market_map
|
13
|
+
|
14
|
+
|
15
|
+
def forex_spot_em() -> pd.DataFrame:
|
16
|
+
"""
|
17
|
+
东方财富网-行情中心-外汇市场-所有汇率-实时行情数据
|
18
|
+
https://quote.eastmoney.com/center/gridlist.html#forex_all
|
19
|
+
:return: 实时行情数据
|
20
|
+
:rtype: pandas.DataFrame
|
21
|
+
"""
|
22
|
+
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
23
|
+
params = {
|
24
|
+
"np": "2",
|
25
|
+
"fltt": "1",
|
26
|
+
"invt": "2",
|
27
|
+
"fs": "m:119,m:120,m:133",
|
28
|
+
"fields": "f12,f13,f14,f1,f2,f4,f3,f152,f17,f18,f15,f16",
|
29
|
+
"fid": "f3",
|
30
|
+
"pn": "1",
|
31
|
+
"pz": "20000",
|
32
|
+
"po": "1",
|
33
|
+
"dect": "1",
|
34
|
+
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
35
|
+
"wbp2u": "|0|0|0|web",
|
36
|
+
"_": "1741252811876",
|
37
|
+
}
|
38
|
+
r = requests.get(url, params=params)
|
39
|
+
data_json = r.json()
|
40
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
41
|
+
temp_df.reset_index(inplace=True)
|
42
|
+
temp_df["index"] = temp_df["index"].astype(int) + 1
|
43
|
+
temp_df.rename(
|
44
|
+
columns={
|
45
|
+
"index": "序号",
|
46
|
+
"f12": "代码",
|
47
|
+
"f14": "名称",
|
48
|
+
"f17": "最新价",
|
49
|
+
"f4": "涨跌额",
|
50
|
+
"f3": "涨跌幅",
|
51
|
+
"f2": "今开",
|
52
|
+
"f15": "最高",
|
53
|
+
"f16": "最低",
|
54
|
+
"f18": "昨收",
|
55
|
+
},
|
56
|
+
inplace=True,
|
57
|
+
)
|
58
|
+
temp_df = temp_df[
|
59
|
+
[
|
60
|
+
"序号",
|
61
|
+
"代码",
|
62
|
+
"名称",
|
63
|
+
"最新价",
|
64
|
+
"涨跌额",
|
65
|
+
"涨跌幅",
|
66
|
+
"今开",
|
67
|
+
"最高",
|
68
|
+
"最低",
|
69
|
+
"昨收",
|
70
|
+
]
|
71
|
+
]
|
72
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 10000
|
73
|
+
temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 10000
|
74
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
|
75
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce") / 10000
|
76
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce") / 10000
|
77
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce") / 10000
|
78
|
+
temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce") / 10000
|
79
|
+
return temp_df
|
80
|
+
|
81
|
+
|
82
|
+
def forex_hist_em(symbol: str = "USDCNH") -> pd.DataFrame:
|
83
|
+
"""
|
84
|
+
东方财富网-行情中心-外汇市场-所有汇率-历史行情数据
|
85
|
+
https://quote.eastmoney.com/cnyrate/EURCNYC.html
|
86
|
+
:param symbol: 品种代码;可以通过 ak.forex_spot_em() 来获取所有可获取历史行情数据的品种代码
|
87
|
+
:type symbol: str
|
88
|
+
:return: 历史行情数据
|
89
|
+
:rtype: pandas.DataFrame
|
90
|
+
"""
|
91
|
+
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
92
|
+
market_code = symbol_market_map[symbol]
|
93
|
+
params = {
|
94
|
+
"secid": f"{market_code}.{symbol}",
|
95
|
+
"klt": "101",
|
96
|
+
"fqt": "1",
|
97
|
+
"lmt": "50000",
|
98
|
+
"end": "20500000",
|
99
|
+
"iscca": "1",
|
100
|
+
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
|
101
|
+
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
|
102
|
+
"ut": "f057cbcbce2a86e2866ab8877db1d059",
|
103
|
+
"forcect": 1,
|
104
|
+
}
|
105
|
+
r = requests.get(url, params=params)
|
106
|
+
data_json = r.json()
|
107
|
+
temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
|
108
|
+
temp_df["code"] = data_json["data"]["code"]
|
109
|
+
temp_df["name"] = data_json["data"]["name"]
|
110
|
+
temp_df.columns = [
|
111
|
+
"日期",
|
112
|
+
"今开",
|
113
|
+
"最新价",
|
114
|
+
"最高",
|
115
|
+
"最低",
|
116
|
+
"-",
|
117
|
+
"-",
|
118
|
+
"振幅",
|
119
|
+
"-",
|
120
|
+
"-",
|
121
|
+
"-",
|
122
|
+
"-",
|
123
|
+
"-",
|
124
|
+
"-",
|
125
|
+
"代码",
|
126
|
+
"名称",
|
127
|
+
]
|
128
|
+
temp_df = temp_df[
|
129
|
+
[
|
130
|
+
"日期",
|
131
|
+
"代码",
|
132
|
+
"名称",
|
133
|
+
"今开",
|
134
|
+
"最新价",
|
135
|
+
"最高",
|
136
|
+
"最低",
|
137
|
+
"振幅",
|
138
|
+
]
|
139
|
+
]
|
140
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
141
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
|
142
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
143
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
144
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
145
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
|
146
|
+
return temp_df
|
147
|
+
|
148
|
+
|
149
|
+
if __name__ == "__main__":
|
150
|
+
forex_spot_em_df = forex_spot_em()
|
151
|
+
print(forex_spot_em_df)
|
152
|
+
|
153
|
+
forex_hist_em_df = forex_hist_em(symbol="USDCNH")
|
154
|
+
print(forex_hist_em_df)
|
akshare/index/cons.py
CHANGED
@@ -4,9 +4,11 @@
|
|
4
4
|
Date: 2021/5/27 20:19
|
5
5
|
Desc: 指数配置文件
|
6
6
|
"""
|
7
|
+
|
7
8
|
# weibo-user-agent
|
8
9
|
index_weibo_headers = {
|
9
|
-
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X)
|
10
|
+
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) "
|
11
|
+
"AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
|
10
12
|
"Referer": "http://data.weibo.com/index/newindex",
|
11
13
|
"Accept": "application/json",
|
12
14
|
"Origin": "https://data.weibo.com",
|
@@ -24,7 +26,8 @@ sw_cons_headers = {
|
|
24
26
|
"Host": "www.swsindex.com",
|
25
27
|
"Origin": "http://www.swsindex.com",
|
26
28
|
"Referer": "http://www.swsindex.com/idx0210.aspx?swindexcode=801010",
|
27
|
-
|
29
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
30
|
+
"Chrome/78.0.3904.108 Safari/537.36",
|
28
31
|
"X-AjaxPro-Method": "ReturnContent",
|
29
32
|
}
|
30
33
|
|
@@ -36,7 +39,10 @@ sw_payload = {
|
|
36
39
|
"tablename": "swzs",
|
37
40
|
"key": "L1",
|
38
41
|
"p": "1",
|
39
|
-
"where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130',
|
42
|
+
"where": "L1 in('801010','801020','801030','801040','801050','801080','801110','801120','801130',"
|
43
|
+
"'801140','801150','801160','801170','801180','801200','801210','801230','801710','801720',"
|
44
|
+
"'801730','801740','801750','801760','801770','801780','801790','801880','801890','801950',"
|
45
|
+
"'801960','801970','801980')",
|
40
46
|
"orderby": "",
|
41
47
|
"fieldlist": "L1,L2,L3,L4,L5,L6,L7,L8,L11",
|
42
48
|
"pagecount": "28",
|
@@ -45,47 +51,145 @@ sw_payload = {
|
|
45
51
|
|
46
52
|
# sw-headers
|
47
53
|
sw_headers = {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
54
|
+
"Accept": "application/json, text/javascript, */*",
|
55
|
+
"Accept-Encoding": "gzip, deflate",
|
56
|
+
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
|
57
|
+
"Cache-Control": "no-cache",
|
58
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
59
|
+
"DNT": "1",
|
60
|
+
"Host": "www.swsindex.com",
|
61
|
+
"Origin": "http://www.swsindex.com",
|
62
|
+
"Pragma": "no-cache",
|
63
|
+
"Referer": "http://www.swsindex.com/idx0120.aspx?columnid=8832",
|
64
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
65
|
+
"Chrome/74.0.3729.169 Safari/537.36",
|
66
|
+
"X-Requested-With": "XMLHttpRequest",
|
60
67
|
}
|
61
68
|
|
62
69
|
# zh-sina-a
|
63
|
-
zh_sina_index_stock_url =
|
70
|
+
zh_sina_index_stock_url = (
|
71
|
+
"http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
|
72
|
+
"Market_Center.getHQNodeDataSimple"
|
73
|
+
)
|
64
74
|
zh_sina_index_stock_payload = {
|
65
75
|
"page": "1",
|
66
76
|
"num": "80",
|
67
77
|
"sort": "symbol",
|
68
78
|
"asc": "1",
|
69
79
|
"node": "hs_s",
|
70
|
-
"_s_r_a": "page"
|
80
|
+
"_s_r_a": "page",
|
71
81
|
}
|
72
|
-
zh_sina_index_stock_count_url =
|
73
|
-
|
82
|
+
zh_sina_index_stock_count_url = (
|
83
|
+
"http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/"
|
84
|
+
"Market_Center.getHQNodeStockCountSimple?node=hs_s"
|
85
|
+
)
|
86
|
+
zh_sina_index_stock_hist_url = (
|
87
|
+
"https://finance.sina.com.cn/realstock/company/{}/hisdata/klc_kl.js"
|
88
|
+
)
|
74
89
|
|
75
90
|
# investing
|
76
91
|
short_headers = {
|
77
|
-
|
92
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
93
|
+
"Chrome/61.0.3163.91 Safari/537.36"
|
78
94
|
}
|
79
95
|
|
80
96
|
long_headers = {
|
81
|
-
|
97
|
+
"accept": "text/plain, */*; q=0.01",
|
82
98
|
# 'accept-encoding': 'gzip, deflate, br',
|
83
|
-
|
99
|
+
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
|
84
100
|
# 'cache-control': 'no-cache',
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
101
|
+
"content-length": "267",
|
102
|
+
"content-type": "application/x-www-form-urlencoded",
|
103
|
+
"origin": "https://cn.investing.com",
|
104
|
+
"referer": "https://cn.investing.com/commodities/brent-oil-historical-data",
|
105
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
106
|
+
"Chrome/61.0.3163.91 Safari/537.36",
|
107
|
+
"x-requested-with": "XMLHttpRequest",
|
108
|
+
}
|
109
|
+
|
110
|
+
index_global_sina_symbol_map = {
|
111
|
+
# 欧洲股市
|
112
|
+
"英国富时100指数": "UKX",
|
113
|
+
"德国DAX 30种股价指数": "DAX",
|
114
|
+
"俄罗斯MICEX指数": "INDEXCF",
|
115
|
+
"法CAC40指数": "CAC",
|
116
|
+
"瑞士股票指数": "SWI20",
|
117
|
+
"富时意大利MIB指数": "FTSEMIB",
|
118
|
+
"荷兰AEX综合指数": "AEX",
|
119
|
+
"西班牙IBEX指数": "IBEX",
|
120
|
+
"欧洲Stoxx50指数": "SX5E",
|
121
|
+
# 美洲股市
|
122
|
+
"加拿大S&P/TSX综合指数": "GSPTSE",
|
123
|
+
"墨西哥BOLSA指数": "MXX",
|
124
|
+
"巴西BOVESPA股票指数": "IBOV",
|
125
|
+
# 亚洲股市
|
126
|
+
"中国台湾加权指数": "TWJQ",
|
127
|
+
"日经225指数": "NKY",
|
128
|
+
"首尔综合指数": "KOSPI",
|
129
|
+
"印度尼西亚雅加达综合指数": "JCI",
|
130
|
+
"印度孟买SENSEX指数": "SENSEX",
|
131
|
+
# 澳洲股市
|
132
|
+
"澳大利亚标准普尔200指数": "AS51",
|
133
|
+
"新西兰NZSE 50指数": "NZ250",
|
134
|
+
# 非洲股市
|
135
|
+
"埃及CASE 30指数": "CASE",
|
136
|
+
}
|
137
|
+
|
138
|
+
index_global_em_symbol_map = {
|
139
|
+
"波罗的海BDI指数": {"code": "BDI", "market": "100"},
|
140
|
+
"葡萄牙PSI20": {"code": "PSI20", "market": "100"},
|
141
|
+
"菲律宾马尼拉": {"code": "PSI", "market": "100"},
|
142
|
+
"泰国SET": {"code": "SET", "market": "100"},
|
143
|
+
"俄罗斯RTS": {"code": "RTS", "market": "100"},
|
144
|
+
"巴基斯坦卡拉奇": {"code": "KSE100", "market": "100"},
|
145
|
+
"越南胡志明": {"code": "VNINDEX", "market": "100"},
|
146
|
+
"红筹指数": {"code": "HSCCI", "market": "124"},
|
147
|
+
"印尼雅加达综合": {"code": "JKSE", "market": "100"},
|
148
|
+
"希腊雅典ASE": {"code": "ASE", "market": "100"},
|
149
|
+
"墨西哥BOLSA": {"code": "MXX", "market": "100"},
|
150
|
+
"挪威OSEBX": {"code": "OSEBX", "market": "100"},
|
151
|
+
"巴西BOVESPA": {"code": "BVSP", "market": "100"},
|
152
|
+
"波兰WIG": {"code": "WIG", "market": "100"},
|
153
|
+
"印度孟买SENSEX": {"code": "SENSEX", "market": "100"},
|
154
|
+
"布拉格指数": {"code": "PX", "market": "100"},
|
155
|
+
"荷兰AEX": {"code": "AEX", "market": "100"},
|
156
|
+
"冰岛ICEX": {"code": "ICEXI", "market": "100"},
|
157
|
+
"斯里兰卡科伦坡": {"code": "CSEALL", "market": "100"},
|
158
|
+
"富时新加坡海峡时报": {"code": "STI", "market": "100"},
|
159
|
+
"富时意大利MIB": {"code": "MIB", "market": "100"},
|
160
|
+
"路透CRB商品指数": {"code": "CRB", "market": "100"},
|
161
|
+
"比利时BFX": {"code": "BFX", "market": "100"},
|
162
|
+
"富时AIM全股": {"code": "AXX", "market": "100"},
|
163
|
+
"新西兰50": {"code": "NZ50", "market": "100"},
|
164
|
+
"上证指数": {"code": "000001", "market": "1"},
|
165
|
+
"国企指数": {"code": "HSCEI", "market": "100"},
|
166
|
+
"沪深300": {"code": "000300", "market": "1"},
|
167
|
+
"英国富时100": {"code": "FTSE", "market": "100"},
|
168
|
+
"中小100": {"code": "399005", "market": "0"},
|
169
|
+
"瑞士SMI": {"code": "SSMI", "market": "100"},
|
170
|
+
"西班牙IBEX35": {"code": "IBEX", "market": "100"},
|
171
|
+
"瑞典OMXSPI": {"code": "OMXSPI", "market": "100"},
|
172
|
+
"爱尔兰综合": {"code": "ISEQ", "market": "100"},
|
173
|
+
"韩国KOSPI": {"code": "KS11", "market": "100"},
|
174
|
+
"深证成指": {"code": "399001", "market": "0"},
|
175
|
+
"韩国KOSPI200": {"code": "KOSPI200", "market": "100"},
|
176
|
+
"芬兰赫尔辛基": {"code": "HEX", "market": "100"},
|
177
|
+
"恒生指数": {"code": "HSI", "market": "100"},
|
178
|
+
"欧洲斯托克50": {"code": "SX5E", "market": "100"},
|
179
|
+
"美元指数": {"code": "UDI", "market": "100"},
|
180
|
+
"法国CAC40": {"code": "FCHI", "market": "100"},
|
181
|
+
"台湾加权": {"code": "TWII", "market": "100"},
|
182
|
+
"英国富时250": {"code": "MCX", "market": "100"},
|
183
|
+
"富时马来西亚KLCI": {"code": "KLSE", "market": "100"},
|
184
|
+
"OMX哥本哈根20": {"code": "OMXC20", "market": "100"},
|
185
|
+
"道琼斯": {"code": "DJIA", "market": "100"},
|
186
|
+
"奥地利ATX": {"code": "ATX", "market": "100"},
|
187
|
+
"加拿大S&P/TSX": {"code": "TSX", "market": "100"},
|
188
|
+
"德国DAX30": {"code": "GDAXI", "market": "100"},
|
189
|
+
"创业板指": {"code": "399006", "market": "0"},
|
190
|
+
"澳大利亚普通股": {"code": "AORD", "market": "100"},
|
191
|
+
"标普500": {"code": "SPX", "market": "100"},
|
192
|
+
"澳大利亚标普200": {"code": "AS51", "market": "100"},
|
193
|
+
"日经225": {"code": "N225", "market": "100"},
|
194
|
+
"纳斯达克": {"code": "NDX", "market": "100"},
|
91
195
|
}
|
@@ -0,0 +1,169 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2025/3/7 17:00
|
5
|
+
Desc: 东方财富网-行情中心-全球指数
|
6
|
+
https://quote.eastmoney.com/center/gridlist.html#global_qtzs
|
7
|
+
"""
|
8
|
+
|
9
|
+
import pandas as pd
|
10
|
+
import requests
|
11
|
+
|
12
|
+
from akshare.index.cons import index_global_em_symbol_map
|
13
|
+
|
14
|
+
|
15
|
+
def index_global_spot_em() -> pd.DataFrame:
|
16
|
+
"""
|
17
|
+
东方财富网-行情中心-全球指数-实时行情数据
|
18
|
+
https://quote.eastmoney.com/center/gridlist.html#global_qtzs
|
19
|
+
:return: 实时行情数据
|
20
|
+
:rtype: pandas.DataFrame
|
21
|
+
"""
|
22
|
+
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
23
|
+
params = {
|
24
|
+
"np": "2",
|
25
|
+
"fltt": "1",
|
26
|
+
"invt": "2",
|
27
|
+
"fs": "i:1.000001,i:0.399001,i:0.399005,i:0.399006,i:1.000300,i:100.HSI,i:100.HSCEI,i:124.HSCCI,"
|
28
|
+
"i:100.TWII,i:100.N225,i:100.KOSPI200,i:100.KS11,i:100.STI,i:100.SENSEX,i:100.KLSE,i:100.SET,"
|
29
|
+
"i:100.PSI,i:100.KSE100,i:100.VNINDEX,i:100.JKSE,i:100.CSEALL,i:100.SX5E,i:100.FTSE,i:100.MCX,"
|
30
|
+
"i:100.AXX,i:100.FCHI,i:100.GDAXI,i:100.RTS,i:100.IBEX,i:100.PSI20,i:100.OMXC20,i:100.BFX,"
|
31
|
+
"i:100.AEX,i:100.WIG,i:100.OMXSPI,i:100.SSMI,i:100.HEX,i:100.OSEBX,i:100.ATX,i:100.MIB,"
|
32
|
+
"i:100.ASE,i:100.ICEXI,i:100.PX,i:100.ISEQ,i:100.DJIA,i:100.SPX,i:100.NDX,i:100.TSX,"
|
33
|
+
"i:100.BVSP,i:100.MXX,i:100.AS51,i:100.AORD,i:100.NZ50,i:100.UDI,i:100.BDI,i:100.CRB",
|
34
|
+
"fields": "f12,f13,f14,f292,f1,f2,f4,f3,f152,f17,f18,f15,f16,f7,f124",
|
35
|
+
"fid": "f3",
|
36
|
+
"pn": "1",
|
37
|
+
"pz": "200",
|
38
|
+
"po": "1",
|
39
|
+
"dect": "1",
|
40
|
+
"ut": "fa5fd1943c7b386f172d6893dbfba10b",
|
41
|
+
"wbp2u": "|0|0|0|web",
|
42
|
+
"_": "1741340608118",
|
43
|
+
}
|
44
|
+
r = requests.get(url=url, params=params)
|
45
|
+
data_json = r.json()
|
46
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
47
|
+
temp_df.reset_index(inplace=True)
|
48
|
+
temp_df["index"] = temp_df["index"].astype(int) + 1
|
49
|
+
temp_df.rename(
|
50
|
+
columns={
|
51
|
+
"index": "序号",
|
52
|
+
"f12": "代码",
|
53
|
+
"f14": "名称",
|
54
|
+
"f17": "最新价",
|
55
|
+
"f4": "涨跌额",
|
56
|
+
"f3": "涨跌幅",
|
57
|
+
"f2": "开盘价",
|
58
|
+
"f15": "最高价",
|
59
|
+
"f16": "最低价",
|
60
|
+
"f18": "昨收价",
|
61
|
+
"f7": "振幅",
|
62
|
+
"f124": "最新行情时间",
|
63
|
+
},
|
64
|
+
inplace=True,
|
65
|
+
)
|
66
|
+
temp_df = temp_df[
|
67
|
+
[
|
68
|
+
"序号",
|
69
|
+
"代码",
|
70
|
+
"名称",
|
71
|
+
"最新价",
|
72
|
+
"涨跌额",
|
73
|
+
"涨跌幅",
|
74
|
+
"开盘价",
|
75
|
+
"最高价",
|
76
|
+
"最低价",
|
77
|
+
"昨收价",
|
78
|
+
"振幅",
|
79
|
+
"最新行情时间",
|
80
|
+
]
|
81
|
+
]
|
82
|
+
temp_df["最新行情时间"] = pd.to_datetime(
|
83
|
+
temp_df["最新行情时间"], unit="s", utc=True, errors="coerce"
|
84
|
+
).dt.tz_convert("Asia/Shanghai")
|
85
|
+
temp_df["最新行情时间"] = temp_df["最新行情时间"].dt.strftime("%Y-%m-%d %H:%M:%S")
|
86
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce") / 100
|
87
|
+
temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce") / 100
|
88
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce") / 100
|
89
|
+
temp_df["开盘价"] = pd.to_numeric(temp_df["开盘价"], errors="coerce") / 100
|
90
|
+
temp_df["最高价"] = pd.to_numeric(temp_df["最高价"], errors="coerce") / 100
|
91
|
+
temp_df["最低价"] = pd.to_numeric(temp_df["最低价"], errors="coerce") / 100
|
92
|
+
temp_df["昨收价"] = pd.to_numeric(temp_df["昨收价"], errors="coerce") / 100
|
93
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce") / 100
|
94
|
+
return temp_df
|
95
|
+
|
96
|
+
|
97
|
+
def index_global_hist_em(symbol: str = "美元指数") -> pd.DataFrame:
|
98
|
+
"""
|
99
|
+
东方财富网-行情中心-全球指数-历史行情数据
|
100
|
+
https://quote.eastmoney.com/gb/zsUDI.html
|
101
|
+
:param symbol: 指数名称;可以通过 ak.index_global_spot_em() 获取
|
102
|
+
:type symbol: str
|
103
|
+
:return: 历史行情数据
|
104
|
+
:rtype: pandas.DataFrame
|
105
|
+
"""
|
106
|
+
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
107
|
+
params = {
|
108
|
+
"secid": f"{index_global_em_symbol_map[symbol]['market']}.{index_global_em_symbol_map[symbol]['code']}",
|
109
|
+
"klt": "101",
|
110
|
+
"fqt": "1",
|
111
|
+
"lmt": "50000",
|
112
|
+
"end": "20500000",
|
113
|
+
"iscca": "1",
|
114
|
+
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
|
115
|
+
"fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64",
|
116
|
+
"ut": "f057cbcbce2a86e2866ab8877db1d059",
|
117
|
+
"forcect": "1",
|
118
|
+
}
|
119
|
+
r = requests.get(url=url, params=params)
|
120
|
+
data_json = r.json()
|
121
|
+
|
122
|
+
temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
|
123
|
+
temp_df["code"] = data_json["data"]["code"]
|
124
|
+
temp_df["name"] = data_json["data"]["name"]
|
125
|
+
temp_df.columns = [
|
126
|
+
"日期",
|
127
|
+
"今开",
|
128
|
+
"最新价",
|
129
|
+
"最高",
|
130
|
+
"最低",
|
131
|
+
"-",
|
132
|
+
"-",
|
133
|
+
"振幅",
|
134
|
+
"-",
|
135
|
+
"-",
|
136
|
+
"-",
|
137
|
+
"-",
|
138
|
+
"-",
|
139
|
+
"-",
|
140
|
+
"代码",
|
141
|
+
"名称",
|
142
|
+
]
|
143
|
+
temp_df = temp_df[
|
144
|
+
[
|
145
|
+
"日期",
|
146
|
+
"代码",
|
147
|
+
"名称",
|
148
|
+
"今开",
|
149
|
+
"最新价",
|
150
|
+
"最高",
|
151
|
+
"最低",
|
152
|
+
"振幅",
|
153
|
+
]
|
154
|
+
]
|
155
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
156
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
|
157
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
158
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
159
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
160
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
|
161
|
+
return temp_df
|
162
|
+
|
163
|
+
|
164
|
+
if __name__ == "__main__":
|
165
|
+
index_global_spot_em_df = index_global_spot_em()
|
166
|
+
print(index_global_spot_em_df)
|
167
|
+
|
168
|
+
index_global_hist_em_df = index_global_hist_em(symbol="美元指数")
|
169
|
+
print(index_global_hist_em_df)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2025/3/7 17:00
|
5
|
+
Desc: 新浪财经-行情中心-环球市场
|
6
|
+
https://finance.sina.com.cn/stock/globalindex/quotes/UKX
|
7
|
+
"""
|
8
|
+
|
9
|
+
import pandas as pd
|
10
|
+
import requests
|
11
|
+
|
12
|
+
from akshare.index.cons import index_global_sina_symbol_map
|
13
|
+
|
14
|
+
|
15
|
+
def index_global_name_table() -> pd.DataFrame:
|
16
|
+
"""
|
17
|
+
新浪财经-行情中心-环球市场-名称代码映射表
|
18
|
+
https://finance.sina.com.cn/stock/globalindex/quotes/UKX
|
19
|
+
:return: 名称代码映射表
|
20
|
+
:rtype: pandas.DataFrame
|
21
|
+
"""
|
22
|
+
temp_df = pd.DataFrame.from_dict(
|
23
|
+
index_global_sina_symbol_map, orient="index", columns=["代码"]
|
24
|
+
)
|
25
|
+
temp_df.index.name = "指数名称"
|
26
|
+
temp_df.reset_index(inplace=True)
|
27
|
+
return temp_df
|
28
|
+
|
29
|
+
|
30
|
+
def index_global_hist_sina(symbol: str = "OMX") -> pd.DataFrame:
|
31
|
+
"""
|
32
|
+
新浪财经-行情中心-环球市场-历史行情
|
33
|
+
https://finance.sina.com.cn/stock/globalindex/quotes/UKX
|
34
|
+
:param symbol: 指数名称;可以通过 ak.index_global_name_table() 获取
|
35
|
+
:type symbol: str
|
36
|
+
:return: 环球市场历史行情
|
37
|
+
:rtype: pandas.DataFrame
|
38
|
+
"""
|
39
|
+
url = "https://gi.finance.sina.com.cn/hq/daily"
|
40
|
+
params = {
|
41
|
+
"symbol": index_global_sina_symbol_map[symbol],
|
42
|
+
"num": "10000",
|
43
|
+
}
|
44
|
+
r = requests.get(url=url, params=params)
|
45
|
+
data_json = r.json()
|
46
|
+
temp_df = pd.DataFrame(data_json["result"]["data"])
|
47
|
+
temp_df.rename(
|
48
|
+
columns={
|
49
|
+
"d": "date",
|
50
|
+
"o": "open",
|
51
|
+
"h": "high",
|
52
|
+
"l": "low",
|
53
|
+
"c": "close",
|
54
|
+
"v": "volume",
|
55
|
+
},
|
56
|
+
inplace=True,
|
57
|
+
)
|
58
|
+
temp_df = temp_df[
|
59
|
+
[
|
60
|
+
"date",
|
61
|
+
"open",
|
62
|
+
"high",
|
63
|
+
"low",
|
64
|
+
"close",
|
65
|
+
"volume",
|
66
|
+
]
|
67
|
+
]
|
68
|
+
temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
|
69
|
+
temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
|
70
|
+
temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
|
71
|
+
temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
|
72
|
+
temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
|
73
|
+
temp_df["volume"] = pd.to_numeric(temp_df["volume"], errors="coerce")
|
74
|
+
return temp_df
|
75
|
+
|
76
|
+
|
77
|
+
if __name__ == "__main__":
|
78
|
+
index_global_name_table_df = index_global_name_table()
|
79
|
+
print(index_global_name_table_df)
|
80
|
+
|
81
|
+
index_global_hist_sina_df = index_global_hist_sina(symbol="瑞士股票指数")
|
82
|
+
print(index_global_hist_sina_df)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: akshare
|
3
|
-
Version: 1.16.
|
3
|
+
Version: 1.16.31
|
4
4
|
Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
|
5
5
|
Home-page: https://github.com/akfamily/akshare
|
6
6
|
Author: AKFamily
|
@@ -51,18 +51,15 @@ Dynamic: requires-python
|
|
51
51
|
Dynamic: summary
|
52
52
|
|
53
53
|
**欢迎加入专注于财经数据和量化投资的知识社区,获取《AKShare-财经数据宝典》,其汇集了财经数据的使用经验和指南,还独家分享了
|
54
|
-
众多国内外财经数据源的使用和注意事项,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)
|
54
|
+
众多国内外财经数据源的使用和注意事项,请点击[了解更多](https://akshare.akfamily.xyz/learn.html)**。
|
55
55
|
|
56
56
|
**量化投研视频课程:《PyBroker-入门及实战》已经上架!《PyBroker-进阶及实战》正在更新!**
|
57
57
|
|
58
58
|
**更多视频教程已经发布:《AKShare-初阶-使用教学》、《AKShare-初阶-实战应用》、《AKShare-源码解析》、《开源项目巡礼》**,
|
59
59
|
详情请关注【数据科学实战】公众号,查看更多课程信息!
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
**本次发布 [AKTools](https://github.com/akfamily/aktools) 作为 AKShare 的 HTTP API 版本,
|
64
|
-
突破 Python 语言的限制,欢迎各位小伙伴试用并提出更好的意见或建议!
|
65
|
-
点击 [AKTools](https://github.com/akfamily/aktools) 查看使用指南。另外提供 [awesome-data](https://github.com/akfamily/awesome-data) 方便各位小伙伴查询各种数据源。**
|
61
|
+
**广告推广**:期魔方是一款非常专业本地化期货量化终端,无需部署或搭建环境,可直接调用及时和历史数据做回测实盘,
|
62
|
+
支持开箱即用的机器学习训练,策略投研、回测均免费,详情请[访问期魔方官网](https://qmfquant.com)。
|
66
63
|
|
67
64
|

|
68
65
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
akshare/__init__.py,sha256=
|
1
|
+
akshare/__init__.py,sha256=kVNyCNLstjadfqiy_rNRHeFtJaIkD-mKEq48yHPI27k,190135
|
2
2
|
akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
|
3
3
|
akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
|
4
4
|
akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
|
@@ -75,6 +75,9 @@ akshare/event/cons.py,sha256=y9Go4OC7H-M4R03uEWcV_llvA91_4r-avtzWyphuSks,12390
|
|
75
75
|
akshare/event/migration.py,sha256=2lR3D_XHRlOKiarBSbjQVEIm3Spj5hbZIwDOvcyKsEU,3760
|
76
76
|
akshare/file_fold/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
|
77
77
|
akshare/file_fold/calendar.json,sha256=t25_O-jatjQOzR6KmSQdPhZMY85yV_hr9_wq26u7jWo,119773
|
78
|
+
akshare/forex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
79
|
+
akshare/forex/cons.py,sha256=62e0ogTbuanOtrw79swGCuygsabJsUqvWdsEwQFJMJA,3659
|
80
|
+
akshare/forex/forex_em.py,sha256=XBOg6DTpMMl-0IVqWjJa-hUG3Jz6ZeDEbUjd5SbS1vY,4785
|
78
81
|
akshare/fortune/__init__.py,sha256=4OCuVKMykUB3Ubm8WogA814U5EGLdrexmfTAOcBnYM4,82
|
79
82
|
akshare/fortune/fortune_500.py,sha256=QqF3dLdDiCcSoDxsyEgJf8CHu72Ppsu7u0EajbXr6mg,3197
|
80
83
|
akshare/fortune/fortune_bloomberg.py,sha256=i5HqnICYXKmwy3rOvMLDzJPDJA_am8imKsXzNlLLU6g,3673
|
@@ -151,13 +154,15 @@ akshare/fx/fx_quote_baidu.py,sha256=wEffLm-b5QiFsuE9KAsNPUsqDZ-JMQmfwOO9wOlex8E,
|
|
151
154
|
akshare/hf/__init__.py,sha256=UefLnc-fLMPvh05YWo43n3058k7txmCEafhuz3hpsjg,82
|
152
155
|
akshare/hf/hf_sp500.py,sha256=Ak8y_14CQtjeMCsuIP5JV4Od_RSAGEGriSg0PbcBmKQ,1206
|
153
156
|
akshare/index/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
|
154
|
-
akshare/index/cons.py,sha256=
|
157
|
+
akshare/index/cons.py,sha256=sstxvhtdG3m2inIhE2geZZnHqNLXrK6GuhcqfI_zE6Q,7789
|
155
158
|
akshare/index/index_cflp.py,sha256=iPn_0kePK74eScwC7rj0IhC-3w-kGQWtWlwsW-J0nbs,4422
|
156
159
|
akshare/index/index_cni.py,sha256=qravLXiETWlegIMV_EIUTDbGQfdC2zsj4LykWzC8Lko,8563
|
157
160
|
akshare/index/index_cons.py,sha256=exCYkXauu3u_liWS5Y0W89F19eSwt6gJmlBciM86txQ,7616
|
158
161
|
akshare/index/index_cx.py,sha256=aAmsIKkswKFNOhAsW0QOhp-q6q1aFOSBtqcDaZhIh6A,16775
|
159
162
|
akshare/index/index_drewry.py,sha256=BM7V6P8K4QUFQArsdaWRu5qJUZaCoyNz97_b8dmLeCw,2937
|
160
163
|
akshare/index/index_eri.py,sha256=7X0KNDBntEkE_qSb2jb6IBv-S8PsevLFdxGT8nKT3W0,2111
|
164
|
+
akshare/index/index_global_em.py,sha256=bNSwv_zYyXn3eRQ4BU7IKXu7ENhSszH3RBv2F8yYePs,5992
|
165
|
+
akshare/index/index_global_sina.py,sha256=fFJeW-u6Jo1iiuRMVaGJaUZBUA6wUT0L0u6KT3vkJ4I,2494
|
161
166
|
akshare/index/index_hog.py,sha256=kb867BVagt70_ycZMn22ks5Z9jlVbMiuTsvq5ygjeig,1657
|
162
167
|
akshare/index/index_kq_fz.py,sha256=Y-cbxWLpRyGcFcMSDxZZQXdAuD85IuQH5xC2rhtGbRc,3395
|
163
168
|
akshare/index/index_kq_ss.py,sha256=m4hAMNnzHk8JNAnKjkYYVeyG4zUC5zR5i0-u-OxmaGU,3333
|
@@ -383,8 +388,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
383
388
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
384
389
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
385
390
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
386
|
-
akshare-1.16.
|
387
|
-
akshare-1.16.
|
388
|
-
akshare-1.16.
|
389
|
-
akshare-1.16.
|
390
|
-
akshare-1.16.
|
391
|
+
akshare-1.16.31.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
392
|
+
akshare-1.16.31.dist-info/METADATA,sha256=ZH8UN0jlkrmpO-Wbb5LAsG7vR5njmPAT8K56ZEeo-gE,13653
|
393
|
+
akshare-1.16.31.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
394
|
+
akshare-1.16.31.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
395
|
+
akshare-1.16.31.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|