-
Notifications
You must be signed in to change notification settings - Fork 858
/
stock_pool_runner.py
Latest commit
131 lines (109 loc) · 4.16 KB
/
stock_pool_runner.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# -*- coding: utf-8 -*-
import logging
from apscheduler.schedulers.background import BackgroundScheduler
from zvt import zvt_config
from zvt.api.selector import get_entity_ids_by_filter
from zvt.domain import (
Stock,
Stock1dHfqKdata,
Stockhk,
Stockhk1dHfqKdata,
Block,
Block1dKdata,
BlockCategory,
Index,
Index1dKdata,
LimitUpInfo,
)
from zvt.factors import compute_top_stocks
from zvt.informer import EmailInformer
from zvt.informer.inform_utils import inform_email
from zvt.tag.tag_stats import build_system_stock_pools, build_stock_pool_tag_stats
from zvt.utils.recorder_utils import run_data_recorder
from zvt.utils.time_utils import current_date
logger = logging.getLogger(__name__)
sched = BackgroundScheduler()
email_informer = EmailInformer()
def report_limit_up():
latest_data = LimitUpInfo.query_data(order=LimitUpInfo.timestamp.desc(), limit=1, return_type= "domain" )
timestamp = latest_data[0].timestamp
df = LimitUpInfo.query_data(start_timestamp=timestamp, end_timestamp=timestamp, columns=[ "code", "name", "reason" ])
df[ "reason" ] = df[ "reason" ].str.split( "+" )
print(df)
email_informer.send_message(zvt_config[ "email_username" ], f "{timestamp} đứng đầu báo cáo", f "{df}" )
def record_stock_data(data_provider= "em", entity_provider= "em", sleeping_time=0):
# tăng trần số liệu
run_data_recorder(domain=LimitUpInfo, data_provider=None, force_update=False)
report_limit_up()
# A cổ chỉ số
run_data_recorder(domain=Index, data_provider=data_provider, force_update=False)
# A cổ chỉ số giá thị trường
run_data_recorder(
domain=Index1dKdata,
data_provider=data_provider,
entity_provider=entity_provider,
day_data=True,
sleeping_time=sleeping_time,
)
# bản khối ( khái niệm, ngành sản xuất )
run_data_recorder(domain=Block, entity_provider=entity_provider, data_provider=entity_provider, force_update=False)
# bản khối giá thị trường ( khái niệm, ngành sản xuất )
run_data_recorder(
domain=Block1dKdata,
entity_provider=entity_provider,
data_provider=entity_provider,
day_data=True,
sleeping_time=sleeping_time,
)
# báo cáo tân khái niệm cùng ngành sản xuất
df = Block.query_data(
filters=[Block.category == BlockCategory.concept.value],
order=Block.list_date.desc(),
index= "entity_id",
limit=7,
)
inform_email(
entity_ids=df.index.tolist(), entity_type= "block", target_date=current_date(), title= "report tân khái niệm", provider= "em"
)
# A cổ bia
run_data_recorder(domain=Stock, data_provider=data_provider, force_update=False)
# A cổ sau phục quyền giá thị trường
normal_stock_ids = get_entity_ids_by_filter(
provider= "em", ignore_delist=True, ignore_st=False, ignore_new_stock=False
)
run_data_recorder(
entity_ids=normal_stock_ids,
domain=Stock1dHfqKdata,
data_provider=data_provider,
entity_provider=entity_provider,
day_data=True,
sleeping_time=sleeping_time,
return_unfinished=True,
)
def record_stockhk_data(data_provider= "em", entity_provider= "em", sleeping_time=2):
# cảng cổ bia
run_data_recorder(domain=Stockhk, data_provider=data_provider, force_update=False)
# cảng cổ sau phục quyền giá thị trường
df = Stockhk.query_data(filters=[Stockhk.south == True], index= "entity_id" )
run_data_recorder(
domain=Stockhk1dHfqKdata,
entity_ids=df.index.tolist(),
data_provider=data_provider,
entity_provider=entity_provider,
day_data=True,
sleeping_time=sleeping_time,
)
def record_data_and_build_stock_pools():
# thu hoạch tăng trần chỉ số bản khối ( khái niệm ) cái cổ giá thị trường số liệu
record_stock_data()
# tính toán ngắn hạn / trung kỳ mạnh nhất thả cửa đột phá năm tuyến nửa năm tuyến cái cổ
compute_top_stocks()
# để vào cổ phiếu trì
build_system_stock_pools()
for stock_pool_name in [ "main_line", "vol_up", "Đại cục" ]:
build_stock_pool_tag_stats(stock_pool_name=stock_pool_name, force_rebuild_latest=True)
if __name__ == "__main__":
record_data_and_build_stock_pools()
sched.add_job(func=record_data_and_build_stock_pools, trigger= "cron", hour=16, minute=00, day_of_week= "mon-fri" )
sched.start()
sched._thread.join()