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.
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/PKG-INFO +1 -1
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/company_info_sync_api.py +25 -4
- mns-scheduler-1.0.5.5/mns_scheduler/irm/stock_irm_cninfo_service.py +42 -0
- {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
- {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
- mns-scheduler-1.0.5.5/mns_scheduler/k_line/clean/recent_hot_stocks_clean_service.py +66 -0
- mns-scheduler-1.0.5.5/mns_scheduler/lhb/__init__.py +7 -0
- mns-scheduler-1.0.5.5/mns_scheduler/lhb/stock_lhb_sync_service.py +18 -0
- mns-scheduler-1.0.5.5/mns_scheduler/risk/__init__.py +7 -0
- mns-scheduler-1.0.5.5/mns_scheduler/risk/stock_equity_mortgage_sync_api.py +32 -0
- mns-scheduler-1.0.5.5/mns_scheduler/zb/__init__.py +8 -0
- mns-scheduler-1.0.5.5/mns_scheduler/zt/__init__.py +37 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py +5 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/SOURCES.txt +6 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/setup.py +1 -1
- mns-scheduler-1.0.5.1/mns_scheduler/k_line/sync/__init__.py +0 -7
- mns-scheduler-1.0.5.1/mns_scheduler/zz_task/__init__.py +0 -7
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/README.md +0 -0
- {mns-scheduler-1.0.5.1/mns_scheduler/zb → mns-scheduler-1.0.5.5/mns_scheduler}/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/app/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/big_deal/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/company_constant_data.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {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
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {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
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {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
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/db/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/db/col_move_service.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/dt/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/__init__.py +0 -0
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/finance_common_api.py +0 -0
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/test/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/test/fix_blask_list.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/hk/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.0.5.1/mns_scheduler/risk → mns-scheduler-1.0.5.5/mns_scheduler/irm}/__init__.py +0 -0
- {mns-scheduler-1.0.5.1/mns_scheduler → mns-scheduler-1.0.5.5/mns_scheduler/k_line}/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/k_line/clean/__init__.py +0 -0
- {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
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/real_time/__init__.py +0 -0
- {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
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/risk/register_and_investigate_stock_sync_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/export_open_data_to_excel.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/today_high_chg_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/zt_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.5.1/mns_scheduler/zt → mns-scheduler-1.0.5.5/mns_scheduler/zz_task}/__init__.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zz_task/data_sync_task.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/setup.cfg +0 -0
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/company_info_sync_api.py
RENAMED
|
@@ -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,
|
|
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(
|
|
476
|
-
fix_company_industry(
|
|
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')
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
51
|
-
company_info_df =
|
|
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-
|
|
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,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,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"eColumns=&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,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
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py
RENAMED
|
@@ -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
|
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/app/ths_new_concept_sync_app.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_his_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/em/em_new_concept_sync_web.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/company_constant_data.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/company_info/de_list_stock_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/concept/ths/sync_new_index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/finance/test/fix_blask_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.5.1/mns_scheduler/risk → mns-scheduler-1.0.5.5/mns_scheduler/irm}/__init__.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.5.1/mns_scheduler → mns-scheduler-1.0.5.5/mns_scheduler/k_line}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/symbol/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/kpl/selection/total/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/real_time/realtime_quotes_now_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/trade/auto_sell_service_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/export_open_data_to_excel.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zt/today_high_chg_pool_sync_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1/mns_scheduler/zt → mns-scheduler-1.0.5.5/mns_scheduler/zz_task}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.5.1 → mns-scheduler-1.0.5.5}/mns_scheduler/zz_task/sync_realtime_quotes_task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|