mns-scheduler 1.4.0.1__py3-none-any.whl → 1.4.0.3__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.

@@ -37,25 +37,89 @@ result = []
37
37
  # 计算实际流通比例
38
38
  def calculate_circulation_ratio(symbol):
39
39
  query = {"symbol": symbol}
40
- stock_gdfx_free_top_10 = mongodb_util.descend_query(query, 'stock_gdfx_free_top_10', "period", 10)
41
- if stock_gdfx_free_top_10.shape[0] == 0:
40
+ stock_gdfx_free_top_1 = mongodb_util.descend_query(query, 'stock_gdfx_free_top_10', "period", 1)
41
+ if stock_gdfx_free_top_1.shape[0] == 0:
42
42
  mv_circulation_ratio = 1
43
43
  else:
44
+ period_time = list(stock_gdfx_free_top_1['period'])[0]
45
+
46
+ query_free = {'symbol': symbol, 'period': period_time}
47
+ stock_gdfx_free_top_10 = mongodb_util.find_query_data('stock_gdfx_free_top_10', query_free)
48
+
49
+ stock_gdfx_free_top_10['shares_number_str'] = stock_gdfx_free_top_10['shares_number'].astype(str)
50
+
51
+ stock_gdfx_free_top_10['id_key'] = stock_gdfx_free_top_10['symbol'] + '_' + stock_gdfx_free_top_10[
52
+ 'period'] + '_' + stock_gdfx_free_top_10.shares_number_str
53
+
54
+ stock_gdfx_free_top_10.drop_duplicates('id_key', keep='last', inplace=True)
55
+
44
56
  # 排除香港结算公司 大于5%减持不用发公告 香港中央结算 HKSCC
45
57
  stock_gdfx_free_top_10['is_hk'] = stock_gdfx_free_top_10['shareholder_name'].apply(
46
58
  lambda shareholder_name: "HK" if shareholder_name.startswith('香港中央结算') or shareholder_name.startswith(
47
59
  'HKSCC') else "A")
48
60
 
