analyser_hj3415 2.6.8__py2.py3-none-any.whl → 2.7.1__py2.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/cli.py +115 -45
- analyser_hj3415/eval.py +948 -0
- analyser_hj3415/workroom/__init__.py +0 -0
- analyser_hj3415/workroom/lstm.py +113 -0
- analyser_hj3415/workroom/myprophet.py +58 -0
- analyser_hj3415/workroom/mysklearn.py +50 -0
- analyser_hj3415/workroom/mysklearn2.py +39 -0
- analyser_hj3415/{analysers → workroom}/score.py +0 -38
- {analyser_hj3415-2.6.8.dist-info → analyser_hj3415-2.7.1.dist-info}/METADATA +3 -3
- analyser_hj3415-2.7.1.dist-info/RECORD +16 -0
- analyser_hj3415/analysers/eval.py +0 -276
- analyser_hj3415/analysers/report.py +0 -182
- analyser_hj3415/myredis.py +0 -186
- analyser_hj3415/tools.py +0 -247
- analyser_hj3415-2.6.8.dist-info/RECORD +0 -14
- /analyser_hj3415/{trash.py → workroom/trash.py} +0 -0
- {analyser_hj3415-2.6.8.dist-info → analyser_hj3415-2.7.1.dist-info}/LICENSE +0 -0
- {analyser_hj3415-2.6.8.dist-info → analyser_hj3415-2.7.1.dist-info}/WHEEL +0 -0
- {analyser_hj3415-2.6.8.dist-info → analyser_hj3415-2.7.1.dist-info}/entry_points.txt +0 -0
analyser_hj3415/cli.py
CHANGED
@@ -1,22 +1,23 @@
|
|
1
1
|
import argparse
|
2
2
|
import os
|
3
|
+
import pprint
|
3
4
|
|
4
5
|
from utils_hj3415 import noti, utils
|
5
6
|
from utils_hj3415.helpers import SettingsManager
|
6
|
-
from analyser_hj3415.myredis import red_ranking, mil_n_score, red_n_score
|
7
7
|
from db_hj3415 import myredis
|
8
8
|
|
9
9
|
|
10
|
-
# 파일 경로 상수
|
11
|
-
SETTINGS_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'settings.json')
|
12
|
-
|
13
|
-
|
14
10
|
class AnalyserSettingsManager(SettingsManager):
|
15
11
|
DEFAULT_SETTINGS = {
|
16
12
|
'EXPECT_EARN': 0.06,
|
13
|
+
'RED_RANKING_EXPECT_EARN': 0.06,
|
17
14
|
}
|
18
15
|
TITLES = DEFAULT_SETTINGS.keys()
|
19
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
|
+
|
20
21
|
def set_value(self, title: str, value: str):
|
21
22
|
assert title in self.TITLES, f"title 인자는 {self.TITLES} 중에 있어야 합니다."
|
22
23
|
self.settings_dict[title] = value
|
@@ -34,7 +35,7 @@ class AnalyserSettingsManager(SettingsManager):
|
|
34
35
|
|
35
36
|
|
36
37
|
def analyser_manager():
|
37
|
-
settings_manager = AnalyserSettingsManager(
|
38
|
+
settings_manager = AnalyserSettingsManager()
|
38
39
|
expect_earn_from_setting = settings_manager.get_value('EXPECT_EARN')
|
39
40
|
|
40
41
|
parser = argparse.ArgumentParser(description="Analyser Commands")
|
@@ -48,22 +49,42 @@ def analyser_manager():
|
|
48
49
|
ranking_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
49
50
|
ranking_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
50
51
|
ranking_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
51
|
-
# red -
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
# red - get 파서
|
53
|
+
red_get_parser = red_subparser.add_parser('get', help='red get 책정 및 레디스 저장')
|
54
|
+
red_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
55
|
+
red_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
56
|
+
red_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
57
|
+
red_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
57
58
|
|
58
59
|
# mil 명령어 서브파서
|
59
60
|
mil_parser = type_subparsers.add_parser('mil', help='millennial 타입')
|
60
61
|
mil_subparser = mil_parser.add_subparsers(dest='command', help='mil 관련된 명령')
|
61
|
-
# mil -
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
# mil - get 파서
|
63
|
+
mil_get_parser = mil_subparser.add_parser('get', help='mil get 책정 및 레디스 저장')
|
64
|
+
mil_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
65
|
+
mil_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
66
|
+
mil_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
67
|
+
mil_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
68
|
+
|
69
|
+
# blue 명령어 서브파서
|
70
|
+
blue_parser = type_subparsers.add_parser('blue', help='Blue 타입')
|
71
|
+
blue_subparser = blue_parser.add_subparsers(dest='command', help='blue 관련된 명령')
|
72
|
+
# blue - get 파서
|
73
|
+
blue_get_parser = blue_subparser.add_parser('get', help='blue get 책정 및 레디스 저장')
|
74
|
+
blue_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
75
|
+
blue_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
76
|
+
blue_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
77
|
+
blue_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
78
|
+
|
79
|
+
# growth 명령어 서브파서
|
80
|
+
growth_parser = type_subparsers.add_parser('growth', help='Growth 타입')
|
81
|
+
growth_subparser = growth_parser.add_subparsers(dest='command', help='growth 관련된 명령')
|
82
|
+
# growth - get 파서
|
83
|
+
growth_get_parser = growth_subparser.add_parser('get', help='growth get 책정 및 레디스 저장')
|
84
|
+
growth_get_parser.add_argument('code', type=str, help='종목코드 or all')
|
85
|
+
growth_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
|
86
|
+
growth_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
|
87
|
+
growth_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
|
67
88
|
|
68
89
|
# setting 명령어 서브파서
|
69
90
|
setting_parser = type_subparsers.add_parser('setting', help='Set and Get settings')
|
@@ -80,52 +101,101 @@ def analyser_manager():
|
|
80
101
|
|
81
102
|
args = parser.parse_args()
|
82
103
|
|
83
|
-
|
84
|
-
if args.command == 'score':
|
85
|
-
# 기대 수익률과 refresh 값 처리
|
86
|
-
expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
|
87
|
-
refresh = args.refresh if args.refresh else False
|
104
|
+
from analyser_hj3415 import eval
|
88
105
|
|
89
|
-
|
106
|
+
if args.type == 'red':
|
107
|
+
if args.command == 'get':
|
90
108
|
if args.code == 'all':
|
91
|
-
|
109
|
+
# 저장된 기대수익률을 불러서 임시저장
|
110
|
+
ee_orig = eval.Red.expect_earn
|
111
|
+
|
112
|
+
red = eval.Red('005930')
|
113
|
+
if args.expect_earn:
|
114
|
+
eval.Red.expect_earn = float(args.expect_earn)
|
115
|
+
|
116
|
+
print("**** Red - all codes ****")
|
92
117
|
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
93
|
-
|
94
|
-
|
118
|
+
red.code = code
|
119
|
+
print(f"*** {i} / {red} ***")
|
120
|
+
pprint.pprint(red.get(args.refresh))
|
121
|
+
|
122
|
+
# 원래 저장되었던 기대수익률로 다시 복원
|
123
|
+
eval.Red.expect_earn = ee_orig
|
95
124
|
else:
|
96
125
|
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
97
|
-
|
126
|
+
# 저장된 기대수익률을 불러서 임시저장
|
127
|
+
ee_orig = eval.Red.expect_earn
|
128
|
+
|
129
|
+
red = eval.Red(args.code)
|
130
|
+
if args.expect_earn:
|
131
|
+
args.refresh = True
|
132
|
+
eval.Red.expect_earn = float(args.expect_earn)
|
133
|
+
|
134
|
+
print(f"*** Red - {red} ***")
|
135
|
+
pprint.pprint(red.get(args.refresh))
|
136
|
+
|
137
|
+
# 원래 저장되었던 기대수익률로 다시 복원
|
138
|
+
eval.Red.expect_earn = ee_orig
|
98
139
|
if args.noti:
|
99
|
-
noti.telegram_to('manager', f"오늘의
|
140
|
+
noti.telegram_to('manager', f"오늘의 Red({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
|
100
141
|
|
101
142
|
elif args.command == 'ranking':
|
102
|
-
|
103
|
-
expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
|
104
|
-
refresh = args.refresh if args.refresh else False
|
105
|
-
print(expect_earn, refresh)
|
106
|
-
|
107
|
-
# red_ranking 함수 호출
|
108
|
-
result = red_ranking(expect_earn, refresh)
|
143
|
+
result = eval.Red.ranking(expect_earn=args.expect_earn, refresh=args.refresh)
|
109
144
|
print(result)
|
110
145
|
if args.noti:
|
111
146
|
noti.telegram_to('manager', "오늘의 red ranking을 레디스캐시에 저장했습니다.(유효 12시간)")
|
112
147
|
|
113
148
|
elif args.type == 'mil':
|
114
|
-
if args.command == '
|
115
|
-
|
116
|
-
|
117
|
-
|
149
|
+
if args.command == 'get':
|
150
|
+
if args.code == 'all':
|
151
|
+
mil = eval.Mil('005930')
|
152
|
+
print("**** Mil - all codes ****")
|
153
|
+
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
154
|
+
mil.code = code
|
155
|
+
print(f"*** {i} / {mil} ***")
|
156
|
+
pprint.pprint(mil.get(args.refresh))
|
157
|
+
else:
|
158
|
+
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
159
|
+
mil = eval.Mil(args.code)
|
160
|
+
print(f"*** Mil - {mil} ***")
|
161
|
+
pprint.pprint(mil.get(args.refresh))
|
162
|
+
if args.noti:
|
163
|
+
noti.telegram_to('manager', f"오늘의 Mil({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
|
164
|
+
|
165
|
+
elif args.type == 'blue':
|
166
|
+
if args.command == 'get':
|
167
|
+
if args.code == 'all':
|
168
|
+
blue = eval.Blue('005930')
|
169
|
+
print("**** Blue - all codes ****")
|
170
|
+
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
171
|
+
blue.code = code
|
172
|
+
print(f"*** {i} / {blue} ***")
|
173
|
+
pprint.pprint(blue.get(args.refresh))
|
174
|
+
else:
|
175
|
+
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
176
|
+
blue = eval.Blue(args.code)
|
177
|
+
print(f"*** Blue - {blue} ***")
|
178
|
+
pprint.pprint(blue.get(args.refresh))
|
179
|
+
if args.noti:
|
180
|
+
noti.telegram_to('manager', f"오늘의 Blue({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
|
118
181
|
|
182
|
+
elif args.type == 'growth':
|
183
|
+
if args.command == 'get':
|
119
184
|
if args.code == 'all':
|
120
|
-
|
185
|
+
growth = eval.Growth('005930')
|
186
|
+
print("**** Growth - all codes ****")
|
121
187
|
for i, code in enumerate(myredis.Corps.list_all_codes()):
|
122
|
-
|
123
|
-
|
188
|
+
growth.code = code
|
189
|
+
print(f"*** {i} / {growth} ***")
|
190
|
+
pprint.pprint(growth.get(args.refresh))
|
124
191
|
else:
|
125
192
|
assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
|
126
|
-
|
193
|
+
growth = eval.Growth(args.code)
|
194
|
+
print(f"*** growth - {growth} ***")
|
195
|
+
pprint.pprint(growth.get(args.refresh))
|
127
196
|
if args.noti:
|
128
|
-
noti.telegram_to('manager', f"오늘의
|
197
|
+
noti.telegram_to('manager', f"오늘의 Growth({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
|
198
|
+
|
129
199
|
elif args.type == 'setting':
|
130
200
|
if args.command == 'set':
|
131
201
|
settings_manager.set_value(args.title, args.value)
|