akshare 1.16.28__py3-none-any.whl → 1.16.30__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 +9 -2
- akshare/forex/__init__.py +0 -0
- akshare/forex/cons.py +192 -0
- akshare/forex/forex_em.py +154 -0
- akshare/futures/futures_hf_em.py +122 -8
- {akshare-1.16.28.dist-info → akshare-1.16.30.dist-info}/METADATA +4 -7
- {akshare-1.16.28.dist-info → akshare-1.16.30.dist-info}/RECORD +10 -7
- {akshare-1.16.28.dist-info → akshare-1.16.30.dist-info}/LICENSE +0 -0
- {akshare-1.16.28.dist-info → akshare-1.16.30.dist-info}/WHEEL +0 -0
- {akshare-1.16.28.dist-info → akshare-1.16.30.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3037,9 +3037,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3037
3037
|
1.16.26 add: add stock_hsgt_sh_hk_spot_em interface
|
3038
3038
|
1.16.27 fix: fix futures_global_em interface
|
3039
3039
|
1.16.28 fix: fix futures_global_hist_em interface
|
3040
|
+
1.16.29 fix: fix futures_global_hist_em interface
|
3041
|
+
1.16.30 add: add forex_hist_em interface
|
3040
3042
|
"""
|
3041
3043
|
|
3042
|
-
__version__ = "1.16.
|
3044
|
+
__version__ = "1.16.30"
|
3043
3045
|
__author__ = "AKFamily"
|
3044
3046
|
|
3045
3047
|
import sys
|
@@ -3061,6 +3063,11 @@ if sys.version_info < (3, 9):
|
|
3061
3063
|
|
3062
3064
|
del sys
|
3063
3065
|
|
3066
|
+
"""
|
3067
|
+
东方财富网-行情中心-外汇市场-所有汇率
|
3068
|
+
"""
|
3069
|
+
from akshare.forex.forex_em import forex_hist_em, forex_spot_em
|
3070
|
+
|
3064
3071
|
"""
|
3065
3072
|
东方财富网-行情中心-沪深港通
|
3066
3073
|
"""
|
@@ -3214,7 +3221,7 @@ from akshare.stock_feature.stock_hsgt_min_em import stock_hsgt_fund_min_em
|
|
3214
3221
|
"""
|
3215
3222
|
东方财富网-行情中心-期货市场-国际期货
|
3216
3223
|
"""
|
3217
|
-
from akshare.futures.futures_hf_em import
|
3224
|
+
from akshare.futures.futures_hf_em import futures_global_spot_em, futures_global_hist_em
|
3218
3225
|
|
3219
3226
|
"""
|
3220
3227
|
雪球行情数据
|
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/futures/futures_hf_em.py
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/3/5 19:00
|
5
5
|
Desc: 东方财富网-行情中心-期货市场-国际期货
|
6
6
|
https://quote.eastmoney.com/center/gridlist.html#futures_global
|
7
7
|
"""
|
8
8
|
|
9
9
|
import math
|
10
|
+
from typing import Optional
|
10
11
|
|
11
12
|
import pandas as pd
|
12
13
|
import requests
|
@@ -14,7 +15,76 @@ import requests
|
|
14
15
|
from akshare.utils.tqdm import get_tqdm
|
15
16
|
|
16
17
|
|
17
|
-
def
|
18
|
+
def __futures_global_hist_market_code(symbol: str = "HG00Y") -> Optional[int]:
|
19
|
+
"""
|
20
|
+
东方财富网-行情中心-期货市场-国际期货-品种市场对照表
|
21
|
+
https://quote.eastmoney.com/center/gridlist.html#futures_global
|
22
|
+
:param symbol: HG00Y, 品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码
|
23
|
+
:type symbol: str
|
24
|
+
:return: 品种所属于的市场
|
25
|
+
:rtype: str
|
26
|
+
"""
|
27
|
+
# 提取品种代码(去掉年份和月份部分)
|
28
|
+
base_symbol = ""
|
29
|
+
i = 0
|
30
|
+
while i < len(symbol) and not symbol[i].isdigit():
|
31
|
+
base_symbol += symbol[i]
|
32
|
+
i += 1
|
33
|
+
# 如果代码中没有数字(异常情况),则返回整个代码作为基础品种代码
|
34
|
+
if not base_symbol and i == len(symbol):
|
35
|
+
base_symbol = symbol
|
36
|
+
# 金属和贵金属品种 - 101
|
37
|
+
if base_symbol in ["HG", "GC", "SI", "QI", "QO", "MGC", "LTH"]:
|
38
|
+
return 101
|
39
|
+
# 能源品种 - 102
|
40
|
+
if base_symbol in ["CL", "NG", "RB", "HO", "PA", "PL", "QM"]:
|
41
|
+
return 102
|
42
|
+
# 农产品和金融品种 - 103
|
43
|
+
if base_symbol in [
|
44
|
+
"ZW",
|
45
|
+
"ZM",
|
46
|
+
"ZS",
|
47
|
+
"ZC",
|
48
|
+
"XC",
|
49
|
+
"XK",
|
50
|
+
"XW",
|
51
|
+
"YM",
|
52
|
+
"TY",
|
53
|
+
"US",
|
54
|
+
"EH",
|
55
|
+
"ZL",
|
56
|
+
"ZR",
|
57
|
+
"ZO",
|
58
|
+
"FV",
|
59
|
+
"TU",
|
60
|
+
"UL",
|
61
|
+
"NQ",
|
62
|
+
"ES",
|
63
|
+
]:
|
64
|
+
return 103
|
65
|
+
# 中国市场特有品种 - 104
|
66
|
+
if base_symbol in ["TF", "RT", "CN"]:
|
67
|
+
return 104
|
68
|
+
# 软商品期货 - 108
|
69
|
+
if base_symbol in ["SB", "CT", "SF"]:
|
70
|
+
return 108
|
71
|
+
# 特殊L开头品种 - 109
|
72
|
+
if base_symbol in ["LCPT", "LZNT", "LALT", "LTNT", "LLDT", "LNKT"]:
|
73
|
+
return 109
|
74
|
+
# MPM开头品种 - 110
|
75
|
+
if base_symbol == "MPM":
|
76
|
+
return 110
|
77
|
+
# 日本市场品种 - 111
|
78
|
+
if base_symbol.startswith("J"):
|
79
|
+
return 111
|
80
|
+
# 单字母代码品种 - 112
|
81
|
+
if base_symbol in ["M", "B", "G"]:
|
82
|
+
return 112
|
83
|
+
# 如果没有匹配到任何规则,返回一个默认值或者错误
|
84
|
+
return None
|
85
|
+
|
86
|
+
|
87
|
+
def futures_global_spot_em() -> pd.DataFrame:
|
18
88
|
"""
|
19
89
|
东方财富网-行情中心-期货市场-国际期货
|
20
90
|
https://quote.eastmoney.com/center/gridlist.html#futures_global
|
@@ -101,16 +171,19 @@ def futures_global_em() -> pd.DataFrame:
|
|
101
171
|
def futures_global_hist_em(symbol: str = "HG00Y") -> pd.DataFrame:
|
102
172
|
"""
|
103
173
|
东方财富网-行情中心-期货市场-国际期货-历史行情数据
|
104
|
-
https://quote.eastmoney.com/
|
174
|
+
https://quote.eastmoney.com/globalfuture/HG25J.html
|
175
|
+
:param symbol: 品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码
|
176
|
+
:type symbol: str
|
105
177
|
:return: 历史行情数据
|
106
178
|
:rtype: pandas.DataFrame
|
107
179
|
"""
|
108
180
|
url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
|
181
|
+
market_code = __futures_global_hist_market_code(symbol)
|
109
182
|
params = {
|
110
|
-
"secid": f"
|
183
|
+
"secid": f"{market_code}.{symbol}",
|
111
184
|
"klt": "101",
|
112
185
|
"fqt": "1",
|
113
|
-
"lmt": "
|
186
|
+
"lmt": "6600",
|
114
187
|
"end": "20500000",
|
115
188
|
"iscca": "1",
|
116
189
|
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8",
|
@@ -123,12 +196,53 @@ def futures_global_hist_em(symbol: str = "HG00Y") -> pd.DataFrame:
|
|
123
196
|
temp_df = pd.DataFrame([item.split(",") for item in data_json["data"]["klines"]])
|
124
197
|
temp_df["code"] = data_json["data"]["code"]
|
125
198
|
temp_df["name"] = data_json["data"]["name"]
|
199
|
+
temp_df.columns = [
|
200
|
+
"日期",
|
201
|
+
"开盘",
|
202
|
+
"最新价",
|
203
|
+
"最高",
|
204
|
+
"最低",
|
205
|
+
"总量",
|
206
|
+
"-",
|
207
|
+
"-",
|
208
|
+
"涨幅",
|
209
|
+
"-",
|
210
|
+
"-",
|
211
|
+
"-",
|
212
|
+
"持仓",
|
213
|
+
"日增",
|
214
|
+
"代码",
|
215
|
+
"名称",
|
216
|
+
]
|
217
|
+
temp_df = temp_df[
|
218
|
+
[
|
219
|
+
"日期",
|
220
|
+
"代码",
|
221
|
+
"名称",
|
222
|
+
"开盘",
|
223
|
+
"最新价",
|
224
|
+
"最高",
|
225
|
+
"最低",
|
226
|
+
"总量",
|
227
|
+
"涨幅",
|
228
|
+
"持仓",
|
229
|
+
"日增",
|
230
|
+
]
|
231
|
+
]
|
232
|
+
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
233
|
+
temp_df["开盘"] = pd.to_numeric(temp_df["开盘"], errors="coerce")
|
234
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
235
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
236
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
237
|
+
temp_df["总量"] = pd.to_numeric(temp_df["总量"], errors="coerce")
|
238
|
+
temp_df["涨幅"] = pd.to_numeric(temp_df["涨幅"], errors="coerce")
|
239
|
+
temp_df["日增"] = pd.to_numeric(temp_df["日增"], errors="coerce")
|
126
240
|
return temp_df
|
127
241
|
|
128
242
|
|
129
243
|
if __name__ == "__main__":
|
130
|
-
|
131
|
-
print(
|
244
|
+
futures_global_spot_em_df = futures_global_spot_em()
|
245
|
+
print(futures_global_spot_em_df)
|
132
246
|
|
133
|
-
futures_global_hist_em_df = futures_global_hist_em(symbol="
|
247
|
+
futures_global_hist_em_df = futures_global_hist_em(symbol="HG00Y")
|
134
248
|
print(futures_global_hist_em_df)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: akshare
|
3
|
-
Version: 1.16.
|
3
|
+
Version: 1.16.30
|
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=yyFyybj9VQj7GkQeYNwV8viJh4-w6cNxTuICIwFoJAc,189811
|
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
|
@@ -112,7 +115,7 @@ akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7
|
|
112
115
|
akshare/futures/futures_contract_detail.py,sha256=auwzNdaoFi5hoJY6rNkO54v5FD2gmEkQu7B90yEDtkc,1175
|
113
116
|
akshare/futures/futures_daily_bar.py,sha256=pultXs8digLfWT0dzyWs0AtFk3Fi2uZDT-zxbg_PcOM,25299
|
114
117
|
akshare/futures/futures_foreign.py,sha256=2cbMA-eug_jriDFwKZWmA_TbPW2GQAjscpZHBrs287E,2131
|
115
|
-
akshare/futures/futures_hf_em.py,sha256=
|
118
|
+
akshare/futures/futures_hf_em.py,sha256=vEgJav-g_PNO_Jh4Xup27PIt-ARGqVk9TjNXK_3eC-E,7966
|
116
119
|
akshare/futures/futures_hist_em.py,sha256=Q8I20qRjp2ujiJMCCNBvTHXmrIth22p2k6KpvbkC3dk,6472
|
117
120
|
akshare/futures/futures_hq_sina.py,sha256=HZBAve1yxp1fnwgEy_2CqVoniTXRkt8KI3REt0N0TiY,9575
|
118
121
|
akshare/futures/futures_index_ccidx.py,sha256=_kgWioCOpFNn8WUcL5qKHGb3rUHzrbrx2AszprKpBh4,4460
|
@@ -383,8 +386,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
383
386
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
384
387
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
385
388
|
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.
|
389
|
+
akshare-1.16.30.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
390
|
+
akshare-1.16.30.dist-info/METADATA,sha256=wNQp0vLs1f4cQ6hoS45VC7KdNDiyzqqz0sB7ISBcmyE,13650
|
391
|
+
akshare-1.16.30.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
392
|
+
akshare-1.16.30.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
393
|
+
akshare-1.16.30.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|