mns-scheduler 1.0.6.9__tar.gz → 1.0.7.2__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.6.9 → mns-scheduler-1.0.7.2}/PKG-INFO +1 -1
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/company_info_sync_api.py +1 -2
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +4 -3
- mns-scheduler-1.0.6.9/mns_scheduler/k_line/clean/k_line_info_clean_impl.py → mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +112 -200
- mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +109 -0
- mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +33 -0
- mns-scheduler-1.0.6.9/mns_scheduler/k_line/clean/k_line_info_clean_service.py → mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/k_line_info_clean_task.py +6 -1
- mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +117 -0
- mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +47 -0
- mns-scheduler-1.0.7.2/mns_scheduler/k_line/hot_stocks/__init__.py +7 -0
- mns-scheduler-1.0.7.2/mns_scheduler/lhb/__init__.py +7 -0
- mns-scheduler-1.0.7.2/mns_scheduler/risk/__init__.py +7 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zz_task/data_sync_task.py +1 -1
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler.egg-info/SOURCES.txt +9 -2
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/setup.py +1 -1
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/README.md +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/app/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/em/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/big_deal/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/company_constant_data.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/db/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/db/col_move_service.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/dt/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/finance_common_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/test/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/test/fix_blask_list.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/hk/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/api/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/k_line/clean/__init__.py +0 -0
- {mns-scheduler-1.0.6.9/mns_scheduler/lhb → mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/daily}/__init__.py +0 -0
- {mns-scheduler-1.0.6.9/mns_scheduler/risk → mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/week_month}/__init__.py +0 -0
- {mns-scheduler-1.0.6.9/mns_scheduler/k_line/clean → mns-scheduler-1.0.7.2/mns_scheduler/k_line/hot_stocks}/recent_hot_stocks_clean_service.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/k_line/sync/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/real_time/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/risk/register_and_investigate_stock_sync_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/risk/stock_equity_mortgage_sync_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/trade/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/export_open_data_to_excel.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/today_high_chg_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/zt_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zz_task/__init__.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/setup.cfg +0 -0
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/company_info_sync_api.py
RENAMED
|
@@ -130,7 +130,6 @@ def get_east_money_stock_info():
|
|
|
130
130
|
'amount',
|
|
131
131
|
'concept']]
|
|
132
132
|
|
|
133
|
-
all_real_time_quotes = common_service_fun_api.exclude_b_symbol(all_real_time_quotes)
|
|
134
133
|
return all_real_time_quotes
|
|
135
134
|
|
|
136
135
|
|
|
@@ -515,6 +514,6 @@ if __name__ == '__main__':
|
|
|
515
514
|
# 300293
|
|
516
515
|
# sync_company_base_info(None)
|
|
517
516
|
# new_company_info_update()
|
|
518
|
-
sync_company_base_info(
|
|
517
|
+
sync_company_base_info(['920002'])
|
|
519
518
|
fix_company_industry(None)
|
|
520
519
|
# group_by_industry()
|
|
@@ -38,8 +38,8 @@ def create_index():
|
|
|
38
38
|
def sync_new_concept_to_ths_detail(symbol_add_new_concept_df, str_day, str_now_time):
|
|
39
39
|
for new_concept_one in symbol_add_new_concept_df.itertuples():
|
|
40
40
|
try:
|
|
41
|
-
|
|
42
|
-
query = {'web_concept_code': int(
|
|
41
|
+
web_concept_code = new_concept_one.concept_code
|
|
42
|
+
query = {'web_concept_code': int(web_concept_code)}
|
|
43
43
|
ths_concept_list = mongodb_util.find_query_data('ths_concept_list', query)
|
|
44
44
|
if data_frame_util.is_empty(ths_concept_list):
|
|
45
45
|
logger.error("无此同花顺概念:{}", new_concept_one.title)
|
|
@@ -95,7 +95,8 @@ def update_symbol_new_concept(symbol_df, page_number):
|
|
|
95
95
|
now_date = datetime.now()
|
|
96
96
|
# 开盘交易前不同步 资源开销过大
|
|
97
97
|
if date_handle_util.is_close_time(now_date):
|
|
98
|
-
ths_concept_update_common_api.update_ths_concept_choose_reason(symbol_ths_concept_all_df,
|
|
98
|
+
ths_concept_update_common_api.update_ths_concept_choose_reason(symbol_ths_concept_all_df,
|
|
99
|
+
stock_one.symbol)
|
|
99
100
|
|
|
100
101
|
str_day = now_date.strftime('%Y-%m-%d')
|
|
101
102
|
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
@@ -2,176 +2,17 @@ import sys
|
|
|
2
2
|
import os
|
|
3
3
|
|
|
4
4
|
file_path = os.path.abspath(__file__)
|
|
5
|
-
end = file_path.index('mns') +
|
|
5
|
+
end = file_path.index('mns') + 16
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
|
-
|
|
9
|
-
import mns_common.utils.data_frame_util as data_frame_util
|
|
10
8
|
import pandas as pd
|
|
11
|
-
from mns_common.db.MongodbUtil import MongodbUtil
|
|
12
|
-
import mns_common.utils.date_handle_util as date_handle_util
|
|
13
9
|
import mns_common.component.k_line.patterns.k_line_patterns_service_api as k_line_patterns_service
|
|
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
|
-
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
|
|
18
|
-
|
|
19
|
-
mongodb_util = MongodbUtil('27017')
|
|
20
|
-
# 排除最近10天有三个连板的股票
|
|
21
|
-
EXCLUDE_DAYS = 10
|
|
22
|
-
|
|
23
|
-
MAX_CONTINUE_BOARDS = 3
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# 日线 周线 月线 成交量 筹码信息
|
|
27
|
-
def calculate_k_line_info(str_day, symbol, diff_days):
|
|
28
|
-
k_line_info = pd.DataFrame([[
|
|
29
|
-
str_day,
|
|
30
|
-
symbol, diff_days]],
|
|
31
|
-
columns=['str_day',
|
|
32
|
-
'symbol',
|
|
33
|
-
'diff_days'
|
|
34
|
-
])
|
|
35
|
-
k_line_info = handle_month_line(k_line_info, str_day, symbol)
|
|
36
|
-
k_line_info = handle_week_line(k_line_info, str_day, symbol)
|
|
37
|
-
k_line_info = handle_day_line(k_line_info, str_day, symbol)
|
|
38
|
-
return k_line_info
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
# 处理月线
|
|
42
|
-
def handle_month_line(k_line_info, str_day, symbol):
|
|
43
|
-
month_begin_day = str_day[0:7] + '-01'
|
|
44
|
-
query = {"symbol": symbol,
|
|
45
|
-
'date': {"$lt": date_handle_util.no_slash_date(month_begin_day)}}
|
|
46
|
-
stock_hfq_monthly = mongodb_util.descend_query(query, 'stock_qfq_monthly', 'date', 2)
|
|
47
|
-
month_num = stock_hfq_monthly.shape[0]
|
|
48
|
-
k_line_info['month_num'] = month_num
|
|
49
|
-
if month_num > 0:
|
|
50
|
-
k_line_info['sum_month'] = round(sum(stock_hfq_monthly['chg']), 2)
|
|
51
|
-
else:
|
|
52
|
-
k_line_info['sum_month'] = 0
|
|
53
|
-
|
|
54
|
-
if month_num == 0:
|
|
55
|
-
k_line_info['month01'] = 0
|
|
56
|
-
k_line_info['month02'] = 0
|
|
57
|
-
k_line_info['month01_date'] = '19890729'
|
|
58
|
-
k_line_info['month02_date'] = '19890729'
|
|
59
|
-
elif month_num == 1:
|
|
60
|
-
k_line_info['month01'] = stock_hfq_monthly.iloc[0].chg
|
|
61
|
-
k_line_info['month02'] = 0
|
|
62
|
-
k_line_info['month01_date'] = stock_hfq_monthly.iloc[0].date
|
|
63
|
-
k_line_info['month02_date'] = '19890729'
|
|
64
|
-
elif month_num == 2:
|
|
65
|
-
k_line_info['month01'] = stock_hfq_monthly.iloc[0].chg
|
|
66
|
-
k_line_info['month02'] = stock_hfq_monthly.iloc[1].chg
|
|
67
|
-
k_line_info['month01_date'] = stock_hfq_monthly.iloc[0].date
|
|
68
|
-
k_line_info['month02_date'] = stock_hfq_monthly.iloc[1].date
|
|
69
|
-
|
|
70
|
-
return k_line_info
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# 处理周线
|
|
74
|
-
def handle_week_line(k_line_info, str_day, symbol):
|
|
75
|
-
month_begin_day = str_day[0:7] + '-01'
|
|
76
|
-
query = {"symbol": symbol,
|
|
77
|
-
'$and': [{'date': {"$gte": date_handle_util.no_slash_date(month_begin_day)}},
|
|
78
|
-
{'date': {"$lt": date_handle_util.no_slash_date(str_day)}}]}
|
|
79
|
-
stock_hfq_weekly = mongodb_util.find_query_data('stock_qfq_weekly', query)
|
|
80
|
-
week_num = stock_hfq_weekly.shape[0]
|
|
81
|
-
if week_num > 0:
|
|
82
|
-
stock_hfq_weekly = stock_hfq_weekly.sort_values(by=['date'], ascending=False)
|
|
83
|
-
k_line_info['sum_week'] = round(sum(stock_hfq_weekly['chg']), 2)
|
|
84
|
-
else:
|
|
85
|
-
k_line_info['sum_week'] = 0
|
|
86
|
-
k_line_info['week_num'] = week_num
|
|
87
|
-
if week_num == 1:
|
|
88
|
-
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
89
|
-
k_line_info['week02'] = 0
|
|
90
|
-
k_line_info['week03'] = 0
|
|
91
|
-
k_line_info['week04'] = 0
|
|
92
|
-
elif week_num == 2:
|
|
93
|
-
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
94
|
-
k_line_info['week02'] = stock_hfq_weekly.iloc[1].chg
|
|
95
|
-
k_line_info['week03'] = 0
|
|
96
|
-
k_line_info['week04'] = 0
|
|
97
|
-
elif week_num == 3:
|
|
98
|
-
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
99
|
-
k_line_info['week02'] = stock_hfq_weekly.iloc[1].chg
|
|
100
|
-
k_line_info['week03'] = stock_hfq_weekly.iloc[2].chg
|
|
101
|
-
k_line_info['week04'] = 0
|
|
102
|
-
elif week_num >= 4:
|
|
103
|
-
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
104
|
-
k_line_info['week02'] = stock_hfq_weekly.iloc[1].chg
|
|
105
|
-
k_line_info['week03'] = stock_hfq_weekly.iloc[2].chg
|
|
106
|
-
k_line_info['week04'] = stock_hfq_weekly.iloc[3].chg
|
|
107
|
-
elif week_num == 0:
|
|
108
|
-
k_line_info['week01'] = 0
|
|
109
|
-
k_line_info['week02'] = 0
|
|
110
|
-
k_line_info['week03'] = 0
|
|
111
|
-
k_line_info['week04'] = 0
|
|
112
|
-
k_line_info['week_last_day'] = month_begin_day
|
|
113
|
-
k_line_info['sum_week'] = 0
|
|
114
|
-
return k_line_info
|
|
115
|
-
stock_hfq_weekly = stock_hfq_weekly.sort_values(by=['date'], ascending=False)
|
|
116
|
-
stock_hfq_weekly_last = stock_hfq_weekly.iloc[0:1]
|
|
117
|
-
k_line_info['week_last_day'] = list(stock_hfq_weekly_last['date'])[0]
|
|
118
|
-
|
|
119
|
-
return k_line_info
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
# 处理日线
|
|
123
|
-
def handle_day_line(k_line_info, str_day, symbol):
|
|
124
|
-
deal_days = k_line_common_service_api.get_deal_days(str_day, symbol)
|
|
125
|
-
|
|
126
|
-
# 取五天刚好包含一周 todo 选择60天的历史记录
|
|
127
|
-
# 当天没有k线数据时 进行同步
|
|
128
|
-
query = {"symbol": symbol, 'date': {"$lt": date_handle_util.no_slash_date(str_day)}}
|
|
129
|
-
stock_qfq_daily = mongodb_util.descend_query(query, 'stock_qfq_daily', 'date', 60)
|
|
130
|
-
if stock_qfq_daily.shape[0] == 0:
|
|
131
|
-
return k_line_info
|
|
132
|
-
k_line_info = init_day_line_data(k_line_info, stock_qfq_daily)
|
|
133
|
-
k_line_info = calculate_30_day_max_chg(stock_qfq_daily, k_line_info)
|
|
134
|
-
|
|
135
|
-
stock_qfq_daily = calculate_exchange_avg_param(stock_qfq_daily)
|
|
136
|
-
stock_qfq_daily_one = stock_qfq_daily.iloc[0:1]
|
|
137
|
-
stock_qfq_daily_one = set_k_line_patterns(stock_qfq_daily_one.copy())
|
|
138
|
-
stock_qfq_daily_one = set_history_list(stock_qfq_daily_one.copy(), stock_qfq_daily.copy())
|
|
139
|
-
k_line_info = k_line_field_fix(k_line_info.copy(), stock_qfq_daily_one.copy())
|
|
140
|
-
|
|
141
|
-
k_line_info.loc[:, 'deal_days'] = deal_days
|
|
142
|
-
|
|
143
|
-
k_line_info.loc[k_line_info['deal_days'] > 5, 'sum_five_chg'] = k_line_info['daily01'] \
|
|
144
|
-
+ k_line_info['daily02'] \
|
|
145
|
-
+ k_line_info['daily03'] \
|
|
146
|
-
+ k_line_info['daily04'] \
|
|
147
|
-
+ k_line_info['daily05']
|
|
148
|
-
k_line_info.loc[k_line_info['deal_days'] <= 5, 'sum_five_chg'] = 0
|
|
149
10
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
# 排除最近有三板以上的股票
|
|
153
|
-
k_line_info = check_recent_zt_stock(str_day, k_line_info)
|
|
154
|
-
# 计算 昨日最高点到开盘涨幅差值 and # 昨日最高点到当日收盘涨幅之间的差值
|
|
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
|
-
|
|
159
|
-
return k_line_info
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
# 计算涨幅差值
|
|
163
|
-
def calculate_chg_diff_value(result):
|
|
164
|
-
# 昨日最高点到开盘涨幅差值
|
|
165
|
-
result['diff_chg_from_open_last'] = round(
|
|
166
|
-
result['max_chg_last'] - result['open_chg_last'], 2)
|
|
167
|
-
|
|
168
|
-
# 昨日最高点到当日收盘涨幅之间的差值
|
|
169
|
-
result['diff_chg_high_last'] = round(
|
|
170
|
-
result['max_chg_last'] - result['chg_last'], 2)
|
|
171
|
-
|
|
172
|
-
return result
|
|
11
|
+
# 计算五日线之和交易天数最小值
|
|
12
|
+
MIN_DEAL_DAYS = 6
|
|
173
13
|
|
|
174
14
|
|
|
15
|
+
# 初始化数据
|
|
175
16
|
def init_day_line_data(k_line_info, stock_qfq_daily):
|
|
176
17
|
daily_num = stock_qfq_daily.shape[0]
|
|
177
18
|
if daily_num == 0:
|
|
@@ -216,20 +57,67 @@ def init_day_line_data(k_line_info, stock_qfq_daily):
|
|
|
216
57
|
k_line_info['daily03'] = stock_qfq_daily.iloc[2].chg
|
|
217
58
|
k_line_info['daily04'] = stock_qfq_daily.iloc[3].chg
|
|
218
59
|
k_line_info['daily05'] = stock_qfq_daily.iloc[4].chg
|
|
60
|
+
k_line_info.loc[:, 'exclude'] = False
|
|
61
|
+
# 30日最大涨幅
|
|
62
|
+
k_line_info.loc[:, 'amount_level_last'] = 0
|
|
63
|
+
k_line_info.loc[:, 'exchange_last'] = 0
|
|
64
|
+
k_line_info.loc[:, 'exchange_mean_last'] = 0
|
|
65
|
+
k_line_info.loc[:, 'exchange_mean_last_02'] = 0
|
|
66
|
+
k_line_info.loc[:, 'exchange_difference_last'] = 0
|
|
67
|
+
k_line_info.loc[:, 'exchange_chg_percent_last'] = 0
|
|
68
|
+
k_line_info.loc[:, 'pct_chg_mean_last'] = 0
|
|
69
|
+
k_line_info.loc[:, 'pct_chg_difference_last'] = 0
|
|
70
|
+
k_line_info.loc[:, 'close_difference_five_last'] = 0
|
|
71
|
+
k_line_info.loc[:, 'close_difference_ten_last'] = 0
|
|
72
|
+
k_line_info.loc[:, 'close_difference_twenty_last'] = 0
|
|
73
|
+
k_line_info.loc[:, 'close_difference_thirty_last'] = 0
|
|
74
|
+
k_line_info.loc[:, 'close_difference_sixty_last'] = 0
|
|
75
|
+
k_line_info.loc[:, 'pct_chg_last'] = 0
|
|
76
|
+
k_line_info.loc[:, 'max_chg_last'] = 0
|
|
77
|
+
k_line_info.loc[:, 'chg_last'] = 0
|
|
78
|
+
k_line_info.loc[:, 'close_last'] = 0
|
|
79
|
+
k_line_info.loc[:, 'high_last'] = 0
|
|
80
|
+
k_line_info.loc[:, 'low_last'] = 0
|
|
81
|
+
|
|
82
|
+
k_line_info.loc[:, 'avg_five_last'] = 0
|
|
83
|
+
k_line_info.loc[:, 'avg_ten_last'] = 0
|
|
84
|
+
k_line_info.loc[:, 'avg_twenty_last'] = 0
|
|
85
|
+
k_line_info.loc[:, 'avg_thirty_last'] = 0
|
|
86
|
+
k_line_info.loc[:, 'avg_sixty_last'] = 0
|
|
87
|
+
|
|
88
|
+
k_line_info.loc[:, 'std_amount_ten'] = 0
|
|
89
|
+
k_line_info.loc[:, 'mean_amount_ten'] = 0
|
|
90
|
+
k_line_info.loc[:, 'std_amount_thirty'] = 0
|
|
91
|
+
k_line_info.loc[:, 'mean_amount_thirty'] = 0
|
|
92
|
+
|
|
93
|
+
k_line_info.loc[:, 'std_amount_sixty'] = 0
|
|
94
|
+
k_line_info.loc[:, 'mean_amount_sixty'] = 0
|
|
95
|
+
|
|
96
|
+
k_line_info.loc[:, 'sum_five_chg'] = 0
|
|
97
|
+
|
|
98
|
+
k_line_info.loc[:, 'open_chg_last'] = 0
|
|
99
|
+
|
|
100
|
+
k_line_info.loc[:, 'before_close'] = 0
|
|
101
|
+
|
|
102
|
+
k_line_info.loc[:, 'diff_max_chg_from_open_last'] = 0
|
|
103
|
+
|
|
104
|
+
k_line_info.loc[:, 'diff_max_chg_from_close_last'] = 0
|
|
105
|
+
|
|
106
|
+
k_line_info.loc[:, 'diff_close_from_open_last'] = 0
|
|
219
107
|
|
|
220
108
|
return k_line_info
|
|
221
109
|
|
|
222
110
|
|
|
223
111
|
# 计算30天最大涨幅
|
|
224
112
|
def calculate_30_day_max_chg(stock_qfq_daily, k_line_info):
|
|
113
|
+
# 取30天的交易k线
|
|
225
114
|
stock_qfq_daily_30 = stock_qfq_daily.iloc[0:29]
|
|
226
115
|
|
|
227
116
|
deal_days = stock_qfq_daily_30.shape[0]
|
|
228
117
|
|
|
229
|
-
if
|
|
118
|
+
if deal_days < 30:
|
|
230
119
|
stock_qfq_daily_30 = stock_qfq_daily_30[0: deal_days - 1]
|
|
231
|
-
if
|
|
232
|
-
k_line_info['max_chg_30'] = 0
|
|
120
|
+
if deal_days == 0:
|
|
233
121
|
return k_line_info
|
|
234
122
|
|
|
235
123
|
stock_qfq_daily_30['date_time'] = pd.to_datetime(stock_qfq_daily_30['date'])
|
|
@@ -249,12 +137,11 @@ def calculate_30_day_max_chg(stock_qfq_daily, k_line_info):
|
|
|
249
137
|
return k_line_info
|
|
250
138
|
|
|
251
139
|
|
|
252
|
-
#
|
|
253
|
-
def
|
|
140
|
+
# 计算换手平均值 k线 5 10 20 30 60均线
|
|
141
|
+
def calculate_exchange_and_k_line_avg_param(stock_qfq_daily):
|
|
254
142
|
stock_qfq_daily = stock_qfq_daily.sort_values(by=['date'], ascending=True)
|
|
255
143
|
|
|
256
|
-
#
|
|
257
|
-
# 计算每个日期的前10天的均值
|
|
144
|
+
# 计算每个日期前10天的换手均值
|
|
258
145
|
stock_qfq_daily['exchange_mean'] = round(
|
|
259
146
|
stock_qfq_daily['exchange'].rolling(window=10, min_periods=1).mean(), 2)
|
|
260
147
|
|
|
@@ -266,9 +153,11 @@ def calculate_exchange_avg_param(stock_qfq_daily):
|
|
|
266
153
|
# 昨日平均值 向当前移位
|
|
267
154
|
stock_qfq_daily['exchange_mean_yesterday'] = stock_qfq_daily['exchange_mean_yesterday'].shift(1)
|
|
268
155
|
|
|
156
|
+
# 今天换手相对于[昨日平均十日换手]的差值
|
|
269
157
|
stock_qfq_daily['exchange_difference'] = round(
|
|
270
158
|
stock_qfq_daily['exchange'] - stock_qfq_daily['exchange_mean_yesterday'], 2)
|
|
271
159
|
|
|
160
|
+
# 今天换手相对于[昨日平均十日换手]的倍数
|
|
272
161
|
stock_qfq_daily['exchange_chg_percent'] = round(
|
|
273
162
|
stock_qfq_daily['exchange'] / stock_qfq_daily['exchange_mean_yesterday'], 2)
|
|
274
163
|
|
|
@@ -305,7 +194,7 @@ def calculate_exchange_avg_param(stock_qfq_daily):
|
|
|
305
194
|
stock_qfq_daily['avg_sixty'] = round(stock_qfq_daily['close'].rolling(window=60, min_periods=1).mean(),
|
|
306
195
|
2)
|
|
307
196
|
|
|
308
|
-
#
|
|
197
|
+
# 收盘价格与均线差值
|
|
309
198
|
stock_qfq_daily['close_difference_five'] = round(
|
|
310
199
|
100 * (stock_qfq_daily['close'] - stock_qfq_daily['avg_five']) / stock_qfq_daily['close'],
|
|
311
200
|
2)
|
|
@@ -372,6 +261,21 @@ def calculate_exchange_avg_param(stock_qfq_daily):
|
|
|
372
261
|
return stock_qfq_daily
|
|
373
262
|
|
|
374
263
|
|
|
264
|
+
# 设置当天k线形态 下一个交易日判断当前交易日k线形态
|
|
265
|
+
def set_k_line_patterns(stock_qfq_daily_one):
|
|
266
|
+
open = list(stock_qfq_daily_one['open'])[0]
|
|
267
|
+
close = list(stock_qfq_daily_one['close'])[0]
|
|
268
|
+
high = list(stock_qfq_daily_one['high'])[0]
|
|
269
|
+
low = list(stock_qfq_daily_one['low'])[0]
|
|
270
|
+
max_chg = list(stock_qfq_daily_one['max_chg'])[0]
|
|
271
|
+
chg = list(stock_qfq_daily_one['chg'])[0]
|
|
272
|
+
|
|
273
|
+
k_line_pattern = k_line_patterns_service.k_line_patterns_classify(open, close, high, low, max_chg, chg)
|
|
274
|
+
stock_qfq_daily_one.loc[:, 'k_line_pattern'] = k_line_pattern.value
|
|
275
|
+
return stock_qfq_daily_one
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
# 设置历史k线列表
|
|
375
279
|
def set_history_list(stock_qfq_daily_one, stock_qfq_daily):
|
|
376
280
|
stock_qfq_daily = stock_qfq_daily[[
|
|
377
281
|
"date",
|
|
@@ -409,9 +313,9 @@ def set_history_list(stock_qfq_daily_one, stock_qfq_daily):
|
|
|
409
313
|
|
|
410
314
|
if daily_num >= 10:
|
|
411
315
|
stock_qfq_daily_ten = stock_qfq_daily.iloc[0:10]
|
|
412
|
-
# 计算 amount 的标准差
|
|
316
|
+
# 计算 10日 amount 的标准差
|
|
413
317
|
std_amount_ten = round(stock_qfq_daily_ten['amount_level'].std(), 2)
|
|
414
|
-
# 计算 amount 的平均值
|
|
318
|
+
# 计算 10日amount 的平均值
|
|
415
319
|
mean_amount_ten = round(stock_qfq_daily_ten['amount_level'].mean(), 2)
|
|
416
320
|
|
|
417
321
|
if daily_num >= 30:
|
|
@@ -438,22 +342,8 @@ def set_history_list(stock_qfq_daily_one, stock_qfq_daily):
|
|
|
438
342
|
return stock_qfq_daily_one
|
|
439
343
|
|
|
440
344
|
|
|
441
|
-
#
|
|
442
|
-
def
|
|
443
|
-
open = list(stock_qfq_daily_one['open'])[0]
|
|
444
|
-
close = list(stock_qfq_daily_one['close'])[0]
|
|
445
|
-
high = list(stock_qfq_daily_one['high'])[0]
|
|
446
|
-
low = list(stock_qfq_daily_one['low'])[0]
|
|
447
|
-
max_chg = list(stock_qfq_daily_one['max_chg'])[0]
|
|
448
|
-
chg = list(stock_qfq_daily_one['chg'])[0]
|
|
449
|
-
|
|
450
|
-
k_line_pattern = k_line_patterns_service.k_line_patterns_classify(open, close, high, low, max_chg, chg)
|
|
451
|
-
stock_qfq_daily_one.loc[:, 'k_line_pattern'] = k_line_pattern.value
|
|
452
|
-
return stock_qfq_daily_one
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
# 字段选择
|
|
456
|
-
def k_line_field_fix(k_line_info, stock_qfq_daily_one):
|
|
345
|
+
# 修改字段名称
|
|
346
|
+
def k_line_field_fix_name(k_line_info, stock_qfq_daily_one):
|
|
457
347
|
k_line_info['classification'] = stock_qfq_daily_one['classification']
|
|
458
348
|
k_line_info['amount_level_last'] = stock_qfq_daily_one['amount_level']
|
|
459
349
|
k_line_info['name'] = stock_qfq_daily_one['name']
|
|
@@ -497,7 +387,21 @@ def k_line_field_fix(k_line_info, stock_qfq_daily_one):
|
|
|
497
387
|
return k_line_info
|
|
498
388
|
|
|
499
389
|
|
|
500
|
-
#
|
|
390
|
+
# 设置五日k线和
|
|
391
|
+
def set_sum_five_chg(k_line_info, deal_days):
|
|
392
|
+
k_line_info.loc[:, 'deal_days'] = deal_days
|
|
393
|
+
# 排除上市第一天的k线
|
|
394
|
+
k_line_info.loc[k_line_info['deal_days'] >= MIN_DEAL_DAYS, 'sum_five_chg'] = k_line_info['daily01'] \
|
|
395
|
+
+ k_line_info['daily02'] \
|
|
396
|
+
+ k_line_info['daily03'] \
|
|
397
|
+
+ k_line_info['daily04'] \
|
|
398
|
+
+ k_line_info['daily05']
|
|
399
|
+
k_line_info.loc[k_line_info['deal_days'] < MIN_DEAL_DAYS, 'sum_five_chg'] = 0
|
|
400
|
+
|
|
401
|
+
return k_line_info
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
# 计算当前交易日开盘时的涨幅
|
|
501
405
|
def calculate_open_chg(stock_qfq_daily, k_line_info):
|
|
502
406
|
# 新股
|
|
503
407
|
if stock_qfq_daily.shape[0] == 1:
|
|
@@ -510,13 +414,21 @@ def calculate_open_chg(stock_qfq_daily, k_line_info):
|
|
|
510
414
|
return k_line_info
|
|
511
415
|
|
|
512
416
|
|
|
513
|
-
#
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
417
|
+
# 计算涨幅差值
|
|
418
|
+
# 昨日最高点到开盘涨幅差值
|
|
419
|
+
# 昨日最高点到当日收盘涨幅之间的差值
|
|
420
|
+
# 昨日收盘到当日开盘涨幅之间的差值
|
|
421
|
+
def calculate_chg_diff_value(result):
|
|
422
|
+
# 昨日最高点到开盘涨幅差值
|
|
423
|
+
result['diff_max_chg_from_open_last'] = round(
|
|
424
|
+
result['max_chg_last'] - result['open_chg_last'], 2)
|
|
425
|
+
|
|
426
|
+
# 昨日最高点到当日收盘涨幅之间的差值
|
|
427
|
+
result['diff_max_chg_from_close_last'] = round(
|
|
428
|
+
result['max_chg_last'] - result['chg_last'], 2)
|
|
429
|
+
|
|
430
|
+
# 昨日最高点到当日收盘涨幅之间的差值
|
|
431
|
+
result['diff_close_from_open_last'] = round(
|
|
432
|
+
result['chg_last'] - result['open_chg_last'], 2)
|
|
433
|
+
|
|
434
|
+
return result
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
9
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
10
|
+
import mns_scheduler.k_line.hot_stocks.recent_hot_stocks_clean_service as recent_hot_stocks_clean_service
|
|
11
|
+
import mns_scheduler.k_line.clean.daily.daily_k_line_clean_common_service as daily_k_line_clean_common_service
|
|
12
|
+
from mns_common.component.classify.symbol_classify_param import stock_type_classify_param
|
|
13
|
+
|
|
14
|
+
mongodb_util = MongodbUtil('27017')
|
|
15
|
+
# 普通股日线查询数据 60
|
|
16
|
+
NORMAL_DAILY_K_LINE_NUMBER = 60
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def handle_day_line(k_line_info, str_day, symbol, deal_days):
|
|
20
|
+
sub_stock_new_max_deal_days = stock_type_classify_param['sub_stock_new_max_deal_days']
|
|
21
|
+
if deal_days > sub_stock_new_max_deal_days:
|
|
22
|
+
return handle_day_line_normal(k_line_info, str_day, symbol, deal_days)
|
|
23
|
+
|
|
24
|
+
else:
|
|
25
|
+
# 交易日小于100天的
|
|
26
|
+
return handle_day_line_sub_new(k_line_info, str_day, symbol, deal_days)
|
|
27
|
+
|
|
28
|
+
# 处理日线
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def handle_day_line_sub_new(k_line_info, str_day, symbol, deal_days):
|
|
32
|
+
k_line_info['deal_days'] = deal_days
|
|
33
|
+
query = {"symbol": symbol, 'date': {"$lt": date_handle_util.no_slash_date(str_day)}}
|
|
34
|
+
stock_qfq_daily = mongodb_util.descend_query(query, 'stock_qfq_daily', 'date', deal_days)
|
|
35
|
+
# 初始化数据
|
|
36
|
+
k_line_info = daily_k_line_clean_common_service.init_day_line_data(k_line_info, stock_qfq_daily)
|
|
37
|
+
if stock_qfq_daily.shape[0] == 0:
|
|
38
|
+
return k_line_info
|
|
39
|
+
|
|
40
|
+
# 当前交易日k线信息
|
|
41
|
+
stock_qfq_daily_one = stock_qfq_daily.iloc[0:1]
|
|
42
|
+
# 设置当天k线形态 下一个交易日判断当前交易日k线形态
|
|
43
|
+
stock_qfq_daily_one = daily_k_line_clean_common_service.set_k_line_patterns(stock_qfq_daily_one.copy())
|
|
44
|
+
# 设置历史k线列表
|
|
45
|
+
stock_qfq_daily_one = daily_k_line_clean_common_service.set_history_list(stock_qfq_daily_one.copy(),
|
|
46
|
+
stock_qfq_daily.copy())
|
|
47
|
+
# 修改字段名称
|
|
48
|
+
k_line_info = daily_k_line_clean_common_service.k_line_field_fix_name(k_line_info.copy(),
|
|
49
|
+
stock_qfq_daily_one.copy())
|
|
50
|
+
if stock_qfq_daily.shape[0] == 1:
|
|
51
|
+
# 上市第二天的股票
|
|
52
|
+
return k_line_info
|
|
53
|
+
# 排除上市第一天的股票
|
|
54
|
+
stock_qfq_daily = stock_qfq_daily.iloc[0:deal_days - 1]
|
|
55
|
+
# 计算换手平均值 k线 5 10 20 30 60均线
|
|
56
|
+
stock_qfq_daily = daily_k_line_clean_common_service.calculate_exchange_and_k_line_avg_param(stock_qfq_daily)
|
|
57
|
+
# 设置五日k线和
|
|
58
|
+
k_line_info = daily_k_line_clean_common_service.set_sum_five_chg(k_line_info, deal_days)
|
|
59
|
+
# 计算当前交易日开盘时的涨幅
|
|
60
|
+
k_line_info = daily_k_line_clean_common_service.calculate_open_chg(stock_qfq_daily, k_line_info)
|
|
61
|
+
# 计算 昨日最高点到开盘涨幅差值 and # 昨日最高点到当日收盘涨幅之间的差值 and # 昨日收盘到当日开盘涨幅之间的差值
|
|
62
|
+
k_line_info = daily_k_line_clean_common_service.calculate_chg_diff_value(k_line_info)
|
|
63
|
+
# 排除最近有三板以上的股票 todo
|
|
64
|
+
# 计算最近热门大涨的股票
|
|
65
|
+
recent_hot_stocks_clean_service.calculate_recent_hot_stocks(stock_qfq_daily, symbol, str_day)
|
|
66
|
+
return k_line_info
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def handle_day_line_normal(k_line_info, str_day, symbol, deal_days):
|
|
70
|
+
# 取五天刚好包含一周 todo 选择60天的历史记录
|
|
71
|
+
|
|
72
|
+
query = {"symbol": symbol, 'date': {"$lt": date_handle_util.no_slash_date(str_day)}}
|
|
73
|
+
stock_qfq_daily = mongodb_util.descend_query(query, 'stock_qfq_daily', 'date', NORMAL_DAILY_K_LINE_NUMBER)
|
|
74
|
+
if stock_qfq_daily.shape[0] == 0:
|
|
75
|
+
return k_line_info
|
|
76
|
+
# 初始化数据
|
|
77
|
+
k_line_info = daily_k_line_clean_common_service.init_day_line_data(k_line_info, stock_qfq_daily)
|
|
78
|
+
# 计算30天最大涨幅
|
|
79
|
+
k_line_info = daily_k_line_clean_common_service.calculate_30_day_max_chg(stock_qfq_daily, k_line_info)
|
|
80
|
+
# 计算换手平均值 k线 5 10 20 30 60均线
|
|
81
|
+
stock_qfq_daily = daily_k_line_clean_common_service.calculate_exchange_and_k_line_avg_param(stock_qfq_daily)
|
|
82
|
+
# 当前交易日k线信息
|
|
83
|
+
stock_qfq_daily_one = stock_qfq_daily.iloc[0:1]
|
|
84
|
+
# 设置当天k线形态 下一个交易日判断当前交易日k线形态
|
|
85
|
+
stock_qfq_daily_one = daily_k_line_clean_common_service.set_k_line_patterns(stock_qfq_daily_one.copy())
|
|
86
|
+
# 设置历史k线列表
|
|
87
|
+
stock_qfq_daily_one = daily_k_line_clean_common_service.set_history_list(stock_qfq_daily_one.copy(),
|
|
88
|
+
stock_qfq_daily.copy())
|
|
89
|
+
# 修改字段名称
|
|
90
|
+
k_line_info = daily_k_line_clean_common_service.k_line_field_fix_name(k_line_info.copy(),
|
|
91
|
+
stock_qfq_daily_one.copy())
|
|
92
|
+
# 设置五日k线和
|
|
93
|
+
k_line_info = daily_k_line_clean_common_service.set_sum_five_chg(k_line_info, deal_days)
|
|
94
|
+
# 计算当前交易日开盘时的涨幅
|
|
95
|
+
k_line_info = daily_k_line_clean_common_service.calculate_open_chg(stock_qfq_daily, k_line_info)
|
|
96
|
+
# 计算 昨日最高点到开盘涨幅差值 and # 昨日最高点到当日收盘涨幅之间的差值 and # 昨日收盘到当日开盘涨幅之间的差值
|
|
97
|
+
k_line_info = daily_k_line_clean_common_service.calculate_chg_diff_value(k_line_info)
|
|
98
|
+
|
|
99
|
+
# 排除最近有三板以上的股票 todo
|
|
100
|
+
# 计算最近热门大涨的股票
|
|
101
|
+
recent_hot_stocks_clean_service.calculate_recent_hot_stocks(stock_qfq_daily, symbol, str_day)
|
|
102
|
+
|
|
103
|
+
return k_line_info
|
|
104
|
+
|
|
105
|
+
# if __name__ == '__main__':
|
|
106
|
+
# query1 = {"symbol": '301596', 'date': {"$lte": date_handle_util.no_slash_date('2024-05-31')}}
|
|
107
|
+
# stock_qfq_daily_301596 = mongodb_util.descend_query(query1, 'stock_qfq_daily', 'date', 15)
|
|
108
|
+
# stock_qfq_daily_301596.shape[0]
|
|
109
|
+
# stock_qfq_daily1 = stock_qfq_daily_301596.iloc[0:14]
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
11
|
+
import mns_common.component.k_line.common.k_line_common_service_api as k_line_common_service_api
|
|
12
|
+
import mns_scheduler.k_line.clean.week_month.normal_week_month_k_line_service as week_month_k_line_service
|
|
13
|
+
import mns_scheduler.k_line.clean.daily.daily_k_line_service as daily_k_line_service
|
|
14
|
+
|
|
15
|
+
mongodb_util = MongodbUtil('27017')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# 日线 周线 月线 成交量 筹码信息
|
|
19
|
+
def calculate_k_line_info(str_day, symbol, diff_days):
|
|
20
|
+
k_line_info = pd.DataFrame([[
|
|
21
|
+
str_day,
|
|
22
|
+
symbol, diff_days]],
|
|
23
|
+
columns=['str_day',
|
|
24
|
+
'symbol',
|
|
25
|
+
'diff_days'
|
|
26
|
+
])
|
|
27
|
+
# 交易天数
|
|
28
|
+
deal_days = k_line_common_service_api.get_deal_days(str_day, symbol)
|
|
29
|
+
# 处理周线 月线
|
|
30
|
+
k_line_info = week_month_k_line_service.handle_month_week_line(k_line_info, str_day, symbol, deal_days)
|
|
31
|
+
# 处理日线
|
|
32
|
+
k_line_info = daily_k_line_service.handle_day_line(k_line_info, str_day, symbol, deal_days)
|
|
33
|
+
return k_line_info
|
|
@@ -18,6 +18,7 @@ import mns_scheduler.k_line.sync.daily_week_month_line_sync as daily_week_month_
|
|
|
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
22
|
K_LINE_CLEAN_DB_NAME = 'k_line_clean_fail_name'
|
|
22
23
|
|
|
23
24
|
# 定义一个全局锁,用于保护 result 变量的访问
|
|
@@ -36,6 +37,7 @@ def sync_k_line_info_task(str_day):
|
|
|
36
37
|
last_trade_day = trade_date_common_service_api.get_last_trade_day(str_day)
|
|
37
38
|
query = {'date': date_handle_util.no_slash_date(last_trade_day)}
|
|
38
39
|
count = mongodb_util.count(query, 'stock_qfq_daily')
|
|
40
|
+
# 当天没有k线数据时 进行同步
|
|
39
41
|
if count == 0:
|
|
40
42
|
daily_week_month_line_sync_api.sync_all_daily_data('daily', 'qfq', 'stock_qfq_daily', str_day,
|
|
41
43
|
None)
|
|
@@ -90,7 +92,10 @@ def handle_fail_data(str_day, real_time_quotes_now):
|
|
|
90
92
|
|
|
91
93
|
# 多线程同步任务
|
|
92
94
|
def multi_threaded_k_line_sync(str_day):
|
|
95
|
+
# 退市代码
|
|
96
|
+
de_list_company_symbols = company_common_service_api.get_de_list_company()
|
|
93
97
|
real_time_quotes_now = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
98
|
+
real_time_quotes_now = real_time_quotes_now.loc[~(real_time_quotes_now['symbol'].isin(de_list_company_symbols))]
|
|
94
99
|
|
|
95
100
|
# 将list_date列中的所有NaN值设置为99990909
|
|
96
101
|
real_time_quotes_now['list_date'].fillna(20990909.0, inplace=True)
|
|
@@ -184,6 +189,6 @@ def clean_history_data():
|
|
|
184
189
|
|
|
185
190
|
|
|
186
191
|
if __name__ == '__main__':
|
|
187
|
-
sync_k_line_info("2024-
|
|
192
|
+
sync_k_line_info("2024-06-03", None)
|
|
188
193
|
# clean_history_data()
|
|
189
194
|
# sync_k_line_info("2023-12-22")
|
mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
9
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
10
|
+
from mns_common.component.classify.symbol_classify_param import stock_type_classify_param
|
|
11
|
+
|
|
12
|
+
mongodb_util = MongodbUtil('27017')
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# 处理月线 周线 todo 暂时简单计算周线之和
|
|
16
|
+
def handle_month_week_line(k_line_info, str_day, symbol, deal_days):
|
|
17
|
+
sub_stock_new_max_deal_days = stock_type_classify_param['sub_stock_new_max_deal_days']
|
|
18
|
+
if deal_days > sub_stock_new_max_deal_days:
|
|
19
|
+
k_line_info = handle_month_line(k_line_info, str_day, symbol)
|
|
20
|
+
k_line_info = handle_week_line(k_line_info, str_day, symbol)
|
|
21
|
+
else:
|
|
22
|
+
k_line_info['week01'] = 0
|
|
23
|
+
k_line_info['week02'] = 0
|
|
24
|
+
k_line_info['week03'] = 0
|
|
25
|
+
k_line_info['week04'] = 0
|
|
26
|
+
k_line_info['sum_week'] = 0
|
|
27
|
+
k_line_info['week_num'] = 0
|
|
28
|
+
k_line_info['week_last_day'] = '19890729'
|
|
29
|
+
|
|
30
|
+
k_line_info['sum_month'] = 0
|
|
31
|
+
k_line_info['month_num'] = 0
|
|
32
|
+
k_line_info['month01'] = 0
|
|
33
|
+
k_line_info['month02'] = 0
|
|
34
|
+
k_line_info['month01_date'] = '19890729'
|
|
35
|
+
k_line_info['month02_date'] = '19890729'
|
|
36
|
+
return k_line_info
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# 处理月线
|
|
40
|
+
def handle_month_line(k_line_info, str_day, symbol):
|
|
41
|
+
month_begin_day = str_day[0:7] + '-01'
|
|
42
|
+
query = {"symbol": symbol,
|
|
43
|
+
'date': {"$lt": date_handle_util.no_slash_date(month_begin_day)}}
|
|
44
|
+
stock_hfq_monthly = mongodb_util.descend_query(query, 'stock_qfq_monthly', 'date', 2)
|
|
45
|
+
month_num = stock_hfq_monthly.shape[0]
|
|
46
|
+
k_line_info['month_num'] = month_num
|
|
47
|
+
if month_num > 0:
|
|
48
|
+
k_line_info['sum_month'] = round(sum(stock_hfq_monthly['chg']), 2)
|
|
49
|
+
else:
|
|
50
|
+
k_line_info['sum_month'] = 0
|
|
51
|
+
|
|
52
|
+
if month_num == 0:
|
|
53
|
+
k_line_info['month01'] = 0
|
|
54
|
+
k_line_info['month02'] = 0
|
|
55
|
+
k_line_info['month01_date'] = '19890729'
|
|
56
|
+
k_line_info['month02_date'] = '19890729'
|
|
57
|
+
elif month_num == 1:
|
|
58
|
+
k_line_info['month01'] = stock_hfq_monthly.iloc[0].chg
|
|
59
|
+
k_line_info['month02'] = 0
|
|
60
|
+
k_line_info['month01_date'] = stock_hfq_monthly.iloc[0].date
|
|
61
|
+
k_line_info['month02_date'] = '19890729'
|
|
62
|
+
elif month_num == 2:
|
|
63
|
+
k_line_info['month01'] = stock_hfq_monthly.iloc[0].chg
|
|
64
|
+
k_line_info['month02'] = stock_hfq_monthly.iloc[1].chg
|
|
65
|
+
k_line_info['month01_date'] = stock_hfq_monthly.iloc[0].date
|
|
66
|
+
k_line_info['month02_date'] = stock_hfq_monthly.iloc[1].date
|
|
67
|
+
|
|
68
|
+
return k_line_info
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
# 处理周线
|
|
72
|
+
def handle_week_line(k_line_info, str_day, symbol):
|
|
73
|
+
month_begin_day = str_day[0:7] + '-01'
|
|
74
|
+
query = {"symbol": symbol,
|
|
75
|
+
'$and': [{'date': {"$gte": date_handle_util.no_slash_date(month_begin_day)}},
|
|
76
|
+
{'date': {"$lt": date_handle_util.no_slash_date(str_day)}}]}
|
|
77
|
+
stock_hfq_weekly = mongodb_util.find_query_data('stock_qfq_weekly', query)
|
|
78
|
+
week_num = stock_hfq_weekly.shape[0]
|
|
79
|
+
if week_num > 0:
|
|
80
|
+
stock_hfq_weekly = stock_hfq_weekly.sort_values(by=['date'], ascending=False)
|
|
81
|
+
k_line_info['sum_week'] = round(sum(stock_hfq_weekly['chg']), 2)
|
|
82
|
+
else:
|
|
83
|
+
k_line_info['sum_week'] = 0
|
|
84
|
+
k_line_info['week_num'] = week_num
|
|
85
|
+
if week_num == 1:
|
|
86
|
+
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
87
|
+
k_line_info['week02'] = 0
|
|
88
|
+
k_line_info['week03'] = 0
|
|
89
|
+
k_line_info['week04'] = 0
|
|
90
|
+
elif week_num == 2:
|
|
91
|
+
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
92
|
+
k_line_info['week02'] = stock_hfq_weekly.iloc[1].chg
|
|
93
|
+
k_line_info['week03'] = 0
|
|
94
|
+
k_line_info['week04'] = 0
|
|
95
|
+
elif week_num == 3:
|
|
96
|
+
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
97
|
+
k_line_info['week02'] = stock_hfq_weekly.iloc[1].chg
|
|
98
|
+
k_line_info['week03'] = stock_hfq_weekly.iloc[2].chg
|
|
99
|
+
k_line_info['week04'] = 0
|
|
100
|
+
elif week_num >= 4:
|
|
101
|
+
k_line_info['week01'] = stock_hfq_weekly.iloc[0].chg
|
|
102
|
+
k_line_info['week02'] = stock_hfq_weekly.iloc[1].chg
|
|
103
|
+
k_line_info['week03'] = stock_hfq_weekly.iloc[2].chg
|
|
104
|
+
k_line_info['week04'] = stock_hfq_weekly.iloc[3].chg
|
|
105
|
+
elif week_num == 0:
|
|
106
|
+
k_line_info['week01'] = 0
|
|
107
|
+
k_line_info['week02'] = 0
|
|
108
|
+
k_line_info['week03'] = 0
|
|
109
|
+
k_line_info['week04'] = 0
|
|
110
|
+
k_line_info['week_last_day'] = month_begin_day
|
|
111
|
+
k_line_info['sum_week'] = 0
|
|
112
|
+
return k_line_info
|
|
113
|
+
stock_hfq_weekly = stock_hfq_weekly.sort_values(by=['date'], ascending=False)
|
|
114
|
+
stock_hfq_weekly_last = stock_hfq_weekly.iloc[0:1]
|
|
115
|
+
k_line_info['week_last_day'] = list(stock_hfq_weekly_last['date'])[0]
|
|
116
|
+
|
|
117
|
+
return k_line_info
|
mns-scheduler-1.0.7.2/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
# 每月最大交易天数
|
|
10
|
+
MAX_TRADE_DAYS_PER_MONTH = 23
|
|
11
|
+
# 每周最大交易天数
|
|
12
|
+
MAX_TRADE_DAYS_PER_MONTH = 5
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def handle_month_week_line(k_line_info, stock_qfq_daily, deal_days):
|
|
16
|
+
if 1 < deal_days < MAX_TRADE_DAYS_PER_MONTH:
|
|
17
|
+
month_01 = round(sum(stock_qfq_daily['chg']), 2)
|
|
18
|
+
k_line_info['sum_month'] = month_01
|
|
19
|
+
k_line_info['month_num'] = 1
|
|
20
|
+
k_line_info['month01'] = month_01
|
|
21
|
+
elif (deal_days >= MAX_TRADE_DAYS_PER_MONTH) \
|
|
22
|
+
and (deal_days < MAX_TRADE_DAYS_PER_MONTH * 2):
|
|
23
|
+
stock_qfq_daily_month_01 = stock_qfq_daily.iloc[0:MAX_TRADE_DAYS_PER_MONTH]
|
|
24
|
+
month_01 = round(sum(stock_qfq_daily_month_01['chg']), 2)
|
|
25
|
+
stock_qfq_daily_month_02 = stock_qfq_daily.iloc[MAX_TRADE_DAYS_PER_MONTH + 1, deal_days - 1]
|
|
26
|
+
month_02 = round(sum(stock_qfq_daily_month_02['chg']), 2)
|
|
27
|
+
k_line_info['sum_month'] = round(month_01 + month_02, 2)
|
|
28
|
+
k_line_info['month_num'] = 2
|
|
29
|
+
k_line_info['month01'] = month_01
|
|
30
|
+
k_line_info['month_02'] = month_02
|
|
31
|
+
elif deal_days >= MAX_TRADE_DAYS_PER_MONTH * 2:
|
|
32
|
+
stock_qfq_daily_month_01 = stock_qfq_daily.iloc[0:MAX_TRADE_DAYS_PER_MONTH]
|
|
33
|
+
month_01 = round(sum(stock_qfq_daily_month_01['chg']), 2)
|
|
34
|
+
stock_qfq_daily_month_02 = stock_qfq_daily.iloc[MAX_TRADE_DAYS_PER_MONTH + 1, MAX_TRADE_DAYS_PER_MONTH * 2]
|
|
35
|
+
month_02 = round(sum(stock_qfq_daily_month_02['chg']), 2)
|
|
36
|
+
|
|
37
|
+
stock_qfq_daily_week_sum = stock_qfq_daily.iloc[MAX_TRADE_DAYS_PER_MONTH * 2 + 1, deal_days - 1]
|
|
38
|
+
|
|
39
|
+
week_sum = round(sum(stock_qfq_daily_week_sum['chg']), 2)
|
|
40
|
+
|
|
41
|
+
k_line_info['sum_month'] = round(month_01 + month_02, 2)
|
|
42
|
+
k_line_info['month_num'] = 2
|
|
43
|
+
k_line_info['month01'] = month_01
|
|
44
|
+
k_line_info['month_02'] = month_02
|
|
45
|
+
|
|
46
|
+
k_line_info['week_num'] = week_sum
|
|
47
|
+
return k_line_info
|
|
@@ -24,7 +24,7 @@ import mns_scheduler.zt.export_open_data_to_excel as export_open_data_to_excel_a
|
|
|
24
24
|
import mns_scheduler.zt.zt_five_boards_sync_api as zt_five_boards_sync_api
|
|
25
25
|
import mns_scheduler.zt.zt_pool_sync_api as zt_pool_sync_api
|
|
26
26
|
import mns_scheduler.zt.today_high_chg_pool_sync_api as today_high_chg_pool_sync_api
|
|
27
|
-
import mns_scheduler.k_line.clean.
|
|
27
|
+
import mns_scheduler.k_line.clean.k_line_info_clean_task as k_line_info_clean_service
|
|
28
28
|
import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_choose_api
|
|
29
29
|
import mns_common.api.em.east_money_stock_gdfx_free_top_10_api as east_money_stock_gdfx_free_top_10_api
|
|
30
30
|
import \
|
|
@@ -57,8 +57,15 @@ mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py
|
|
|
57
57
|
mns_scheduler/k_line/__init__.py
|
|
58
58
|
mns_scheduler/k_line/clean/__init__.py
|
|
59
59
|
mns_scheduler/k_line/clean/k_line_info_clean_impl.py
|
|
60
|
-
mns_scheduler/k_line/clean/
|
|
61
|
-
mns_scheduler/k_line/clean/
|
|
60
|
+
mns_scheduler/k_line/clean/k_line_info_clean_task.py
|
|
61
|
+
mns_scheduler/k_line/clean/daily/__init__.py
|
|
62
|
+
mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py
|
|
63
|
+
mns_scheduler/k_line/clean/daily/daily_k_line_service.py
|
|
64
|
+
mns_scheduler/k_line/clean/week_month/__init__.py
|
|
65
|
+
mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py
|
|
66
|
+
mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py
|
|
67
|
+
mns_scheduler/k_line/hot_stocks/__init__.py
|
|
68
|
+
mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py
|
|
62
69
|
mns_scheduler/k_line/sync/__init__.py
|
|
63
70
|
mns_scheduler/k_line/sync/daily_week_month_line_sync.py
|
|
64
71
|
mns_scheduler/kpl/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/app/ths_new_concept_sync_app.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/em/em_new_concept_his_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/backup/em/em_new_concept_sync_web.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/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.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/company_constant_data.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/company_info/de_list_stock_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/clean/kpl_concept_clean_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/clean/ths_concept_clean_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/concept/ths/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/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
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/finance/test/fix_blask_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/hk/hk_company_info_sync_service_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/irm/stock_irm_cninfo_service.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
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/symbol/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/kpl/selection/total/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/real_time/realtime_quotes_now_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/risk/stock_equity_mortgage_sync_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/trade/auto_sell_service_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/export_open_data_to_excel.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zt/today_high_chg_pool_sync_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.6.9 → mns-scheduler-1.0.7.2}/mns_scheduler/zz_task/sync_realtime_quotes_task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|