analyser_hj3415 2.6.8__py2.py3-none-any.whl → 2.7.0__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 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(SETTINGS_FILE)
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")
@@ -49,21 +50,41 @@ def analyser_manager():
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
52
  # red - score 파서
52
- score_parser = red_subparser.add_parser('score', help='red score 책정 및 레디스 저장')
53
- score_parser.add_argument('code', type=str, help='종목코드 or all')
54
- score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
55
- score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
56
- score_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
53
+ red_score_parser = red_subparser.add_parser('score', help='red score 책정 및 레디스 저장')
54
+ red_score_parser.add_argument('code', type=str, help='종목코드 or all')
55
+ red_score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
56
+ red_score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
57
+ red_score_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
62
  # mil - score 파서
62
- score_parser = mil_subparser.add_parser('score', help='mil score 책정 및 레디스 저장')
63
- score_parser.add_argument('code', type=str, help='종목코드 or all')
64
- score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
65
- score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
66
- score_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
63
+ mil_score_parser = mil_subparser.add_parser('score', help='mil score 책정 및 레디스 저장')
64
+ mil_score_parser.add_argument('code', type=str, help='종목코드 or all')
65
+ mil_score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
66
+ mil_score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
67
+ mil_score_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 - score 파서
73
+ blue_score_parser = blue_subparser.add_parser('score', help='blue score 책정 및 레디스 저장')
74
+ blue_score_parser.add_argument('code', type=str, help='종목코드 or all')
75
+ blue_score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
76
+ blue_score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
77
+ blue_score_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 - score 파서
83
+ growth_score_parser = growth_subparser.add_parser('score', help='growth score 책정 및 레디스 저장')
84
+ growth_score_parser.add_argument('code', type=str, help='종목코드 or all')
85
+ growth_score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
86
+ growth_score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
87
+ growth_score_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
 
104
+ from analyser_hj3415 import eval
105
+
83
106
  if args.type == 'red':
84
107
  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
88
-
89
- # print(expect_earn, refresh)
90
108
  if args.code == 'all':
91
- print("**** red_n_score all code ****")
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
- print(f'{i} / {code}')
94
- red_n_score(code, expect_earn, refresh)
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
- print(args.code, red_n_score(args.code, expect_earn, refresh))
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"오늘의 red and score({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
140
+ noti.telegram_to('manager', f"오늘의 Red({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
100
141
 
101
142
  elif args.command == 'ranking':
102
- # 기대 수익률과 refresh 값 처리
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
149
  if args.command == 'score':
115
- # 기대 수익률과 refresh 값 처리
116
- expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
117
- refresh = args.refresh if args.refresh else False
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 == 'score':
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 == 'score':
119
184
  if args.code == 'all':
120
- print("**** mil_n_score all code ****")
185
+ growth = eval.Growth('005930')
186
+ print("**** Growth - all codes ****")
121
187
  for i, code in enumerate(myredis.Corps.list_all_codes()):
122
- print(f'{i} / {code}')
123
- mil_n_score(code, expect_earn, refresh)
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
- print(args.code, mil_n_score(args.code, expect_earn, refresh))
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"오늘의 mil and score({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
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)