analyser_hj3415 2.9.3__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- analyser_hj3415/.DS_Store +0 -0
- analyser_hj3415/__init__.py +0 -0
- analyser_hj3415/cli.py +234 -0
- analyser_hj3415/eval.py +960 -0
- analyser_hj3415/tsa.py +620 -0
- analyser_hj3415/workroom/__init__.py +0 -0
- analyser_hj3415/workroom/mysklearn.py +50 -0
- analyser_hj3415/workroom/mysklearn2.py +39 -0
- analyser_hj3415/workroom/score.py +342 -0
- analyser_hj3415/workroom/trash.py +289 -0
- analyser_hj3415-2.9.3.dist-info/METADATA +232 -0
- analyser_hj3415-2.9.3.dist-info/RECORD +14 -0
- analyser_hj3415-2.9.3.dist-info/WHEEL +4 -0
- analyser_hj3415-2.9.3.dist-info/entry_points.txt +3 -0
Binary file
|
File without changes
|
analyser_hj3415/cli.py
ADDED
@@ -0,0 +1,234 @@
|
|
1
|
+
import argparse
|
2
|
+
import os
|
3
|
+
import pprint
|
4
|
+
|
5
|
+
from utils_hj3415 import noti, utils
|
6
|
+
from utils_hj3415.helpers import SettingsManager
|
7
|
+
from db_hj3415 import myredis
|
8
|
+
|
9
|
+
|
10
|
+
class AnalyserSettingsManager(SettingsManager):
|
11
|
+
DEFAULT_SETTINGS = {
|
12
|
+
'EXPECT_EARN': 0.06,
|
13
|
+
'RED_RANKING_EXPECT_EARN': 0.06,
|
14
|
+
}
|
15
|
+
TITLES = DEFAULT_SETTINGS.keys()
|
16
|
+
|
17
|
+
def __init__(self):
|
18
|
+
settings_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'settings.json')
|
19
|
+
super().__init__(settings_file)
|
20
|
+
|
21
|
+
def set_value(self, title: str, value: str):
|
22
|
+
assert title in self.TITLES, f"title 인자는 {self.TITLES} 중에 있어야 합니다."
|
23
|
+
self.settings_dict[title] = value
|
24
|
+
self.save_settings()
|
25
|
+
print(f"{title}: {value}가 저장되었습니다")
|
26
|
+
|
27
|
+
def get_value(self, title: str):
|
28
|
+
assert title in self.TITLES, f"title 인자는 {self.TITLES} 중에 있어야 합니다."
|
29
|
+
return self.settings_dict.get(title, self.DEFAULT_SETTINGS[title])
|
30
|
+
|
31
|
+
def reset_value(self, title: str):
|
32
|
+
assert title in self.TITLES, f"title 인자는 {self.TITLES} 중에 있어야 합니다."
|
33
|
+
self.set_value(title, self.DEFAULT_SETTINGS[title])
|
34
|
+
print(f"{title}이 기본값 ({self.DEFAULT_SETTINGS[title]}) 으로 초기화 되었습니다.")
|
35
|
+
|
36
|
+
|
37
|
+
def analyser_manager():
|
38
|
+
settings_manager = AnalyserSettingsManager()
|
39
|
+
expect_earn_from_setting = settings_manager.get_value('EXPECT_EARN')
|
40
|
+
|
41
|
+
parser = argparse.ArgumentParser(description="Analyser Commands")
|
42
|
+
type_subparsers = parser.add_subparsers(dest='type', help='분석 타입')
|
43
|
+
|
44
|
+
# prophet 명령어 서브파서
|
45
|
+
prophet_parser = type_subparsers.add_parser('prophet', help='MyProphet 타입')
|
46
|
+
prophet_subparser = prophet_parser.add_subparsers(dest='command', help='prophet 관련된 명령')
|
47
|
+
# ranking 파서
|
48
|
+
ranking_parser = prophet_subparser.add_parser('ranking', help='prophet 랭킹 책정 및 레디스 저장')
|
49
|
+
ranking_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
50
|
+
ranking_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
51
|
+
|
52
|
+
# lstm 명령어 서브파서
|
53
|
+
lstm_parser = type_subparsers.add_parser('lstm', help='MyLSTM 타입')
|
54
|
+
lstm_subparser = lstm_parser.add_subparsers(dest='command', help='lstm 관련된 명령')
|
55
|
+
# caching 파서
|
56
|
+
caching_parser = lstm_subparser.add_parser('caching', help='lstm 랭킹 책정 및 레디스 저장')
|
57
|
+
caching_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
58
|
+
caching_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
59
|
+
|
60
|
+
# red 명령어 서브파서
|
61
|
+
red_parser = type_subparsers.add_parser('red', help='red 타입')
|
62
|
+
red_subparser = red_parser.add_subparsers(dest='command', help='red 관련된 명령')
|
63
|
+
# red - ranking 파서
|
64
|
+
ranking_parser = red_subparser.add_parser('ranking', help='red 랭킹 책정 및 레디스 저장')
|
65
|
+
ranking_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
66
|
+
ranking_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
67
|
+
ranking_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
68
|
+
# red - get 파서
|
69
|
+
red_get_parser = red_subparser.add_parser('get', help='red get 책정 및 레디스 저장')
|
70
|
+
red_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
71
|
+
red_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
72
|
+
red_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
73
|
+
red_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
74
|
+
|
75
|
+
# mil 명령어 서브파서
|
76
|
+
mil_parser = type_subparsers.add_parser('mil', help='millennial 타입')
|
77
|
+
mil_subparser = mil_parser.add_subparsers(dest='command', help='mil 관련된 명령')
|
78
|
+
# mil - get 파서
|
79
|
+
mil_get_parser = mil_subparser.add_parser('get', help='mil get 책정 및 레디스 저장')
|
80
|
+
mil_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
81
|
+
mil_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
82
|
+
mil_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
83
|
+
mil_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
84
|
+
|
85
|
+
# blue 명령어 서브파서
|
86
|
+
blue_parser = type_subparsers.add_parser('blue', help='Blue 타입')
|
87
|
+
blue_subparser = blue_parser.add_subparsers(dest='command', help='blue 관련된 명령')
|
88
|
+
# blue - get 파서
|
89
|
+
blue_get_parser = blue_subparser.add_parser('get', help='blue get 책정 및 레디스 저장')
|
90
|
+
blue_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
91
|
+
blue_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
92
|
+
blue_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
93
|
+
blue_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
94
|
+
|
95
|
+
# growth 명령어 서브파서
|
96
|
+
growth_parser = type_subparsers.add_parser('growth', help='Growth 타입')
|
97
|
+
growth_subparser = growth_parser.add_subparsers(dest='command', help='growth 관련된 명령')
|
98
|
+
# growth - get 파서
|
99
|
+
growth_get_parser = growth_subparser.add_parser('get', help='growth get 책정 및 레디스 저장')
|
100
|
+
growth_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
101
|
+
growth_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
102
|
+
growth_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
103
|
+
growth_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
104
|
+
|
105
|
+
# setting 명령어 서브파서
|
106
|
+
setting_parser = type_subparsers.add_parser('setting', help='Set and Get settings')
|
107
|
+
setting_subparser = setting_parser.add_subparsers(dest='command', help='setting 관련된 명령')
|
108
|
+
# setting - set 파서
|
109
|
+
set_parser = setting_subparser.add_parser('set', help='세팅값 저장')
|
110
|
+
set_parser.add_argument('title', choices=AnalyserSettingsManager.TITLES, help='타이틀')
|
111
|
+
set_parser.add_argument('value', help='세팅값')
|
112
|
+
# setting - get 파서
|
113
|
+
get_parser = setting_subparser.add_parser('get', help='타이틀 세팅값 불러오기')
|
114
|
+
get_parser.add_argument('title', choices=AnalyserSettingsManager.TITLES, help='타이틀')
|
115
|
+
# setting - print 파서
|
116
|
+
setting_subparser.add_parser('print', help='전체 세팅값 출력')
|
117
|
+
|
118
|
+
args = parser.parse_args()
|
119
|
+
|
120
|
+
from analyser_hj3415 import eval, tsa
|
121
|
+
|
122
|
+
if args.type == 'red':
|
123
|
+
if args.command == 'get':
|
124
|
+
if args.code == 'all':
|
125
|
+
# 저장된 기대수익률을 불러서 임시저장
|
126
|
+
ee_orig = eval.Red.expect_earn
|
127
|
+
|
128
|
+
red = eval.Red('005930')
|
129
|
+
if args.expect_earn:
|
130
|
+
eval.Red.expect_earn = float(args.expect_earn)
|
131
|
+
|
132
|
+
print("**** Red - all codes ****")
|
133
|
+
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
134
|
+
red.code = code
|
135
|
+
print(f"*** {i} / {red} ***")
|
136
|
+
pprint.pprint(red.get(args.refresh, verbose=False))
|
137
|
+
|
138
|
+
# 원래 저장되었던 기대수익률로 다시 복원
|
139
|
+
eval.Red.expect_earn = ee_orig
|
140
|
+
else:
|
141
|
+
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
142
|
+
# 저장된 기대수익률을 불러서 임시저장
|
143
|
+
ee_orig = eval.Red.expect_earn
|
144
|
+
|
145
|
+
red = eval.Red(args.code)
|
146
|
+
if args.expect_earn:
|
147
|
+
args.refresh = True
|
148
|
+
eval.Red.expect_earn = float(args.expect_earn)
|
149
|
+
|
150
|
+
print(f"*** Red - {red} ***")
|
151
|
+
pprint.pprint(red.get(args.refresh))
|
152
|
+
|
153
|
+
# 원래 저장되었던 기대수익률로 다시 복원
|
154
|
+
eval.Red.expect_earn = ee_orig
|
155
|
+
if args.noti:
|
156
|
+
noti.telegram_to('manager', f"오늘의 Red({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
|
157
|
+
|
158
|
+
elif args.command == 'ranking':
|
159
|
+
result = eval.Red.ranking(expect_earn=args.expect_earn, refresh=args.refresh)
|
160
|
+
print(result)
|
161
|
+
if args.noti:
|
162
|
+
noti.telegram_to('manager', "오늘의 red ranking을 레디스캐시에 저장했습니다.(유효 12시간)")
|
163
|
+
|
164
|
+
elif args.type == 'mil':
|
165
|
+
if args.command == 'get':
|
166
|
+
if args.code == 'all':
|
167
|
+
mil = eval.Mil('005930')
|
168
|
+
print("**** Mil - all codes ****")
|
169
|
+
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
170
|
+
mil.code = code
|
171
|
+
print(f"*** {i} / {mil} ***")
|
172
|
+
pprint.pprint(mil.get(args.refresh, verbose=False))
|
173
|
+
else:
|
174
|
+
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
175
|
+
mil = eval.Mil(args.code)
|
176
|
+
print(f"*** Mil - {mil} ***")
|
177
|
+
pprint.pprint(mil.get(args.refresh))
|
178
|
+
if args.noti:
|
179
|
+
noti.telegram_to('manager', f"오늘의 Mil({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
|
180
|
+
|
181
|
+
elif args.type == 'blue':
|
182
|
+
if args.command == 'get':
|
183
|
+
if args.code == 'all':
|
184
|
+
blue = eval.Blue('005930')
|
185
|
+
print("**** Blue - all codes ****")
|
186
|
+
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
187
|
+
blue.code = code
|
188
|
+
print(f"*** {i} / {blue} ***")
|
189
|
+
pprint.pprint(blue.get(args.refresh, verbose=False))
|
190
|
+
else:
|
191
|
+
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
192
|
+
blue = eval.Blue(args.code)
|
193
|
+
print(f"*** Blue - {blue} ***")
|
194
|
+
pprint.pprint(blue.get(args.refresh))
|
195
|
+
if args.noti:
|
196
|
+
noti.telegram_to('manager', f"오늘의 Blue({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
|
197
|
+
|
198
|
+
elif args.type == 'growth':
|
199
|
+
if args.command == 'get':
|
200
|
+
if args.code == 'all':
|
201
|
+
growth = eval.Growth('005930')
|
202
|
+
print("**** Growth - all codes ****")
|
203
|
+
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
204
|
+
growth.code = code
|
205
|
+
print(f"*** {i} / {growth} ***")
|
206
|
+
pprint.pprint(growth.get(args.refresh, verbose=False))
|
207
|
+
else:
|
208
|
+
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
209
|
+
growth = eval.Growth(args.code)
|
210
|
+
print(f"*** growth - {growth} ***")
|
211
|
+
pprint.pprint(growth.get(args.refresh))
|
212
|
+
if args.noti:
|
213
|
+
noti.telegram_to('manager', f"오늘의 Growth({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
|
214
|
+
elif args.type == 'prophet':
|
215
|
+
if args.command == 'ranking':
|
216
|
+
result = tsa.MyProphet.ranking(refresh=args.refresh)
|
217
|
+
print(result)
|
218
|
+
if args.noti:
|
219
|
+
noti.telegram_to('manager', "오늘의 prophet ranking을 레디스캐시에 저장했습니다.(유효 24시간)")
|
220
|
+
elif args.type == 'lstm':
|
221
|
+
if args.command == 'caching':
|
222
|
+
result = tsa.MyLSTM('005930').caching_based_on_prophet_ranking(refresh=args.refresh)
|
223
|
+
if args.noti:
|
224
|
+
noti.telegram_to('manager', "오늘의 lstm caching을 레디스캐시에 저장했습니다.(유효 24시간)")
|
225
|
+
elif args.type == 'setting':
|
226
|
+
if args.command == 'set':
|
227
|
+
settings_manager.set_value(args.title, args.value)
|
228
|
+
elif args.command == 'get':
|
229
|
+
value = settings_manager.get_value(args.title)
|
230
|
+
print(f"{args.title} 값: {value}")
|
231
|
+
elif args.command == 'print':
|
232
|
+
print(settings_manager.load_settings())
|
233
|
+
else:
|
234
|
+
parser.print_help()
|