mns-scheduler 1.3.1.7__py3-none-any.whl → 1.3.1.8__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 mns-scheduler might be problematic. Click here for more details.

Files changed (59) hide show
  1. mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +5 -4
  2. mns_scheduler/trade/auto_login/trader_auto_service.py +1 -1
  3. mns_scheduler/trade/sync_position_api.py +2 -2
  4. mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +1 -1
  5. mns_scheduler/zz_task/data_sync_task.py +2 -43
  6. {mns_scheduler-1.3.1.7.dist-info → mns_scheduler-1.3.1.8.dist-info}/METADATA +1 -1
  7. {mns_scheduler-1.3.1.7.dist-info → mns_scheduler-1.3.1.8.dist-info}/RECORD +9 -59
  8. mns_scheduler/baidu/__init__.py +0 -7
  9. mns_scheduler/baidu/baidu_yun_pan_handle_service.py +0 -122
  10. mns_scheduler/extraIncome/__init__.py +0 -7
  11. mns_scheduler/extraIncome/a_stock/__init__.py +0 -7
  12. mns_scheduler/extraIncome/a_stock/one_minute/__init__.py +0 -7
  13. mns_scheduler/extraIncome/a_stock/one_minute/common/__init__.py +0 -7
  14. mns_scheduler/extraIncome/a_stock/one_minute/common/db_create_index.py +0 -9
  15. mns_scheduler/extraIncome/a_stock/one_minute/common/symbol_handle_util.py +0 -41
  16. mns_scheduler/extraIncome/a_stock/one_minute/etf/__init__.py +0 -7
  17. mns_scheduler/extraIncome/a_stock/one_minute/etf/etf_one_minute_sync_task.py +0 -87
  18. mns_scheduler/extraIncome/a_stock/one_minute/index/__init__.py +0 -7
  19. mns_scheduler/extraIncome/a_stock/one_minute/index/main_index_sync_task.py +0 -74
  20. mns_scheduler/extraIncome/a_stock/one_minute/kzz/__init__.py +0 -7
  21. mns_scheduler/extraIncome/a_stock/one_minute/kzz/kzz_one_minute_sync_task.py +0 -87
  22. mns_scheduler/extraIncome/a_stock/one_minute/one_minute_sync_task.py +0 -34
  23. mns_scheduler/extraIncome/a_stock/one_minute/stock/__init__.py +0 -7
  24. mns_scheduler/extraIncome/a_stock/one_minute/stock/stock_one_minute_sync_task.py +0 -89
  25. mns_scheduler/extraIncome/a_stock/one_minute/upload/__init__.py +0 -7
  26. mns_scheduler/extraIncome/a_stock/one_minute/upload/etf_upload_to_baidu_task.py +0 -95
  27. mns_scheduler/extraIncome/a_stock/one_minute/upload/index_upload_to_baidu_task.py +0 -87
  28. mns_scheduler/extraIncome/a_stock/one_minute/upload/kzz_upload_to_baidu_task.py +0 -95
  29. mns_scheduler/extraIncome/a_stock/one_minute/upload/stock_upload_to_baidu_task.py +0 -85
  30. mns_scheduler/extraIncome/hk/__init__.py +0 -7
  31. mns_scheduler/extraIncome/hk/hk_stock_qfq_daily_k_line.py +0 -102
  32. mns_scheduler/extraIncome/us/__init__.py +0 -7
  33. mns_scheduler/extraIncome/us/daily/__init__.py +0 -7
  34. mns_scheduler/extraIncome/us/daily/us_stock_qfq_daily_k_line.py +0 -103
  35. mns_scheduler/extraIncome/us/one_minute/__init__.py +0 -7
  36. mns_scheduler/extraIncome/us/one_minute/api/__init__.py +0 -0
  37. mns_scheduler/extraIncome/us/one_minute/api/alpha_vantage_api.py +0 -34
  38. mns_scheduler/extraIncome/us/one_minute/api/em_us_one_minute_api.py +0 -139
  39. mns_scheduler/extraIncome/us/one_minute/api/stock_etf_info_api.py +0 -68
  40. mns_scheduler/extraIncome/us/one_minute/api/y_finance_api.py +0 -63
  41. mns_scheduler/extraIncome/us/one_minute/etf/__init__.py +0 -7
  42. mns_scheduler/extraIncome/us/one_minute/stock/__init__.py +0 -7
  43. mns_scheduler/extraIncome/us/one_minute/stock/down_load/__init__.py +0 -7
  44. mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/__init__.py +0 -11
  45. mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/down_load_ETF_his_2024.py +0 -152
  46. mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/handle_down_load_fail_ETF.py +0 -67
  47. mns_scheduler/extraIncome/us/one_minute/stock/down_load/fail/__init__.py +0 -7
  48. mns_scheduler/extraIncome/us/one_minute/stock/down_load/fail/handle_fail_data.py +0 -161
  49. mns_scheduler/extraIncome/us/one_minute/stock/down_load/rename/__init__.py +0 -7
  50. mns_scheduler/extraIncome/us/one_minute/stock/down_load/rename/rename_stock.py +0 -18
  51. mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/__init__.py +0 -7
  52. mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_01.py +0 -203
  53. mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_02.py +0 -202
  54. mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_2025.py +0 -144
  55. mns_scheduler/extraIncome/us/one_minute/stock/now/__init__.py +0 -7
  56. mns_scheduler/extraIncome/us/one_minute/stock/now/us_etf_one_minute_sync.py +0 -52
  57. mns_scheduler/extraIncome/us/one_minute/stock/now/us_stock_one_minute_sync.py +0 -141
  58. {mns_scheduler-1.3.1.7.dist-info → mns_scheduler-1.3.1.8.dist-info}/WHEEL +0 -0
  59. {mns_scheduler-1.3.1.7.dist-info → mns_scheduler-1.3.1.8.dist-info}/top_level.txt +0 -0