49
- # 持股大于5% # 排除香港结算公司 大于5%减持不用发公告 香港中央结算 HKSCC
50
- stock_gdfx_free_top_10 = stock_gdfx_free_top_10.loc[
61
+ # 持股大于5% 减持需要发公告
62
+ # 排除香港结算公司不发公共 小于5%减持不用发公告
63
+ # 香港中央结算 HKSCC
64
+ stock_free_top_greater_than_5 = stock_gdfx_free_top_10.loc[
51
65
  (stock_gdfx_free_top_10['circulation_ratio'] >= 5) & (stock_gdfx_free_top_10['is_hk'] == 'A')]
52
66
 
53
- circulation_ratio = sum(stock_gdfx_free_top_10['circulation_ratio'])
67
+ stock_free_qfii = stock_gdfx_free_top_10.loc[stock_gdfx_free_top_10['shareholder_nature'] == 'QFII']
68
+
69
+ # qfii 数量
70
+ qfii_number = stock_free_qfii.shape[0]
71
+ # qfii 类型
72
+ qfii_type = set_qfii_type(qfii_number, stock_free_qfii.copy())
73
+
74
+ circulation_ratio = sum(stock_free_top_greater_than_5['circulation_ratio'])
54
75
  mv_circulation_ratio = round((100 - circulation_ratio) / 100, 2)
55
76
  # 防止错误数据
56
77
  if mv_circulation_ratio < 0:
57
78
  mv_circulation_ratio = 1
58
- return mv_circulation_ratio
79
+
80
+ result_dict = {
81
+ 'mv_circulation_ratio': mv_circulation_ratio,
82
+ 'qfii_type': qfii_type,
83
+ 'qfii_number': qfii_number
84
+
85
+ }
86
+ return result_dict
87
+
88
+
89
+ def set_qfii_type(qfii_number, stock_free_qfii):
90
+ if qfii_number > 0:
91
+ stock_free_qfii['new_change'] = stock_free_qfii['change']
92
+ stock_free_qfii.loc[stock_free_qfii['change_ratio'] == 0, 'new_change'] = 0
93
+ stock_free_qfii.loc[stock_free_qfii['change'] == '新进', 'new_change'] = \
94
+ stock_free_qfii['shares_number']
95
+ stock_free_qfii['new_change'] = stock_free_qfii['new_change'].astype(float)
96
+
97
+ stock_free_qfii_new_in = stock_free_qfii.loc[stock_free_qfii['change'] == '新进']
98
+ if data_frame_util.is_not_empty(stock_free_qfii_new_in):
99
+ qfii_type = 1
100
+ return qfii_type
101
+
102
+ stock_free_qfii_add = stock_free_qfii.loc[
103
+ (~stock_free_qfii['change'].isin(['不变', '新进'])) & (stock_free_qfii['new_change'] > 0)]
104
+
105
+ if data_frame_util.is_not_empty(stock_free_qfii_add):
106
+ qfii_type = 2
107
+ return qfii_type
108
+
109
+ stock_free_qfii_not_change = stock_free_qfii.loc[stock_free_qfii['change'] == '不变']
110
+
111
+ if data_frame_util.is_not_empty(stock_free_qfii_not_change):
112
+ qfii_type = 3
113
+ return qfii_type
114
+
115
+ stock_free_qfii_reduce = stock_free_qfii.loc[
116
+ (~stock_free_qfii['change'].isin(['不变', '新进'])) & (stock_free_qfii['new_change'] < 0)]
117
+
118
+ if data_frame_util.is_not_empty(stock_free_qfii_reduce):
119
+ qfii_type = 4
120
+ return qfii_type
121
+ else:
122
+ return 0
59
123
 
60
124
 
61
125
  def get_east_money_stock_info():
@@ -201,7 +265,11 @@ def single_thread_sync_company_info(east_money_stock_info,
201
265
  company_info_type['total_mv_sp'] = company_one.total_mv_sp
202
266
  company_info_type['flow_mv_level'] = company_one.flow_mv_level
203
267
  company_info_type['classification'] = company_one.classification
204
- company_info_type['mv_circulation_ratio'] = calculate_circulation_ratio(company_one.symbol)
268
+
269
+ result_dict = calculate_circulation_ratio(company_one.symbol)
270
+ company_info_type['mv_circulation_ratio'] = result_dict['mv_circulation_ratio']
271
+ company_info_type['qfii_type'] = result_dict['qfii_type']
272
+ company_info_type['qfii_number'] = result_dict['qfii_number']
205
273
  # 获取同花顺最新概念
206
274
  company_info_type = ths_concept_common_service_api.set_ths_concept(company_one.symbol, company_info_type)
207
275
  now_date = datetime.now()
@@ -443,6 +443,8 @@ def filed_sort(company_info):
443
443
  "final_controller_name",
444
444
  "final_controller_rate",
445
445
  "mv_circulation_ratio",
446
+ 'qfii_type',
447
+ 'qfii_number',
446
448
  "flow_mv_sp",
447
449
  "total_mv_sp",
448
450
  "now_price",
@@ -1,4 +1,4 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.4.0.1
3
+ Version: 1.4.0.3
4
4
 
@@ -3,13 +3,13 @@ mns_scheduler/company_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlI
3
3
  mns_scheduler/company_info/announce/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
4
4
  mns_scheduler/company_info/announce/company_announce_sync_service.py,sha256=q8zYOZJmRin_QU2uPk52wngNdgnZooabnfrnqzqFIrM,3055
5
5
  mns_scheduler/company_info/base/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
6
- mns_scheduler/company_info/base/sync_company_base_info_api.py,sha256=SIBQqUbAZXGCfAoYq78McvIZ6vrttlCfAlqhZl23z9U,21050
6
+ mns_scheduler/company_info/base/sync_company_base_info_api.py,sha256=-UTK-Xspu5clBFsBl7k-ZPd9HT-w8EGL974lZaoSLkc,23856
7
7
  mns_scheduler/company_info/base/sync_company_hold_info_api.py,sha256=ep9CthkoL_NNqkZgAeAdZqaf7_LNFDCrZonUjrT7w5o,1587
8
8
  mns_scheduler/company_info/base/sync_company_product_area_industry.py,sha256=g1g3NvJFteKMKkovoLrfL5MZovFnj_K4uWdB9EVzviY,7529
9
9
  mns_scheduler/company_info/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
10
10
  mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=P_-Nms6S1nVyqVOFKDT-Cq1RvriZV4IMz9eZCDF5Ovk,6104
11
11
  mns_scheduler/company_info/constant/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
12
- mns_scheduler/company_info/constant/company_constant_data.py,sha256=0qhRXLASsQlYnJe_vy5HCwNQZWz-hmJslbr9VuBnmGY,22486
12
+ mns_scheduler/company_info/constant/company_constant_data.py,sha256=xrwnQqKqkJBHBGbEj7Ad9wz52lYXrxelfCQCDWm6ICM,22532
13
13
  mns_scheduler/company_info/de_list_stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
14
14
  mns_scheduler/company_info/de_list_stock/de_list_stock_service.py,sha256=QNtKc1ZI6xHjupcxbOBN7fBhi6oAGtL7X1TQZVzfpnk,1993
15
15
  mns_scheduler/company_info/em_stock_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
@@ -165,7 +165,7 @@ mns_scheduler/zz_task/data_sync_task.py,sha256=V17cYsn_NxmbJoPG_AFcqrps1XzQF-wMP
165
165
  mns_scheduler/zz_task/compensation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
166
166
  mns_scheduler/zz_task/compensation/compensate_task.py,sha256=Dyo66NcSnXZ-Cne4_v77BBb27SemAiuGXRLnvQ26X0E,6464
167
167
  mns_scheduler/zz_task/compensation/compensate_task_one_day.py,sha256=ize69Ocy1k5rf8Xckk1izcEJ361HBtWH1zoJrScBS28,5751
168
- mns_scheduler-1.4.0.1.dist-info/METADATA,sha256=9uKri1xUWZkXxrsQaNja41gAm2ftqY7BayI-g8DlRNE,64
169
- mns_scheduler-1.4.0.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
170
- mns_scheduler-1.4.0.1.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
171
- mns_scheduler-1.4.0.1.dist-info/RECORD,,
168
+ mns_scheduler-1.4.0.3.dist-info/METADATA,sha256=HyQ0FUwK6AL0w6H4K8t1vGxR2Rb-YSfMtxIk8tnWwqk,64
169
+ mns_scheduler-1.4.0.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
170
+ mns_scheduler-1.4.0.3.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
171
+ mns_scheduler-1.4.0.3.dist-info/RECORD,,