mns-scheduler 1.0.5.1__tar.gz → 1.0.5.5__tar.gz

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 (96) hide show
  1. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/PKG-INFO +1 -1
  2. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/company_info_sync_api.py +25 -4
  3. mns-scheduler-1.0.5.5/mns_scheduler/irm/stock_irm_cninfo_service.py +42 -0
  4. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +11 -3
  5. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/k_line/clean/k_line_info_clean_service.py +4 -4
  6. mns-scheduler-1.0.5.5/mns_scheduler/k_line/clean/recent_hot_stocks_clean_service.py +66 -0
  7. mns-scheduler-1.0.5.5/mns_scheduler/lhb/__init__.py +7 -0
  8. mns-scheduler-1.0.5.5/mns_scheduler/lhb/stock_lhb_sync_service.py +18 -0
  9. mns-scheduler-1.0.5.5/mns_scheduler/risk/__init__.py +7 -0
  10. mns-scheduler-1.0.5.5/mns_scheduler/risk/stock_equity_mortgage_sync_api.py +32 -0
  11. mns-scheduler-1.0.5.5/mns_scheduler/zb/__init__.py +8 -0
  12. mns-scheduler-1.0.5.5/mns_scheduler/zt/__init__.py +37 -0
  13. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py +5 -0
  14. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/PKG-INFO +1 -1
  15. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/SOURCES.txt +6 -0
  16. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/setup.py +1 -1
  17. mns-scheduler-1.0.5.1/mns_scheduler/k_line/sync/__init__.py +0 -7
  18. mns-scheduler-1.0.5.1/mns_scheduler/zz_task/__init__.py +0 -7
  19. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/README.md +0 -0
  20. {mns-scheduler-1.0.5.1/mns_scheduler/zb → mns-scheduler-1.0.5.5/mns_scheduler}/__init__.py +0 -0
  21. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/__init__.py +0 -0
  22. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/app/__init__.py +0 -0
  23. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
  24. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/__init__.py +0 -0
  25. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
  26. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
  27. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
  28. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
  29. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
  30. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/big_deal/__init__.py +0 -0
  31. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
  32. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/__init__.py +0 -0
  33. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/company_constant_data.py +0 -0
  34. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
  35. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/__init__.py +0 -0
  36. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/__init__.py +0 -0
  37. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  38. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
  39. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/__init__.py +0 -0
  40. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/common/__init__.py +0 -0
  41. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
  42. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
  43. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
  44. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -0
  45. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -0
  46. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
  47. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  48. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
  49. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/db/__init__.py +0 -0
  50. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/db/col_move_service.py +0 -0
  51. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/db/db_status.py +0 -0
  52. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/dt/__init__.py +0 -0
  53. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  54. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/__init__.py +0 -0
  55. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
  56. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
  57. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/finance_common_api.py +0 -0
  58. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py +0 -0
  59. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
  60. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/test/__init__.py +0 -0
  61. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/test/fix_blask_list.py +0 -0
  62. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/hk/__init__.py +0 -0
  63. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
  64. {mns-scheduler-1.0.5.1/mns_scheduler/risk → mns-scheduler-1.0.5.5/mns_scheduler/irm}/__init__.py +0 -0
  65. {mns-scheduler-1.0.5.1/mns_scheduler → mns-scheduler-1.0.5.5/mns_scheduler/k_line}/__init__.py +0 -0
  66. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/k_line/clean/__init__.py +0 -0
  67. {mns-scheduler-1.0.5.1/mns_scheduler/k_line → mns-scheduler-1.0.5.5/mns_scheduler/k_line/sync}/__init__.py +0 -0
  68. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
  69. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/__init__.py +0 -0
  70. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/__init__.py +0 -0
  71. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
  72. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  73. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  74. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
  75. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  76. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
  77. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  78. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/real_time/__init__.py +0 -0
  79. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
  80. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
  81. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/risk/register_and_investigate_stock_sync_api.py +0 -0
  82. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/__init__.py +0 -0
  83. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  84. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  85. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/sync_position_api.py +0 -0
  86. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  87. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/export_open_data_to_excel.py +0 -0
  88. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/today_high_chg_pool_sync_api.py +0 -0
  89. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/zt_five_boards_sync_api.py +0 -0
  90. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/zt_pool_sync_api.py +0 -0
  91. {mns-scheduler-1.0.5.1/mns_scheduler/zt → mns-scheduler-1.0.5.5/mns_scheduler/zz_task}/__init__.py +0 -0
  92. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zz_task/data_sync_task.py +0 -0
  93. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
  94. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  95. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/top_level.txt +0 -0
  96. {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.5.1
3
+ Version: 1.0.5.5
@@ -19,6 +19,8 @@ import mns_common.api.kpl.symbol.kpl_real_time_quotes_api as kpl_real_time_quote
19
19
  import mns_common.utils.data_frame_util as data_frame_util
20
20
  import mns_common.api.kpl.constant.kpl_constant as kpl_constant
21
21
  import mns_common.component.company.company_common_service_api as company_common_service_api
22
+ import mns_common.constant.db_name_constant as db_name_constant
23
+ import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
22
24
 
23
25
  mongodb_util = MongodbUtil('27017')
24
26
  # 分页大小
@@ -89,6 +91,7 @@ def filed_sort(company_info):
89
91
  "holder_controller_rate",
90
92
  "area",
91
93
  "list_date",
94
+ "deal_days",
92
95
  "pe_ttm",
93
96
  "pb",
94
97
  "ROE",
@@ -196,13 +199,28 @@ def fix_company_industry(symbol):
196
199
  try:
197
200
  company_info.dropna(subset=['symbol'], axis=0, inplace=True)
198
201
  company_info.dropna(subset=['_id'], axis=0, inplace=True)
199
- mongodb_util.save_mongo(company_info, 'company_info')
202
+ mongodb_util.save_mongo(company_info, db_name_constant.COMPANY_INFO)
203
+ # 保存历史数据
204
+ save_company_info_his(company_info)
200
205
  except BaseException as e:
201
206
  logger.error("出现异常:{},{}", symbol, e)
202
207
 
203
208
  return company_info
204
209
 
205
210
 
211
+ def save_company_info_his(company_info_df):
212
+ now_date = datetime.now()
213
+ str_day = now_date.strftime('%Y-%m-%d')
214
+ company_info_df['symbol'] = company_info_df['_id']
215
+ company_info_df['str_day'] = str_day
216
+ company_info_df['_id'] = company_info_df['_id'] + "_" + str_day
217
+ remove_query = {'str_day': str_day}
218
+ tag = mongodb_util.remove_data(remove_query, db_name_constant.COMPANY_INFO_HIS)
219
+ success = tag.acknowledged
220
+ if success:
221
+ mongodb_util.insert_mongo(company_info_df, db_name_constant.COMPANY_INFO_HIS)
222
+
223
+
206
224
  def sync_company_base_info(symbol_list):
207
225
  global result
208
226
  result = []
@@ -310,7 +328,10 @@ def single_thread_sync_company_info(east_money_stock_info,
310
328
  company_info_type['kpl_plate_list_info'] = '-'
311
329
  company_info_type['kpl_plate_name'] = '-'
312
330
  company_info_type['kpl_most_relative_name'] = '-'
313
-
331
+ now_date = datetime.now()
332
+ str_day = now_date.strftime('%Y-%m-%d')
333
+ deal_days = k_line_common_service_api.get_deal_days(str_day, company_one.symbol)
334
+ company_info_type['deal_days'] = deal_days
314
335
  try:
315
336
  if data_frame_util.is_not_empty(kpl_real_time_quotes):
316
337
  kpl_real_time_quotes_one = kpl_real_time_quotes.loc[
@@ -472,6 +493,6 @@ if __name__ == '__main__':
472
493
  # 300293
473
494
  # sync_company_base_info(None)
474
495
  # new_company_info_update()
475
- sync_company_base_info(['300483'])
476
- fix_company_industry('300483')
496
+ sync_company_base_info(None)
497
+ fix_company_industry(None)
477
498
  # group_by_industry()
@@ -0,0 +1,42 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+ import akshare as ak
9
+ import mns_common.utils.data_frame_util as data_frame_util
10
+ import pandas as pd
11
+ from loguru import logger
12
+
13
+
14
+ # 获取股票提问 互动易-提问
15
+ def get_stock_irm_cninfo(symbol):
16
+ try:
17
+ stock_irm_cninfo_df = ak.stock_irm_cninfo(symbol)
18
+ except Exception as e:
19
+ logger.error("获取提问者异常:{},{}", symbol, e)
20
+ return pd.DataFrame()
21
+ if data_frame_util.is_empty(stock_irm_cninfo_df):
22
+ return pd.DataFrame()
23
+ stock_irm_cninfo_df = stock_irm_cninfo_df.rename(columns={"股票代码": "symbol",
24
+ "公司简称": "name",
25
+ "行业": "industry",
26
+ "行业代码": "industry_code",
27
+ "问题": "question",
28
+ '提问者': "questioner",
29
+ '来源': "source",
30
+ '提问时间': "question_time",
31
+ '更新时间': "update_time",
32
+ "提问者编号": "questioner_no",
33
+ "问题编号": "question_no",
34
+ "回答ID": "answer_id",
35
+ "回答内容": "answer_content",
36
+ "回答者": "answer"
37
+ })
38
+ return stock_irm_cninfo_df
39
+
40
+
41
+ if __name__ == '__main__':
42
+ get_stock_irm_cninfo('301191')
@@ -13,6 +13,8 @@ import mns_common.utils.date_handle_util as date_handle_util
13
13
  import mns_common.component.k_line.patterns.k_line_patterns_service_api as k_line_patterns_service
14
14
  import mns_common.component.k_line.clean.sh_small_normal_zt_k_line_check_api as sh_small_normal_zt_k_line_check_api
15
15
  import mns_common.component.classify.symbol_classify_api as symbol_classify_api
16
+ import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
17
+ import mns_scheduler.k_line.clean.recent_hot_stocks_clean_service as recent_hot_stocks_clean_service
16
18
 
17
19
  mongodb_util = MongodbUtil('27017')
18
20
  # 排除最近10天有三个连板的股票
@@ -119,11 +121,11 @@ def handle_week_line(k_line_info, str_day, symbol):
119
121
 
120
122
  # 处理日线
121
123
  def handle_day_line(k_line_info, str_day, symbol):
122
- # 当天没有k线数据时 进行同步
123
- query = {"symbol": symbol, 'date': {"$lt": date_handle_util.no_slash_date(str_day)}}
124
- deal_days = mongodb_util.count(query, 'stock_qfq_daily')
124
+ deal_days = k_line_common_service_api.get_deal_days(str_day, symbol)
125
125
 
126
126
  # 取五天刚好包含一周 todo 选择60天的历史记录
127
+ # 当天没有k线数据时 进行同步
128
+ query = {"symbol": symbol, 'date': {"$lt": date_handle_util.no_slash_date(str_day)}}
127
129
  stock_qfq_daily = mongodb_util.descend_query(query, 'stock_qfq_daily', 'date', 60)
128
130
  if stock_qfq_daily.shape[0] == 0:
129
131
  return k_line_info
@@ -151,6 +153,9 @@ def handle_day_line(k_line_info, str_day, symbol):
151
153
  k_line_info = check_recent_zt_stock(str_day, k_line_info)
152
154
  # 计算 昨日最高点到开盘涨幅差值 and # 昨日最高点到当日收盘涨幅之间的差值
153
155
  k_line_info = calculate_chg_diff_value(k_line_info)
156
+
157
+ recent_hot_stocks_clean_service.calculate_recent_hot_stocks(stock_qfq_daily, symbol, str_day)
158
+
154
159
  return k_line_info
155
160
 
156
161
 
@@ -406,15 +411,18 @@ def set_history_list(stock_qfq_daily_one, stock_qfq_daily):
406
411
  stock_qfq_daily_ten = stock_qfq_daily.iloc[0:10]
407
412
  # 计算 amount 的标准差
408
413
  std_amount_ten = round(stock_qfq_daily_ten['amount_level'].std(), 2)
414
+ # 计算 amount 的平均值
409
415
  mean_amount_ten = round(stock_qfq_daily_ten['amount_level'].mean(), 2)
410
416
 
411
417
  if daily_num >= 30:
412
418
  stock_qfq_daily_thirty = stock_qfq_daily.iloc[0:30]
413
419
  # 计算 amount 的标准差
414
420
  std_amount_thirty = round(stock_qfq_daily_thirty['amount_level'].std(), 2)
421
+ # 计算 amount 的平均值
415
422
  mean_amount_thirty = round(stock_qfq_daily_thirty['amount_level'].mean(), 2)
416
423
  if daily_num >= 60:
417
424
  std_amount_sixty = round(stock_qfq_daily['amount_level'].std(), 2)
425
+ # 计算 amount 的平均值
418
426
  mean_amount_sixty = round(stock_qfq_daily['amount_level'].mean(), 2)
419
427
 
420
428
  # text = list(stock_qfq_daily_one['history_data'])[0]
@@ -17,7 +17,7 @@ import mns_common.component.common_service_fun_api as common_service_fun_api
17
17
  import mns_scheduler.k_line.sync.daily_week_month_line_sync as daily_week_month_line_sync_api
18
18
  import mns_scheduler.k_line.clean.k_line_info_clean_impl as k_line_info_clean_impl
19
19
  import mns_common.utils.data_frame_util as data_frame_util
20
-
20
+ import mns_common.component.company.company_common_service_api as company_common_service_api
21
21
  K_LINE_CLEAN_DB_NAME = 'k_line_clean_fail_name'
22
22
 
23
23
  # 定义一个全局锁,用于保护 result 变量的访问
@@ -47,8 +47,8 @@ def sync_k_line_info(str_day, symbol_list):
47
47
  if symbol_list is not None:
48
48
  for symbol in symbol_list:
49
49
  try:
50
- query = {'symbol': symbol}
51
- company_info_df = mongodb_util.find_query_data('company_info', query)
50
+ company_df = company_common_service_api.get_company_info_industry_list_date()
51
+ company_info_df = company_df.loc[company_df['_id'] == symbol]
52
52
  if data_frame_util.is_not_empty(company_info_df):
53
53
 
54
54
  # 将日期数值转换为日期时间格式
@@ -184,6 +184,6 @@ def clean_history_data():
184
184
 
185
185
 
186
186
  if __name__ == '__main__':
187
- sync_k_line_info("2024-01-04",['000001'])
187
+ sync_k_line_info("2024-05-24", None)
188
188
  # clean_history_data()
189
189
  # sync_k_line_info("2023-12-22")
@@ -0,0 +1,66 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ import pandas as pd
10
+ import mns_common.utils.date_handle_util as date_handle_util
11
+ import mns_common.constant.db_name_constant as db_name_constant
12
+ from mns_common.db.MongodbUtil import MongodbUtil
13
+ import mns_common.component.company.company_common_service_api as company_common_service_api
14
+
15
+ mongodb_util = MongodbUtil('27017')
16
+ # 高涨幅阈值
17
+ HIGH_CHG = 50
18
+
19
+
20
+ # 最近大涨股票
21
+ def calculate_recent_hot_stocks(stock_qfq_daily_60, symbol, str_day):
22
+ company_df = company_common_service_api.get_company_info_industry_list_date()
23
+ company_one_df = company_df.loc[company_df['_id'] == symbol]
24
+ company_one_df['list_date_01'] = pd.to_datetime(company_one_df['list_date'], format='%Y%m%d')
25
+ list_date = list(company_one_df['list_date_01'])[0]
26
+
27
+ str_list_date = date_handle_util.no_slash_date(list_date.strftime('%Y-%m-%d'))
28
+ # 排除上市第一天的数据
29
+ stock_qfq_daily_60 = stock_qfq_daily_60.loc[stock_qfq_daily_60['date'] > str_list_date]
30
+
31
+ stock_qfq_daily_05 = stock_qfq_daily_60.iloc[0:5]
32
+
33
+ stock_qfq_daily_10 = stock_qfq_daily_60.iloc[0:10]
34
+
35
+ stock_qfq_daily_20 = stock_qfq_daily_60.iloc[0:20]
36
+
37
+ stock_qfq_daily_30 = stock_qfq_daily_60.iloc[0:30]
38
+ sum_five_chg = round(sum(stock_qfq_daily_05['chg']), 2)
39
+ sum_ten_chg = round(sum(stock_qfq_daily_10['chg']), 2)
40
+
41
+ sum_twenty_chg = round(sum(stock_qfq_daily_20['chg']), 2)
42
+
43
+ sum_thirty_chg = round(sum(stock_qfq_daily_30['chg']), 2)
44
+
45
+ sum_sixty_chg = round(sum(stock_qfq_daily_60['chg']), 2)
46
+ if (sum_sixty_chg >= HIGH_CHG
47
+ or sum_ten_chg >= HIGH_CHG
48
+ or sum_twenty_chg >= HIGH_CHG
49
+ or sum_thirty_chg >= HIGH_CHG
50
+ or sum_sixty_chg >= HIGH_CHG):
51
+ query = {'symbol': symbol}
52
+ company_info_df = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO, query)
53
+ name = list(company_info_df['name'])[0]
54
+ hot_stocks_dict = {
55
+ "_id": str_day + "_" + symbol,
56
+ "symbol": symbol,
57
+ "name": name,
58
+ "str_day": str_day,
59
+ "sum_five_chg": sum_five_chg,
60
+ "sum_ten_chg": sum_ten_chg,
61
+ "sum_twenty_chg": sum_twenty_chg,
62
+ "sum_thirty_chg": sum_thirty_chg,
63
+ "sum_sixty_chg": sum_sixty_chg,
64
+ }
65
+ hot_stocks_df = pd.DataFrame(hot_stocks_dict, index=[1])
66
+ mongodb_util.save_mongo(hot_stocks_df, db_name_constant.RECENT_HOT_STOCKS)
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
@@ -0,0 +1,18 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ import akshare as ak
10
+
11
+ # 当天龙虎榜股票
12
+ stock_lhb_detail_em_df = ak.stock_lhb_detail_em(start_date="20240520", end_date="20240522")
13
+ print(stock_lhb_detail_em_df)
14
+
15
+ # 000560 某只股票当天龙虎榜详情
16
+ stock_lhb_stock_detail_em_df = ak.stock_lhb_stock_detail_em(symbol="600383", date="20240521", flag="买入")
17
+ stock_lhb_stock_detail_em_df = ak.stock_lhb_stock_detail_em(symbol="600383", date="20240521", flag="卖出")
18
+ print(stock_lhb_stock_detail_em_df)
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
@@ -0,0 +1,32 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ # 股权质押 https://data.eastmoney.com/gpzy/pledgeRatio.aspx
10
+
11
+ import requests
12
+
13
+
14
+ def get_equity_mortgage():
15
+ url = (
16
+ 'https://datacenter-web.eastmoney.com/api/data/v1/get?callback=jQuery1123018114616341595302_1715993497168&sortColumns=PLEDGE_RATIO&sortTypes=-1'
17
+ '&pageSize=50000'
18
+ '&pageNumber=1'
19
+ '&reportName=RPT_CSDC_LIST&columns=ALL&quoteColumns=&source=WEB'
20
+ '&client=WEB'
21
+ '&filter=(TRADE_DATE%3D%272024-05-17%27)')
22
+
23
+ headers = {
24
+ "Content-Type": "application/json"
25
+ }
26
+ r = requests.post(url, headers=headers)
27
+ data_json = r.json()
28
+ print(data_json)
29
+
30
+
31
+ if __name__ == '__main__':
32
+ get_equity_mortgage()
@@ -0,0 +1,8 @@
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
+
@@ -0,0 +1,37 @@
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 mns_common.db.MongodbUtil import MongodbUtil
9
+ # import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
10
+ #
11
+ # mongodb_util = MongodbUtil('27017')
12
+ # # query = {"deal_days": {"$exists": False}}
13
+ # deal_days = 8
14
+ # fail_id_list = []
15
+ # while True:
16
+ # query = {"deal_days": deal_days}
17
+ # realtime_quotes_now_zt_new_kc_open_df = mongodb_util.find_query_data('realtime_quotes_now_zt_new_kc_open', query)
18
+ #
19
+ # for stock_one in realtime_quotes_now_zt_new_kc_open_df.itertuples():
20
+ # try:
21
+ # str_day = stock_one.str_day
22
+ # deal_days = k_line_common_service_api.get_deal_days(str_day, stock_one.symbol)
23
+ #
24
+ # realtime_quotes_now_zt_new_kc_open_one = realtime_quotes_now_zt_new_kc_open_df.loc[
25
+ # (realtime_quotes_now_zt_new_kc_open_df['symbol'] == stock_one.symbol)
26
+ # & (realtime_quotes_now_zt_new_kc_open_df['str_day'] == stock_one.str_day)]
27
+ #
28
+ # realtime_quotes_now_zt_new_kc_open_one['deal_days'] = deal_days
29
+ #
30
+ # mongodb_util.save_mongo(realtime_quotes_now_zt_new_kc_open_one, 'realtime_quotes_now_zt_new_kc_open')
31
+ # except Exception as e:
32
+ # mongodb_util.insert_mongo(realtime_quotes_now_zt_new_kc_open_one, 'realtime_quotes_now_zt_new_kc_open_fail')
33
+ # print(stock_one.symbol)
34
+ # deal_days = deal_days + 1
35
+ # if deal_days > 3479:
36
+ # print(deal_days)
37
+ # break
@@ -17,6 +17,7 @@ import pandas as pd
17
17
  from datetime import time
18
18
  from mns_common.db.MongodbUtil import MongodbUtil
19
19
  import mns_common.utils.data_frame_util as data_frame_util
20
+ import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
20
21
 
21
22
  mongodb_util = MongodbUtil('27017')
22
23
  mongodb_util_21019 = MongodbUtil('27019')
@@ -223,6 +224,10 @@ def one_symbol_day_open_data(realtime_quotes_now_kc, kc_one, str_day):
223
224
  del realtime_quotes_now_zt_new_kc_open_copy['str_day_01']
224
225
  del realtime_quotes_now_zt_new_kc_open_copy['list_date_01']
225
226
 
227
+ deal_days = k_line_common_service_api.get_deal_days(str_day, kc_one.symbol)
228
+
229
+ realtime_quotes_now_zt_new_kc_open_copy['deal_days'] = deal_days
230
+
226
231
  mongodb_util.save_mongo(realtime_quotes_now_zt_new_kc_open_copy, 'realtime_quotes_now_zt_new_kc_open')
227
232
 
228
233
 
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.5.1
3
+ Version: 1.0.5.5
@@ -49,10 +49,13 @@ mns_scheduler/finance/test/__init__.py
49
49
  mns_scheduler/finance/test/fix_blask_list.py
50
50
  mns_scheduler/hk/__init__.py
51
51
  mns_scheduler/hk/hk_company_info_sync_service_api.py
52
+ mns_scheduler/irm/__init__.py
53
+ mns_scheduler/irm/stock_irm_cninfo_service.py
52
54
  mns_scheduler/k_line/__init__.py
53
55
  mns_scheduler/k_line/clean/__init__.py
54
56
  mns_scheduler/k_line/clean/k_line_info_clean_impl.py
55
57
  mns_scheduler/k_line/clean/k_line_info_clean_service.py
58
+ mns_scheduler/k_line/clean/recent_hot_stocks_clean_service.py
56
59
  mns_scheduler/k_line/sync/__init__.py
57
60
  mns_scheduler/k_line/sync/daily_week_month_line_sync.py
58
61
  mns_scheduler/kpl/__init__.py
@@ -64,11 +67,14 @@ mns_scheduler/kpl/selection/symbol/__init__.py
64
67
  mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py
65
68
  mns_scheduler/kpl/selection/total/__init__.py
66
69
  mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py
70
+ mns_scheduler/lhb/__init__.py
71
+ mns_scheduler/lhb/stock_lhb_sync_service.py
67
72
  mns_scheduler/real_time/__init__.py
68
73
  mns_scheduler/real_time/realtime_quotes_now_create_db_index.py
69
74
  mns_scheduler/real_time/realtime_quotes_now_sync.py
70
75
  mns_scheduler/risk/__init__.py
71
76
  mns_scheduler/risk/register_and_investigate_stock_sync_api.py
77
+ mns_scheduler/risk/stock_equity_mortgage_sync_api.py
72
78
  mns_scheduler/trade/__init__.py
73
79
  mns_scheduler/trade/auto_ipo_buy_api.py
74
80
  mns_scheduler/trade/auto_sell_service_api.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='mns-scheduler',
5
- version='1.0.5.1',
5
+ version='1.0.5.5',
6
6
  packages=find_packages(),
7
7
  install_requires=[], # 如果有依赖项,可以在这里列出
8
8
  )
@@ -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)