@@ -1,102 +0,0 @@
1
- import os
2
- import sys
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
-
9
- from mns_common.db.MongodbUtil import MongodbUtil
10
- from mns_common.db.v2.MongodbUtilV2 import MongodbUtilV2
11
- import mns_common.constant.extra_income_db_name as extra_income_db_name
12
- import mns_common.constant.db_name_constant as db_name_constant
13
- import akshare as ak
14
- from loguru import logger
15
- import mns_scheduler.baidu.baidu_yun_pan_handle_service as baidu_yun_pan_handle_service
16
- import mns_scheduler.hk.hk_company_info_sync_service_api as hk_company_info_sync_service_api
17
-
18
- mongodb_util_27017 = MongodbUtil('27017')
19
- mongodbUtilV2_27019 = MongodbUtilV2('27019', extra_income_db_name.EXTRA_INCOME)
20
-
21
-
22
- def hk_stock_daily_qfq_sync():
23
- hk_stock_path = '/港股/qfq/'
24
- hk_stock_exist_df = baidu_yun_pan_handle_service.get_file_folder(hk_stock_path)
25
- hk_stock_exist_df['symbol'] = hk_stock_exist_df['name'].astype(str).str[:5]
26
-
27
- hk_stock_info_df = mongodb_util_27017.find_all_data(db_name_constant.EM_HK_STOCK_INFO)
28
-
29
-
30
- hk_stock_info_df = hk_stock_info_df.sort_values(by=['amount'], ascending=False)
31
- del hk_stock_info_df['_id']
32
- # 上传港股列表
33
- baidu_yun_pan_handle_service.upload_to_baidu('港股列表', hk_stock_path, hk_stock_info_df)
34
- hk_ggt_component_df = hk_company_info_sync_service_api.get_hk_ggt_component()
35
- # 上传港股通列表
36
- hk_stock_info_ggt_df = hk_stock_info_df.loc[hk_stock_info_df['symbol'].isin(hk_ggt_component_df['symbol'])]
37
- baidu_yun_pan_handle_service.upload_to_baidu('港股通列表', hk_stock_path, hk_stock_info_ggt_df)
38
- hk_stock_info_df = hk_stock_info_df.loc[~(hk_stock_info_df['symbol'].isin(hk_stock_exist_df['symbol']))]
39
- fail_list = []
40
-
41
- for hk_stock_one in hk_stock_info_df.itertuples():
42
- symbol = hk_stock_one.symbol
43
- name = hk_stock_one.name
44
- try:
45
- save_one_symbol(symbol, hk_stock_path)
46
-
47
- except BaseException as e:
48
- logger.error("同步出现异常:{},{},{}", e, symbol, name)
49
- fail_list.append(symbol)
50
- # 处理失败的
51
- for symbol_fail in fail_list:
52
- try:
53
- save_one_symbol(symbol_fail, hk_stock_path)
54
- except BaseException as e:
55
- logger.error("同步出现异常:{},{},{}", e, symbol, name)
56
-
57
-
58
- def save_one_symbol(symbol, hk_stock_path):
59
- hk_stock_k_line_df = hk_stock_k_line_api(symbol, k_line_period='daily', start_date='18000101',
60
- end_date='22220101', fq='qfq')
61
-
62
- hk_stock_k_line_df["date"] = hk_stock_k_line_df["date"].astype(str)
63
-
64
- hk_stock_k_line_df['_id'] = hk_stock_k_line_df['date'] + '_' + symbol
65
- hk_stock_k_line_df['symbol'] = symbol
66
-
67
- query = {'symbol': symbol}
68
- if mongodbUtilV2_27019.remove_data(query, extra_income_db_name.HK_STOCK_DAILY_QFQ_K_LINE).acknowledged > 0:
69
- mongodbUtilV2_27019.insert_mongo(hk_stock_k_line_df, extra_income_db_name.HK_STOCK_DAILY_QFQ_K_LINE)
70
- del hk_stock_k_line_df['_id']
71
- del hk_stock_k_line_df['symbol']
72
- # 上传列表
73
- baidu_yun_pan_handle_service.upload_to_baidu(symbol, hk_stock_path, hk_stock_k_line_df)
74
-
75
-
76
- def hk_stock_k_line_api(symbol='00001', k_line_period='daily', start_date='18000101',
77
- end_date='22220101', fq='qfq'):
78
- stock_hk_hist_df = ak.stock_hk_hist(symbol=symbol,
79
- period=k_line_period,
80
- start_date=start_date,
81
- end_date=end_date,
82
- adjust=fq)
83
- stock_hk_hist_df = stock_hk_hist_df.rename(columns={
84
- "日期": "date",
85
- "涨跌额": "change_price",
86
- "涨跌幅": "chg",
87
- "开盘": "open",
88
- "最高": "high",
89
- "最低": "low",
90
- "收盘": "close",
91
- "成交量": "volume",
92
- "成交额": "amount",
93
- "振幅": "pct_chg",
94
- "换手率": "exchange"
95
- })
96
-
97
- return stock_hk_hist_df
98
-
99
-
100
- if __name__ == '__main__':
101
- # us_stock_k_line_api()
102
- hk_stock_daily_qfq_sync()
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,103 +0,0 @@
1
- import os
2
- import sys
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
-
9
- from mns_common.db.MongodbUtil import MongodbUtil
10
- from mns_common.db.v2.MongodbUtilV2 import MongodbUtilV2
11
- import mns_common.constant.extra_income_db_name as extra_income_db_name
12
- import mns_common.constant.db_name_constant as db_name_constant
13
- import akshare as ak
14
- from loguru import logger
15
- import mns_scheduler.baidu.baidu_yun_pan_handle_service as baidu_yun_pan_handle_service
16
-
17
- mongodb_util_27017 = MongodbUtil('27017')
18
- mongodbUtilV2_27019 = MongodbUtilV2('27019', extra_income_db_name.EXTRA_INCOME)
19
-
20
-
21
- def us_stock_daily_qfq_sync():
22
- us_stock_path = '/美股/qfq/'
23
-
24
- us_stock_exist_df = baidu_yun_pan_handle_service.get_file_folder(us_stock_path)
25
- us_stock_exist_df['name'] = us_stock_exist_df['name'].str.replace(r'\.csv$', '', regex=True)
26
-
27
- em_us_stock_info_df = mongodb_util_27017.find_all_data(db_name_constant.EM_US_STOCK_INFO)
28
-
29
- # 将列 A 转为字符串,并提取前三位
30
- em_us_stock_info_df["simple_symbol"] = em_us_stock_info_df["simple_symbol"].astype(str).str[:3]
31
- em_us_stock_info_df = em_us_stock_info_df.sort_values(by=['amount'], ascending=False)
32
- # 上传列表
33
- baidu_yun_pan_handle_service.upload_to_baidu('美股列表', us_stock_path, em_us_stock_info_df)
34
-
35
- em_us_stock_info_df = em_us_stock_info_df.loc[~em_us_stock_info_df['symbol'].isin(us_stock_exist_df['name'])]
36
-
37
- fail_list = []
38
- for us_stock_one in em_us_stock_info_df.itertuples():
39
- symbol = us_stock_one.symbol
40
- name = us_stock_one.name
41
- try:
42
- save_one_symbol(us_stock_one, us_stock_path, symbol)
43
- except BaseException as e:
44
- logger.error("同步出现异常:{},{},{}", e, symbol, name)
45
- fail_list.append(symbol)
46
- fail_stock_df = em_us_stock_info_df.loc[em_us_stock_info_df['symbol'].isin(fail_list)]
47
-
48
- for us_stock_fail_one in fail_stock_df.itertuples():
49
- symbol = us_stock_fail_one.symbol
50
- name = us_stock_fail_one.name
51
- try:
52
- save_one_symbol(us_stock_fail_one, us_stock_path, symbol)
53
- except BaseException as e:
54
- logger.error("同步出现异常:{},{},{}", e, symbol, name)
55
- fail_list.append(symbol)
56
-
57
-
58
- def save_one_symbol(us_stock_one, us_stock_path, symbol):
59
- simple_symbol = us_stock_one.simple_symbol
60
- code = simple_symbol + '.' + symbol
61
-
62
- us_stock_k_line_df = us_stock_k_line_api(code, k_line_period='daily', start_date='18000101',
63
- end_date='22220101', fq='qfq')
64
- us_stock_k_line_df['_id'] = us_stock_k_line_df['date'] + '_' + symbol
65
- us_stock_k_line_df['symbol'] = symbol
66
-
67
- query = {'symbol': symbol}
68
- if mongodbUtilV2_27019.remove_data(query, extra_income_db_name.US_STOCK_DAILY_QFQ_K_LINE).acknowledged > 0:
69
- mongodbUtilV2_27019.insert_mongo(us_stock_k_line_df, extra_income_db_name.US_STOCK_DAILY_QFQ_K_LINE)
70
- del us_stock_k_line_df['_id']
71
- del us_stock_k_line_df['symbol']
72
-
73
- # 上传列表
74
- baidu_yun_pan_handle_service.upload_to_baidu(symbol, us_stock_path, us_stock_k_line_df)
75
-
76
-
77
- def us_stock_k_line_api(symbol='106.GE', k_line_period='daily', start_date='18000101',
78
- end_date='22220101', fq='hfq'):
79
- stock_us_hist_df = ak.stock_us_hist(symbol=symbol,
80
- period=k_line_period,
81
- start_date=start_date,
82
- end_date=end_date,
83
- adjust=fq)
84
- stock_us_hist_df = stock_us_hist_df.rename(columns={
85
- "日期": "date",
86
- "涨跌额": "change_price",
87
- "涨跌幅": "chg",
88
- "开盘": "open",
89
- "最高": "high",
90
- "最低": "low",
91
- "收盘": "close",
92
- "成交量": "volume",
93
- "成交额": "amount",
94
- "振幅": "pct_chg",
95
- "换手率": "exchange"
96
- })
97
-
98
- return stock_us_hist_df
99
-
100
-
101
- if __name__ == '__main__':
102
- # us_stock_k_line_api()
103
- us_stock_daily_qfq_sync()
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
File without changes
@@ -1,34 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- from alpha_vantage.timeseries import TimeSeries
9
-
10
- # 初始化TimeSeries对象
11
- ts = TimeSeries(key='PP23H4H1059FTUK7', output_format='pandas')
12
-
13
-
14
- # 开始月份 2000-01
15
- def sync_one_minute_data(symbol, month):
16
- # 获取分钟数据(以苹果公司股票为例,60分钟间隔)
17
- data, meta_data = ts.get_intraday(symbol=symbol, interval='1min', outputsize='full', month=month,
18
- extended_hours='true', adjusted='false')
19
-
20
- data['time'] = data.index
21
- data.columns = [
22
- "open",
23
- "high",
24
- "low",
25
- "close",
26
- "volume",
27
- "time",
28
- ]
29
-
30
- return data
31
-
32
-
33
- if __name__ == '__main__':
34
- sync_one_minute_data('TSLA', '2020-08')
@@ -1,139 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
-
9
- import pandas as pd
10
- import requests
11
-
12
-
13
- def stock_hk_hist_min_em(
14
- symbol: str = "01611",
15
- period: str = "1",
16
- adjust: str = "",
17
- start_date: str = "1979-09-01 09:32:00",
18
- end_date: str = "2222-01-01 09:32:00",
19
- ) -> pd.DataFrame:
20
- """
21
- 东方财富网-行情-港股-每日分时行情
22
- https://quote.eastmoney.com/hk/00948.html
23
- :param symbol: 股票代码
24
- :type symbol: str
25
- :param period: choice of {'1', '5', '15', '30', '60'}
26
- :type period: str
27
- :param adjust: choice of {'', 'qfq', 'hfq'}
28
- :type adjust: str
29
- :param start_date: 开始日期
30
- :type start_date: str
31
- :param end_date: 结束日期
32
- :type end_date: str
33
- :return: 每日分时行情
34
- :rtype: pandas.DataFrame
35
- """
36
- adjust_map = {
37
- "": "0",
38
- "qfq": "1",
39
- "hfq": "2",
40
- }
41
- if period == "1":
42
- url = "https://push2his.eastmoney.com/api/qt/stock/trends2/get"
43
- params = {
44
- "fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",
45
- "fields2": "f51,f52,f53,f54,f55,f56,f57,f58",
46
- "ut": "fa5fd1943c7b386f172d6893dbfba10b",
47
- "iscr": "0",
48
- "ndays": "5",
49
- "secid": f"116.{symbol}",
50
- "_": "1623766962675",
51
- }
52
- r = requests.get(url, timeout=15, params=params)
53
- data_json = r.json()
54
- temp_df = pd.DataFrame(
55
- [item.split(",") for item in data_json["data"]["trends"]]
56
- )
57
- temp_df.columns = [
58
- "时间",
59
- "开盘",
60
- "收盘",
61
- "最高",
62
- "最低",
63
- "成交量",
64
- "成交额",
65
- "最新价",
66
- ]
67
- temp_df.index = pd.to_datetime(temp_df["时间"])
68
- temp_df = temp_df[start_date:end_date]
69
- temp_df.reset_index(drop=True, inplace=True)
70
- temp_df["开盘"] = pd.to_numeric(temp_df["开盘"], errors="coerce")
71
- temp_df["收盘"] = pd.to_numeric(temp_df["收盘"], errors="coerce")
72
- temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
73
- temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
74
- temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
75
- temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
76
- temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
77
- temp_df["时间"] = pd.to_datetime(temp_df["时间"]).astype(str)
78
- return temp_df
79
- else:
80
- url = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
81
- params = {
82
- "fields1": "f1,f2,f3,f4,f5,f6",
83
- "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",
84
- "ut": "bd1d9ddb04089700cf9c27f6f7426281",
85
- "klt": period,
86
- "fqt": adjust_map[adjust],
87
- "secid": f"116.{symbol}",
88
- "beg": "0",
89
- "end": "20500000",
90
- "_": "1630930917857",
91
- }
92
- r = requests.get(url, timeout=15, params=params)
93
- data_json = r.json()
94
- temp_df = pd.DataFrame(
95
- [item.split(",") for item in data_json["data"]["klines"]]
96
- )
97
- temp_df.columns = [
98
- "时间",
99
- "开盘",
100
- "收盘",
101
- "最高",
102
- "最低",
103
- "成交量",
104
- "成交额",
105
- "振幅",
106
- "涨跌幅",
107
- "涨跌额",
108
- "换手率",
109
- ]
110
- temp_df.index = pd.to_datetime(temp_df["时间"])
111
- temp_df = temp_df[start_date:end_date]
112
- temp_df.reset_index(drop=True, inplace=True)
113
- temp_df["开盘"] = pd.to_numeric(temp_df["开盘"], errors="coerce")
114
- temp_df["收盘"] = pd.to_numeric(temp_df["收盘"], errors="coerce")
115
- temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
116
- temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
117
- temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
118
- temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
119
- temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
120
- temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
121
- temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
122
- temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
123
- temp_df["时间"] = pd.to_datetime(temp_df["时间"]).astype(str)
124
- temp_df = temp_df[
125
- [
126
- "时间",
127
- "开盘",
128
- "收盘",
129
- "最高",
130
- "最低",
131
- "涨跌幅",
132
- "涨跌额",
133
- "成交量",
134
- "成交额",
135
- "振幅",
136
- "换手率",
137
- ]
138
- ]
139
- return temp_df
@@ -1,68 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
-
9
- import csv
10
- import requests
11
- import pandas as pd
12
- import mns_common.component.em.em_stock_info_api as em_stock_info_api
13
- from functools import lru_cache
14
-
15
-
16
- @lru_cache()
17
- def get_us_stock_info():
18
- em_us_stock_info_df = em_stock_info_api.get_us_stock_info()
19
- em_us_stock_info_df['symbol'] = em_us_stock_info_df['symbol'].str.replace('_', '-')
20
- em_us_stock_info_df = em_us_stock_info_df.loc[em_us_stock_info_df['total_mv'] != 0]
21
-
22
- alpha_us_stock_info = get_us_stock_list()
23
- alpha_us_stock_info = alpha_us_stock_info.loc[alpha_us_stock_info['assetType'] == 'Stock']
24
-
25
- em_us_stock_info_df = em_us_stock_info_df.loc[
26
- em_us_stock_info_df['symbol'].isin(alpha_us_stock_info['symbol'])]
27
- em_us_stock_info_df = em_us_stock_info_df.sort_values(by=['flow_mv'], ascending=False)
28
- return em_us_stock_info_df
29
-
30
-
31
- @lru_cache()
32
- def get_us_etf_info():
33
- em_us_stock_info_df = em_stock_info_api.get_us_stock_info()
34
- em_us_stock_info_df['symbol'] = em_us_stock_info_df['symbol'].str.replace('_', '-')
35
- em_us_stock_info_df = em_us_stock_info_df.loc[em_us_stock_info_df['total_mv'] != 0]
36
-
37
- alpha_us_stock_info = get_us_stock_list()
38
- alpha_us_stock_info = alpha_us_stock_info.loc[alpha_us_stock_info['assetType'] == 'ETF']
39
-
40
- em_us_stock_info_df = em_us_stock_info_df.loc[
41
- em_us_stock_info_df['symbol'].isin(alpha_us_stock_info['symbol'])]
42
- em_us_stock_info_df = em_us_stock_info_df.sort_values(by=['flow_mv'], ascending=False)
43
- return em_us_stock_info_df
44
-
45
-
46
- @lru_cache()
47
- def get_us_stock_list():
48
- # replace the "demo" apikey below with your own key from https://www.alphavantage.co/support/#api-key
49
- CSV_URL = 'https://www.alphavantage.co/query?function=LISTING_STATUS&apikey=demo'
50
- with requests.Session() as s:
51
- download = s.get(CSV_URL)
52
- decoded_content = download.content.decode('utf-8')
53
- cr = csv.reader(decoded_content.splitlines(), delimiter=',')
54
- my_list = list(cr)
55
- # 提取列名(第1行)
56
- columns = my_list[0]
57
- # 提取数据(第2行及以后)
58
- values = my_list[1:]
59
-
60
- # 转换为 DataFrame
61
- df = pd.DataFrame(values, columns=columns)
62
- df = df.rename(columns={'ipoDate': 'list_date'})
63
- return df
64
-
65
-
66
- if __name__ == '__main__':
67
- get_us_stock_info()
68
- get_us_etf_info()
@@ -1,63 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
-
9
- proxy = 'http://127.0.0.1:7890'
10
-
11
- os.environ['HTTP_PROXY'] = proxy
12
- os.environ['HTTPS_PROXY'] = proxy
13
-
14
- import yfinance as yf
15
-
16
-
17
- #
18
- # “history”函数包含许多参数,了解它们对于正确解释您收到的数据非常重要:
19
- #
20
- # period:如前所述,特别有用的是值“max”。以下是有效值:1d、5d、1mo、3mo、6mo、1y、2y、5y、10y、ytd、max。
21
- # 间隔:定义每个条形的大小。条形越小,限制越严格,只能检索 7 天的 1 分钟数据。以下是有效值:1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo
22
- # start:开始日期。服务器需要格式为 YYYY-MM-DD 的字符串。
23
- # end:结束日期。服务器需要格式为 YYYY-MM-DD 的字符串。
24
- # repost:定义是否包含与正常交易时间不对应的数据。默认值为 False
25
- # auto_adjust:是否根据股票分割和股息支付调整价格。默认值是true。
26
- # 雅虎财经获取基本数据方法
27
- def get_us_one_minute(symbol, start_time, end_time):
28
- # start_time = '2025-05-01'
29
- # end_time = '2025-05-09'
30
- start_time = '2025-05-09'
31
- end_time = '2025-05-11'
32
- yf_ticker = yf.Ticker(symbol)
33
- df = yf_ticker.history(period='5d',
34
- interval='1m',
35
- start=start_time,
36
- end=end_time,
37
- prepost=False,
38
- auto_adjust=False)
39
- df = df[[
40
- "Open",
41
- "High",
42
- "Low",
43
- "Close",
44
- "Volume",
45
- ]]
46
- df['time'] = df.index
47
- df.columns = [
48
- "open",
49
- "high",
50
- "low",
51
- "close",
52
- "volume",
53
- "time",
54
- ]
55
- df['time'] = df['time'].dt.strftime('%Y-%m-%d %H:%M:%S')
56
- # df['str_day'] = df['time'].str.slice(0, 10)
57
- # df['minute'] = df['time'].str.slice(11, 19)
58
- return df
59
-
60
-
61
- if __name__ == '__main__':
62
- df=get_us_one_minute('B', '2025-05-01', '2025-05-10')
63
- print(df)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,7 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
@@ -1,11 +0,0 @@
1
- import sys
2
- import os
3
-
4
- file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 17
6
- project_path = file_path[0:end]
7
- sys.path.append(project_path)
8
- import akshare as ak
9
-
10
- us_stock_current_df = ak.stock_us_spot()
11
- print(us_stock_current_df)