analyser_hj3415 2.6.8__tar.gz → 2.7.1__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/PKG-INFO +3 -3
  2. analyser_hj3415-2.7.1/analyser_hj3415/cli.py +208 -0
  3. analyser_hj3415-2.7.1/analyser_hj3415/eval.py +948 -0
  4. analyser_hj3415-2.7.1/analyser_hj3415/workroom/__init__.py +0 -0
  5. analyser_hj3415-2.7.1/analyser_hj3415/workroom/lstm.py +113 -0
  6. analyser_hj3415-2.7.1/analyser_hj3415/workroom/myprophet.py +58 -0
  7. analyser_hj3415-2.7.1/analyser_hj3415/workroom/mysklearn.py +50 -0
  8. analyser_hj3415-2.7.1/analyser_hj3415/workroom/mysklearn2.py +39 -0
  9. {analyser_hj3415-2.6.8/analyser_hj3415/analysers → analyser_hj3415-2.7.1/analyser_hj3415/workroom}/score.py +0 -38
  10. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/pyproject.toml +3 -3
  11. analyser_hj3415-2.6.8/analyser_hj3415/analysers/eval.py +0 -276
  12. analyser_hj3415-2.6.8/analyser_hj3415/analysers/report.py +0 -182
  13. analyser_hj3415-2.6.8/analyser_hj3415/cli.py +0 -138
  14. analyser_hj3415-2.6.8/analyser_hj3415/myredis.py +0 -186
  15. analyser_hj3415-2.6.8/analyser_hj3415/tools.py +0 -247
  16. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.DS_Store +0 -0
  17. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.gitattributes +0 -0
  18. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.gitignore +0 -0
  19. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.idea/.gitignore +0 -0
  20. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.idea/analyser-hj3415.iml +0 -0
  21. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
  22. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.idea/misc.xml +0 -0
  23. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.idea/modules.xml +0 -0
  24. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/.idea/vcs.xml +0 -0
  25. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/LICENSE +0 -0
  26. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/README.md +0 -0
  27. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/analyser_hj3415/.DS_Store +0 -0
  28. {analyser_hj3415-2.6.8 → analyser_hj3415-2.7.1}/analyser_hj3415/__init__.py +0 -0
  29. {analyser_hj3415-2.6.8/analyser_hj3415 → analyser_hj3415-2.7.1/analyser_hj3415/workroom}/trash.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: analyser_hj3415
3
- Version: 2.6.8
3
+ Version: 2.7.1
4
4
  Summary: Stock analyser and database processing programs
5
5
  Author-email: Hyungjin Kim <hj3415@gmail.com>
6
6
  Description-Content-Type: text/markdown
7
7
  Classifier: License :: OSI Approved :: MIT License
8
- Requires-Dist: utils-hj3415>=2.8.0
9
- Requires-Dist: db-hj3415>=3.8.1
8
+ Requires-Dist: utils-hj3415>=2.9.2
9
+ Requires-Dist: db-hj3415>=4.0.3
10
10
  Project-URL: Home, https://www.hyungjin.kr
11
11
 
12
12
  ### analyser-hj3415
@@ -0,0 +1,208 @@
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
+ # red 명령어 서브파서
45
+ red_parser = type_subparsers.add_parser('red', help='red 타입')
46
+ red_subparser = red_parser.add_subparsers(dest='command', help='red 관련된 명령')
47
+ # red - ranking 파서
48
+ ranking_parser = red_subparser.add_parser('ranking', help='red 랭킹 책정 및 레디스 저장')
49
+ ranking_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
50
+ ranking_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
51
+ ranking_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
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='작업 완료 후 메시지 전송 여부')
58
+
59
+ # mil 명령어 서브파서
60
+ mil_parser = type_subparsers.add_parser('mil', help='millennial 타입')
61
+ mil_subparser = mil_parser.add_subparsers(dest='command', help='mil 관련된 명령')
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='작업 완료 후 메시지 전송 여부')
88
+
89
+ # setting 명령어 서브파서
90
+ setting_parser = type_subparsers.add_parser('setting', help='Set and Get settings')
91
+ setting_subparser = setting_parser.add_subparsers(dest='command', help='setting 관련된 명령')
92
+ # setting - set 파서
93
+ set_parser = setting_subparser.add_parser('set', help='세팅값 저장')
94
+ set_parser.add_argument('title', choices=AnalyserSettingsManager.TITLES, help='타이틀')
95
+ set_parser.add_argument('value', help='세팅값')
96
+ # setting - get 파서
97
+ get_parser = setting_subparser.add_parser('get', help='타이틀 세팅값 불러오기')
98
+ get_parser.add_argument('title', choices=AnalyserSettingsManager.TITLES, help='타이틀')
99
+ # setting - print 파서
100
+ setting_subparser.add_parser('print', help='전체 세팅값 출력')
101
+
102
+ args = parser.parse_args()
103
+
104
+ from analyser_hj3415 import eval
105
+
106
+ if args.type == 'red':
107
+ if args.command == 'get':
108
+ if args.code == 'all':
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 ****")
117
+ for i, code in enumerate(myredis.Corps.list_all_codes()):
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
124
+ else:
125
+ assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
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
139
+ if args.noti:
140
+ noti.telegram_to('manager', f"오늘의 Red({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
141
+
142
+ elif args.command == 'ranking':
143
+ result = eval.Red.ranking(expect_earn=args.expect_earn, refresh=args.refresh)
144
+ print(result)
145
+ if args.noti:
146
+ noti.telegram_to('manager', "오늘의 red ranking을 레디스캐시에 저장했습니다.(유효 12시간)")
147
+
148
+ elif args.type == 'mil':
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시간)")
181
+
182
+ elif args.type == 'growth':
183
+ if args.command == 'get':
184
+ if args.code == 'all':
185
+ growth = eval.Growth('005930')
186
+ print("**** Growth - all codes ****")
187
+ for i, code in enumerate(myredis.Corps.list_all_codes()):
188
+ growth.code = code
189
+ print(f"*** {i} / {growth} ***")
190
+ pprint.pprint(growth.get(args.refresh))
191
+ else:
192
+ assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
193
+ growth = eval.Growth(args.code)
194
+ print(f"*** growth - {growth} ***")
195
+ pprint.pprint(growth.get(args.refresh))
196
+ if args.noti:
197
+ noti.telegram_to('manager', f"오늘의 Growth({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
198
+
199
+ elif args.type == 'setting':
200
+ if args.command == 'set':
201
+ settings_manager.set_value(args.title, args.value)
202
+ elif args.command == 'get':
203
+ value = settings_manager.get_value(args.title)
204
+ print(f"{args.title} 값: {value}")
205
+ elif args.command == 'print':
206
+ print(settings_manager.load_settings())
207
+ else:
208
+ parser.print_help()