analyser_hj3415 2.9.3__py3-none-any.whl
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.
- 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()
|